poly_int: get_ref_base_and_extent
[platform/upstream/gcc.git] / gcc / ChangeLog
1 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
2             Alan Hayward  <alan.hayward@arm.com>
3             David Sherwood  <david.sherwood@arm.com>
4
5         * tree-dfa.h (get_ref_base_and_extent): Return the base, size and
6         max_size as poly_int64_pods rather than HOST_WIDE_INTs.
7         (get_ref_base_and_extent_hwi): Declare.
8         * tree-dfa.c (get_ref_base_and_extent): Return the base, size and
9         max_size as poly_int64_pods rather than HOST_WIDE_INTs.
10         (get_ref_base_and_extent_hwi): New function.
11         * cfgexpand.c (expand_debug_expr): Update call to
12         get_ref_base_and_extent.
13         * dwarf2out.c (add_var_loc_to_decl): Likewise.
14         * gimple-fold.c (get_base_constructor): Return the offset as a
15         poly_int64_pod rather than a HOST_WIDE_INT.
16         (fold_const_aggregate_ref_1): Track polynomial sizes and offsets.
17         * ipa-polymorphic-call.c
18         (ipa_polymorphic_call_context::set_by_invariant)
19         (extr_type_from_vtbl_ptr_store): Track polynomial offsets.
20         (ipa_polymorphic_call_context::ipa_polymorphic_call_context)
21         (check_stmt_for_type_change): Use get_ref_base_and_extent_hwi
22         rather than get_ref_base_and_extent.
23         (ipa_polymorphic_call_context::get_dynamic_type): Likewise.
24         * ipa-prop.c (ipa_load_from_parm_agg, compute_complex_assign_jump_func)
25         (get_ancestor_addr_info, determine_locally_known_aggregate_parts):
26         Likewise.
27         * ipa-param-manipulation.c (ipa_get_adjustment_candidate): Update
28         call to get_ref_base_and_extent.
29         * tree-sra.c (create_access, get_access_for_expr): Likewise.
30         * tree-ssa-alias.c (ao_ref_base, aliasing_component_refs_p)
31         (stmt_kills_ref_p): Likewise.
32         * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Likewise.
33         * tree-ssa-scopedtables.c (avail_expr_hash, equal_mem_array_ref_p):
34         Likewise.
35         * tree-ssa-sccvn.c (vn_reference_lookup_3): Likewise.
36         Use get_ref_base_and_extent_hwi rather than get_ref_base_and_extent
37         when calling native_encode_expr.
38         * tree-ssa-structalias.c (get_constraint_for_component_ref): Update
39         call to get_ref_base_and_extent.
40         (do_structure_copy): Use get_ref_base_and_extent_hwi rather than
41         get_ref_base_and_extent.
42         * var-tracking.c (track_expr_p): Likewise.
43
44 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
45             Alan Hayward  <alan.hayward@arm.com>
46             David Sherwood  <david.sherwood@arm.com>
47
48         * ipa-param-manipulation.h (ipa_parm_adjustment::offset): Change from
49         HOST_WIDE_INT to poly_int64_pod.
50         * ipa-param-manipulation.c (ipa_modify_call_arguments): Track
51         polynomail parameter offsets.
52
53 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
54             Alan Hayward  <alan.hayward@arm.com>
55             David Sherwood  <david.sherwood@arm.com>
56
57         * gengtype.c (main): Handle poly_int64_pod.
58         * dwarf2out.h (dw_cfi_oprnd_cfa_loc): New dw_cfi_oprnd_type.
59         (dw_cfi_oprnd::dw_cfi_cfa_loc): New field.
60         (dw_cfa_location::offset, dw_cfa_location::base_offset): Change
61         from HOST_WIDE_INT to poly_int64_pod.
62         * dwarf2cfi.c (queued_reg_save::cfa_offset): Likewise.
63         (copy_cfa): New function.
64         (lookup_cfa_1): Use the cached dw_cfi_cfa_loc, if it exists.
65         (cfi_oprnd_equal_p): Handle dw_cfi_oprnd_cfa_loc.
66         (cfa_equal_p, dwarf2out_frame_debug_adjust_cfa)
67         (dwarf2out_frame_debug_cfa_offset, dwarf2out_frame_debug_expr)
68         (initial_return_save): Treat offsets as poly_ints.
69         (def_cfa_0): Likewise.  Cache the CFA in dw_cfi_cfa_loc if either
70         offset is nonconstant.
71         (reg_save): Take the offset as a poly_int64.  Fall back to
72         DW_CFA_expression for nonconstant offsets.
73         (queue_reg_save): Take the offset as a poly_int64.
74         * dwarf2out.c (dw_cfi_oprnd2_desc): Handle DW_CFA_def_cfa_expression.
75
76 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
77             Alan Hayward  <alan.hayward@arm.com>
78             David Sherwood  <david.sherwood@arm.com>
79
80         * rtl.h (operand_subword, operand_subword_force): Take the offset
81         as a poly_uint64 an unsigned int.
82         * emit-rtl.c (operand_subword, operand_subword_force): Likewise.
83
84 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
85             Alan Hayward  <alan.hayward@arm.com>
86             David Sherwood  <david.sherwood@arm.com>
87
88         * doc/rtl.texi: Update documentation of SUBREG_BYTE.  Document the
89         'p' format code.  Use INT_LIST rather than SUBREG as the example of
90         a code with an XINT and an XEXP.  Remove the implication that
91         accessing an rtx field using XINT is expected to work.
92         * rtl.def (SUBREG): Change format from "ei" to "ep".
93         * rtl.h (rtunion::rt_subreg): New field.
94         (XCSUBREG): New macro.
95         (SUBREG_BYTE): Use it.
96         (subreg_shape): Change offset from an unsigned int to a poly_uint16.
97         Update constructor accordingly.
98         (subreg_shape::operator ==): Update accordingly.
99         (subreg_shape::unique_id): Return an unsigned HOST_WIDE_INT rather
100         than an unsigned int.
101         (subreg_lsb, subreg_lowpart_offset, subreg_highpart_offset): Return
102         a poly_uint64 rather than an unsigned int.
103         (subreg_lsb_1): Likewise.  Take the offset as a poly_uint64 rather
104         than an unsigned int.
105         (subreg_size_offset_from_lsb, subreg_size_lowpart_offset)
106         (subreg_size_highpart_offset): Return a poly_uint64 rather than
107         an unsigned int.  Take the sizes as poly_uint64s.
108         (subreg_offset_from_lsb): Return a poly_uint64 rather than
109         an unsigned int.  Take the shift as a poly_uint64 rather than
110         an unsigned int.
111         (subreg_regno_offset, subreg_offset_representable_p): Take the offset
112         as a poly_uint64 rather than an unsigned int.
113         (simplify_subreg_regno): Likewise.
114         (byte_lowpart_offset): Return the memory offset as a poly_int64
115         rather than an int.
116         (subreg_memory_offset): Likewise.  Take the subreg offset as a
117         poly_uint64 rather than an unsigned int.
118         (simplify_subreg, simplify_gen_subreg, subreg_get_info)
119         (gen_rtx_SUBREG, validate_subreg): Take the subreg offset as a
120         poly_uint64 rather than an unsigned int.
121         * rtl.c (rtx_format): Describe 'p' in comment.
122         (copy_rtx, rtx_equal_p_cb, rtx_equal_p): Handle 'p'.
123         * emit-rtl.c (validate_subreg, gen_rtx_SUBREG): Take the subreg
124         offset as a poly_uint64 rather than an unsigned int.
125         (byte_lowpart_offset): Return the memory offset as a poly_int64
126         rather than an int.
127         (subreg_memory_offset): Likewise.  Take the subreg offset as a
128         poly_uint64 rather than an unsigned int.
129         (subreg_size_lowpart_offset, subreg_size_highpart_offset): Take the
130         mode sizes as poly_uint64s rather than unsigned ints.  Return a
131         poly_uint64 rather than an unsigned int.
132         (subreg_lowpart_p): Treat subreg offsets as poly_ints.
133         (copy_insn_1): Handle 'p'.
134         * rtlanal.c (set_noop_p): Treat subregs offsets as poly_uint64s.
135         (subreg_lsb_1): Take the subreg offset as a poly_uint64 rather than
136         an unsigned int.  Return the shift in the same way.
137         (subreg_lsb): Return the shift as a poly_uint64 rather than an
138         unsigned int.
139         (subreg_size_offset_from_lsb): Take the sizes and shift as
140         poly_uint64s rather than unsigned ints.  Return the offset as
141         a poly_uint64.
142         (subreg_get_info, subreg_regno_offset, subreg_offset_representable_p)
143         (simplify_subreg_regno): Take the offset as a poly_uint64 rather than
144         an unsigned int.
145         * rtlhash.c (add_rtx): Handle 'p'.
146         * genemit.c (gen_exp): Likewise.
147         * gengenrtl.c (type_from_format, gendef): Likewise.
148         * gensupport.c (subst_pattern_match, get_alternatives_number)
149         (collect_insn_data, alter_predicate_for_insn, alter_constraints)
150         (subst_dup): Likewise.
151         * gengtype.c (adjust_field_rtx_def): Likewise.
152         * genrecog.c (find_operand, find_matching_operand, validate_pattern)
153         (match_pattern_2): Likewise.
154         (rtx_test::SUBREG_FIELD): New rtx_test::kind_enum.
155         (rtx_test::subreg_field): New function.
156         (operator ==, safe_to_hoist_p, transition_parameter_type)
157         (print_nonbool_test, print_test): Handle SUBREG_FIELD.
158         * genattrtab.c (attr_rtx_1): Say that 'p' is deliberately not handled.
159         * genpeep.c (match_rtx): Likewise.
160         * print-rtl.c (print_poly_int): Include if GENERATOR_FILE too.
161         (rtx_writer::print_rtx_operand): Handle 'p'.
162         (print_value): Handle SUBREG.
163         * read-rtl.c (apply_int_iterator): Likewise.
164         (rtx_reader::read_rtx_operand): Handle 'p'.
165         * alias.c (rtx_equal_for_memref_p): Likewise.
166         * cselib.c (rtx_equal_for_cselib_1, cselib_hash_rtx): Likewise.
167         * caller-save.c (replace_reg_with_saved_mem): Treat subreg offsets
168         as poly_ints.
169         * calls.c (expand_call): Likewise.
170         * combine.c (combine_simplify_rtx, expand_field_assignment): Likewise.
171         (make_extraction, gen_lowpart_for_combine): Likewise.
172         * loop-invariant.c (hash_invariant_expr_1, invariant_expr_equal_p):
173         Likewise.
174         * cse.c (remove_invalid_subreg_refs): Take the offset as a poly_uint64
175         rather than an unsigned int.  Treat subreg offsets as poly_ints.
176         (exp_equiv_p): Handle 'p'.
177         (hash_rtx_cb): Likewise.  Treat subreg offsets as poly_ints.
178         (equiv_constant, cse_insn): Treat subreg offsets as poly_ints.
179         * dse.c (find_shift_sequence): Likewise.
180         * dwarf2out.c (rtl_for_decl_location): Likewise.
181         * expmed.c (extract_low_bits): Likewise.
182         * expr.c (emit_group_store, undefined_operand_subword_p): Likewise.
183         (expand_expr_real_2): Likewise.
184         * final.c (alter_subreg): Likewise.
185         (leaf_renumber_regs_insn): Handle 'p'.
186         * function.c (assign_parm_find_stack_rtl, assign_parm_setup_stack):
187         Treat subreg offsets as poly_ints.
188         * fwprop.c (forward_propagate_and_simplify): Likewise.
189         * ifcvt.c (noce_emit_move_insn, noce_emit_cmove): Likewise.
190         * ira.c (get_subreg_tracking_sizes): Likewise.
191         * ira-conflicts.c (go_through_subreg): Likewise.
192         * ira-lives.c (process_single_reg_class_operands): Likewise.
193         * jump.c (rtx_renumbered_equal_p): Likewise.  Handle 'p'.
194         * lower-subreg.c (simplify_subreg_concatn): Take the subreg offset
195         as a poly_uint64 rather than an unsigned int.
196         (simplify_gen_subreg_concatn, resolve_simple_move): Treat
197         subreg offsets as poly_ints.
198         * lra-constraints.c (operands_match_p): Handle 'p'.
199         (match_reload, curr_insn_transform): Treat subreg offsets as poly_ints.
200         * lra-spills.c (assign_mem_slot): Likewise.
201         * postreload.c (move2add_valid_value_p): Likewise.
202         * recog.c (general_operand, indirect_operand): Likewise.
203         * regcprop.c (copy_value, maybe_mode_change): Likewise.
204         (copyprop_hardreg_forward_1): Likewise.
205         * reginfo.c (simplifiable_subregs_hasher::hash, simplifiable_subregs)
206         (record_subregs_of_mode): Likewise.
207         * rtlhooks.c (gen_lowpart_general, gen_lowpart_if_possible): Likewise.
208         * reload.c (operands_match_p): Handle 'p'.
209         (find_reloads_subreg_address): Treat subreg offsets as poly_ints.
210         * reload1.c (alter_reg, choose_reload_regs): Likewise.
211         (compute_reload_subreg_offset): Likewise, and return an poly_int64.
212         * simplify-rtx.c (simplify_truncation, simplify_binary_operation_1):
213         (test_vector_ops_duplicate): Treat subreg offsets as poly_ints.
214         (simplify_const_poly_int_tests<N>::run): Likewise.
215         (simplify_subreg, simplify_gen_subreg): Take the subreg offset as
216         a poly_uint64 rather than an unsigned int.
217         * valtrack.c (debug_lowpart_subreg): Likewise.
218         * var-tracking.c (var_lowpart): Likewise.
219         (loc_cmp): Handle 'p'.
220
221 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
222             Alan Hayward  <alan.hayward@arm.com>
223             David Sherwood  <david.sherwood@arm.com>
224
225         * ira.c (get_subreg_tracking_sizes): New function.
226         (init_live_subregs): Take an integer size rather than a register.
227         (build_insn_chain): Use get_subreg_tracking_sizes.  Update calls
228         to init_live_subregs.
229
230 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
231             Alan Hayward  <alan.hayward@arm.com>
232             David Sherwood  <david.sherwood@arm.com>
233
234         * expr.c (store_constructor_field): Change bitsize from a
235         unsigned HOST_WIDE_INT to a poly_uint64 and bitpos from a
236         HOST_WIDE_INT to a poly_int64.
237         (store_constructor): Change size from a HOST_WIDE_INT to
238         a poly_int64.
239         (store_field): Likewise bitsize and bitpos.
240
241 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
242             Alan Hayward  <alan.hayward@arm.com>
243             David Sherwood  <david.sherwood@arm.com>
244
245         * expmed.h (store_bit_field): Change bitregion_start and
246         bitregion_end from unsigned HOST_WIDE_INT to poly_uint64.
247         * expmed.c (adjust_bit_field_mem_for_reg, strict_volatile_bitfield_p)
248         (store_bit_field_1, store_integral_bit_field, store_bit_field)
249         (store_fixed_bit_field, store_split_bit_field): Likewise.
250         * expr.c (store_constructor_field, store_field): Likewise.
251         (optimize_bitfield_assignment_op): Likewise.  Make the same change
252         to bitsize and bitpos.
253         * machmode.h (bit_field_mode_iterator): Change m_bitregion_start
254         and m_bitregion_end from HOST_WIDE_INT to poly_int64.  Make the
255         same change in the constructor arguments.
256         (get_best_mode): Change bitregion_start and bitregion_end from
257         unsigned HOST_WIDE_INT to poly_uint64.
258         * stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator):
259         Change bitregion_start and bitregion_end from HOST_WIDE_INT to
260         poly_int64.
261         (bit_field_mode_iterator::next_mode): Update for new types
262         of m_bitregion_start and m_bitregion_end.
263         (get_best_mode): Change bitregion_start and bitregion_end from
264         unsigned HOST_WIDE_INT to poly_uint64.
265
266 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
267             Alan Hayward  <alan.hayward@arm.com>
268             David Sherwood  <david.sherwood@arm.com>
269
270         * rtl.h (simplify_gen_subreg): Add a temporary overload that
271         accepts poly_uint64 offsets.
272         * expmed.h (extract_bit_field): Take bitsize and bitnum as
273         poly_uint64s rather than unsigned HOST_WIDE_INTs.
274         * expmed.c (lowpart_bit_field_p): Likewise.
275         (extract_bit_field_as_subreg): New function, split out from...
276         (extract_bit_field_1): ...here.  Take bitsize and bitnum as
277         poly_uint64s rather than unsigned HOST_WIDE_INTs.  For vector
278         extractions, check that BITSIZE matches the size of the extracted
279         value and that BITNUM is an exact multiple of that size.
280         If all else fails, try forcing the value into memory if
281         BITNUM is variable, and adjusting the address so that the
282         offset is constant.  Split the part that can only handle constant
283         bitsize and bitnum out into...
284         (extract_integral_bit_field): ...this new function.
285         (extract_bit_field): Take bitsize and bitnum as poly_uint64s
286         rather than unsigned HOST_WIDE_INTs.
287
288 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
289             Alan Hayward  <alan.hayward@arm.com>
290             David Sherwood  <david.sherwood@arm.com>
291
292         * expmed.h (store_bit_field): Take bitsize and bitnum as
293         poly_uint64s rather than unsigned HOST_WIDE_INTs.
294         * expmed.c (simple_mem_bitfield_p): Likewise.  Add a parameter
295         that returns the byte size.
296         (store_bit_field_1): Take bitsize and bitnum as
297         poly_uint64s rather than unsigned HOST_WIDE_INTs.  Update call
298         to simple_mem_bitfield_p.  Split the part that can only handle
299         constant bitsize and bitnum out into...
300         (store_integral_bit_field): ...this new function.
301         (store_bit_field): Take bitsize and bitnum as poly_uint64s rather
302         than unsigned HOST_WIDE_INTs.
303         (extract_bit_field_1): Update call to simple_mem_bitfield_p.
304
305 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
306             Alan Hayward  <alan.hayward@arm.com>
307             David Sherwood  <david.sherwood@arm.com>
308
309         * lra-int.h (lra_reg): Change offset from int to poly_int64.
310         (lra_insn_recog_data): Change sp_offset from HOST_WIDE_INT
311         to poly_int64.
312         (lra_eliminate_regs_1, eliminate_regs_in_insn): Change
313         update_sp_offset from a HOST_WIDE_INT to a poly_int64.
314         (lra_update_reg_val_offset, lra_reg_val_equal_p): Take the
315         offset as a poly_int64 rather than an int.
316         * lra-assigns.c (find_hard_regno_for_1): Handle poly_int64 offsets.
317         (setup_live_pseudos_and_spill_after_risky_transforms): Likewise.
318         * lra-constraints.c (equiv_address_substitution): Track offsets
319         as poly_int64s.
320         (emit_inc): Check poly_int_rtx_p instead of CONST_INT_P.
321         (curr_insn_transform): Handle the new form of sp_offset.
322         * lra-eliminations.c (lra_elim_table): Change previous_offset
323         and offset from HOST_WIDE_INT to poly_int64.
324         (print_elim_table, update_reg_eliminate): Update accordingly.
325         (self_elim_offsets): Change from HOST_WIDE_INT to poly_int64_pod.
326         (get_elimination): Update accordingly.
327         (form_sum): Check poly_int_rtx_p instead of CONST_INT_P.
328         (lra_eliminate_regs_1, eliminate_regs_in_insn): Change
329         update_sp_offset from a HOST_WIDE_INT to a poly_int64.  Handle
330         poly_int64 offsets generally.
331         (curr_sp_change): Change from HOST_WIDE_INT to poly_int64.
332         (mark_not_eliminable, init_elimination): Update accordingly.
333         (remove_reg_equal_offset_note): Return a bool and pass the new
334         offset back by pointer as a poly_int64.
335         * lra-remat.c (change_sp_offset): Take sp_offset as a poly_int64
336         rather than a HOST_WIDE_INT.
337         (do_remat): Track offsets poly_int64s.
338         * lra.c (lra_update_insn_recog_data, setup_sp_offset): Likewise.
339
340 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
341             Alan Hayward  <alan.hayward@arm.com>
342             David Sherwood  <david.sherwood@arm.com>
343
344         * rtl.h (mem_attrs): Add a default constructor.  Change size and
345         offset from HOST_WIDE_INT to poly_int64.
346         * emit-rtl.h (set_mem_offset, set_mem_size, adjust_address_1)
347         (adjust_automodify_address_1, set_mem_attributes_minus_bitpos)
348         (widen_memory_access): Take the sizes and offsets as poly_int64s
349         rather than HOST_WIDE_INTs.
350         * alias.c (ao_ref_from_mem): Handle the new form of MEM_OFFSET.
351         (offset_overlap_p): Take poly_int64s rather than HOST_WIDE_INTs
352         and ints.
353         (adjust_offset_for_component_ref): Change the offset from a
354         HOST_WIDE_INT to a poly_int64.
355         (nonoverlapping_memrefs_p): Track polynomial offsets and sizes.
356         * cfgcleanup.c (merge_memattrs): Update after mem_attrs changes.
357         * dce.c (find_call_stack_args): Likewise.
358         * dse.c (record_store): Likewise.
359         * dwarf2out.c (tls_mem_loc_descriptor, dw_sra_loc_expr): Likewise.
360         * print-rtl.c (rtx_writer::print_rtx): Likewise.
361         * read-rtl-function.c (test_loading_mem): Likewise.
362         * rtlanal.c (may_trap_p_1): Likewise.
363         * simplify-rtx.c (delegitimize_mem_from_attrs): Likewise.
364         * var-tracking.c (int_mem_offset, track_expr_p): Likewise.
365         * emit-rtl.c (mem_attrs_eq_p, get_mem_align_offset): Likewise.
366         (mem_attrs::mem_attrs): New function.
367         (set_mem_attributes_minus_bitpos): Change bitpos from a
368         HOST_WIDE_INT to poly_int64.
369         (set_mem_alias_set, set_mem_addr_space, set_mem_align, set_mem_expr)
370         (clear_mem_offset, clear_mem_size, change_address)
371         (get_spill_slot_decl, set_mem_attrs_for_spill): Directly
372         initialize mem_attrs.
373         (set_mem_offset, set_mem_size, adjust_address_1)
374         (adjust_automodify_address_1, offset_address, widen_memory_access):
375         Likewise.  Take poly_int64s rather than HOST_WIDE_INT.
376
377 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
378             Alan Hayward  <alan.hayward@arm.com>
379             David Sherwood  <david.sherwood@arm.com>
380
381         * rtlanal.c (rtx_addr_can_trap_p_1): Take the offset and size
382         as poly_int64s rather than HOST_WIDE_INTs.  Use a size of -1
383         rather than 0 to represent an unknown size.  Assert that the size
384         is known when the mode isn't BLKmode.
385         (may_trap_p_1): Use -1 for unknown sizes.
386         (rtx_addr_can_trap_p): Likewise.  Pass BLKmode rather than VOIDmode.
387
388 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
389             Alan Hayward  <alan.hayward@arm.com>
390             David Sherwood  <david.sherwood@arm.com>
391
392         * dse.c (store_info): Change offset and width from HOST_WIDE_INT
393         to poly_int64.  Update commentary for positions_needed.large.
394         (read_info_type): Change offset and width from HOST_WIDE_INT
395         to poly_int64.
396         (set_usage_bits): Likewise.
397         (canon_address): Return the offset as a poly_int64 rather than
398         a HOST_WIDE_INT.  Use strip_offset_and_add.
399         (set_all_positions_unneeded, any_positions_needed_p): Use
400         positions_needed.large to track stores with non-constant widths.
401         (all_positions_needed_p): Likewise.  Take the offset and width
402         as poly_int64s rather than ints.  Assert that rhs is nonnull.
403         (record_store): Cope with non-constant offsets and widths.
404         Nullify the rhs of an earlier store if we can't tell which bytes
405         of it are needed.
406         (find_shift_sequence): Take the access_size and shift as poly_int64s
407         rather than ints.
408         (get_stored_val): Take the read_offset and read_width as poly_int64s
409         rather than HOST_WIDE_INTs.
410         (check_mem_read_rtx, scan_stores, scan_reads, dse_step5): Handle
411         non-constant offsets and widths.
412
413 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
414             Alan Hayward  <alan.hayward@arm.com>
415             David Sherwood  <david.sherwood@arm.com>
416
417         * inchash.h (inchash::hash::add_poly_int): New function.
418         * tree-ssa-alias.h (ao_ref::offset, ao_ref::size, ao_ref::max_size):
419         Use poly_int64 rather than HOST_WIDE_INT.
420         (ao_ref::max_size_known_p): New function.
421         * tree-ssa-sccvn.h (vn_reference_op_struct::off): Use poly_int64_pod
422         rather than HOST_WIDE_INT.
423         * tree-ssa-alias.c (ao_ref_base): Apply get_ref_base_and_extent
424         to temporaries until its interface is adjusted to match.
425         (ao_ref_init_from_ptr_and_size): Handle polynomial offsets and sizes.
426         (aliasing_component_refs_p, decl_refs_may_alias_p)
427         (indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p): Take
428         the offsets and max_sizes as poly_int64s instead of HOST_WIDE_INTs.
429         (refs_may_alias_p_1, stmt_kills_ref_p): Adjust for changes to
430         ao_ref fields.
431         * alias.c (ao_ref_from_mem): Likewise.
432         * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Likewise.
433         * tree-ssa-dse.c (valid_ao_ref_for_dse, normalize_ref)
434         (clear_bytes_written_by, setup_live_bytes_from_ref, compute_trims)
435         (maybe_trim_complex_store, maybe_trim_constructor_store)
436         (live_bytes_read, dse_classify_store): Likewise.
437         * tree-ssa-sccvn.c (vn_reference_compute_hash, vn_reference_eq):
438         (copy_reference_ops_from_ref, ao_ref_init_from_vn_reference)
439         (fully_constant_vn_reference_p, valueize_refs_1): Likewise.
440         (vn_reference_lookup_3): Likewise.
441         * tree-ssa-uninit.c (warn_uninitialized_vars): Likewise.
442
443 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
444             Alan Hayward  <alan.hayward@arm.com>
445             David Sherwood  <david.sherwood@arm.com>
446
447         * tree-ssa-alias.c (indirect_ref_may_alias_decl_p)
448         (indirect_refs_may_alias_p): Use ranges_may_overlap_p
449         instead of ranges_overlap_p.
450
451 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
452             Alan Hayward  <alan.hayward@arm.com>
453             David Sherwood  <david.sherwood@arm.com>
454
455         * tree-ssa-alias.c (same_addr_size_stores_p): Take the offsets and
456         sizes as poly_int64s rather than HOST_WIDE_INTs.
457
458 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
459             Alan Hayward  <alan.hayward@arm.com>
460             David Sherwood  <david.sherwood@arm.com>
461
462         * gimple-fold.h (fold_ctor_reference): Take the offset and size
463         as poly_uint64 rather than unsigned HOST_WIDE_INT.
464         * gimple-fold.c (fold_ctor_reference): Likewise.
465
466 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
467             Alan Hayward  <alan.hayward@arm.com>
468             David Sherwood  <david.sherwood@arm.com>
469
470         * target.def (dwarf_poly_indeterminate_value): New hook.
471         * targhooks.h (default_dwarf_poly_indeterminate_value): Declare.
472         * targhooks.c (default_dwarf_poly_indeterminate_value): New function.
473         * doc/tm.texi.in (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Document.
474         * doc/tm.texi: Regenerate.
475         * dwarf2out.h (build_cfa_loc, build_cfa_aligned_loc): Take the
476         offset as a poly_int64.
477         * dwarf2out.c (new_reg_loc_descr): Move later in file.  Take the
478         offset as a poly_int64.
479         (loc_descr_plus_const, loc_list_plus_const, build_cfa_aligned_loc):
480         Take the offset as a poly_int64.
481         (build_cfa_loc): Likewise.  Use loc_descr_plus_const.
482         (frame_pointer_fb_offset): Change to a poly_int64.
483         (int_loc_descriptor): Take the offset as a poly_int64.  Use
484         targetm.dwarf_poly_indeterminate_value for polynomial offsets.
485         (based_loc_descr): Take the offset as a poly_int64.
486         Use strip_offset_and_add to handle (plus X (const)).
487         Use new_reg_loc_descr instead of an open-coded version of the
488         previous implementation.
489         (mem_loc_descriptor): Handle CONST_POLY_INT.
490         (compute_frame_pointer_to_fb_displacement): Take the offset as a
491         poly_int64.  Use strip_offset_and_add to handle (plus X (const)).
492
493 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
494             Alan Hayward  <alan.hayward@arm.com>
495             David Sherwood  <david.sherwood@arm.com>
496
497         * rtl.h (reg_attrs::offset): Change from HOST_WIDE_INT to poly_int64.
498         (gen_rtx_REG_offset): Take the offset as a poly_int64.
499         * inchash.h (inchash::hash::add_poly_hwi): New function.
500         * gengtype.c (main): Register poly_int64.
501         * emit-rtl.c (reg_attr_hasher::hash): Use inchash.  Treat the
502         offset as a poly_int.
503         (reg_attr_hasher::equal): Use must_eq to compare offsets.
504         (get_reg_attrs, update_reg_offset, gen_rtx_REG_offset): Take the
505         offset as a poly_int64.
506         (set_reg_attrs_from_value): Treat the offset as a poly_int64.
507         * print-rtl.c (print_poly_int): New function.
508         (rtx_writer::print_rtx_operand_code_r): Treat REG_OFFSET as
509         a poly_int.
510         * var-tracking.c (track_offset_p, get_tracked_reg_offset): New
511         functions.
512         (var_reg_set, var_reg_delete_and_set, var_reg_delete): Use them.
513         (same_variable_part_p, track_loc_p): Take the offset as a poly_int64.
514         (vt_get_decl_and_offset): Return the offset as a poly_int64.
515         Enforce track_offset_p for parts of a PARALLEL.
516         (vt_add_function_parameter): Use const_offset for the final
517         offset to track.  Use get_tracked_reg_offset for the parts
518         of a PARALLEL.
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         * target.def (truly_noop_truncation): Take poly_uint64s instead of
525         unsigned ints.  Change default to hook_bool_puint64_puint64_true.
526         * doc/tm.texi: Regenerate.
527         * hooks.h (hook_bool_uint_uint_true): Delete.
528         (hook_bool_puint64_puint64_true): Declare.
529         * hooks.c (hook_bool_uint_uint_true): Delete.
530         (hook_bool_puint64_puint64_true): New function.
531         * config/mips/mips.c (mips_truly_noop_truncation): Take poly_uint64s
532         instead of unsigned ints.
533         * config/spu/spu.c (spu_truly_noop_truncation): Likewise.
534         * config/tilegx/tilegx.c (tilegx_truly_noop_truncation): Likewise.
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         * optabs.h (expand_operand): Add an int_value field.
541         (create_expand_operand): Add an int_value parameter and use it
542         to initialize the new expand_operand field.
543         (create_integer_operand): Replace with a declaration of a function
544         that accepts poly_int64s.  Move the implementation to...
545         * optabs.c (create_integer_operand): ...here.
546         (maybe_legitimize_operand): For EXPAND_INTEGER, check whether
547         the mode preserves the value of int_value, instead of calling
548         const_int_operand on the rtx.  Use gen_int_mode to generate
549         the new rtx.
550
551 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
552             Alan Hayward  <alan.hayward@arm.com>
553             David Sherwood  <david.sherwood@arm.com>
554
555         * dumpfile.h (dump_dec): Declare.
556         * dumpfile.c (dump_dec): New function.
557         * pretty-print.h (pp_wide_integer): Turn into a function and
558         declare a poly_int version.
559         * pretty-print.c (pp_wide_integer): New function for poly_ints.
560
561 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
562             Alan Hayward  <alan.hayward@arm.com>
563             David Sherwood  <david.sherwood@arm.com>
564
565         * doc/generic.texi (POLY_INT_CST): Document.
566         * tree.def (POLY_INT_CST): New tree code.
567         * treestruct.def (TS_POLY_INT_CST): New tree layout.
568         * tree-core.h (tree_poly_int_cst): New struct.
569         (tree_node): Add a poly_int_cst field.
570         * tree.h (POLY_INT_CST_P, POLY_INT_CST_COEFF): New macros.
571         (wide_int_to_tree, force_fit_type): Take a poly_wide_int_ref
572         instead of a wide_int_ref.
573         (build_int_cst, build_int_cst_type): Take a poly_int64 instead
574         of a HOST_WIDE_INT.
575         (build_int_cstu, build_array_type_nelts): Take a poly_uint64
576         instead of an unsigned HOST_WIDE_INT.
577         (build_poly_int_cst, tree_fits_poly_int64_p, tree_fits_poly_uint64_p)
578         (ptrdiff_tree_p): Declare.
579         (tree_to_poly_int64, tree_to_poly_uint64): Likewise.  Provide
580         extern inline implementations if the target doesn't use POLY_INT_CST.
581         (poly_int_tree_p): New function.
582         (wi::unextended_tree): New class.
583         (wi::int_traits <unextended_tree>): New override.
584         (wi::extended_tree): Add a default constructor.
585         (wi::extended_tree::get_tree): New function.
586         (wi::widest_extended_tree, wi::offset_extended_tree): New typedefs.
587         (wi::tree_to_widest_ref, wi::tree_to_offset_ref): Use them.
588         (wi::tree_to_poly_widest_ref, wi::tree_to_poly_offset_ref)
589         (wi::tree_to_poly_wide_ref): New typedefs.
590         (wi::ints_for): Provide overloads for extended_tree and
591         unextended_tree.
592         (poly_int_cst_value, wi::to_poly_widest, wi::to_poly_offset)
593         (wi::to_wide): New functions.
594         (wi::fits_to_boolean_p, wi::fits_to_tree_p): Handle poly_ints.
595         * tree.c (poly_int_cst_hasher): New struct.
596         (poly_int_cst_hash_table): New variable.
597         (tree_node_structure_for_code, tree_code_size, simple_cst_equal)
598         (valid_constant_size_p, add_expr, drop_tree_overflow): Handle
599         POLY_INT_CST.
600         (initialize_tree_contains_struct): Handle TS_POLY_INT_CST.
601         (init_ttree): Initialize poly_int_cst_hash_table.
602         (build_int_cst, build_int_cst_type, build_invariant_address): Take
603         a poly_int64 instead of a HOST_WIDE_INT.
604         (build_int_cstu, build_array_type_nelts): Take a poly_uint64
605         instead of an unsigned HOST_WIDE_INT.
606         (wide_int_to_tree): Rename to...
607         (wide_int_to_tree_1): ...this.
608         (build_new_poly_int_cst, build_poly_int_cst): New functions.
609         (force_fit_type): Take a poly_wide_int_ref instead of a wide_int_ref.
610         (wide_int_to_tree): New function that takes a poly_wide_int_ref.
611         (ptrdiff_tree_p, tree_to_poly_int64, tree_to_poly_uint64)
612         (tree_fits_poly_int64_p, tree_fits_poly_uint64_p): New functions.
613         * lto-streamer-out.c (DFS::DFS_write_tree_body, hash_tree): Handle
614         TS_POLY_INT_CST.
615         * tree-streamer-in.c (lto_input_ts_poly_tree_pointers): Likewise.
616         (streamer_read_tree_body): Likewise.
617         * tree-streamer-out.c (write_ts_poly_tree_pointers): Likewise.
618         (streamer_write_tree_body): Likewise.
619         * tree-streamer.c (streamer_check_handled_ts_structures): Likewise.
620         * asan.c (asan_protect_global): Require the size to be an INTEGER_CST.
621         * cfgexpand.c (expand_debug_expr): Handle POLY_INT_CST.
622         * expr.c (expand_expr_real_1, const_vector_from_tree): Likewise.
623         * gimple-expr.h (is_gimple_constant): Likewise.
624         * gimplify.c (maybe_with_size_expr): Likewise.
625         * print-tree.c (print_node): Likewise.
626         * tree-data-ref.c (data_ref_compare_tree): Likewise.
627         * tree-pretty-print.c (dump_generic_node): Likewise.
628         * tree-ssa-address.c (addr_for_mem_ref): Likewise.
629         * tree-vect-data-refs.c (dr_group_sort_cmp): Likewise.
630         * tree-vrp.c (compare_values_warnv): Likewise.
631         * tree-ssa-loop-ivopts.c (determine_base_object, constant_multiple_of)
632         (get_loop_invariant_expr, add_candidate_1, get_computation_aff_1)
633         (force_expr_to_var_cost): Likewise.
634         * tree-ssa-loop.c (for_each_index): Likewise.
635         * fold-const.h (build_invariant_address, size_int_kind): Take a
636         poly_int64 instead of a HOST_WIDE_INT.
637         * fold-const.c (fold_negate_expr_1, const_binop, const_unop)
638         (fold_convert_const, multiple_of_p, fold_negate_const): Handle
639         POLY_INT_CST.
640         (size_binop_loc): Likewise.  Allow int_const_binop_1 to fail.
641         (int_const_binop_2): New function, split out from...
642         (int_const_binop_1): ...here.  Handle POLY_INT_CST.
643         (size_int_kind): Take a poly_int64 instead of a HOST_WIDE_INT.
644         * expmed.c (make_tree): Handle CONST_POLY_INT_P.
645         * gimple-ssa-strength-reduction.c (slsr_process_add)
646         (slsr_process_mul): Check for INTEGER_CSTs before using them
647         as candidates.
648         * stor-layout.c (bits_from_bytes): New function.
649         (bit_from_pos): Use it.
650         (layout_type): Likewise.  For vectors, multiply the TYPE_SIZE_UNIT
651         by BITS_PER_UNIT to get the TYPE_SIZE.
652         * tree-cfg.c (verify_expr, verify_types_in_gimple_reference): Allow
653         MEM_REF and TARGET_MEM_REF offsets to be a POLY_INT_CST.
654
655 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
656             Alan Hayward  <alan.hayward@arm.com>
657             David Sherwood  <david.sherwood@arm.com>
658
659         * doc/rtl.texi (const_poly_int): Document.  Also document the
660         rtl sharing behavior.
661         * gengenrtl.c (excluded_rtx): Return true for CONST_POLY_INT.
662         * rtl.h (const_poly_int_def): New struct.
663         (rtx_def::u): Add a cpi field.
664         (CASE_CONST_UNIQUE, CASE_CONST_ANY): Add CONST_POLY_INT.
665         (CONST_POLY_INT_P, CONST_POLY_INT_COEFFS): New macros.
666         (wi::rtx_to_poly_wide_ref): New typedef
667         (const_poly_int_value, wi::to_poly_wide, rtx_to_poly_int64)
668         (poly_int_rtx_p): New functions.
669         (trunc_int_for_mode): Declare a poly_int64 version.
670         (plus_constant): Take a poly_int64 instead of a HOST_WIDE_INT.
671         (immed_wide_int_const): Take a poly_wide_int_ref rather than
672         a wide_int_ref.
673         (strip_offset): Declare.
674         (strip_offset_and_add): New function.
675         * rtl.def (CONST_POLY_INT): New rtx code.
676         * rtl.c (rtx_size): Handle CONST_POLY_INT.
677         (shared_const_p): Use poly_int_rtx_p.
678         * emit-rtl.h (gen_int_mode): Take a poly_int64 instead of a
679         HOST_WIDE_INT.
680         (gen_int_shift_amount): Likewise.
681         * emit-rtl.c (const_poly_int_hasher): New class.
682         (const_poly_int_htab): New variable.
683         (init_emit_once): Initialize it when NUM_POLY_INT_COEFFS > 1.
684         (const_poly_int_hasher::hash): New function.
685         (const_poly_int_hasher::equal): Likewise.
686         (gen_int_mode): Take a poly_int64 instead of a HOST_WIDE_INT.
687         (immed_wide_int_const): Rename to...
688         (immed_wide_int_const_1): ...this and make static.
689         (immed_wide_int_const): New function, taking a poly_wide_int_ref
690         instead of a wide_int_ref.
691         (gen_int_shift_amount): Take a poly_int64 instead of a HOST_WIDE_INT.
692         (gen_lowpart_common): Handle CONST_POLY_INT.
693         * cse.c (hash_rtx_cb, equiv_constant): Likewise.
694         * cselib.c (cselib_hash_rtx): Likewise.
695         * dwarf2out.c (const_ok_for_output_1): Likewise.
696         * expr.c (convert_modes): Likewise.
697         * print-rtl.c (rtx_writer::print_rtx, print_value): Likewise.
698         * rtlhash.c (add_rtx): Likewise.
699         * explow.c (trunc_int_for_mode): Add a poly_int64 version.
700         (plus_constant): Take a poly_int64 instead of a HOST_WIDE_INT.
701         Handle existing CONST_POLY_INT rtxes.
702         * expmed.h (expand_shift): Take a poly_int64 instead of a
703         HOST_WIDE_INT.
704         * expmed.c (expand_shift): Likewise.
705         * rtlanal.c (strip_offset): New function.
706         (commutative_operand_precedence): Give CONST_POLY_INT the same
707         precedence as CONST_DOUBLE and put CONST_WIDE_INT between that
708         and CONST_INT.
709         * rtl-tests.c (const_poly_int_tests): New struct.
710         (rtl_tests_c_tests): Use it.
711         * simplify-rtx.c (simplify_const_unary_operation): Handle
712         CONST_POLY_INT.
713         (simplify_const_binary_operation): Likewise.
714         (simplify_binary_operation_1): Fold additions of symbolic constants
715         and CONST_POLY_INTs.
716         (simplify_subreg): Handle extensions and truncations of
717         CONST_POLY_INTs.
718         (simplify_const_poly_int_tests): New struct.
719         (simplify_rtx_c_tests): Use it.
720         * wide-int.h (storage_ref): Add default constructor.
721         (wide_int_ref_storage): Likewise.
722         (trailing_wide_ints): Use GTY((user)).
723         (trailing_wide_ints::operator[]): Add a const version.
724         (trailing_wide_ints::get_precision): New function.
725         (trailing_wide_ints::extra_size): Likewise.
726
727 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
728             Alan Hayward  <alan.hayward@arm.com>
729             David Sherwood  <david.sherwood@arm.com>
730
731         * emit-rtl.h (gen_int_shift_amount): Declare.
732         * emit-rtl.c (gen_int_shift_amount): New function.
733         * asan.c (asan_emit_stack_protection): Use gen_int_shift_amount
734         instead of GEN_INT.
735         * calls.c (shift_return_value): Likewise.
736         * cse.c (fold_rtx): Likewise.
737         * dse.c (find_shift_sequence): Likewise.
738         * expmed.c (init_expmed_one_mode, store_bit_field_1, expand_shift_1)
739         (expand_shift, expand_smod_pow2): Likewise.
740         * lower-subreg.c (shift_cost): Likewise.
741         * optabs.c (expand_superword_shift, expand_doubleword_mult)
742         (expand_unop, expand_binop, shift_amt_for_vec_perm_mask)
743         (expand_vec_perm_var): Likewise.
744         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
745         (simplify_binary_operation_1): Likewise.
746         * combine.c (try_combine, find_split_point, force_int_to_mode)
747         (simplify_shift_const_1, simplify_shift_const): Likewise.
748         (change_zero_ext): Likewise.  Use simplify_gen_binary.
749
750 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
751
752         * poly-int.h (multiple_p): Fix handling of two non-poly_ints.
753
754 2017-12-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
755
756         * doc/invoke.texi (ARM Options): Document accepted extension options
757         for -march=armv8.3-a.
758
759 2017-12-20  Richard Earnshaw  <rearnsha@arm.com>
760
761         PR target/83105
762         * config.gcc (arm*-*-linux*): When configured with --with-float=hard
763         or --with-float=softfp, set the default CPU to arm10e.
764
765 2017-12-20  Eric Botcazou  <ebotcazou@adacore.com>
766
767         * config/visium/constraints.md (J, K, L): Use IN_RANGE macro.
768         * config/visium/predicates.md (const_shift_operand): Likewise.
769         * config/visium/visium.c (visium_legitimize_address): Fix oversight.
770         (visium_legitimize_reload_address): Likewise.
771
772 2017-12-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
773
774         PR target/82975
775         * config/arm/arm.h (TEST_REGNO): Adjust comment as expected in r255830.
776
777 2017-12-20  Jakub Jelinek  <jakub@redhat.com>
778
779         PR c++/83490
780         * calls.c (compute_argument_addresses): Ignore TYPE_EMPTY_P arguments.
781
782 2017-12-20  Julia Koval  <julia.koval@intel.com>
783
784         * common/config/i386/i386-common.c (OPTION_MASK_ISA_VPCLMULQDQ_SET,
785         OPTION_MASK_ISA_VPCLMULQDQ_UNSET): New.
786         (ix86_handle_option): Handle -mvpclmulqdq, move cx6 to flags2.
787         * config.gcc: Include vpclmulqdqintrin.h.
788         * config/i386/cpuid.h: Handle bit_VPCLMULQDQ.
789         * config/i386/driver-i386.c (host_detect_local_cpu): Handle
790         -mvpclmulqdq.
791         * config/i386/i386-builtin.def (__builtin_ia32_vpclmulqdq_v2di,
792         __builtin_ia32_vpclmulqdq_v4di, __builtin_ia32_vpclmulqdq_v8di): New.
793         * config/i386/i386-c.c (__VPCLMULQDQ__): New.
794         * config/i386/i386.c (isa2_opts): Add -mcx16.
795         (isa_opts): Add -mpclmulqdq, remove -mcx16.
796         (ix86_option_override_internal): Move mcx16 to flags2.
797         (ix86_valid_target_attribute_inner_p): Add vpclmulqdq.
798         (ix86_expand_builtin): Handle OPTION_MASK_ISA_VPCLMULQDQ.
799         * config/i386/i386.h (TARGET_VPCLMULQDQ, TARGET_VPCLMULQDQ_P): New.
800         * config/i386/i386.opt: Add mvpclmulqdq, move mcx16 to flags2.
801         * config/i386/immintrin.h: Include vpclmulqdqintrin.h.
802         * config/i386/sse.md (vpclmulqdq_<mode>): New pattern.
803         * config/i386/vpclmulqdqintrin.h (_mm512_clmulepi64_epi128,
804         _mm_clmulepi64_epi128, _mm256_clmulepi64_epi128): New intrinsics.
805         * doc/invoke.texi: Add -mvpclmulqdq.
806
807 2017-12-20  Tom de Vries  <tom@codesourcery.com>
808
809         PR middle-end/83423
810         * config/i386/i386.c (ix86_static_chain): Move DECL_STATIC_CHAIN test ...
811         * calls.c (rtx_for_static_chain): ... here.  New function.
812         * calls.h (rtx_for_static_chain): Declare.
813         * builtins.c (expand_builtin_setjmp_receiver): Use rtx_for_static_chain
814         instead of targetm.calls.static_chain.
815         * df-scan.c (df_get_entry_block_def_set): Same.
816
817 2017-12-19  Tom de Vries  <tom@codesourcery.com>
818
819         PR tree-optimization/83493
820         * graphite-isl-ast-to-gimple.c (translate_isl_ast_node_for): Unshare ub
821         and lb.
822
823 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
824
825         * gimple-ssa-sprintf.c (format_directive): Use inform_n instead of
826         inform with hardcoded english plural handling.
827
828 2017-12-18  Jeff Law  <law@redhat.com>
829
830         PR tree-optimization/83477
831         * tree-ssa-threadedge.c (record_temporary_equivalences_from_phis): For
832         a non-virtual PHI, always push a new range.
833
834 2017-12-19  Martin Sebor  <msebor@redhat.com>
835
836         PR middle-end/77608
837         * builtins.c (compute_objsize): Handle non-constant offsets.
838
839 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
840
841         PR tree-optimization/83444
842         * tree-ssa-strlen.c (strlen_check_and_optimize_stmt): For the
843         character load case, if get_stridx on MEM_REF's operand doesn't
844         look usable, retry with get_addr_stridx.
845
846 2017-12-19  Alexandre Oliva <aoliva@redhat.com>
847
848         PR debug/83422
849         * var-tracking.c (vt_debug_insns_local): Do not drop markers.
850         (variable_tracking_main_1): Keep markers even when VTA fails.
851
852         PR bootstrap/83396
853         * cfgexpand.c (expand_gimple_basic_block): Expand label first,
854         even if there are markers before it.
855         * cfgrtl.c (rtl_verify_bb_layout): Reject DEBUG_INSNs outside BBs.
856
857 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
858
859         * read-rtl.c (parse_reg_note_name): Replace Yoda conditions with
860         typical order conditions.
861         * sel-sched.c (extract_new_fences_from): Likewise.
862         * config/visium/constraints.md (J, K, L): Likewise.
863         * config/visium/predicates.md (const_shift_operand): Likewise.
864         * config/visium/visium.c (visium_legitimize_address,
865         visium_legitimize_reload_address): Likewise.
866         * config/m68k/m68k.c (output_reg_adjust, emit_reg_adjust): Likewise.
867         * config/arm/arm.c (arm_block_move_unaligned_straight): Likewise.
868         * config/avr/constraints.md (Y01, Ym1, Y02, Ym2): Likewise.
869         * config/avr/avr-log.c (avr_vdump, avr_log_set_avr_log,
870         SET_DUMP_DETAIL): Likewise.
871         * config/avr/predicates.md (const_8_16_24_operand): Likewise.
872         * config/avr/avr.c (STR_PREFIX_P, avr_popcount_each_byte,
873         avr_is_casesi_sequence, avr_casei_sequence_check_operands,
874         avr_set_core_architecture, avr_set_current_function,
875         avr_legitimize_reload_address, avr_asm_len, avr_print_operand,
876         output_movqi, output_movsisf, avr_out_plus, avr_out_bitop,
877         avr_out_fract, avr_adjust_insn_length, avr_encode_section_info,
878         avr_2word_insn_p, output_reload_in_const, avr_has_nibble_0xf,
879         avr_map_decompose, avr_fold_builtin): Likewise.
880         * config/avr/driver-avr.c (avr_devicespecs_file): Likewise.
881         * config/avr/gen-avr-mmcu-specs.c (str_prefix_p, print_mcu): Likewise.
882         * config/i386/i386.c (ix86_parse_stringop_strategy_string): Likewise.
883         * config/m32c/m32c-pragma.c (m32c_pragma_memregs): Likewise.
884         * config/m32c/m32c.c (m32c_conditional_register_usage,
885         m32c_address_cost): Likewise.
886         * config/m32c/predicates.md (shiftcount_operand,
887         longshiftcount_operand): Likewise.
888         * config/iq2000/iq2000.c (iq2000_expand_prologue): Likewise.
889         * config/nios2/nios2.c (nios2_handle_custom_fpu_insn_option,
890         can_use_cdx_ldstw): Likewise.
891         * config/nios2/nios2.h (CDX_REG_P): Likewise.
892         * config/cr16/cr16.h (RETURN_ADDR_RTX, REGNO_MODE_OK_FOR_BASE_P):
893         Likewise.
894         * config/cr16/cr16.md (*mov<mode>_double): Likewise.
895         * config/cr16/cr16.c (cr16_create_dwarf_for_multi_push): Likewise.
896         * config/h8300/h8300.c (h8300_rtx_costs, get_shift_alg): Likewise.
897         * config/vax/constraints.md (U06, U08, U16, CN6, S08, S16): Likewise.
898         * config/vax/vax.c (adjacent_operands_p): Likewise.
899         * config/ft32/constraints.md (L, b, KA): Likewise.
900         * config/ft32/ft32.c (ft32_load_immediate, ft32_expand_prologue):
901         Likewise.
902         * cfgexpand.c (expand_stack_alignment): Likewise.
903         * gcse.c (insert_expr_in_table): Likewise.
904         * print-rtl.c (rtx_writer::print_rtx_operand_codes_E_and_V): Likewise.
905         * cgraphunit.c (cgraph_node::expand): Likewise.
906         * ira-build.c (setup_min_max_allocno_live_range_point): Likewise.
907         * emit-rtl.c (add_insn): Likewise.
908         * input.c (dump_location_info): Likewise.
909         * passes.c (NEXT_PASS): Likewise.
910         * read-rtl-function.c (parse_note_insn_name,
911         function_reader::read_rtx_operand_r, function_reader::parse_mem_expr):
912         Likewise.
913         * sched-rgn.c (sched_rgn_init): Likewise.
914         * diagnostic-show-locus.c (layout::show_ruler): Likewise.
915         * combine.c (find_split_point, simplify_if_then_else, force_to_mode,
916         if_then_else_cond, simplify_shift_const_1, simplify_comparison): Likewise.
917         * explow.c (eliminate_constant_term): Likewise.
918         * final.c (leaf_renumber_regs_insn): Likewise.
919         * cfgrtl.c (print_rtl_with_bb): Likewise.
920         * genhooks.c (emit_init_macros): Likewise.
921         * poly-int.h (maybe_ne, maybe_le, maybe_lt): Likewise.
922         * tree-data-ref.c (conflict_fn): Likewise.
923         * selftest.c (assert_streq): Likewise.
924         * expr.c (store_constructor_field, expand_expr_real_1): Likewise.
925         * fold-const.c (fold_range_test, extract_muldiv_1, fold_truth_andor,
926         fold_binary_loc, multiple_of_p): Likewise.
927         * reload.c (push_reload, find_equiv_reg): Likewise.
928         * et-forest.c (et_nca, et_below): Likewise.
929         * dbxout.c (dbxout_symbol_location): Likewise.
930         * reorg.c (relax_delay_slots): Likewise.
931         * dojump.c (do_compare_rtx_and_jump): Likewise.
932         * gengtype-parse.c (type): Likewise.
933         * simplify-rtx.c (simplify_gen_ternary, simplify_gen_relational,
934         simplify_const_relational_operation): Likewise.
935         * reload1.c (do_output_reload): Likewise.
936         * dumpfile.c (get_dump_file_info_by_switch): Likewise.
937         * gengtype.c (type_for_name): Likewise.
938         * gimple-ssa-sprintf.c (format_directive): Likewise.
939
940 2017-12-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
941
942         PR target/82975
943         * config/arm/arm.h (TEST_REGNO): Check reg_renumber is set before
944         accessing it.  Adjust comment.
945
946 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
947
948         PR middle-end/81914
949         * predict.c (zero_one_minusone): New function.
950         (apply_return_prediction): Avoid return prediction for functions
951         returning only -1, 0 and 1 values, unless they only return -1 and 0
952         or 0 and 1.
953
954 2017-12-19  Claudiu Zissulescu  <claziss@synopsys.com>
955
956         * config/arc/arc.c (legitimate_scaled_address_p): Clean
957         fall-through warning.
958         (arc_compute_frame_size): Remove unused variables.
959         (arc_print_operand): Fix fprintif format.
960         (arc_can_follow_jump): Clean fall-through warning.
961
962 2017-12-19  Marek Polacek  <polacek@redhat.com>
963
964         PR c++/83489
965         * config/i386/i386.c (init_cumulative_args): Don't check TYPE_EMPTY_P
966         on an error node.                                                    
967
968 2017-12-19  Claudiu Zissulescu  <claziss@synopsys.com>
969
970         * config/arc/arc.c (overriderregs): New variable.
971         (arc_override_options): Track fixed/call saved/call options.
972         (arc_conditional_register_usage): Check against overrideregs
973         variable whenever we change register properties.
974
975 2017-12-19  Nathan Sidwell  <nathan@acm.org>
976
977         * opts.c (finish_options): Don't prefix dump_base_name if it
978         already contains directories.
979
980 2017-12-19  Martin Liska  <mliska@suse.cz>
981
982         PR rtl-optimization/82675
983         * loop-unroll.c (unroll_loop_constant_iterations): Allocate one
984         more element in sbitmap.
985
986 2017-12-19  Paolo Carlini  <paolo.carlini@oracle.com>
987
988         * gimplify.c (gimplify_expr): Use error_operand_p.
989
990 2017-12-19  Sebastian Huber  <sebastian.huber@embedded-brains.de>
991
992         PR target/83387
993         * config/rs6000/t-rtems (MULTILIB_REQUIRED): Remove 64-bit soft-float
994         multilib.
995
996 2017-12-19  Daniel Cederman  <cederman@gaisler.com>
997
998         * config/sparc/sparc.c (sparc_do_work_around_errata): Make sure
999         the jump is to a label.
1000
1001 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
1002
1003         PR tree-optimization/83444
1004         * tree-ssa-strlen.c (strlen_check_and_optimize_stmt): Optimize
1005         character loads.
1006
1007         PR ipa/82801
1008         PR ipa/83346
1009         * ipa-inline.c (flatten_remove_node_hook): New function.
1010         (ipa_inline): Keep only nodes with flatten attribute at the end of
1011         the array in the order from ipa_reverse_postorder, only walk that
1012         portion of array for flattening, if there is more than one such
1013         node, temporarily register a removal hook and ignore removed nodes.
1014
1015         PR tree-optimization/80631
1016         * tree-vect-loop.c (vect_create_epilog_for_reduction): Compare
1017         induc_code against MAX_EXPR or MIN_EXPR instead of reduc_fn against
1018         IFN_REDUC_MAX or IFN_REDUC_MIN.
1019
1020 2017-12-18  Jeff Law  <law@redhat.com>
1021
1022         * tree-ssa-dom.c (record_equivalences_from_phis): Do not
1023         record symbolic equivalences from backedges in the CFG.
1024
1025         Revert
1026         2017-11-19  Jeff Law  <law@redhat.com>
1027
1028         * tree-ssa-dom.c (record_equivalences_from_phis): Fix handling
1029         of degenerates resulting from ignoring an edge.
1030
1031 2017-12-18  Martin Sebor  <msebor@redhat.com>
1032
1033         PR middle-end/83373
1034         PR tree-optimization/78450
1035         * tree-ssa-strlen.c (maybe_set_strlen_range): New function.
1036         (handle_builtin_strlen): Call it.
1037
1038 2017-12-18  Segher Boessenkool  <segher@kernel.crashing.org>
1039
1040         PR rtl-optimization/83424
1041         * rtlanal.c (dead_or_set_regno_p): Handle CLOBBER just like SET.
1042
1043 2017-12-18  Marek Polacek  <polacek@redhat.com>
1044
1045         PR middle-end/83463
1046         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref):
1047         Check if TYPE is INTEGRAL_TYPE_P before accessing its min/max
1048         values.
1049
1050 2017-12-18  Claudiu Zissulescu  <claziss@synopsys.com>
1051
1052         * config/arc/arc.md (maddsidi4, maddsidi4_split): Update pattern.
1053         (umaddsidi4, umaddsidi_split): Likewise.
1054
1055 2017-12-18  Claudiu Zissulescu  <claziss@synopsys.com>
1056
1057         * config/arc/arc.c (arc_legitimate_constant_p): Always check all
1058         constants.
1059
1060 2017-12-18  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
1061
1062         PR target/83420
1063         * config/s390/s390.c (s390_option_override): Avoid strncpy.
1064
1065 2017-12-18  Richard Biener  <rguenther@suse.de>
1066
1067         PR tree-optimization/81877
1068         * tree-ssa-loop-im.c (ref_indep_loop_p): Remove safelen parameters.
1069         (outermost_indep_loop): Adjust.
1070         (ref_indep_loop_p_1): Likewise.  Remove safelen handling again.
1071         (can_sm_ref_p): Adjust.
1072
1073 2017-12-18  Richard Biener  <rguenther@suse.de>
1074
1075         PR middle-end/77291
1076         * tree.c (array_at_struct_end_p): Return true if the underlying
1077         object has space for at least one element in excess of what
1078         the array domain specifies.
1079
1080 2017-12-17  Sandra Loosemore  <sandra@codesourcery.com>
1081
1082         * doc/extend.texi (x86 Function Attributes): Reformat nocf_check
1083         example to avoid overfull hbox.
1084         * doc/invoke.texi (Option Summary): Add missing @gol.
1085         (C++ Dialect Options): Reformat -Wnoexcept-type example to avoid 
1086         overfull hbox.
1087         
1088 2017-12-17  Sandra Loosemore  <sandra@codesourcery.com>
1089             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1090
1091         * doc/invoke.texi (Option Summary): Add -mverbose-cost-dump
1092         to AArch64 and ARM lists, plus missing -mflip-thumb for ARM.
1093         (AArch64 Options): Document -mverbose-cost-dump.
1094         (ARM Options): Likewise, plus -mflip-thumb.
1095
1096 2017-12-17  Martin Sebor  <msebor@redhat.com>
1097
1098         PR bootstrap/83446
1099         * gimple-ssa-warn-restrict.c
1100         (builtin_memref::offset_out_of_bounds): Correct the handling of
1101         anti-ranges.
1102
1103 2017-12-17  Sandra Loosemore  <sandra@codesourcery.com>
1104
1105         * doc/invoke.texi (ARC Options): Add missing -mlra entry.
1106
1107 2017-12-17  John David Anglin  <danglin@gcc.gnu.org>
1108
1109         * config/pa/pa.c (pa_som_asm_init_sections): Fix comment.
1110
1111 2017-12-17  Markus Trippelsdorf  <markus@trippelsdorf.de>
1112
1113         * x86-tune-costs.h (skylake_cost, core_cost): Decrease r64 multiply
1114         latencies.
1115
1116 2017-12-16  Sandra Loosemore  <sandra@codesourcery.com>
1117
1118         * doc/invoke.texi: Fix some typos.
1119
1120 2017-12-16  Martin Sebor  <msebor@redhat.com>
1121
1122         PR tree-optimization/78918
1123         * Makefile.in (OBJS): Add gimple-ssa-warn-restrict.o.
1124         * builtins.c (check_sizes): Rename...
1125         (check_access): ...to this.  Rename function arguments for clarity.
1126         (check_memop_sizes): Adjust names.
1127         (expand_builtin_memchr, expand_builtin_memcpy): Same.
1128         (expand_builtin_memmove, expand_builtin_mempcpy): Same.
1129         (expand_builtin_strcat, expand_builtin_stpncpy): Same.
1130         (check_strncat_sizes, expand_builtin_strncat): Same.
1131         (expand_builtin_strncpy, expand_builtin_memset): Same.
1132         (expand_builtin_bzero, expand_builtin_memcmp): Same.
1133         (expand_builtin_memory_chk, maybe_emit_chk_warning): Same.
1134         (maybe_emit_sprintf_chk_warning): Same.
1135         (expand_builtin_strcpy): Adjust.
1136         (expand_builtin_stpcpy): Same.
1137         (expand_builtin_with_bounds): Detect out-of-bounds accesses
1138         in pointer-checking forms of memcpy, memmove, and mempcpy.
1139         (gcall_to_tree_minimal, max_object_size): Define new functions.
1140         * builtins.h (max_object_size): Declare.
1141         * calls.c (alloc_max_size): Call max_object_size instead of
1142         hardcoding ssizetype limit.
1143         (get_size_range): Handle new argument.
1144         * calls.h (get_size_range): Add a new argument.
1145         * cfgexpand.c (expand_call_stmt): Propagate no-warning bit.
1146         * doc/invoke.texi (-Wrestrict): Adjust, add example.
1147         * gimple-fold.c (gimple_fold_builtin_memory_op): Detect overlapping
1148         operations.
1149         (gimple_fold_builtin_memory_chk): Same.
1150         (gimple_fold_builtin_stxcpy_chk): New function.
1151         * gimple-ssa-warn-restrict.c: New source.
1152         * gimple-ssa-warn-restrict.h: New header.
1153         * gimple.c (gimple_build_call_from_tree): Propagate location.
1154         * passes.def (pass_warn_restrict): Add new pass.
1155         * tree-pass.h (make_pass_warn_restrict): Declare.
1156         * tree-ssa-strlen.c (handle_builtin_strcpy): Detect overlapping
1157         operations.
1158         (handle_builtin_strcat): Same.
1159         (strlen_optimize_stmt): Rename...
1160         (strlen_check_and_optimize_stmt): ...to this.  Handle strncat,
1161         stpncpy, strncpy, and their checking forms.
1162
1163 2017-12-16  Jan Hubicka  <hubicka@ucw.cz>
1164
1165         PR rtl-optimization/82849
1166         * modulo-sched.c (sms_schedule): Use get_estimated_loop_iterations_int
1167         and get_max_loop_iterations_int.
1168
1169 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
1170             Alan Hayward  <alan.hayward@arm.com>
1171             David Sherwood  <david.sherwood@arm.com>
1172
1173         * machmode.h (mode_for_size, int_mode_for_size, float_mode_for_size)
1174         (smallest_mode_for_size, smallest_int_mode_for_size): Take the mode
1175         size as a poly_uint64.
1176         (mode_for_vector, mode_for_int_vector): Take the number of vector
1177         elements as a poly_uint64.
1178         * stor-layout.c (mode_for_size, smallest_mode_for_size): Take the mode
1179         size as a poly_uint64.
1180         (mode_for_vector, mode_for_int_vector): Take the number of vector
1181         elements as a poly_uint64.
1182
1183 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
1184             Alan Hayward  <alan.hayward@arm.com>
1185             David Sherwood  <david.sherwood@arm.com>
1186
1187         * machmode.h (MACRO_MODE): New macro.
1188         * addresses.h (base_reg_class, ok_for_base_p_1): Use it.
1189         * targhooks.c (default_libcall_value, default_secondary_reload)
1190         (default_memory_move_cost, default_register_move_cost)
1191         (default_class_max_nregs): Likewise.
1192
1193 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
1194             Alan Hayward  <alan.hayward@arm.com>
1195             David Sherwood  <david.sherwood@arm.com>
1196
1197         * doc/sourcebuild.texi: Document IN_TARGET_CODE.
1198         * genattrtab.c (write_header): Define IN_TARGET_CODE to 1 in the
1199         target C file.
1200         * genautomata.c (main): Likewise.
1201         * genconditions.c (write_header): Likewise.
1202         * genemit.c (main): Likewise.
1203         * genextract.c (print_header): Likewise.
1204         * genopinit.c (main): Likewise.
1205         * genoutput.c (output_prologue): Likewise.
1206         * genpeep.c (main): Likewise.
1207         * genpreds.c (write_insn_preds_c): Likewise.
1208         * genrecog.c (writer_header): Likewise.
1209         * config/aarch64/aarch64-builtins.c (IN_TARGET_CODE): Define.
1210         * config/aarch64/aarch64-c.c (IN_TARGET_CODE): Likewise.
1211         * config/aarch64/aarch64.c (IN_TARGET_CODE): Likewise.
1212         * config/aarch64/cortex-a57-fma-steering.c (IN_TARGET_CODE): Likewise.
1213         * config/aarch64/driver-aarch64.c (IN_TARGET_CODE): Likewise.
1214         * config/alpha/alpha.c (IN_TARGET_CODE): Likewise.
1215         * config/alpha/driver-alpha.c (IN_TARGET_CODE): Likewise.
1216         * config/arc/arc-c.c (IN_TARGET_CODE): Likewise.
1217         * config/arc/arc.c (IN_TARGET_CODE): Likewise.
1218         * config/arc/driver-arc.c (IN_TARGET_CODE): Likewise.
1219         * config/arm/aarch-common.c (IN_TARGET_CODE): Likewise.
1220         * config/arm/arm-builtins.c (IN_TARGET_CODE): Likewise.
1221         * config/arm/arm-c.c (IN_TARGET_CODE): Likewise.
1222         * config/arm/arm.c (IN_TARGET_CODE): Likewise.
1223         * config/arm/driver-arm.c (IN_TARGET_CODE): Likewise.
1224         * config/avr/avr-c.c (IN_TARGET_CODE): Likewise.
1225         * config/avr/avr-devices.c (IN_TARGET_CODE): Likewise.
1226         * config/avr/avr-log.c (IN_TARGET_CODE): Likewise.
1227         * config/avr/avr.c (IN_TARGET_CODE): Likewise.
1228         * config/avr/driver-avr.c (IN_TARGET_CODE): Likewise.
1229         * config/avr/gen-avr-mmcu-specs.c (IN_TARGET_CODE): Likewise.
1230         * config/bfin/bfin.c (IN_TARGET_CODE): Likewise.
1231         * config/c6x/c6x.c (IN_TARGET_CODE): Likewise.
1232         * config/cr16/cr16.c (IN_TARGET_CODE): Likewise.
1233         * config/cris/cris.c (IN_TARGET_CODE): Likewise.
1234         * config/darwin.c (IN_TARGET_CODE): Likewise.
1235         * config/epiphany/epiphany.c (IN_TARGET_CODE): Likewise.
1236         * config/epiphany/mode-switch-use.c (IN_TARGET_CODE): Likewise.
1237         * config/epiphany/resolve-sw-modes.c (IN_TARGET_CODE): Likewise.
1238         * config/fr30/fr30.c (IN_TARGET_CODE): Likewise.
1239         * config/frv/frv.c (IN_TARGET_CODE): Likewise.
1240         * config/ft32/ft32.c (IN_TARGET_CODE): Likewise.
1241         * config/h8300/h8300.c (IN_TARGET_CODE): Likewise.
1242         * config/i386/djgpp.c (IN_TARGET_CODE): Likewise.
1243         * config/i386/driver-i386.c (IN_TARGET_CODE): Likewise.
1244         * config/i386/driver-mingw32.c (IN_TARGET_CODE): Likewise.
1245         * config/i386/host-cygwin.c (IN_TARGET_CODE): Likewise.
1246         * config/i386/host-i386-darwin.c (IN_TARGET_CODE): Likewise.
1247         * config/i386/host-mingw32.c (IN_TARGET_CODE): Likewise.
1248         * config/i386/i386-c.c (IN_TARGET_CODE): Likewise.
1249         * config/i386/i386.c (IN_TARGET_CODE): Likewise.
1250         * config/i386/intelmic-mkoffload.c (IN_TARGET_CODE): Likewise.
1251         * config/i386/msformat-c.c (IN_TARGET_CODE): Likewise.
1252         * config/i386/winnt-cxx.c (IN_TARGET_CODE): Likewise.
1253         * config/i386/winnt-stubs.c (IN_TARGET_CODE): Likewise.
1254         * config/i386/winnt.c (IN_TARGET_CODE): Likewise.
1255         * config/i386/x86-tune-sched-atom.c (IN_TARGET_CODE): Likewise.
1256         * config/i386/x86-tune-sched-bd.c (IN_TARGET_CODE): Likewise.
1257         * config/i386/x86-tune-sched-core.c (IN_TARGET_CODE): Likewise.
1258         * config/i386/x86-tune-sched.c (IN_TARGET_CODE): Likewise.
1259         * config/ia64/ia64-c.c (IN_TARGET_CODE): Likewise.
1260         * config/ia64/ia64.c (IN_TARGET_CODE): Likewise.
1261         * config/iq2000/iq2000.c (IN_TARGET_CODE): Likewise.
1262         * config/lm32/lm32.c (IN_TARGET_CODE): Likewise.
1263         * config/m32c/m32c-pragma.c (IN_TARGET_CODE): Likewise.
1264         * config/m32c/m32c.c (IN_TARGET_CODE): Likewise.
1265         * config/m32r/m32r.c (IN_TARGET_CODE): Likewise.
1266         * config/m68k/m68k.c (IN_TARGET_CODE): Likewise.
1267         * config/mcore/mcore.c (IN_TARGET_CODE): Likewise.
1268         * config/microblaze/microblaze-c.c (IN_TARGET_CODE): Likewise.
1269         * config/microblaze/microblaze.c (IN_TARGET_CODE): Likewise.
1270         * config/mips/driver-native.c (IN_TARGET_CODE): Likewise.
1271         * config/mips/frame-header-opt.c (IN_TARGET_CODE): Likewise.
1272         * config/mips/mips.c (IN_TARGET_CODE): Likewise.
1273         * config/mmix/mmix.c (IN_TARGET_CODE): Likewise.
1274         * config/mn10300/mn10300.c (IN_TARGET_CODE): Likewise.
1275         * config/moxie/moxie.c (IN_TARGET_CODE): Likewise.
1276         * config/msp430/driver-msp430.c (IN_TARGET_CODE): Likewise.
1277         * config/msp430/msp430-c.c (IN_TARGET_CODE): Likewise.
1278         * config/msp430/msp430.c (IN_TARGET_CODE): Likewise.
1279         * config/nds32/nds32-cost.c (IN_TARGET_CODE): Likewise.
1280         * config/nds32/nds32-fp-as-gp.c (IN_TARGET_CODE): Likewise.
1281         * config/nds32/nds32-intrinsic.c (IN_TARGET_CODE): Likewise.
1282         * config/nds32/nds32-isr.c (IN_TARGET_CODE): Likewise.
1283         * config/nds32/nds32-md-auxiliary.c (IN_TARGET_CODE): Likewise.
1284         * config/nds32/nds32-memory-manipulation.c (IN_TARGET_CODE): Likewise.
1285         * config/nds32/nds32-pipelines-auxiliary.c (IN_TARGET_CODE): Likewise.
1286         * config/nds32/nds32-predicates.c (IN_TARGET_CODE): Likewise.
1287         * config/nds32/nds32.c (IN_TARGET_CODE): Likewise.
1288         * config/nios2/nios2.c (IN_TARGET_CODE): Likewise.
1289         * config/nvptx/mkoffload.c (IN_TARGET_CODE): Likewise.
1290         * config/nvptx/nvptx.c (IN_TARGET_CODE): Likewise.
1291         * config/pa/pa.c (IN_TARGET_CODE): Likewise.
1292         * config/pdp11/pdp11.c (IN_TARGET_CODE): Likewise.
1293         * config/powerpcspe/driver-powerpcspe.c (IN_TARGET_CODE): Likewise.
1294         * config/powerpcspe/host-darwin.c (IN_TARGET_CODE): Likewise.
1295         * config/powerpcspe/host-ppc64-darwin.c (IN_TARGET_CODE): Likewise.
1296         * config/powerpcspe/powerpcspe-c.c (IN_TARGET_CODE): Likewise.
1297         * config/powerpcspe/powerpcspe-linux.c (IN_TARGET_CODE): Likewise.
1298         * config/powerpcspe/powerpcspe.c (IN_TARGET_CODE): Likewise.
1299         * config/riscv/riscv-builtins.c (IN_TARGET_CODE): Likewise.
1300         * config/riscv/riscv-c.c (IN_TARGET_CODE): Likewise.
1301         * config/riscv/riscv.c (IN_TARGET_CODE): Likewise.
1302         * config/rl78/rl78-c.c (IN_TARGET_CODE): Likewise.
1303         * config/rl78/rl78.c (IN_TARGET_CODE): Likewise.
1304         * config/rs6000/driver-rs6000.c (IN_TARGET_CODE): Likewise.
1305         * config/rs6000/host-darwin.c (IN_TARGET_CODE): Likewise.
1306         * config/rs6000/host-ppc64-darwin.c (IN_TARGET_CODE): Likewise.
1307         * config/rs6000/rs6000-c.c (IN_TARGET_CODE): Likewise.
1308         * config/rs6000/rs6000-linux.c (IN_TARGET_CODE): Likewise.
1309         * config/rs6000/rs6000-p8swap.c (IN_TARGET_CODE): Likewise.
1310         * config/rs6000/rs6000-string.c (IN_TARGET_CODE): Likewise.
1311         * config/rs6000/rs6000.c (IN_TARGET_CODE): Likewise.
1312         * config/rx/rx.c (IN_TARGET_CODE): Likewise.
1313         * config/s390/driver-native.c (IN_TARGET_CODE): Likewise.
1314         * config/s390/s390-c.c (IN_TARGET_CODE): Likewise.
1315         * config/s390/s390.c (IN_TARGET_CODE): Likewise.
1316         * config/sh/sh-c.c (IN_TARGET_CODE): Likewise.
1317         * config/sh/sh-mem.cc (IN_TARGET_CODE): Likewise.
1318         * config/sh/sh.c (IN_TARGET_CODE): Likewise.
1319         * config/sh/sh_optimize_sett_clrt.cc (IN_TARGET_CODE): Likewise.
1320         * config/sh/sh_treg_combine.cc (IN_TARGET_CODE): Likewise.
1321         * config/sparc/driver-sparc.c (IN_TARGET_CODE): Likewise.
1322         * config/sparc/sparc-c.c (IN_TARGET_CODE): Likewise.
1323         * config/sparc/sparc.c (IN_TARGET_CODE): Likewise.
1324         * config/spu/spu-c.c (IN_TARGET_CODE): Likewise.
1325         * config/spu/spu.c (IN_TARGET_CODE): Likewise.
1326         * config/stormy16/stormy16.c (IN_TARGET_CODE): Likewise.
1327         * config/tilegx/mul-tables.c (IN_TARGET_CODE): Likewise.
1328         * config/tilegx/tilegx-c.c (IN_TARGET_CODE): Likewise.
1329         * config/tilegx/tilegx.c (IN_TARGET_CODE): Likewise.
1330         * config/tilepro/mul-tables.c (IN_TARGET_CODE): Likewise.
1331         * config/tilepro/tilepro-c.c (IN_TARGET_CODE): Likewise.
1332         * config/tilepro/tilepro.c (IN_TARGET_CODE): Likewise.
1333         * config/v850/v850-c.c (IN_TARGET_CODE): Likewise.
1334         * config/v850/v850.c (IN_TARGET_CODE): Likewise.
1335         * config/vax/vax.c (IN_TARGET_CODE): Likewise.
1336         * config/visium/visium.c (IN_TARGET_CODE): Likewise.
1337         * config/vms/vms-c.c (IN_TARGET_CODE): Likewise.
1338         * config/vms/vms-f.c (IN_TARGET_CODE): Likewise.
1339         * config/vms/vms.c (IN_TARGET_CODE): Likewise.
1340         * config/xtensa/xtensa.c (IN_TARGET_CODE): Likewise.
1341
1342 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
1343             Alan Hayward  <alan.hayward@arm.com>
1344             David Sherwood  <david.sherwood@arm.com>
1345
1346         * tree-ssa-sccvn.c (vn_reference_lookup_3): Avoid repeated
1347         checks for MEM_REF.
1348
1349 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
1350             Alan Hayward  <alan.hayward@arm.com>
1351             David Sherwood  <david.sherwood@arm.com>
1352
1353         * doc/generic.texi (VEC_SERIES_EXPR): Document.
1354         * doc/md.texi (vec_series@var{m}): Document.
1355         * tree.def (VEC_SERIES_EXPR): New tree code.
1356         * tree.h (build_vec_series): Declare.
1357         * tree.c (build_vec_series): New function.
1358         * cfgexpand.c (expand_debug_expr): Handle VEC_SERIES_EXPR.
1359         * tree-pretty-print.c (dump_generic_node): Likewise.
1360         * gimple-pretty-print.c (dump_binary_rhs): Likewise.
1361         * tree-inline.c (estimate_operator_cost): Likewise.
1362         * expr.c (expand_expr_real_2): Likewise.
1363         * optabs-tree.c (optab_for_tree_code): Likewise.
1364         * tree-cfg.c (verify_gimple_assign_binary): Likewise.
1365         * fold-const.c (const_binop): Fold VEC_SERIES_EXPRs of constants.
1366         * expmed.c (make_tree): Handle VEC_SERIES.
1367         * optabs.def (vec_series_optab): New optab.
1368         * optabs.h (expand_vec_series_expr): Declare.
1369         * optabs.c (expand_vec_series_expr): New function.
1370         * tree-vect-generic.c (expand_vector_operations_1): Check that
1371         the operands also have vector type.
1372
1373 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
1374             Alan Hayward  <alan.hawyard@arm.com>
1375             David Sherwood  <david.sherwood@arm.com>
1376
1377         * doc/generic.texi (VEC_DUPLICATE_EXPR): Document.
1378         (VEC_COND_EXPR): Add missing @tindex.
1379         * doc/md.texi (vec_duplicate@var{m}): Document.
1380         * tree.def (VEC_DUPLICATE_EXPR): New tree codes.
1381         * tree.c (build_vector_from_val): Add stubbed-out handling of
1382         variable-length vectors, using VEC_DUPLICATE_EXPR.
1383         (uniform_vector_p): Handle VEC_DUPLICATE_EXPR.
1384         * cfgexpand.c (expand_debug_expr): Likewise.
1385         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
1386         * tree-inline.c (estimate_operator_cost): Likewise.
1387         * tree-pretty-print.c (dump_generic_node): Likewise.
1388         * tree-vect-generic.c (ssa_uniform_vector_p): Likewise.
1389         * fold-const.c (const_unop): Fold VEC_DUPLICATE_EXPRs of a constant.
1390         (test_vec_duplicate_folding): New function.
1391         (fold_const_c_tests): Call it.
1392         * optabs.def (vec_duplicate_optab): New optab.
1393         * optabs-tree.c (optab_for_tree_code): Handle VEC_DUPLICATE_EXPR.
1394         * optabs.h (expand_vector_broadcast): Declare.
1395         * optabs.c (expand_vector_broadcast): Make non-static.  Try using
1396         vec_duplicate_optab.
1397         * expr.c (store_constructor): Try using vec_duplicate_optab for
1398         uniform vectors.
1399         (expand_expr_real_2): Handle VEC_DUPLICATE_EXPR.
1400
1401 2017-12-15  Markus Trippelsdorf  <markus@trippelsdorf.de>
1402
1403         PR target/83358
1404         * config/i386/x86-tune-costs.h (skylake_cost, core_cost): Increase
1405         div/mod latencies a bit.
1406
1407 2017-12-15  Jeff Law  <law@redhat.com>
1408
1409         PR tree-optimization/36550
1410         * tree-ssa-threadupdate.c (count_stmts_and_phis_in_block): New.
1411         (mark_threaded_blocks): Rewrite code to avoid block copying when
1412         optimizing for size.  Don't pessimize blocks which will be
1413         copied, but all the statements will be dead.
1414
1415 2017-12-15  Alexandre Oliva <aoliva@redhat.com>
1416
1417         PR tree-optimization/81165
1418         * tree-ssa-threadupdate.c (uses_in_bb): New.
1419         (estimate_threading_killed_stmts): New.
1420         * tree-ssa-threadupdate.h (estimate_threading_killed_stmts): Prototype.
1421         * tree-ssa-threadedge.c 
1422         (record_temporary_equivalences_from_stmts_at_dest): Expand limit
1423         when its hit.
1424
1425 2017-12-15  Jeff Law  <law@redhat.com>
1426
1427         PR tree-optimization/83410
1428         * tree-ssa-threadupdate.c (thread_block_1): Avoid certain jump
1429         threads when parallelizing loops.
1430
1431 2017-12-15  Jakub Jelinek  <jakub@redhat.com>
1432
1433         * tree-core.h (struct attribute_spec): Swap affects_type_identity and
1434         handler fields.
1435         * config/alpha/alpha.c (vms_attribute_table): Swap
1436         affects_type_identity and handler fields, adjust comments.
1437         * config/mips/mips.c (mips_attribute_table): Likewise.
1438         * config/visium/visium.c (visium_attribute_table): Likewise.
1439         * config/epiphany/epiphany.c (epiphany_attribute_table): Likewise.
1440         * config/microblaze/microblaze.c (microblaze_attribute_table):
1441         Likewise.
1442         * config/spu/spu.c (spu_attribute_table): Likewise.
1443         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
1444         * config/arc/arc.c (arc_attribute_table): Likewise.
1445         * config/m68k/m68k.c (m68k_attribute_table): Likewise.
1446         * config/v850/v850.c (v850_handle_interrupt_attribute,
1447         v850_handle_data_area_attribute): Formatting fixes.
1448         (v850_attribute_table): Swap affects_type_identity and handler
1449         fields, adjust comments.
1450         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
1451         * config/arm/arm.c (arm_attribute_table): Likewise.
1452         * config/avr/avr.c (avr_attribute_table): Likewise.
1453         * config/s390/s390.c (s390_attribute_table): Likewise.
1454         * config/sh/sh.c (sh_attribute_table): Likewise.
1455         * config/i386/i386.c (ix86_handle_cconv_attribute,
1456         ix86_handle_callee_pop_aggregate_return): Formatting fixes.
1457         (ix86_attribute_table): Swap affects_type_identity and handler
1458         fields, adjust comments.
1459         * config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
1460         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
1461         * config/m32c/m32c.c (m32c_attribute_table): Likewise.
1462         * config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Likewise.
1463         * config/ia64/ia64.c (ia64_attribute_table): Likewise.
1464         * config/msp430/msp430.c (msp430_attribute_table): Likewise.
1465         * config/rx/rx.c (rx_attribute_table): Likewise.
1466         * config/cr16/cr16.c (cr16_attribute_table): Likewise.
1467         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
1468         * config/nvptx/nvptx.c (nvptx_attribute_table): Likewise.
1469         * config/powerpcspe/powerpcspe.c (rs6000_attribute_table): Likewise.
1470         * config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
1471         * config/stormy16/stormy16.c (xstormy16_attribute_table): Likewise.
1472         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
1473         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
1474         * config/rl78/rl78.c (rl78_attribute_table): Likewise.
1475         * config/nds32/nds32.c (nds32_attribute_table): Likewise.
1476         * doc/plugins.texi (user_attr): Likewise.  Add NULL for
1477         exclude.
1478         * attribs.c (empty_attribute_table): Swap affects_type_identity and
1479         handler fields.
1480         (register_scoped_attributes, decl_attributes): Formatting fixes.
1481
1482         PR tree-optimization/83269
1483         * fold-const.c (fold_binary_loc): Perform (-A) - B -> (-B) - A
1484         subtraction in arg0's type if type is signed and arg0 is unsigned.
1485         Formatting fix.
1486
1487         PR sanitizer/81281
1488         * match.pd ((T)(P + A) - (T)P -> (T) A): Use @@0 instead of @0 and
1489         convert? on @0 instead of convert.  Check type of @1, not @0.
1490         ((T)P - (T)(P + A) -> -(T) A): Use @@0 instead of @0 and
1491         convert? on @0 instead of convert.  Check type of @1, not @0.
1492         ((T)(P + A) - (T)(P + B) -> (T)A - (T)B): Use @@0 instead of @0,
1493         only optimize if either both @1 and @2 types are narrower
1494         precision, or both are wider or equal precision, and in the former
1495         case only if both have undefined overflow.
1496
1497 2017-12-15  Richard Biener  <rguenther@suse.de>
1498
1499         PR lto/83388
1500         * internal-fn.def (IFN_NOP): Add.
1501         * internal-fn.c (expand_NOP): Do nothing.
1502         * lto-streamer-in.c (input_function): Instead of removing
1503         sanitizer calls replace them with IFN_NOP calls.
1504
1505 2017-12-15  Richard Sandiford  <richard.sandiford@linaro.org>
1506             Alan Hayward  <alan.hayward@arm.com>
1507             David Sherwood  <david.sherwood@arm.com>
1508
1509         * dse.c (store_info, read_info_type): Replace begin and end with
1510         offset and width.
1511         (print_range): New function.
1512         (set_all_positions_unneeded, any_positions_needed_p)
1513         (check_mem_read_rtx, scan_stores, scan_reads, dse_step5): Update
1514         accordingly.
1515         (record_store): Likewise.  Optimize the case in which all positions
1516         are unneeded.
1517         (get_stored_val): Replace read_begin and read_end with read_offset
1518         and read_width.
1519         (replace_read): Update call accordingly.
1520
1521 2017-12-15  Bin Cheng  <bin.cheng@arm.com>
1522
1523         * gimple-loop-interchange.cc (STMT_COST_RATIO): New macro.
1524         (loop_cand::m_num_stmts, loop_cand::m_const_init_reduc): New members.
1525         (loop_cand::loop_cand): Initialize above members.
1526         (loop_cand::supported_operations): Delete.
1527         (loop_cand::can_interchange_p): Inline above function.
1528         (loop_cand::classify_simple_reduction): Record number of constant
1529         initialized simple reductions.
1530         (should_interchange_loops): New parameters.  Check stmt cost of loops
1531         to be interchange.
1532         (tree_loop_interchange::interchange): Prepare stmt cost of outer loop.
1533         Update call to should_interchange_loops.
1534         (should_interchange_loop_nest): Update call to
1535         should_interchange_loops.
1536
1537 2017-12-15  Eric Botcazou  <ebotcazou@adacore.com>
1538
1539         PR target/66488
1540         * ggc-page.c (HOST_BITS_PER_PTR): Do not define here...
1541         * hwint.h (HOST_BITS_PER_PTR): ...but here instead.
1542         * config/i386/xm-mingw32.h (HOST_BITS_PER_PTR): Delete.
1543
1544 2017-12-15  Julia Koval  <julia.koval@intel.com>
1545
1546         * config/i386/i386-builtin.def (__builtin_ia32_vaesenclast_v16qi,
1547         __builtin_ia32_vaesenclast_v32qi, __builtin_ia32_vaesenclast_v64qi): New.
1548         * config/i386/sse.md (vaesenclast_<mode>): New pattern.
1549         * config/i386/vaesintrin.h (_mm256_aesenclast_epi128,
1550         _mm512_aesenclast_epi128, _mm_aesenclast_epi128): New intrinsics.
1551
1552 2017-12-15  Julia Koval  <julia.koval@intel.com>
1553
1554         * config/i386/i386-builtin.def (__builtin_ia32_vaesenc_v16qi,
1555         __builtin_ia32_vaesenc_v32qi, __builtin_ia32_vaesenc_v64qi): New.
1556         * config/i386/sse.md (vaesenc_<mode>): New pattern.
1557         * config/i386/vaesintrin.h (_mm256_aesenc_epi128, _mm512_aesenc_epi128,
1558         _mm_aesenc_epi128): New intrinsics.
1559
1560 2017-12-15  Julia Koval  <julia.koval@intel.com>
1561
1562         * config/i386/i386-builtin.def (__builtin_ia32_vaesdeclast_v16qi,
1563         __builtin_ia32_vaesdeclast_v32qi, __builtin_ia32_vaesdeclast_v64qi): New.
1564         * config/i386/sse.md (vaesdeclast_<mode>): New pattern.
1565         * config/i386/vaesintrin.h (_mm256_aesdeclast_epi128,
1566         _mm512_aesdeclast_epi128, _mm_aesdeclast_epi128): New intrinsics.
1567
1568 2017-12-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1569
1570         * gimple-ssa-strength-reduction.c (analyze_increments):
1571         Distinguish replacement costs for constant strides from those for
1572         unknown strides.
1573
1574 2017-12-14  Jakub Jelinek  <jakub@redhat.com>
1575
1576         * var-tracking.c (variable_tracking_main_1): Formatting fix.
1577
1578 2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>
1579
1580         * doc/invoke.texi: Document -Wcast-function-type.
1581         * recog.h (stored_funcptr): Change signature.
1582         * tree-dump.c (dump_node): Avoid warning.
1583         * typed-splay-tree.h (typed_splay_tree): Avoid warning.
1584
1585 2017-12-14  Qing Zhao  <qing.zhao@oracle.com>
1586
1587         PR middle_end/79538
1588         * gimple-fold.c (get_range_strlen): Add the handling of non-member 
1589         array.
1590
1591 2017-12-14  David Malcolm  <dmalcolm@redhat.com>
1592
1593         PR tree-optimization/83312
1594         * domwalk.h (dom_walker::dom_walker): Fix typo in comment.
1595         * tree-cfg.c (find_taken_edge): Update to handle NULL_TREE for
1596         "val" param, and to cope with arbitrary basic blocks.
1597         (find_taken_edge_cond_expr): Add "cond_stmt" param and use it to
1598         handle NULL_TREE for "val", dropping "bb" param.
1599         (find_taken_edge_switch_expr): Make "switch_stmt" param const and
1600         drop "bb" param.  Handle NULL_TREE for "val".
1601         (find_case_label_for_value): Make "switch_stmt" param const.
1602         * tree-vrp.c (class check_array_bounds_dom_walker): New subclass
1603         of dom_walker.
1604         (vrp_prop::check_all_array_refs): Reimplement as...
1605         (check_array_bounds_dom_walker::before_dom_children): ...this new
1606         vfunc.  Replace linear search through BB block list, excluding
1607         those with non-executable in-edges via dominator walk.
1608
1609 2017-12-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1610
1611         * config/arm/arm.opt (mverbose-cost-dump): New option.
1612         * config/arm/arm.c (arm_rtx_costs): Use it.
1613
1614 2017-12-14  Andreas Schwab  <schwab@linux-m68k.org>
1615
1616         PR bootstrap/83396
1617         * reload1.c (emit_input_reload_insns): Skip debug markers.
1618
1619 2017-12-14  Alexandre Oliva <aoliva@redhat.com>
1620
1621         * config/i386/i386.c (rest_of_insert_endbranch): Use call loc
1622         for its nop_endbr.
1623
1624         PR bootstrap/83396
1625         * config/arc/arc.c (hwloop_optimize): Skip debug insns.
1626         * config/sh/sh-protos.h (sh_find_set_of_reg): Adjust.
1627         * config/sh/sh.c: Skip debug insns besides notes.
1628         * config/sh/sh.md: Likewise.
1629         * config/sh/sh_treg_combine.cc: Likewise.
1630         * config/sh/sync.md: Likewise.
1631
1632 2017-12-14  Tom de Vries  <tom@codesourcery.com>
1633
1634         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
1635         Add item for weak_undefined.
1636
1637 2017-12-14  Richard Biener  <rguenther@suse.de>
1638
1639         PR tree-optimization/67842
1640         * sese.h (bb_in_region): Remove #if 0'ed code.
1641
1642 2017-12-14  Richard Biener  <rguenther@suse.de>
1643
1644         PR tree-optimization/83326
1645         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Add
1646         may_be_zero parameter and handle it by not marking the first
1647         peeled copy as not exiting the loop.
1648         (try_peel_loop): Likewise.
1649         (canonicalize_loop_induction_variables): Use number_of_iterations_exit
1650         to handle the case of constant or zero iterations and perform
1651         loop header copying on-the-fly.
1652
1653 2017-12-14  Richard Biener  <rguenther@suse.de>
1654
1655         PR tree-optimization/83418
1656         * vr-values.c (vr_values::extract_range_for_var_from_comparison_expr):
1657         Instead of asserting we don't get unfolded comparisons deal with
1658         them.
1659
1660 2017-12-14  Jakub Jelinek  <jakub@redhat.com>
1661
1662         PR bootstrap/83396
1663         * var-tracking.c (vt_initialize): Ignore non-DEBUG_INSNs outside of
1664         basic blocks.  Assert debug bind insns don't appear outside of bbs,
1665         don't reset them.  Assert insns without BLOCK_FOR_INSN are outside of
1666         bb.  Simplify.
1667
1668         PR tree-optimization/83198
1669         * gimple-ssa-sprintf.c (format_floating): Set type solely based on
1670         dir.modifier, regardless of TREE_TYPE (arg).  Assume non-REAL_CST
1671         value if arg is a REAL_CST with incompatible type.
1672
1673 2017-12-14  Sudakshina Das  <sudi.das@arm.com>
1674             Bin Cheng  <bin.cheng@arm.com>
1675
1676         PR target/81228
1677         * config/aarch64/aarch64.c (aarch64_select_cc_mode): Move LTGT
1678         to CCFPEmode.
1679         * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Add
1680         LTGT.
1681
1682 2017-12-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1683
1684         * config/aarch64/aarch64-cores.def (cortex-a55, cortex-a75,
1685         cortex-a75.cortex-a55): Specify AARCH64_FL_F16 in the arch features.
1686
1687 2017-12-14  Richard Sandiford  <richard.sandiford@linaro.org>
1688             Alan Hayward  <alan.hayward@arm.com>
1689             David Sherwood  <david.sherwood@arm.com>
1690
1691         * poly-int.h: New file.
1692         * poly-int-types.h: Likewise.
1693         * coretypes.h: Include them.
1694         (POLY_INT_CONVERSION): Define.
1695         * target.def (estimated_poly_value): New hook.
1696         * doc/tm.texi.in (TARGET_ESTIMATED_POLY_VALUE): New hook.
1697         * doc/tm.texi: Regenerate.
1698         * doc/poly-int.texi: New file.
1699         * doc/gccint.texi: Include it.
1700         * doc/rtl.texi: Describe restrictions on subreg modes.
1701         * Makefile.in (TEXI_GCCINT_FILES): Add poly-int.texi.
1702         * genmodes.c (NUM_POLY_INT_COEFFS): Provide a default definition.
1703         (emit_insn_modes_h): Emit a definition of NUM_POLY_INT_COEFFS.
1704         * targhooks.h (default_estimated_poly_value): Declare.
1705         * targhooks.c (default_estimated_poly_value): New function.
1706         * target.h (estimated_poly_value): Likewise.
1707         * wide-int.h (WI_UNARY_RESULT): Use wi::binary_traits.
1708         (wi::unary_traits): Delete.
1709         (wi::binary_traits::signed_shift_result_type): Define for
1710         offset_int << HOST_WIDE_INT, etc.
1711         (generic_wide_int::operator <<=): Define for all types and use
1712         wi::lshift instead of <<.
1713         (wi::hwi_with_prec): Add a default constructor.
1714         (wi::ints_for): New class.
1715         (operator <<): Define for all wide-int types.
1716         (operator /): New function.
1717         (operator %): Likewise.
1718         * selftest.h (ASSERT_KNOWN_EQ, ASSERT_KNOWN_EQ_AT, ASSERT_MAYBE_NE)
1719         (ASSERT_MAYBE_NE_AT): New macros.
1720
1721 2017-12-13  Eric Botcazou  <ebotcazou@adacore.com>
1722             Dominik Vogt  <vogt@linux.vnet.ibm.com>
1723
1724         PR middle-end/78468
1725         * emit-rtl.c (init_emit): Remove ??? comment.
1726         * explow.c (get_dynamic_stack_size): Take known alignment of stack
1727         pointer + STACK_DYNAMIC_OFFSET into account in lieu of STACK_BOUNDARY.
1728         * config/sparc/sparc.h (INIT_EXPANDERS): In 32-bit mode, lower the
1729         alignment of 3 virtual registers to BITS_PER_WORD.
1730
1731         * config/sparc/sparc.c (sparc_compute_frame_size): Simplify.
1732
1733 2017-12-13  Peter Bergner  <bergner@vnet.ibm.com>
1734
1735         * config/rs6000/ppc-auxv.h (PPC_FEATURE2_HTM_NO_SUSPEND): New define.
1736         * config/rs6000/rs6000.c (cpu_supports_info): Use it.
1737
1738 2017-12-13  Alexandre Oliva <aoliva@redhat.com>
1739
1740         PR bootstrap/83396
1741         * reload1.c (eliminate_regs_in_insn): Skip debug markers.
1742
1743 2017-12-13  Jakub Jelinek  <jakub@redhat.com>
1744
1745         * tree-cfg.c (verify_gimple_in_cfg): Verify no non-label stmts
1746         with the exception of debug begin stmt markers appear before
1747         labels.
1748
1749         PR bootstrap/83396
1750         * final.c (rest_of_handle_final): Call variable_tracking_main only
1751         if !flag_var_tracking.
1752
1753 2017-12-13  Alexandre Oliva  <aoliva@redhat.com>
1754             Jakub Jelinek  <jakub@redhat.com>
1755
1756         PR bootstrap/83396
1757         PR debug/83391
1758         * tree-cfgcleanup.c (remove_forwarder_block): Keep after
1759         labels debug stmts that can only appear after labels.
1760
1761 2017-12-13  Alexander Monakov  <amonakov@ispras.ru>
1762
1763         PR rtl-optimization/82398
1764         * sel-sched.c (sel_rank_for_schedule): Fix check for zero
1765         EXPR_USEFULNESS in priority comparison.
1766
1767 2017-12-13  Segher Boessenkool  <segher@kernel.crashing.org>
1768
1769         PR rtl-optimization/83393
1770         * combine.c (move_deaths): If reg_stat points to a too new insn in
1771         last_death, do not use it: find the proper insn instead.
1772
1773 2017-12-12  Jeff Law  <law@redhat.com>
1774
1775         PR tree-optimization/83298
1776         PR tree-optimization/83362
1777         PR tree-optimization/83383
1778         * gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Make
1779         push_value_range a public interface.  Add new argument to
1780         record_ranges_from_stmt.
1781         * gimple-ssa-evrp-analyze.c
1782         (evrp_range_analyzer::record_ranges_from_stmt): Add new argument.
1783         Update comments.  Handle recording temporary equivalences.
1784         * tree-ssa-dom.c (dom_opt_opt_walker::before_dom_children): Add
1785         new argument to call to evrp_range_analyzer::record_ranges_from_stmt.
1786         * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Likewise.
1787         * tree-ssa-threadedge.c: Include alloc-pool.h, vr-values.h and
1788         gimple-ssa-evrp-analyze.h.
1789         (record_temporary_equivalences_from_phis): Add new argument.  When
1790         the PHI arg is an SSA_NAME, set the result's range to the range
1791         of the PHI arg.
1792         (record_temporary_equivalences_from_stmts_at_dest): Record ranges
1793         from statements too.
1794         (thread_through_normal_block): Accept new argument, evrp_range_analyzer.
1795         Pass it down to children as needed.
1796         (thread_outgoing_edges): Likewise.
1797         (thread_across_edge): Likewise.   Push/pop range state as needed.
1798         * tree-ssa-threadedge.h (thread_outgoing_edges): Update prototype.
1799
1800 2017-12-12  Julia Koval  <julia.koval@intel.com>
1801
1802         * config/i386/i386.c (PTA_SKYLAKE_AVX512): Add PTA_CLWB.
1803         (PTA_CANNONLAKE): Remove PTA_CLWB.
1804
1805 2017-12-12  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1806
1807         PR target/83332
1808         * config/rs6000/vector.md (vcondv2dfv2di): New define_expand.
1809         (vcondv2div2df): Likewise.
1810         (vconduv2dfv2di): Likewise.
1811
1812 2017-12-12  Jakub Jelinek  <jakub@redhat.com>
1813
1814         * builtins.def (BUILT_IN_NEXTAFTER, BUILT_IN_NEXTAFTERF,
1815         BUILT_IN_NEXTAFTERL, BUILT_IN_NEXTTOWARD, BUILT_IN_NEXTTOWARDF,
1816         BUILT_IN_NEXTTOWARDL): Use ATTR_MATHFN_ERRNO instead of
1817         ATTR_MATHFN_FPROUNDING_ERRNO.
1818
1819 2017-12-12  Richard Biener  <rguenther@suse.de>
1820
1821         PR tree-optimization/83385
1822         * graphite-scop-detection.c (get_order, order): Remove.
1823         (bb_to_rpo): New global.
1824         (cmp_pbbs): Adjust.
1825         (build_scops): Sort pbbs in RPO order.
1826
1827 2017-12-12  James Greenhalgh  <james.greenhalgh@arm.com>
1828
1829         * combine.c (simplify_set): Do not transform subregs to zero_extends
1830         if the destination mode is a vector mode.
1831
1832 2017-12-12  Jakub Jelinek  <jakub@redhat.com>
1833
1834         PR tree-optimization/83359
1835         * tree-cfg.h (fold_loop_internal_call): Declare.
1836         * tree-vectorizer.c (fold_loop_internal_call): Moved to ...
1837         * tree-cfg.c (fold_loop_internal_call): ... here.  No longer static.
1838         (find_loop_dist_alias): New function.
1839         (move_sese_region_to_fn): If any dloop->orig_loop_num value is
1840         updated, also adjust any corresponding LOOP_DIST_ALIAS internal
1841         calls.
1842
1843         PR tree-optimization/80631
1844         * tree-vect-loop.c (get_initial_def_for_reduction): Fix comment typo.
1845         (vect_create_epilog_for_reduction): Add INDUC_VAL and INDUC_CODE
1846         arguments, for INTEGER_INDUC_COND_REDUCTION use INDUC_VAL instead of
1847         hardcoding zero as the value if COND_EXPR is never true.  For
1848         INTEGER_INDUC_COND_REDUCTION don't emit the final COND_EXPR if
1849         INDUC_VAL is equal to INITIAL_DEF, and use INDUC_CODE instead of
1850         hardcoding MAX_EXPR as the reduction operation.
1851         (is_nonwrapping_integer_induction): Allow negative step.
1852         (vectorizable_reduction): Compute INDUC_VAL and INDUC_CODE for
1853         vect_create_epilog_for_reduction, if no value is suitable, don't
1854         use INTEGER_INDUC_COND_REDUCTION for now.  Formatting fixes.
1855
1856 2017-12-12  Richard Biener  <rguenther@suse.de>
1857
1858         PR tree-optimization/81889
1859         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness): Use
1860         range info from the non-wrapping IV instead of just the range
1861         of the type.
1862
1863 2017-12-12  Julia Koval  <julia.koval@intel.com>
1864
1865         * config.gcc: Add vaesintrin.h.
1866         * config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI_V64QI):
1867         New type.
1868         * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
1869         __builtin_ia32_vaesdec_v32qi, __builtin_ia32_vaesdec_v64qi):
1870         New builtins.
1871         * config/i386/i386.c (ix86_expand_args_builtin): Handle new type.
1872         * config/i386/immintrin.h: Include vaesintrin.h.
1873         * config/i386/sse.md (vaesdec_<mode>): New pattern.
1874         * config/i386/vaesintrin.h (_mm256_aesdec_epi128, _mm512_aesdec_epi128,
1875         _mm_aesdec_epi128): New intrinsics.
1876
1877 2017-12-12  Julia Koval  <julia.koval@intel.com>
1878
1879         * common/config/i386/i386-common.c (OPTION_MASK_ISA_VAES_SET,
1880         OPTION_MASK_ISA_VAES_UNSET): New.
1881         (ix86_handle_option): Handle -mvaes.
1882         * config/i386/cpuid.h: Define bit_VAES.
1883         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mvaes.
1884         * config/i386/i386-c.c (__VAES__): New.
1885         * config/i386/i386.c (ix86_target_string): Add -mvaes.
1886         (ix86_valid_target_attribute_inner_p): Ditto.
1887         * config/i386/i386.h (TARGET_VAES, TARGET_VAES_P): New.
1888         * config/i386/i386.opt: Add -mvaes.
1889         * doc/invoke.texi: Ditto.
1890
1891 2017-12-12  Alexandre Oliva  <aoliva@redhat.com>
1892
1893         * debug.h (gcc_debug_hooks): Add inline_entry.
1894         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
1895         * debug.c (do_nothing_debug_hooks): Likewise.
1896         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
1897         * dwarf2out.c (dwarf2_debug_hooks): Likewise.
1898         (dwarf2_lineno_debug_hooks): Likewise.
1899
1900         * common.opt (gstatement-frontiers): New, setting
1901         debug_nonbind_markers_p.
1902         * rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): Activate.
1903         * toplev.c (process_options): Autodetect value for debug statement
1904         frontiers option.
1905         * tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): Activate.
1906         * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers): New.
1907
1908         * cfgexpand.c (expand_gimple_basic_block): Handle begin stmt
1909         markers.  Integrate source bind into debug stmt expand loop.
1910         (pass_expand::execute): Check debug marker limit.  Avoid deep
1911         TER and expand debug locations for debug bind insns only.
1912         * cse.c (insn_live_p): Keep nonbind markers and debug bindings
1913         followed by them.
1914         * df-scan.c (df_insn_delete): Accept out-of-block debug insn.
1915         * final.c (reemit_insn_block_notes): Take current block from
1916         nonbind markers.  Declare note where it's first set.
1917         (final_scan_insn): Handle begin stmt notes.  Emit is_stmt according to
1918         begin stmt markers if enabled.
1919         (notice_source_line): Handle nonbind markers.  Fail if their
1920         location is unknown or that of builtins.
1921         (rest_of_handle_final): Convert begin stmt markers to notes if
1922         var-tracking didn't run.
1923         (rest_of_clean_state): Skip begin stmt markers.
1924         * gimple-pretty-print.c (dump_gimple_debug): Handle begin stmt
1925         markers.
1926         * function.c (allocate_struct_function): Set begin_stmt_markers.
1927         * function.h (struct function): Add debug_marker_count counter
1928         and debug_nonbind_markers flag.
1929         * gimple-iterator.c (gsi_remove): Adjust debug_marker_count.
1930         * gimple-low.c (lower_function_body): Adjust
1931         debug_nonbind_markers.
1932         (lower_stmt): Drop or skip gimple debug stmts.
1933         (lower_try_catch): Skip debug stmts.
1934         * gimple.c (gimple_build_debug_begin_stmt): New.
1935         (gimple_copy): Increment debug_marker_count if copying one.
1936         * gimple.h (gimple_build_debug_begin_stmt): Declare.
1937         * gimplify.c (rexpr_location): New.
1938         (rexpr_has_location): New.
1939         (warn_switch_unreachable_r): Handle gimple debug stmts.
1940         (shortcut_cond_r): Call expr_location.
1941         (find_goto): New.
1942         (find_goto_label): New.
1943         (shortcut_cond_expr): Call expr_has_location, expr_location, and
1944         find_goto_label.
1945         (gimplify_cond_expr): Call find_goto_label, expr_has_location, and
1946         expr_location.
1947         (gimplify_expr): Handle begin stmt markers.  Reject debug expr decls.
1948         * langhooks-def.h (LANG_HOOKS_EMITS_BEGIN_STMT): New.  Add to...
1949         (LANG_HOOKS_INITIALIZER): ... this.
1950         * langhooks.h (struct lang_hooks): Add emits_begin_stmt.
1951         * lra-contraints.c (inherit_reload_reg): Tolerate between-blocks
1952         debug insns.
1953         (update_ebb_live_info): Skip debug insn markers.
1954         * lra.c (debug_insn_static_data): Rename to...
1955         (debug_bind_static_data): ... this.
1956         (debug_marker_static_data): New.
1957         (lra_set_insn_recog_data): Select one of the above depending
1958         on debug insn kind.
1959         (lra_update_isn_regno_info): Don't assume debug insns have
1960         freqs.
1961         (push_insns): Skip debug insns.
1962         * lto-streamer-in.c (input_function): Drop debug stmts
1963         depending on active options.  Adjust debug_nonbind_markers.
1964         * params.def (PARAM_MAX_DEBUG_MARKER_COUNT): New.
1965         * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
1966         begin stmt marker notes.
1967         (print_insn): Likewise.
1968         * recog.c (extract_insn): Recognize rtl for debug markers.
1969         * rtl.def (DEBUG_MARKER): New.
1970         * tree-inline.c: Include params.h.
1971         (remap_gimple_stmt): Handle nonbind markers.
1972         (maybe_move_debug_stmts_to_successors): Likewise.
1973         (copy_debug_stmt): Likewise.
1974         * tree-iterator.c (append_to_statement_list_1): Append begin stmt
1975         markers regardless of no side effects.
1976         (tsi_link_before): Don't update container's side effects when adding
1977         a begin stmt marker.
1978         (tsi_link_after): Likewise.
1979         (expr_first): Skip begin stmt markers.
1980         (expr_last): Likewise.
1981         * tree-pretty-print (dump_generic_node): Handle begin stmt markers.
1982         * tree-ssa-threadedge.c (propagate_threaded_block_debug_info):
1983         Disregard nonbind markers.
1984         * tree.c (make_node_stat): Don't set side effects for begin stmt
1985         markers.
1986         (build1_stat): Likewise.
1987         * tree.def (DEBUG_BEGIN_STMT): New.
1988         * tree.h (GOTO_DESTINATION): Require a GOTO_EXPR.
1989         * var-tracking.c (delete_debug_insns): Renamed to...
1990         (delete_vta_debug_insns): ... this.
1991         (reemit_marker_as_note): New.
1992         (vt_initialize): Reemit markers.
1993         (delete_vta_debug_insns): Likewise.
1994         (vt_debug_insns_local): Reemit or delete markers.
1995         (variable_tracking_main_1): Likewise.
1996         * doc/generic.texi (DEBUG_BEGIN_STMT): Document.
1997         * doc/gimple.texi (gimple_debug_begin_stmt_p): New.
1998         (gimple_debug_nonbind_marker_p): New.
1999         (gimple_build_debug_bind): Adjust.
2000         (gimple_build_debug_begin_stmt): New.
2001         * doc/invoke.texi (max-debug-marker-count): New param.
2002         * doc/rtl.texi (debug_implicit_ptr, entry_value): New.
2003         (debug_parameter_ref, debug_marker): New.
2004         (NOTE_INSN_BEGIN_STMT): New.
2005         (DEBUG_INSN): Describe begin stmt markers.
2006
2007         * cfgbuild.c (find_bb_boundaries): Don't purge dead edges if,
2008         without debug insns, we wouldn't, but clean up debug insns
2009         after a control flow insn nevertheless.
2010
2011         * cfgcleanup.c (delete_unreachable_blocks): Use alternate
2012         block removal order if MAY_HAVE_DEBUG_BIND_INSNS.
2013         * cfgexpand.c (label_rtx_for_bb): Skip debug insns.
2014         * cfgrtl.c (try_redirect_by_replacing_jump): Skip debug insns.
2015         (rtl_tidy_fallthru_edge): Likewise.
2016         (rtl_verify_fallthru): Likewise.
2017         (rtl_verify_bb_layout): Likewise.
2018         (skip_insns_after_block): Likewise.
2019         (duplicate_insn_chain): Use DEBUG_BIND_INSN_P.
2020         * dwarf2out.c: Include print-rtl.h.
2021         (dwarf2out_next_real_insn): New.
2022         (dwarf2out_var_location): Call it.  Disregard begin stmt markers.
2023         Dump debug binds in asm comments.
2024         * gimple-iterator.c (gimple_find_edge_insert_loc): Skip debug stmts.
2025         * gimple-iterator.h (gsi_start_bb_nondebug): Remove; adjust
2026         callers to use gsi_start_nondebug_bb instead.
2027         (gsi_after_labels): Skip gimple debug stmts.
2028         (gsi_start_nondebug): New.
2029         * gimple-loop-interchange.c (find_deps_in_bb_for_stmt): Adjust.
2030         (proper_loop_form_for_interchange): Adjust.
2031         * gimple-low.c (gimple_seq_may_fallthru): Take last nondebug stmt.
2032         * gimple.h (gimple_seq_last_nondebug_stmt): New.
2033         * gimplify.c (last_stmt_in_scope): Skip debug stmts.
2034         (collect_fallthrough_labels): Likewise.
2035         (should_warn_for_implicit_fallthrough): Likewise.
2036         (warn_implicit_fallthrough_r): Likewise.
2037         (expand_FALLTHROUGH_r): Likewise.
2038         * graphite-isl-ast-to-gimple.c (gsi_insert_earliest): Adjust.
2039         (graphite_copy_stmts_from_block): Skip nonbind markers.
2040         * haifa-sched.c (sched_extend_bb): Skip debug insns.
2041         * ipa-icf-gimple.c (func_checker::compare_bb): Adjust.
2042         * jump.c (clean_barriers): Skip debug insns.
2043         * omp-expand.c (expand_parallel_call): Skip debug insns.
2044         (expand_task_call): Likewise.
2045         (remove_exit_barrier): Likewise.
2046         (expand_omp_taskreg): Likewise.
2047         (expand_omp_for_init_counts): Likewise.
2048         (expand_omp_for_generic): Likewise.
2049         (expand_omp_for_static_nochunk): Likewise.
2050         (expand_omp_for_static_chunk): Likewise.
2051         (expand_omp_simd): Likewise.
2052         (expand_omp_taskloop_for_outer): Likewise.
2053         (expand_omp_taskloop_for_inner): Likewise.
2054         (expand_oacc_for): Likewise.
2055         (expand_omp_sections): Likewise.
2056         (expand_omp_single): Likewise.
2057         (expand_omp_synch): Likewise.
2058         (expand_omp_atomic_load): Likewise.
2059         (expand_omp_atomic_store): Likewise.
2060         (expand_omp_atomic_fetch_op): Likewise.
2061         (expand_omp_atomic_pipeline): Likewise.
2062         (expand_omp_atomic_mutex): Likewise.
2063         (expand_omp_target): Likewise.
2064         (grid_expand_omp_for_loop): Likewise.
2065         (grid_expand_target_grid_body): Likewise.
2066         (build_omp_regions_1): Likewise.
2067         * omp-low.c (check_combined_parallel): Skip debug stmts.
2068         * postreload.c (fixup_debug_insns): Skip nonbind debug insns.
2069         * regcprop.c (find_oldest_value_reg): Ensure REGNO is not a pseudo.
2070         * sese.c (sese_trivially_empty_bb_p): Call is_gimple_debug in
2071         test.
2072         * tree-cfg.c (make_blobs_1): Skip debug stmts.
2073         (make_edges): Likewise.
2074         (cleanup_dead_labels): Likewise.
2075         (gimple_can_merge_blocks_p): Likewise.
2076         (stmt_starts_bb_p): Likewise.
2077         (gimple_block_label): Likewise.
2078         (gimple_redirect_edge_and_branch): Likewise.
2079         * tree-cfgcleanup.c (remove_forwarder_block): Rearrange skipping
2080         of debug stmts.
2081         (execute_cleanup_cfg_post_optimizing): Dump enumerated decls with
2082         TDF_SLIM.
2083         * tree-pretty-print (print_declaration): Omit initializer in slim
2084         dumps.
2085         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark begin stmt
2086         markers.
2087         (eliminate_unnecessary_stmts): Stabilize block removal order.
2088         * tree-ssa-tail-merge.c (find_duplicate): Skip debug stmts.
2089         * var-tracking.c (get_first_insn): New.
2090         (vt_emit_notes): Call it.
2091         (vt_initialize): Walk any insns before the first BB.
2092         (delete_debug_insns): Likewise.
2093
2094         * gimple.h (enum gimple_debug_subcode): Add
2095         GIMPLE_DEBUG_BEGIN_STMT.
2096         (gimple_debug_begin_stmt_p): New.
2097         (gimple_debug_nonbind_marker_p): New.
2098         * tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): New.
2099         (MAY_HAVE_DEBUG_BIND_STMTS): Renamed from....
2100         (MAY_HAVE_DEBUG_STMTS): ... this.  Check both.
2101         * insn-notes.def (BEGIN_STMT): New.
2102         * rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): New.
2103         (MAY_HAVE_DEBUG_BIND_INSNS): Renamed from....
2104         (MAY_HAVE_DEBUG_INSNS): ... this.  Check both.
2105         (NOTE_MARKER_LOCATION, NOTE_MARKER_P): New.
2106         (DEBUG_BIND_INSN_P, DEBUG_MARKER_INSN_P): New.
2107         (INSN_DEBUG_MARKER_KIND): New.
2108         (GEN_RTX_DEBUG_MARKER_BEGIN_STMT_PAT): New.
2109         (INSN_VAR_LOCATION): Check for VAR_LOCATION.
2110         (INSN_VAR_LOCATION_PTR): New.
2111         * cfgexpand.c (expand_debug_locations): Handle debug bind insns
2112         only.
2113         (expand_gimple_basic_block): Likewise.  Emit debug temps for TER
2114         deps only if debug bind insns are enabled.
2115         (pass_expand::execute): Avoid deep TER and expand
2116         debug locations for debug bind insns only.
2117         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Narrow
2118         debug stmts special handling down to debug bind stmts.
2119         * combine.c (try_combine): Narrow debug insns special handling
2120         down to debug bind insns.
2121         * cse.c (delete_trivially_dead_insns): Handle debug bindings.
2122         Narrow debug insns preexisting special handling down to debug
2123         bind insns.
2124         * dce.c (rest_of_handle_ud_dce): Narrow debug insns special
2125         handling down to debug bind insns.
2126         * function.c (instantiate_virtual_regs): Skip debug markers,
2127         adjust handling of debug binds.
2128         * gimple-ssa-backprop.c (backprop::prepare_change): Try debug
2129         temp insertion iff MAY_HAVE_DEBUG_BIND_STMTS.
2130         * haifa-sched.c (schedule_insn): Narrow special handling of debug
2131         insns to debug bind insns.
2132         * ipa-param-manipulation.c (ipa_modify_call_arguments): Narrow
2133         special handling of debug stmts to debug bind stmts.
2134         * ipa-split.c (split_function): Likewise.
2135         * ira.c (combine_and_move_insns): Adjust debug bind insns only.
2136         * loop-unroll.c (apply_opt_in_copies): Adjust tests on bind
2137         debug insns.
2138         * reg-stack.c (convert_regs_1): Use DEBUG_BIND_INSN_P.
2139         * regrename.c (build_def_use): Likewise.
2140         * regcprop.c (copyprop_hardreg_forward_1): Likewise.
2141         (pass_cprop_hardreg): Narrow special casing of debug insns to
2142         debug bind insns.
2143         * regstat.c (regstat_init_n_sets_and_refs): Likewise.
2144         * reload1.c (reload): Likewise.
2145         * sese.c (sese_insert_phis_for_liveouts): Narrow special
2146         casing of debug stmts to debug bind stmts.
2147         * shrink-wrap.c (move_insn_for_shrink_wrap): Likewise.
2148         * ssa-iterators.h (num_imm_uses): Likewise.
2149         * tree-cfg.c (gimple_merge_blocks): Narrow special casing of
2150         debug stmts to debug bind stmts.
2151         * tree-inline.c (tree_function_versioning): Narrow special casing
2152         of debug stmts to debug bind stmts.
2153         * tree-loop-distribution.c (generate_loops_for_partition):
2154         Narrow special casing of debug stmts to debug bind stmts.
2155         * tree-sra.c (analyze_access_subtree): Narrow special casing
2156         of debug stmts to debug bind stmts.
2157         * tree-ssa-dce.c (remove_dead_stmt): Narrow special casing of debug
2158         stmts to debug bind stmts.
2159         * tree-ssa-loop-ivopt.c (remove_unused_ivs): Narrow special
2160         casing of debug stmts to debug bind stmts.
2161         * tree-ssa-reassoc.c (reassoc_remove_stmt): Likewise.
2162         * tree-ssa-tail-merge.c (tail_merge_optimize): Narrow special
2163         casing of debug stmts to debug bind stmts.
2164         * tree-ssa-threadedge.c (propagate_threaded_block_debug_info):
2165         Likewise.
2166         * tree-ssa.c (flush_pending_stmts): Narrow special casing of
2167         debug stmts to debug bind stmts.
2168         (gimple_replace_ssa_lhs): Likewise.
2169         (insert_debug_temp_for_var_def): Likewise.
2170         (insert_debug_temps_for_defs): Likewise.
2171         (reset_debug_uses): Likewise.
2172         * tree-ssanames.c (release_ssa_name_fn): Likewise.
2173         * tree-vect-loop-manip.c (adjust_debug_stmts_now): Likewise.
2174         (adjust_debug_stmts): Likewise.
2175         (adjust_phi_and_debug_stmts): Likewise.
2176         (vect_do_peeling): Likewise.
2177         * tree-vect-loop.c (vect_transform_loop): Likewise.
2178         * valtrack.c (propagate_for_debug): Use BIND_DEBUG_INSN_P.
2179         * var-tracking.c (adjust_mems): Narrow special casing of debug
2180         insns to debug bind insns.
2181         (dv_onepart_p, dataflow_set_clar_at_call, use_type): Likewise.
2182         (compute_bb_dataflow, vt_find_locations): Likewise.
2183         (vt_expand_loc, emit_notes_for_changes): Likewise.
2184         (vt_init_cfa_base): Likewise.
2185         (vt_emit_notes): Likewise.
2186         (vt_initialize): Likewise.
2187         (vt_finalize): Likewise.
2188
2189         * emit-rtl.c (next_nondebug_insn, prev_nondebug_insn): Reorder.
2190         (next_nonnote_nondebug_insn, prev_nonnote_nondebug_insn): Reorder.
2191         (next_nonnote_nondebug_insn_bb): New.
2192         (prev_nonnote_nondebug_insn_bb): New.
2193         (prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove.
2194         * rtl.h (prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove decls.
2195         (prev_nonnote_nondebug_insn_bb): Declare.
2196         (next_nonnote_nondebug_insn_bb): Declare.
2197         * cfgbuild.c (find_bb_boundaries): Adjust to skip debug insns.
2198         * cfgrtl.c (get_last_bb_insn): Likewise.
2199         * lra.c (push_insns): Likewise.
2200
2201 2017-12-11  David Malcolm  <dmalcolm@redhat.com>
2202
2203         PR c/82050
2204         * selftest-run-tests.c (selftest::run_tests): Move start/finish code
2205         to...
2206         * selftest.c (selftest::test_runner::test_runner): New ctor.
2207         (selftest::test_runner::~test_runner): New dtor.
2208         * selftest.h (class selftest::test_runner): New class.
2209
2210 2017-12-11  Carl Love  <cel@us.ibm.com>
2211
2212         * config/rs6000/altivec.h (vec_extract_fp32_from_shorth,
2213         vec_extract_fp32_from_shortl]): Add #defines.
2214         * config/rs6000/rs6000-builtin.def (VSLDOI_2DI): Add macro expansion.
2215         * config/rs6000/rs6000-c.c (ALTIVEC_BUILTIN_VEC_UNPACKH,
2216         ALTIVEC_BUILTIN_VEC_UNPACKL, ALTIVEC_BUILTIN_VEC_AND,
2217         ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SRL,
2218         ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VEC_SLD,
2219         ALTIVEC_BUILTIN_VEC_SLL): Add expansions.
2220         * doc/extend.texi: Add documentation for the added builtins.
2221
2222 2017-12-11  Alexandre Oliva  <aoliva@redhat.com>
2223
2224         PR rtl-optimization/80693
2225         PR rtl-optimization/81019
2226         PR rtl-optimization/81020
2227         * combine.c (distribute_notes): Reset any REG_UNUSED REGs that
2228         are not mentioned in i3.  Place the REG_UNUSED note on i2,
2229         possibly modified to REG_DEAD, if it did not originate in i3.
2230
2231 2017-12-11  Jakub Jelinek  <jakub@redhat.com>
2232
2233         * recog.c (store_data_bypass_p_1): New function.
2234         (store_data_bypass_p): Handle USE in a PARALLEL like CLOBBER.  Use
2235         store_data_bypass_p_1 to avoid code duplication.  Formatting fixes.
2236
2237 2017-12-11  Segher Boessenkool  <segher@kernel.crashing.org>
2238
2239         PR rtl-optimization/83361
2240         * ifcvt.c (if_convert): Call fixup_partitions.
2241
2242 2017-12-11  Will Schmidt  <will_schmidt@vnet.ibm.com>
2243
2244         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
2245         early folding of splat_u{8,16,32}.
2246
2247 2017-12-11  Jakub Jelinek  <jakub@redhat.com>
2248
2249         * config/aarch64/aarch64.c (aarch64_print_operand): Don't start
2250         output_operand_lossage first argument with capital letter.
2251         (aarch64_override_options): Don't start error and sorry first argument
2252         with capital letter.
2253
2254 2017-12-11  Andi Kleen  <ak@linux.intel.com>
2255
2256         PR gcov-profile/83355
2257         * auto-profile.c (string_table::get_index_by_decl): Don't
2258         recurse when abstract origin points to itself.
2259
2260 2017-12-11  Bin Cheng  <bin.cheng@arm.com>
2261
2262         PR tree-optimization/83320
2263         * gimple-loop-interchange.cc (free_data_refs_with_aux): Use delete.
2264         (prune_datarefs_not_in_loop): Ditto.
2265
2266 2017-12-10  Gerald Pfeifer  <gerald@pfeifer.com>
2267
2268         * doc/install.texi (Specific): Tweak link to mkssoftware.com.
2269
2270 2017-12-10  Jakub Jelinek  <jakub@redhat.com>
2271
2272         PR tree-optimization/83337
2273         * gimple-loop-interchange.cc (compute_access_stride): Handle
2274         bitfield DRs properly.
2275
2276 2017-12-09  Jakub Jelinek  <jakub@redhat.com>
2277
2278         PR tree-optimization/83338
2279         * tree-vect-stmts.c (vectorizable_operation): Handle POINTER_DIFF_EXPR
2280         vectorization as MINUS_EXPR with a subsequent VIEW_CONVERT_EXPR from
2281         vector of unsigned integers to vector of signed integers.
2282
2283 2017-12-08  Vladimir Makarov  <vmakarov@redhat.com>
2284
2285         PR rtl-optimization/83317
2286         * lra-constraints.c (process_address_1): Add insn code check.
2287
2288 2017-12-08  Michael Matz  <matz@suse.de>
2289
2290         Fix PR tree-optimization/83323
2291         * gimple-loop-jam (unroll_jam_possible_p): Correct test for
2292         head-controlled loops and loop BBs.
2293         * common.opt (funroll-and-jam): Remove, instead ...
2294         (floop-unroll-and-jam): ... reuse this option.
2295         * opts.c (default_options_table): Use OPT_floop_unroll_and_jam.
2296         * doc/invoke.texi (-funroll-and-jam): Move docu to ...
2297         (-floop-unroll-and-jam): ... this option.
2298
2299 2017-12-08  Jakub Jelinek  <jakub@redhat.com>
2300
2301         * ipa-polymorphic-call.c (noncall_stmt_may_be_vtbl_ptr_store): Fix
2302         a comment typo, get_base_ref_and_offset -> get_ref_base_and_extent.
2303         * ipa-prop.c (stmt_may_be_vtbl_ptr_store): Likewise.
2304
2305 2017-12-08  Richard Biener  <rguenther@suse.de>
2306
2307         PR middle-end/81782
2308         * tree-ssa-uninit.c (warn_uninitialized_vars): Properly
2309         handle accesses outside of zero-sized vars.
2310
2311 2017-12-08  Martin Jambor  <mjambor@suse.cz>
2312
2313         PR tree-optimization/83141
2314         * tree-sra.c (contains_vce_or_bfcref_p): Move up in the file, also
2315         test for MEM_REFs implicitely changing types with padding.  Remove
2316         inline keyword.
2317         (build_accesses_from_assign): Added contains_vce_or_bfcref_p checks.
2318
2319 2017-12-08  Jakub Jelinek  <jakub@redhat.com>
2320
2321         * config/arc/arc.c (arc_attribute_table): Add exclusions to
2322         the comment.
2323         * config/avr/avr.c (avr_attribute_table): Likewise.
2324         * config/msp430/msp430.c (msp430_attribute_table): Likewise.
2325         * config/rl78/rl78.c (rl78_attribute_table): Likewise.
2326         * config/nds32/nds32.c (nds32_attribute_table): Likewise.
2327         * config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Initialize new member
2328         of struct attribute_spec.
2329         * config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
2330
2331 2017-12-08  Ulrich Weigand  <uweigand@de.ibm.com>
2332
2333         PR target/82960
2334         * config/spu/spu.c (pad_bb): Only check INSN_CODE when INSN_P is true.
2335
2336 2017-12-08  Jan Hubicka  <hubicka@ucw.cz>
2337
2338         PR middle-end/83609
2339         * profile-count.c (profile_count::from_gcov_type): Move from
2340         profile-count.h; handle overflow.
2341         * profile-count.h (profile_count::from_gcov_type): Move offline.
2342
2343 2017-12-08  Segher Boessenkool  <segher@kernel.crashing.org>
2344
2345         PR rtl-optimization/83304
2346         * combine.c (move_deaths): If we do not know where a register died,
2347         search for it.
2348
2349 2017-12-08  Richard Biener  <rguenther@suse.de>
2350
2351         * gimple-loop-interchange.cc (tree_loop_interchange::interchange):
2352         Provide -fopt-info-loop feedback when we interchange in a nest.
2353
2354 2017-06-08  Richard Earnshaw  <rearnsha@arm.com>
2355
2356         * config/arm/driver-arm.c (arm_cpu_table): Use fp-capable product names
2357         for armv6 ARM CPU IDs.
2358
2359 2017-06-08  Richard Earnshaw  <rearnsha@arm.com>
2360
2361         * common/config/arm/arm-common.c: Include <algorithm>.
2362         (INCLUDE_VECTOR): Define.
2363         (compare_opt_names): New function.
2364         (arm_rewrite_selected_arch): Only strip out extensions that can be
2365         expressed through -mfpu.  Sort the remaining extensions
2366         alphabetically.
2367
2368 2017-06-08  Richard Earnshaw  <rearnsha@arm.com>
2369
2370         * config/arm/arm.h (arm_asm_auto_mfpu): Declare.
2371         (ASM_CPU_SPEC_FUNCTIONS): Add new rule asm_auto_mfpu.
2372         (ASM_CPU_SPEC): Use it if -mfpu is set to auto.
2373         * common/config/arm/arm-common.c (arm_asm_auto_mfpu): New function.
2374
2375 2017-06-08  Tristan Gingold  <gindold@adacore.com>
2376
2377         PR ada/81470
2378         * dwarf2out.c (dwarf2out_do_cfi_startproc): Only emit
2379         .cfi_personality or .cfi_lsda if the eh data format is dwarf2.
2380
2381 2017-12-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2382
2383         * config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Initialize new member
2384         of struct attribute_spec.
2385
2386 2017-12-08  Julia Koval  <julia.koval@intel.com>
2387
2388         * config/i386/avx512vnniintrin.h (_mm512_dpwssds_epi32,
2389         _mm512_mask_dpwssds_epi32, _mm512_maskz_dpwssds_epi32): New intrinsics.
2390         * config/i386/avx512vnnivlintrin.h (_mm256_dpwssds_epi32,
2391         _mm256_mask_dpwssds_epi32, _mm256_maskz_dpwssds_epi32,
2392         _mm_dpwssds_epi32, _mm_mask_dpwssds_epi32,
2393         _mm_maskz_dpwssds_epi32): Ditto.
2394
2395 2017-12-08  Richard Biener  <rguenther@suse.de>
2396
2397         PR tree-optimization/81303
2398         * tree-vect-stmts.c (vect_is_simple_cond): For invariant
2399         conditions try to create a comparison vector type matching
2400         the data vector type.
2401         (vectorizable_condition): Adjust.
2402         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern):
2403         Leave invariant conditions alone in case we can vectorize those.
2404
2405 2017-12-08  Julia Koval  <julia.koval@intel.com>
2406
2407         * config/i386/avx512vnniintrin.h (_mm512_dpwssd_epi32,
2408         _mm512_mask_dpwssd_epi32, _mm512_maskz_dpwssd_epi32): New intrinsics.
2409         * config/i386/avx512vnnivlintrin.h (_mm256_dpwssd_epi32,
2410         _mm256_mask_dpwssd_epi32, _mm256_maskz_dpwssd_epi32, _mm_dpwssd_epi32,
2411         _mm_mask_dpwssd_epi32, _mm_maskz_dpwssd_epi32): Ditto.
2412
2413 2017-12-08  Julia Koval  <julia.koval@intel.com>
2414
2415         * config/i386/avx512vnniintrin.h (_mm512_dpbusds_epi32,
2416         _mm512_mask_dpbusds_epi32, _mm512_maskz_dpbusds_epi32): New.
2417         * config/i386/avx512vnnivlintrin.h (_mm256_dpbusds_epi32,
2418         _mm256_mask_dpbusds_epi32, _mm256_maskz_dpbusds_epi32,
2419         _mm_dpbusds_epi32, _mm_mask_dpbusds_epi32,
2420         _mm_maskz_dpbusds_epi32): New intrinsics.
2421
2422 2017-12-07  Sandra Loosemore  <sandra@codesourcery.com>
2423
2424         * config/nios2/nios2.md (ld<bhw_uns>io): Add splitter for memory
2425         operand.
2426         (ld<bh>io_signed): Likewise.
2427         (st<bhw>io): Likewise.
2428         * config/nios2/predicates.md (ldstio_memory_operand): Allow
2429         SMALL_INT12 constant integer operand.
2430
2431 2017-12-07  Sandra Loosemore  <sandra@codesourcery.com>
2432
2433         * config/nios2/nios2.c (nios2_symbolic_constant_allowed):
2434         Rename to...
2435         (nios2_large_constant_allowed): ...this.  Adjust uses.
2436         (nios2_plus_symbolic_constant_p): Rename to...
2437         (nios2_plus_large_constant_p): ...this.  Adjust uses.
2438         (nios2_legitimate_address_p): Correct CONST_INT handling.
2439         (nios2_symbolic_memory_operand_p): Rename to...
2440         (nios2_large_constant_memory_operand_p): ...this.  Adjust uses.
2441         (nios2_large_constant_p): Check for large constant integers too.
2442         (nios2_split_large_constant): Handle constant integers.
2443         (nios2_split_symbolic_memory_operand): Rename to...
2444         (nios2_split_large_constant_memory_operand): ...this.  Adjust uses.
2445         (nios2_legitimize_constant_address): Handle constant integers.
2446         (r0rel_constant_p): Handle small constant integers.
2447         (nios2_print_operand_address): Handle r0-relative integer addresses.
2448         * config/nios2/nios2-protos.h: Adjust for renamed functions.
2449         * config/nios2/nios2.md: Adjust for renamed functions.
2450
2451 2017-12-07  Andrew Waterman  <andrew@sifive.com>
2452
2453         * config/riscv/riscv.c (TARGET_ASM_SELECT_SECTION): New define.
2454         (TARGET_HAVE_SRODATA_SECTION): New define.
2455         (riscv_select_section): New function.
2456
2457 2017-12-08  Joseph Myers  <joseph@codesourcery.com>
2458             Alexander Monakov  <amonakov@ispras.ru>
2459             Jakub Jelinek  <jakub@redhat.com>
2460
2461         PR target/81906
2462         * config/i386/i386.c (ix86_expand_rint): Handle flag_rounding_math.
2463
2464 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
2465
2466         * config/aarch64/aarch64.c (aarch64_print_address_internal): Return
2467         a bool success value.  Don't call output_operand_lossage here.
2468         (aarch64_print_ldpstp_address): Return a bool success value.
2469         (aarch64_print_operand_address): Call output_addr_const if
2470         aarch64_print_address_internal fails.
2471         (aarch64_print_operand): Don't assert that the mode is 16 bytes for
2472         'y'; call output_operand_lossage instead.  Call output_operand_lossage
2473         if aarch64_print_ldpstp_address fails.
2474
2475 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
2476
2477         * tree-vector-builder.h
2478         (tree_vector_builder::binary_encoded_nelts): Declare.
2479         * tree-vector-builder.c
2480         (tree_vector_builder::binary_encoded_nelts): New function.
2481         * fold-const.c (negate_expr_p): Likewise.
2482         (operand_equal_p, fold_checksum_tree): Likewise.
2483         * tree-loop-distribution.c (const_with_all_bytes_same): Likewise.
2484         * tree.c (integer_zerop, integer_onep, integer_all_onesp, real_zerop)
2485         (real_onep, real_minus_onep, add_expr, initializer_zerop): Likewise.
2486         (uniform_vector_p): Likewise.
2487         * varasm.c (const_hash_1, compare_constant): Likewise.
2488         * tree-ssa-ccp.c: Include tree-vector-builder.h.
2489         (valid_lattice_transition): Operate directly on the VECTOR_CST
2490         encoding.
2491         * ipa-icf.c: Include tree-vector-builder.h.
2492         (sem_variable::equals): Operate directly on the VECTOR_CST encoding.
2493         * print-tree.c (print_node): Print encoding of VECTOR_CSTs.
2494
2495 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
2496
2497         * tree.c (build_vector): Delete.
2498         * tree.h (build_vector): Make static and move into the self-testing
2499         block.
2500
2501 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
2502
2503         * vector-builder.h (vector_builder::derived): New const overload.
2504         (vector_builder::elt): New function.
2505         * tree-vector-builder.h (tree_vector_builder::type): New function.
2506         (tree_vector_builder::apply_step): Declare.
2507         * tree-vector-builder.c (tree_vector_builder::apply_step): New
2508         function.
2509         * gimple-fold.h (tree_vector_builder): Declare.
2510         (gimple_build_vector): Take a tree_vector_builder instead of a
2511         type and vector of elements.
2512         * gimple-fold.c (gimple_build_vector): Likewise.
2513         * tree-vect-loop.c (get_initial_def_for_reduction): Update call
2514         accordingly.
2515         (get_initial_defs_for_reduction): Likewise.
2516         (vectorizable_induction): Likewise.
2517
2518 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
2519
2520         * tree-vector-builder.h
2521         (tree_vector_builder::new_binary_operation): Declare.
2522         * tree-vector-builder.c
2523         (tree_vector_builder::new_binary_operation): New function.
2524         * fold-const.c (fold_relational_const): Use it.
2525         (const_binop): Likewise.  Check that both input vectors have
2526         the same number of elements, thus excluding things like WIDEN_SUM.
2527         Check whether it is possible to operate directly on the encodings
2528         of stepped inputs.
2529
2530 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
2531
2532         * fold-const.c (fold_negate_expr_1): Use tree_vector_builder and
2533         new_unary_operation, operating only on the encoded elements.
2534         (const_unop): Likewise.
2535         (exact_inverse): Likewise.
2536         (distributes_over_addition_p): New function.
2537         (const_binop): Use tree_vector_builder and new_unary_operation
2538         for combinations of VECTOR_CST and INTEGER_CST.  Operate only
2539         on the encoded elements unless the encoding is strided and the
2540         operation does not distribute over addition.
2541         (fold_convert_const):  Use tree_vector_builder and
2542         new_unary_operation.  Operate only on the encoded elements
2543         for truncating integer conversions, or for non-stepped encodings.
2544
2545 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
2546
2547         * config/sparc/sparc.c: Include tree-vector-builder.h.
2548         (sparc_fold_builtin): Use tree_vector_builder instead of build_vector.
2549         * expmed.c: Include tree-vector-builder.h.
2550         (make_tree): Use tree_vector_builder instead of build_vector.
2551         * fold-const.c: Include tree-vector-builder.h.
2552         (const_binop): Use tree_vector_builder instead of build_vector.
2553         (const_unop): Likewise.
2554         (native_interpret_vector): Likewise.
2555         (fold_vec_perm): Likewise.
2556         (fold_ternary_loc): Likewise.
2557         * gimple-fold.c: Include tree-vector-builder.h.
2558         (gimple_fold_stmt_to_constant_1): Use tree_vector_builder instead
2559         of build_vector.
2560         * tree-ssa-forwprop.c: Include tree-vector-builder.h.
2561         (simplify_vector_constructor): Use tree_vector_builder instead
2562         of build_vector.
2563         * tree-vect-generic.c: Include tree-vector-builder.h.
2564         (add_rshift): Use tree_vector_builder instead of build_vector.
2565         (expand_vector_divmod): Likewise.
2566         (optimize_vector_constructor): Likewise.
2567         * tree-vect-loop.c: Include tree-vector-builder.h.
2568         (vect_create_epilog_for_reduction): Use tree_vector_builder instead
2569         of build_vector.  Explicitly use a stepped encoding for
2570         { 1, 2, 3, ... }.
2571         * tree-vect-slp.c: Include tree-vector-builder.h.
2572         (vect_get_constant_vectors): Use tree_vector_builder instead
2573         of build_vector.
2574         (vect_transform_slp_perm_load): Likewise.
2575         (vect_schedule_slp_instance): Likewise.
2576         * tree-vect-stmts.c: Include tree-vector-builder.h.
2577         (vectorizable_bswap): Use tree_vector_builder instead of build_vector.
2578         (vect_gen_perm_mask_any): Likewise.
2579         (vectorizable_call): Likewise.  Explicitly use a stepped encoding.
2580         * tree.c: (build_vector_from_ctor): Use tree_vector_builder instead
2581         of build_vector.
2582         (build_vector_from_val): Likewise.  Explicitly use a duplicate
2583         encoding.
2584
2585 2017-12-07  Richard Sandiford  <richard.sandiford@arm.com>
2586
2587         * doc/generic.texi (VECTOR_CST): Describe new representation of
2588         vector constants.
2589         * vector-builder.h: New file.
2590         * tree-vector-builder.h: Likewise.
2591         * tree-vector-builder.c: Likewise.
2592         * Makefile.in (OBJS): Add tree-vector-builder.o.
2593         * tree.def (VECTOR_CST): Update comment to refer to generic.texi.
2594         * tree-core.h (tree_base): Add a vector_cst field to the u union.
2595         (tree_vector): Change the number of elements to
2596         vector_cst_encoded_nelts.
2597         * tree.h (VECTOR_CST_NELTS): Redefine using TYPE_VECTOR_SUBPARTS.
2598         (VECTOR_CST_ELTS): Delete.
2599         (VECTOR_CST_ELT): Redefine using vector_cst_elt.
2600         (VECTOR_CST_LOG2_NPATTERNS, VECTOR_CST_NPATTERNS): New macros.
2601         (VECTOR_CST_NELTS_PER_PATTERN, VECTOR_CST_DUPLICATE_P): Likewise.
2602         (VECTOR_CST_STEPPED_P, VECTOR_CST_ENCODED_ELTS): Likewise.
2603         (VECTOR_CST_ENCODED_ELT): Likewise.
2604         (vector_cst_encoded_nelts): New function.
2605         (make_vector): Take the values of VECTOR_CST_LOG2_NPATTERNS and
2606         VECTOR_CST_NELTS_PER_PATTERN as arguments.
2607         (vector_cst_int_elt, vector_cst_elt): Declare.
2608         * tree.c: Include tree-vector-builder.h.
2609         (tree_code_size): Abort if passed VECTOR_CST.
2610         (tree_size): Update for new VECTOR_CST layout.
2611         (make_vector): Take the values of VECTOR_CST_LOG2_NPATTERNS and
2612         VECTOR_CST_NELTS_PER_PATTERN as arguments.
2613         (build_vector): Use tree_vector_builder.
2614         (vector_cst_int_elt, vector_cst_elt): New functions.
2615         (drop_tree_overflow): For VECTOR_CST, drop the TREE_OVERFLOW from the
2616         encoded elements and then create the vector in the canonical form.
2617         (check_vector_cst, check_vector_cst_duplicate, check_vector_cst_fill)
2618         (check_vector_cst_stepped, test_vector_cst_patterns): New functions.
2619         (tree_c_tests): Call test_vector_cst_patterns.
2620         * lto-streamer-out.c (DFS::DFS_write_tree_body): Handle the new
2621         VECTOR_CST fields.
2622         (hash_tree): Likewise.
2623         * tree-streamer-out.c (write_ts_vector_tree_pointers): Likewise.
2624         (streamer_write_tree_header): Likewise.
2625         * tree-streamer-in.c (lto_input_ts_vector_tree_pointers): Likewise.
2626         (streamer_alloc_tree): Likewise.  Update call to make_vector.
2627         * fold-const.c (fold_ternary_loc): Avoid using VECTOR_CST_ELTS.
2628
2629 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
2630
2631         * selftest.h (ASSERT_TRUE_AT, ASSERT_FALSE_AT, ASSERT_EQ_AT)
2632         (ASSERT_NE, ASSERT_PRED1): Add underscores to local variable names
2633         * selftest-rtl.h (ASSERT_RTX_EQ, ASSERT_RTX_PTR_EQ): Likewise.
2634
2635 2017-12-07  Bin Cheng  <bin.cheng@arm.com>
2636             Richard Biener  <rguenther@suse.de>
2637
2638         PR tree-optimization/81303
2639         * Makefile.in (gimple-loop-interchange.o): New object file.
2640         * common.opt (floop-interchange): Reuse the option from graphite.
2641         * doc/invoke.texi (-floop-interchange): Ditto.  New document for
2642         -floop-interchange and mention it for -O3.
2643         * opts.c (default_options_table): Enable -floop-interchange at -O3.
2644         * gimple-loop-interchange.cc: New file.
2645         * params.def (PARAM_LOOP_INTERCHANGE_MAX_NUM_STMTS): New parameter.
2646         (PARAM_LOOP_INTERCHANGE_STRIDE_RATIO): New parameter.
2647         * passes.def (pass_linterchange): New pass.
2648         * timevar.def (TV_LINTERCHANGE): New time var.
2649         * tree-pass.h (make_pass_linterchange): New declaration.
2650         * tree-ssa-loop-ivcanon.c (create_canonical_iv): Change to external
2651         interchange.  Record IV before/after increment in new parameters.
2652         * tree-ssa-loop-ivopts.h (create_canonical_iv): New declaration.
2653         * tree-vect-loop.c (vect_is_simple_reduction): Factor out reduction
2654         path check into...
2655         (check_reduction_path): ...New function here.
2656         * tree-vectorizer.h (check_reduction_path): New declaration.
2657
2658 2017-12-07  Vladimir Makarov  <vmakarov@redhat.com>
2659
2660         PR target/83252
2661         PR rtl-optimization/80818
2662         * lra.c (add_regs_to_insn_regno_info): Make a hard reg in CLOBBER
2663         always early clobbered.
2664         * lra-lives.c (process_bb_lives): Check input hard regs for early
2665         clobbered non-operand hard reg.
2666
2667 2017-12-07  Jakub Jelinek  <jakub@redhat.com>
2668
2669         PR middle-end/83164
2670         * tree-cfg.c (verify_gimple_assign_binary): Don't require
2671         types_compatible_p, just that TYPE_MODE is the same.
2672
2673 2017-12-07  Martin Sebor  <msebor@redhat.com>
2674
2675         PR c/81544
2676         * attribs.c (empty_attribute_table): Initialize new member of
2677         struct attribute_spec.
2678         (decl_attributes): Add argument.  Handle mutually exclusive
2679         combinations of attributes.
2680         (selftests::test_attribute_exclusions): New function.
2681         (selftests::attribute_c_tests): Ditto.
2682         * attribs.h (decl_attributes): Add default argument.
2683         * selftest.h (attribute_c_tests): Declare.
2684         * selftest-run-tests.c (selftest::run_tests): Call attribute_c_tests.
2685         * tree-core.h (attribute_spec::exclusions, exclude): New type and
2686         member.
2687         * doc/extend.texi (Common Function Attributes): Update const and pure.
2688         * config/alpha/alpha.c (vms_attribute_table): Initialize new member
2689         of struct attribute_spec.
2690         * config/arc/arc.c (arc_attribute_table): Same.
2691         * config/arm/arm.c (arm_attribute_table): Same.
2692         * config/avr/avr.c ( avr_attribute_table): Same.
2693         * config/bfin/bfin.c (bfin_attribute_table): Same.
2694         * config/cr16/cr16.c (cr16_attribute_table): Same.
2695         * config/epiphany/epiphany.c (epiphany_attribute_table): Same.
2696         * config/h8300/h8300.c (h8300_attribute_table): Same.
2697         * config/i386/i386.c (ix86_attribute_table): Same.
2698         * config/ia64/ia64.c (ia64_attribute_table): Same.
2699         * config/m32c/m32c.c (m32c_attribute_table): Same.
2700         * config/m32r/m32r.c (m32r_attribute_table): Same.
2701         * config/m68k/m68k.c (m68k_attribute_table): Same.
2702         * config/mcore/mcore.c (mcore_attribute_table): Same.
2703         * config/microblaze/microblaze.c (microblaze_attribute_table): Same.
2704         * config/mips/mips.c (mips_attribute_table): Same.
2705         * config/msp430/msp430.c (msp430_attribute_table): Same.
2706         * config/nds32/nds32.c (nds32_attribute_table): Same.
2707         * config/nvptx/nvptx.c (nvptx_attribute_table): Same.
2708         * config/powerpcspe/powerpcspe.c (rs6000_attribute_table): Same.
2709         * config/rl78/rl78.c (rl78__attribute_table): Same.
2710         * config/rs6000/rs6000.c (rs6000_attribute_table): Same.
2711         * onfig/rx/rx.c (rx_attribute_table): Same.
2712         * config/s390/s390.c (s390_handle_vectorbool_attribute): Same.
2713         * config/sh/sh.c (sh_attribute_table): Same.
2714         * config/sparc/sparc.c (sparc_attribute_table): Same.
2715         * config/spu/spu.c (spu_attribute_table): Same.
2716         * config/stormy16/stormy16.c (xstormy16_attribute_table): Same.
2717         * config/v850/v850.c (v850_attribute_table): Same.
2718         * config/visium/visium.c (visium_attribute_table): Same.
2719
2720 2017-12-07  Tamar Christina  <tamar.christina@arm.com>
2721
2722         PR target/82641
2723         * config/arm/arm.c (INCLUDE_STRING): Define.
2724         (arm_last_printed_arch_string, arm_last_printed_fpu_string): New.
2725         (arm_declare_function_name): Conservatively emit .arch, .arch_extensions
2726         and .fpu.
2727
2728 2017-12-07  Michael Matz  <matz@suse.de>
2729
2730         Add unroll and jam pass
2731
2732         * gimple-loop-jam.c: New file.
2733         * Makefile.in (OBJS): Add gimple-loop-jam.o.
2734         * common.opt (funroll-and-jam): New option.
2735         * opts.c (default_options_table): Add unroll-and-jam at -O3.
2736         * params.def (PARAM_UNROLL_JAM_MIN_PERCENT): New param.
2737         (PARAM_UNROLL_JAM_MAX_UNROLL): Ditto.
2738         * passes.def: Add pass_loop_jam.
2739         * timevar.def (TV_LOOP_JAM): Add.
2740         * tree-pass.h (make_pass_loop_jam): Declare.
2741         * cfgloop.c (flow_loop_tree_node_add): Add AT argument.
2742         * cfgloop.h (flow_loop_tree_node_add): Adjust declaration.
2743         * cfgloopmanip.c (duplicate_loop): Add AT argument, adjust call
2744         to flow_loop_tree_node_add.
2745         (duplicate_subloops, copy_loops_to): Append to sibling list.
2746         * cfgloopmanip.h: (duplicate_loop): Adjust declaration.
2747         * doc/invoke.texi (-funroll-and-jam): Document new option.
2748         (unroll-jam-min-percent, unroll-jam-max-unroll): Document new params.
2749
2750 2017-12-07  Richard Biener  <rguenther@suse.de>
2751
2752         PR tree-optimization/83296
2753         PR tree-optimization/67769
2754         * tree-ssa-phiopt.c (conditional_replacement): Do not reset
2755         flow sensitive info in an unrelated BB.
2756         (value_replacement): Use reset_flow_sensitive_info.
2757         (minmax_replacement): Reset flow sensitive info on the def
2758         we move.  Do not reset flow sensitive info in the whole BB
2759         we move the stmt to.
2760         (abs_replacement): Likewise.
2761
2762 2017-12-07  Segher Boessenkool  <segher@kernel.crashing.org>
2763
2764         PR target/43871
2765         * config/rs6000/rs6000.c (rs6000_option_override_internal): Set
2766         rs6000_cpu to the given -mcpu=, or to the default processor.
2767
2768 2017-12-07  Segher Boessenkool  <segher@kernel.crashing.org>
2769
2770         * config/rs6000/rs6000.h (rs6000_cpu_attr): Delete.
2771         * config/rs6000/rs6000.c (rs6000_variable_issue_1): Use rs6000_tune
2772         instead of rs6000_cpu_attr.
2773         (rs6000_adjust_cost): Ditto.
2774         (is_microcoded_insn): Ditto.
2775         (rs6000_adjust_priority): Ditto.
2776         (rs6000_issue_rate): Ditto.
2777         (rs6000_use_sched_lookahead): Ditto.
2778         (rs6000_use_sched_lookahead_guard): Ditto.
2779         (rs6000_sched_reorder): Ditto.
2780         (force_new_group): Ditto.
2781         * config/rs6000/rs6000.md (cpu attribute): Ditto.
2782         (group_ending_nop): Ditto.
2783
2784 2017-12-07  Segher Boessenkool  <segher@kernel.crashing.org>
2785
2786         * config/rs6000/rs6000.opt (rs6000_tune): New variable.
2787         * config/rs6000/rs6000.c (rs6000_option_override_internal): Also set
2788         rs6000_tune.  Use rs6000_tune instead of rs6000_cpu where appropriate.
2789         (rs6000_loop_align): Use rs6000_tune instead of rs6000_cpu where
2790         appropriate.
2791         (rs6000_reassociation_width): Ditto.
2792         (rs6000_emit_epilogue): Ditto.
2793         (rs6000_adjust_cost): Ditto.
2794         (is_microcoded_insn): Ditto.
2795         (is_cracked_insn): Ditto.
2796         (rs6000_adjust_priority): Ditto.
2797         (rs6000_sched_reorder): Ditto.
2798         (rs6000_sched_reorder2): Ditto.
2799         (insn_must_be_first_in_group): Ditto.
2800         (insn_must_be_last_in_group): Ditto.
2801         (rs6000_register_move_cost): Ditto.
2802         * config/rs6000/rs6000.h (rs6000_cpu_attr): Use rs6000_tune instead of
2803         rs6000_cpu.
2804
2805 2017-12-07  Julia Koval  <julia.koval@intel.com>
2806
2807         * config.gcc: Add vaesintrin.h.
2808         * config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI_V64QI):
2809         New type.
2810         * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
2811         __builtin_ia32_vaesdec_v32qi, __builtin_ia32_vaesdec_v64qi):
2812         New builtins.
2813         * config/i386/i386.c (ix86_expand_args_builtin): Handle new type.
2814         * config/i386/immintrin.h: Include vaesintrin.h.
2815         * config/i386/sse.md (vaesdec_<mode>): New pattern.
2816         * config/i386/vaesintrin.h (_mm256_aesdec_epi128, _mm512_aesdec_epi128,
2817         _mm_aesdec_epi128): New intrinsics.
2818
2819 2017-12-06  David Malcolm  <dmalcolm@redhat.com>
2820
2821         * Makefile.in (C_COMMON_OBJS): Add c-family/c-spellcheck.o.
2822         * spellcheck-tree.c (find_closest_macro_cpp_cb): Move to
2823         c-family/c-spellcheck.cc.
2824         (best_macro_match::best_macro_match): Likewise.
2825         * spellcheck-tree.h
2826         (struct edit_distance_traits<cpp_hashnode *>): Move to
2827         c-family/c-spellcheck.h.
2828         (class best_macro_match): Likewise.
2829
2830 2017-12-06  Jakub Jelinek  <jakub@redhat.com>
2831
2832         PR tree-optimization/83293
2833         * gimple-ssa-strength-reduction.c (insert_initializers): Use
2834         GSI_NEW_STMT instead of GSI_SAME_STMT in gsi_insert_after that
2835         might insert into empty bb.
2836
2837         PR sanitizer/81281
2838         * match.pd ((T)(P + A) - (T)P -> (T) A): Split into separate
2839         simplify for plus with :c added, and pointer_plus without that.
2840         ((T)P - (T)(P + A) -> -(T) A): Likewise.  If type is integral
2841         with undefined overflow and the conversion is not widening,
2842         perform negation in utype and only convert to type afterwards.
2843         ((T)(P + A) - (T)(P + B) -> (T)A - (T)B): Split into separate
2844         simplify for plus with :c added, and pointer_plus without that.
2845         If type is integral with undefined overflow and the conversion is
2846         not widening, perform minus in utype and only convert to type
2847         afterwards.  Move the last pointer_diff_expr simplify into the
2848         two outermost ifs.
2849
2850 2017-12-06  Martin Sebor  <msebor@redhat.com>
2851
2852         PR tree-optimization/82646
2853         * builtins.c (maybe_emit_chk_warning): Use size as the bound for
2854         strncpy, not maxlen.
2855
2856 2017-12-06  Martin Sebor  <msebor@redhat.com>
2857
2858         * doc/invoke.texi (-Wstringop-truncation): Mention attribute
2859         nonstring.
2860
2861         PR tree-optimization/83075
2862         * tree-ssa-strlen.c (handle_builtin_stxncpy): Avoid assuming
2863         strncat/strncpy don't change length of source string.
2864
2865 2017-12-06  Eric Botcazou  <ebotcazou@adacore.com>
2866
2867         Revert
2868         2017-11-29  Martin Aberg  <maberg@gaisler.com>
2869
2870         * config/sparc/sparc.md (divdf3_fix): Add NOP and adjust length
2871         to prevent b2bst errata sequence.
2872         (sqrtdf2_fix): Likewise.
2873
2874 2017-12-06  Jakub Jelinek  <jakub@redhat.com>
2875
2876         PR tree-optimization/81945
2877         * cfgloop.h (FOR_EACH_LOOP_FN): Use FN instead of hardcoding fn.
2878         * tree-cfg.c (move_sese_region_to_fn): If any of the loops moved
2879         to dest_cfun has orig_loop_num set, either remap it to the new
2880         loop number if the loop got moved too, or clear it.
2881
2882 2017-12-05  Steve Ellcey  <sellcey@cavium.com>
2883
2884         * config/aarch64/thunderx2-t99.md (thunderx2t99_branch): Add trap
2885         to reservation.
2886         (thunderx2t99_nothing): New insn reservation.
2887         (thunderx2t99_mrs): New insn reservation.
2888         (thunderx2t99_multiple): New insn reservation.
2889         (thunderx2t99_alu_basi): Add bfx to reservation.
2890         (thunderx2t99_fp_cmp): Add fccmps and fccmpd to reservation.
2891
2892 2017-12-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2893
2894         PR target/82248
2895         * config/arm/arm.md (probe_stack) : Use the 'o' constraint.
2896
2897 2017-12-05  Bin Cheng  <bin.cheng@arm.com>
2898
2899         * tree-ssa-dce.c (simple_dce_from_worklist): Move and rename from
2900         tree-ssa-pre.c::remove_dead_inserted_code.
2901         * tree-ssa-dce.h: New file.
2902         * tree-ssa-pre.c (tree-ssa-dce.h): Include new header file.
2903         (remove_dead_inserted_code): Move and rename to function
2904         tree-ssa-dce.c::simple_dce_from_worklist.
2905         (pass_pre::execute): Update use.
2906
2907 2017-12-05  Richard Biener  <rguenther@suse.de>
2908
2909         PR tree-optimization/83277
2910         * graphite-isl-ast-to-gimple.c (should_copy_to_new_region): Make sure
2911         to code-gen liveout vars.
2912
2913 2017-12-05  Richard Sandiford  <richard.sandiford@linaro.org>
2914
2915         * config/aarch64/aarch64-simd.md (aarch64_simd_bsldi_internal)
2916         (aarch64_simd_bsldi_alt): Check REG_P before GP_REGNUM_P.
2917         (aarch64_cm<optab>di, aarch64_cmtstdi): Add leading "&&" to
2918         split condition.
2919
2920 2017-12-05  Max Filippov  <jcmvbkbc@gmail.com>
2921
2922         * config/xtensa/xtensa.c (xtensa_asan_shadow_offset): New
2923         function.
2924         (TARGET_ASAN_SHADOW_OFFSET): New macro definition.
2925         * config/xtensa/xtensa.h (FRAME_GROWS_DOWNWARD): Set to 1 if
2926         ASAN is enabled.
2927
2928 2017-12-05  Richard Biener   <rguenther@suse.de>
2929
2930         * timevar.def (TV_TREE_RECIP, TV_TREE_SINCOS, TV_TREE_WIDEN_MUL): Add.
2931         * tree-ssa-math-opts.c (pass_data_cse_reciprocal): Use TV_TREE_RECIP.
2932         (pass_data_cse_sincos): Use TV_TREE_SINCOS.
2933         (pass_data_optimize_widening_mul): Use TV_TREE_WIDEN_MUL.
2934
2935 2017-12-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2936
2937         * dbxout.c (dbxout_block): Grow buf to 30 bytes.
2938
2939 2017-12-05  Martin Liska  <mliska@suse.cz>
2940             Jakub Jelinek  <jakub@redhat.com>
2941
2942         * doc/invoke.texi: Document the options.
2943         * flag-types.h (enum sanitize_code): Add
2944         SANITIZE_POINTER_COMPARE and SANITIZE_POINTER_SUBTRACT.
2945         * ipa-inline.c (sanitize_attrs_match_for_inline_p): Add handling
2946         of SANITIZE_POINTER_COMPARE and SANITIZE_POINTER_SUBTRACT.
2947         * opts.c: Define new sanitizer options.
2948         * sanitizer.def (BUILT_IN_ASAN_POINTER_COMPARE): Likewise.
2949         (BUILT_IN_ASAN_POINTER_SUBTRACT): Likewise.
2950
2951 2017-12-05  Julia Koval  <julia.koval@intel.com>
2952
2953         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VNNI_SET,
2954         OPTION_MASK_ISA_AVX512VNNI_UNSET): New.
2955         (ix86_handle_option): Handle -mavx512vnni.
2956         * config/i386/cpuid.h (bit_AVX512VNNI): New bit.
2957         * config/i386/driver-i386.c (host_detect_local_cpu): Handle new bit.
2958         * config/i386/i386-c (__AVX512VNNI__): New.
2959         * config/i386/i386.c (ix86_target_string): Handle new option.
2960         (ix86_valid_target_attribute_inner_p): Handle new option.
2961         * config/i386/i386.h (TARGET_AVX512VNNI, TARGET_AVX512VNNI_P): New.
2962         * config/i386/i386.opt (mavx512vnni): New option.
2963
2964 2017-12-01  Jan Hubicka  <hubicka@ucw.cz>
2965
2966         PR target/81616
2967         * athlon.md: Disable for generic.
2968         * haswell.md: Enable for generic.
2969         * i386.c (ix86_sched_init_global): Add core hooks for generic.
2970         * x86-tune-sched.c (ix86_issue_rate): Increase issue rate for generic
2971         to 4.
2972         (ix86_adjust_cost): Move generic to haswell path.
2973
2974 2017-12-04  Eric Botcazou  <ebotcazou@adacore.com>
2975
2976         * config/sparc/sparc.c (sparc_do_work_around_errata): Use mem_ref
2977         instead of MEM_P in a couple more places.  Fix formatting issues.
2978
2979 2017-12-04  Jim Wilson  <jimw@sifive.com>
2980
2981         * config/riscv/riscv.c (riscv_for_each_saved_reg): Use GP_REG_LAST
2982         instead of GP_REG_LAST-1.
2983         (riscv_adjust_libcall_cfi_prologue): Likewise.
2984         (riscv_adjust_libcall_cri_epilogue): Likewise.
2985         * config/riscv/riscv.h (CALL_USED_REGISTERS): Change a6 to t6 in
2986         comment.
2987
2988 2017-12-04  Luis Machado  <luis.machado@linaro.org>
2989
2990         * ipa-pure-const.c (check_decl): Add missing newline.
2991         (state_from_flags): Likewise.
2992
2993 2017-12-04  Jeff Law  <law@redhat.com>
2994
2995         PR tree-optimizatin/78496
2996         * gimple-ssa-evrp-analyze.h
2997         (evrp_range_analyzer::get_vr_values): Simplify.
2998         * gimple-ssa-evrp-analyze.c: Corresponding changes.
2999         * tree-ssa-dom.c: Include alloc-pool.h, tree-vrp.h, vr-values.h
3000         and gimple-ssa-evrp-analyze.h.
3001         (dom_opt_dom_walker class): Add evrp_range_analyzer member.
3002         (simplify_stmt_for_jump_threading): Copy a blob of code from
3003         tree-vrp.c to use ranges to simplify statements.
3004         (dom_opt_dom_walker::before_dom_children): Call
3005         evrp_range_analyzer::{enter,record_ranges_from_stmt} methods.
3006         (dom_opt_dom_walker::after_dom_children): Similarly for
3007         evrp_range_analyzer::leave.
3008         (dom_opt_dom_walker::optimize_stmt): Use EVRP ranges to optimize
3009         conditionals.
3010
3011         * gimple-ssa-evrp-analyze.c
3012         (evrp_range_analyzer::extract_range_from_stmt):  Always use
3013         vr_values::update_value_range so preexisting range info is
3014         medged with new range info, even if the new range is VR_VARYING.
3015
3016 2017-12-04  Segher Boessenkool  <segher@kernel.crashing.org>
3017
3018         * combine.c: Adjust comment.
3019         (use_crosses_set_p): Delete.
3020         (can_combine_p): Use modified_between_p instead of use_crosses_set_p.
3021         (try_combine): Ditto.
3022
3023 2017-12-04  Richard Biener  <rguenther@suse.de>
3024
3025         PR tree-optimization/83255
3026         * graphite-isl-ast-to-gimple.c (translate_isl_ast_node_for):
3027         Re-add zero-iteration check.
3028
3029 2017-12-04  Segher Boessenkool  <segher@kernel.crashing.org>
3030
3031         PR rtl-optimization/83245
3032         * lra.c (collect_non_operand_hard_regs): Treat clobbers of non-operand
3033         hard registers as earlyclobber, also if not in an asm.
3034
3035 2017-12-04  Segher Boessenkool  <segher@kernel.crashing.org>
3036
3037         PR bootstrap/83265
3038         Revert
3039         2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
3040
3041         PR target/43871
3042         * config/rs6000/rs6000.c (rs6000_option_override_internal): Set
3043         rs6000_cpu based on cpu_index, not tune_index.
3044
3045 2017-12-04  Richard Biener  <rguenther@suse.de>
3046
3047         PR tree-optimization/83238
3048         * graphite-scop-detection.c (scop_detection::merge_sese): Make
3049         code match comment, rejecting invalid SESE regions.
3050
3051 2017-12-03  John David Anglin  <danglin@gcc.gnu.org>
3052
3053         * config/pa/pa.c (pa_legitimate_address_p): For scaled indexing,
3054         require base operand is a REG_POINTER prior to reload on targets
3055         with non-equivalent space registers.
3056
3057 2017-12-01  Jan Hubicka  <hubicka@ucw.cz>
3058
3059         * ipa-cp.c (ipcp_lattice<valtype>::print): Update dumping.
3060         (update_specialized_profile): Fix updating of counts.
3061         (perhaps_add_new_callers): Likewise.
3062
3063 2017-12-01  Jan Hubicka  <hubicka@ucw.cz>
3064
3065         PR target/81616
3066         * x86-tune.def: Remove obsolette FIXMEs.
3067         (X86_TUNE_PARTIAL_FLAG_REG_STALL): Disable for generic
3068         (X86_TUNE_FUSE_CMP_AND_BRANCH_32, X86_TUNE_FUSE_CMP_AND_BRANCH_64,
3069         X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS, X86_TUNE_FUSE_ALU_AND_BRANCH):
3070         Enable for generic.
3071         (X86_TUNE_PAD_RETURNS): Disable for generic.
3072
3073 2017-12-02  Jakub Jelinek  <jakub@redhat.com>
3074
3075         PR tree-optimization/83170
3076         PR tree-optimization/83241
3077         * gimple-ssa-store-merging.c
3078         (imm_store_chain_info::try_coalesce_bswap): Update vuse field from
3079         gimple_vuse (ins_stmt) in case it has changed.
3080         (imm_store_chain_info::output_merged_store): Likewise.
3081
3082         * tree-chkp.c (chkp_compute_bounds_for_assignment): Handle
3083         POINTER_DIFF_EXPR.
3084
3085         PR c++/81212
3086         * tree-cfg.c (pass_warn_function_return::execute): Handle
3087         __builtin_ubsan_handle_missing_return like __builtin_unreachable
3088         with BUILTINS_LOCATION.
3089
3090         PR target/78643
3091         PR target/80583
3092         * expr.c (get_inner_reference): If DECL_MODE of a non-bitfield
3093         is BLKmode for vector field with vector raw mode, use TYPE_MODE
3094         instead of DECL_MODE.
3095
3096         * config/i386/i386-protos.h (standard_sse_constant_opcode): Change
3097         last argument to rtx pointer.
3098         * config/i386/i386.c (standard_sse_constant_opcode): Replace X argument
3099         with OPERANDS.  For AVX+ 128-bit VEX encoded instructions over 256-bit
3100         or 512-bit.  If setting EXT_REX_SSE_REG_P, use EVEX encoded insn
3101         depending on the chosen ISAs.
3102         * config/i386/i386.md (*movxi_internal_avx512f, *movoi_internal_avx,
3103         *movti_internal, *movdi_internal, *movsi_internal, *movtf_internal,
3104         *movdf_internal, *movsf_internal): Adjust standard_sse_constant_opcode
3105         callers.
3106         * config/i386/sse.md (mov<mode>_internal): Likewise.
3107         * config/i386/mmx.md (*mov<mode>_internal): Likewise.
3108
3109 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
3110
3111         * doc/invoke.texi (-dp): Say that instruction cost is printed as well.
3112
3113 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
3114
3115         * config/rs6000/rs6000-protos.h (emit_fusion_addis): Remove last two
3116         parameters from prototype.
3117         * config/rs6000/rs6000.c (emit_fusion_addis): Remove last two
3118         parameters.  Don't print a comment.
3119         (emit_fusion_gpr_load): Adjust.
3120         (emit_fusion_load_store): Adjust.
3121         * config/rs6000/rs6000.md (*fusion_p9_<mode>_constant): Adjust.
3122         * config/rs6000/vsx.md (two peepholes): Print the "vector load fusion"
3123         comment on the second line.
3124
3125 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
3126
3127         PR target/43871
3128         * config/rs6000/rs6000.c (rs6000_option_override_internal): Set
3129         rs6000_cpu based on cpu_index, not tune_index.
3130
3131 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
3132
3133         * final.c (output_asm_name): Print insn_cost.  Shorten output.  Print
3134         which_alternative instead of which_alternative + 1.
3135         (output_asm_insn): Print an extra tab if the template is short.
3136
3137 2017-12-01  Jim Wilson  <jimw@sifive.com>
3138
3139         * common.opt (use_gnu_debug_info_extensions): Delete DWARF_DEBUG from
3140         comment.
3141         * config/vx-common.h (DWARF_DEBUGGING_INFO): Delete undef.
3142         * doc/tm.texi.in (PREFERRED_DEBUGGING_TYPE): Delete DWARF_DEBUG
3143         reference.
3144         * doc/tm.texi: Regenerate.
3145
3146 2017-12-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
3147
3148         PR target/81959
3149         * config/rs6000/rs6000.c (rs6000_address_for_fpconvert): Check for
3150         whether we can allocate pseudos before trying to fix an address.
3151         * config/rs6000/rs6000.md (float_<mode>si2_hw): Make sure the
3152         memory address is indexed or indirect.
3153         (floatuns_<mode>si2_hw2): Likewise.
3154
3155 2017-12-01  Jason Merrill  <jason@redhat.com>
3156
3157         * Makefile.in (TAGS): Add c-family/*.cc.
3158
3159 2017-12-01  Wilco Dijkstra  <wdijkstr@arm.com>
3160
3161         * config/aarch64/aarch64.md (call_insn): Use %c rather than %a.
3162         (call_value_insn): Likewise.
3163         (sibcall_insn): Likewise.
3164         (sibcall_value_insn): Likewise.
3165         (movsi_aarch64): Likewise.
3166         (movdi_aarch64): Likewise.
3167         (add_losym_): Likewise.
3168         (ldr_got_small_): Likewise.
3169         (ldr_got_small_sidi): Likewise.
3170         (ldr_got_small_28k_): Likewise.
3171         (ldr_got_small_28k_sidi): Likewise.
3172         * config/aarch64/aarch64.c (aarch64_print_address_internal):
3173         Move output_addr_const to symbolic case. Add error check.
3174
3175 2017-12-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
3176
3177         * config/s390/predicates.md (plus16_Q_operand): New predicate.
3178         * config/s390/s390.md: Disable MVC merging peephole if it would
3179         disable operand forwarding.
3180         (new peephole2): Split MVCs if it would turn them into up to 2
3181         forwardable MVCs.
3182
3183 2017-12-01  Richard Biener  <rguenther@suse.de>
3184
3185         PR tree-optimization/83232
3186         * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Fix
3187         detection of same access. Instead of breaking the group here
3188         do not consider the duplicate.  Add comment explaining real fix.
3189
3190 2017-12-01  Jonathan Wakely  <jwakely@redhat.com>
3191
3192         * doc/md.texi (Insn Splitting): Fix "central flowgraph" typo.
3193
3194 2017-12-01  Sudakshina Das  <sudi.das@arm.com>
3195
3196         * config/arm/vfp.md (*movhf_vfp_fp16): Add conds attribute.
3197
3198 2017-12-01  Jakub Jelinek  <jakub@redhat.com>
3199
3200         * function.h (struct function): Remove cilk_frame_decl,
3201         is_cilk_function and calls_cilk_spawn fields.
3202         * tree-inline.h (struct copy_body_data): Remove remap_var_for_cilk
3203         field.
3204         * omp-simd-clone.c (simd_clone_clauses_extract): Don't clear
3205         cilk_elemental field.
3206         * cgraph.h (struct cgraph_simd_clone): Remove cilk_elemental field.
3207         * target.def: Adjust comment.
3208         * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
3209         Don't test cilk_elemental.
3210
3211         PR tree-optimization/83233
3212         * gimple-ssa-store-merging.c (nop_stats, bswap_stats): Use
3213         bswap_stat name for the struct.
3214
3215         PR c/79153
3216         * tree.h (SWITCH_BREAK_LABEL_P): Define.
3217         * gimplify.c (collect_fallthrough_labels): Handle GIMPLE_BIND
3218         starting with a GIMPLE_SWITCH and ending with GIMPLE_LABEL with
3219         SWITCH_BREAK_LABEL_P set on the label.
3220         (gimplify_switch_expr): Set SWITCH_BREAK_LABEL_P on the label
3221         added for default case if it was missing and not all cases covered.
3222         Wrap GIMPLE_SWITCH and the switch_body_seq into a GIMPLE_BIND if
3223         switch_body_seq ends with a GIMPLE_LABEL with SWITCH_BREAK_LABEL_P
3224         set on the label.
3225         * tree-chrec.c (evolution_function_is_univariate_p): Add return true;
3226         to avoid -Wimplicit-fallthrough warning.
3227         * config/i386/i386.c (ix86_expand_special_args_builtin): Add
3228         FALLTHRU comment to avoid -Wimplicit-fallthrough warning.
3229
3230         PR tree-optimization/83221
3231         * tree-ssa-reassoc.c (sort_by_operand_rank): Shift bb_rank
3232         down by 16.
3233         (init_reassoc): Formatting fix.
3234
3235         PR sanitizer/81275
3236         * tree-cfg.c (group_case_labels_stmt): Don't optimize away
3237         C++ FE implicitly added __builtin_unreachable () until -Wreturn-type
3238         is diagnosed.
3239
3240         PR sanitizer/83219
3241         * tree-cfg.c: Include asan.h.
3242         (gimple_seq_unreachable_p): Return false for -fsanitize=unreachable.
3243
3244 2017-12-01  Sergey Shalnov  <Sergey.Shalnov@intel.com>
3245
3246         * config/i386/i386.md: Fix AVX512 register width in AVX512 instruction.
3247
3248 2017-12-01  Sergey Shalnov  <Sergey.Shalnov@intel.com>
3249
3250         * config/i386/i386.c (standard_sse_constant_opcode): Fix wrong form for
3251         vpcmpeqd instruction.
3252
3253 2017-12-01  Sergey Shalnov  <Sergey.Shalnov@intel.com>
3254
3255         * config/i386/i386.c (standard_sse_constant_opcode): Fix
3256         registers type for 128bit mode.
3257
3258 2017-11-30  Jakub Jelinek  <jakub@redhat.com>
3259
3260         * spellcheck-tree.c (test_find_closest_identifier): Use ; instead
3261         of ;;.
3262         * gengtype-state.c (read_state_pair): Likewise.
3263         * gimple-fold.c (gimple_fold_builtin_string_compare): Likewise.
3264         * sel-sched-dump.c (dump_insn_rtx_1): Likewise.
3265         * ipa-cp.c (intersect_aggregates_with_edge): Likewise.
3266         * ifcvt.c (noce_try_store_flag_constants): Likewise.
3267         * tree-ssa-ccp.c (ccp_finalize): Likewise.
3268         * omp-grid.c (grid_process_kernel_body_copy): Likewise.
3269         * builtins.c (fold_builtin_3): Likewise.
3270         * graphite-scop-detection.c
3271         (scop_detection::stmt_has_simple_data_refs_p): Likewise.
3272         * hsa-gen.c (hsa_function_representation::hsa_function_representation):
3273         Likewise.
3274
3275 2017-12-01  Maxim Ostapenko  <m.ostapenko@samsung.com>
3276
3277         PR sanitizer/81697
3278         * asan.c (asan_protect_global): Add new ignore_decl_rtl_set_p
3279         parameter. Return true if ignore_decl_rtl_set_p is true and other
3280         conditions are satisfied.
3281         * asan.h (asan_protect_global): Add new parameter.
3282         * varasm.c (categorize_decl_for_section): Pass true as second parameter
3283         to asan_protect_global calls.
3284
3285 2017-11-30  Jim Wilson  <jimw@sifive.com>
3286
3287         * doc/invoke.texi (RISC-V Options): Delete nonexistent -mmemcpy and
3288         -mno-memcpy options.  For -mplt, -mfdiv, -mdiv, -msave-restore, and
3289         -mstrict-align, add info on default value.  Delete redundant lines for
3290         -mabi.  Add missing -mexplicit-relocs docs.
3291
3292 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
3293
3294         * config/arc/arc.md (trap): New pattern.
3295
3296 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
3297
3298         * config/arc/arc.c (hwloop_optimize): Prevent the last ZOL
3299         instruction to end into a delay slot.
3300         * config/arc/arc.md (cond_delay_insn): Check if the instruction
3301         can be placed into a delay slot against reg_note.
3302
3303 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
3304
3305         * config/arc/arc.c (hwloop_optimize): Update hw-loop's end/start
3306         labels number of usages.
3307
3308 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
3309
3310         * config/arc/arc.c (arc_cannot_substitue_mem_equiv_p): New
3311         function.
3312         (TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P): Define.
3313
3314 2017-11-30  Jakub Jelinek  <jakub@redhat.com>
3315
3316         PR target/83210
3317         * internal-fn.c (expand_mul_overflow): Optimize unsigned
3318         multiplication by power of 2 constant into two shifts + comparison.
3319
3320 2017-11-30  Jan Hubicka  <hubicka@ucw.cz>
3321
3322         PR target/81616
3323         * config/i386/x86-tune-costs.h (generic_cost): Revise for modern CPUs.
3324
3325 2017-11-30  Richard Biener  <rguenther@suse.de>
3326
3327         PR tree-optimization/83202
3328         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Add
3329         allow_peel argument and guard peeling.
3330         (canonicalize_loop_induction_variables): Likewise.
3331         (canonicalize_induction_variables): Pass false.
3332         (tree_unroll_loops_completely_1): Pass unroll_outer to disallow
3333         peeling from cunrolli.
3334
3335 2017-11-29  Segher Boessenkool  <segher@kernel.crashing.org>
3336
3337         * combine.c (try_combine): Print a message to dump file whenever
3338         I0, I1, or I2 cannot be combined into I3.
3339
3340 2017-11-29  Segher Boessenkool  <segher@kernel.crashing.org>
3341
3342         PR rtl-optimization/83156
3343         PR rtl-optimization/82621
3344         * combine.c (try_combine): Don't split an I2 if one of the dests is
3345         set again before I3.  Allow unused dests.
3346
3347 2017-11-29  Segher Boessenkool  <segher@kernel.crashing.org>
3348
3349         * config/rs6000/rs6000.md (*add<mode>3_carry_in_internal2): New.
3350
3351 2017-11-29  Vladimir Makarov  <vmakarov@redhat.com>
3352
3353         PR rtl-optimization/80818
3354         * lra.c (collect_non_operand_hard_regs): New arg insn.  Pass it
3355         recursively.  Use insn code for clobber.
3356         (lra_set_insn_recog_data): Pass the new arg to
3357         collect_non_operand_hard_regs.
3358         (add_regs_to_insn_regno_info): Pass insn instead of uid.  Use insn
3359         code for clobber.
3360         (lra_update_insn_regno_info): Pass insn to
3361         add_regs_to_insn_regno_info.
3362
3363 2017-11-29  Jim Wilson  <jimw@sifive.com>
3364             Andrew Waterman  <andrew@sifive.com>
3365
3366         * config/riscv/riscv.c (SINGLE_SHIFT_COST): New.
3367         (riscv_rtx_costs): Case ZERO_EXTRACT, match new pattern, and return
3368         SINGLE_SHIFT_COST.  Case LT and ZERO_EXTEND, likewise.  Case ASHIFT,
3369         use SINGLE_SHIFT_COST.
3370         * config/riscv/riscv.md (lshrsi3_zero_extend_1): New.
3371         (lshrsi3_zero_extend_2, lshrsi3_zero_extend_3): New.
3372
3373 2017-11-29  Julia Koval  <julia.koval@intel.com>
3374
3375         * config/i386/avx512vbmi2intrin.h (_mm512_shldv_epi16,
3376         _mm512_mask_shldv_epi16, _mm512_maskz_shldv_epi16, _mm512_shldv_epi32,
3377         _mm512_mask_shldv_epi32, _mm512_maskz_shldv_epi32, _mm512_shldv_epi64,
3378         _mm512_mask_shldv_epi64, _mm512_maskz_shldv_epi64): New intrinsics.
3379         * config/i386/avx512vbmi2vlintrin.h (_mm256_shldv_epi16,
3380         _mm256_mask_shldv_epi16, _mm256_maskz_shldv_epi16, _mm256_shldv_epi32,
3381         _mm256_mask_shldv_epi32, _mm256_maskz_shldv_epi32, _mm256_shldv_epi64,
3382         _mm256_mask_shldv_epi64, _mm256_maskz_shldv_epi64, _mm_shldv_epi16,
3383         _mm_mask_shldv_epi16, _mm_maskz_shldv_epi16, _mm_shldv_epi32,
3384         _mm_mask_shldv_epi32, _mm_maskz_shldv_epi32, _mm_shldv_epi64,
3385         _mm_mask_shldv_epi64, _mm_maskz_shldv_epi64): Ditto.
3386         * config/i386/i386-builtin.def (__builtin_ia32_vpshldv_v32hi,
3387         __builtin_ia32_vpshldv_v32hi_mask, __builtin_ia32_vpshldv_v32hi_maskz,
3388         __builtin_ia32_vpshldv_v16hi, __builtin_ia32_vpshldv_v16hi_mask,
3389         __builtin_ia32_vpshldv_v16hi_maskz, __builtin_ia32_vpshldv_v8hi,
3390         __builtin_ia32_vpshldv_v8hi_mask, __builtin_ia32_vpshldv_v8hi_maskz,
3391         __builtin_ia32_vpshldv_v16si, __builtin_ia32_vpshldv_v16si_mask,
3392         __builtin_ia32_vpshldv_v16si_maskz, __builtin_ia32_vpshldv_v8si,
3393         __builtin_ia32_vpshldv_v8si_mask, __builtin_ia32_vpshldv_v8si_maskz,
3394         __builtin_ia32_vpshldv_v4si, __builtin_ia32_vpshldv_v4si_mask,
3395         __builtin_ia32_vpshldv_v4si_maskz, __builtin_ia32_vpshldv_v8di,
3396         __builtin_ia32_vpshldv_v8di_mask, __builtin_ia32_vpshldv_v8di_maskz,
3397         __builtin_ia32_vpshldv_v4di, __builtin_ia32_vpshldv_v4di_mask,
3398         __builtin_ia32_vpshldv_v4di_maskz, __builtin_ia32_vpshldv_v2di,
3399         __builtin_ia32_vpshldv_v2di_mask,
3400         __builtin_ia32_vpshldv_v2di_maskz): New builtins.
3401         * config/i386/sse.md (vpshldv_<mode>, vpshldv_<mode>_mask,
3402         vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): New patterns.
3403
3404 2017-11-29  Julia Koval  <julia.koval@intel.com>
3405
3406         * config/i386/avx512vbmi2intrin.h (_mm512_shrdv_epi16,
3407         _mm512_mask_shrdv_epi16, _mm512_maskz_shrdv_epi16, _mm512_shrdv_epi32,
3408         _mm512_mask_shrdv_epi32, _mm512_maskz_shrdv_epi32, _mm512_shrdv_epi64,
3409         _mm512_mask_shrdv_epi64, _mm512_maskz_shrdv_epi64): New intrinsics.
3410         * config/i386/avx512vbmi2vlintrin.h (_mm256_shrdv_epi16,
3411         _mm256_mask_shrdv_epi16, _mm256_maskz_shrdv_epi16, _mm256_shrdv_epi32,
3412         _mm256_mask_shrdv_epi32, _mm256_maskz_shrdv_epi32, _mm256_shrdv_epi64,
3413         _mm256_mask_shrdv_epi64, _mm256_maskz_shrdv_epi64, _mm_shrdv_epi16,
3414         _mm_mask_shrdv_epi16, _mm_maskz_shrdv_epi16, _mm_shrdv_epi32,
3415         _mm_mask_shrdv_epi32, _mm_maskz_shrdv_epi32, _mm_shrdv_epi64,
3416         _mm_mask_shrdv_epi64, _mm_maskz_shrdv_epi64): Ditto.
3417         * config/i386/i386-builtin-types.def (V32HI_FTYPE_V32HI_V32HI_V32HI,
3418         V32HI_FTYPE_V32HI_V32HI_V32HI_INT, V16HI_FTYPE_V16HI_V16HI_V16HI_INT,
3419         V8HI_FTYPE_V8HI_V8HI_V8HI_INT, V8SI_FTYPE_V8SI_V8SI_V8SI_INT,
3420         V4SI_FTYPE_V4SI_V4SI_V4SI_INT, V8DI_FTYPE_V8DI_V8DI_V8DI,
3421         V8DI_FTYPE_V8DI_V8DI_V8DI_INT, V4DI_FTYPE_V4DI_V4DI_V4DI_INT,
3422         V16SI_FTYPE_V16SI_V16SI_V16SI, V16SI_FTYPE_V16SI_V16SI_V16SI_INT,
3423         V2DI_FTYPE_V2DI_V2DI_V2DI_INT): New types.
3424         * config/i386/i386.c (ix86_expand_args_builtin): Handle new types.
3425         * config/i386/sse.md (vpshrdv_<mode>, vpshrdv_<mode>_mask,
3426         vpshrdv_<mode>_maskz, vpshrdv_<mode>_maskz_1): New pattern.
3427
3428 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
3429
3430         * config/sparc/sparc.c (sparc_do_work_around_errata): Treat the
3431         movsi_pic_gotdata_op instruction as a load for the UT699 errata
3432         workaround.
3433
3434 2017-11-29  Martin Aberg  <maberg@gaisler.com>
3435
3436         * config/sparc/sparc.md (divdf3_fix): Add NOP and adjust length
3437         to prevent b2bst errata sequence.
3438         (sqrtdf2_fix): Likewise.
3439
3440 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
3441
3442         * config/sparc/sparc.c (fpop_reg_depend_p): New function.
3443         (div_sqrt_insn_p): New function.
3444         (sparc_do_work_around_errata): Insert NOP instructions to
3445         prevent sequences that could trigger the TN-0013 errata for
3446         certain LEON3 processors.
3447         (pass_work_around_errata::gate): Also test sparc_fix_lost_divsqrt.
3448         (sparc_option_override): Set sparc_fix_lost_divsqrt appropriately.
3449         * config/sparc/sparc.md (fix_lost_divsqrt): New attribute.
3450         (in_branch_delay): Prevent div and sqrt in delay slot if
3451         fix_lost_divsqrt.
3452         * config/sparc/sparc.opt (sparc_fix_lost_divsqrt): New variable.
3453
3454 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
3455
3456         * config/sparc/sparc.c (atomic_insn_p): New function.
3457         (sparc_do_work_around_errata): Insert NOP instructions to
3458         prevent sequences that could trigger the TN-0010 errata for
3459         UT700.
3460         * config/sparc/sync.md (atomic_compare_and_swap_leon3_1): Make
3461         instruction referable in atomic_insns_p.
3462
3463 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
3464
3465         * config/sparc/sync.md (swapsi): 16-byte align if sparc_fix_gr712rc.
3466         (atomic_compare_and_swap_leon3_1): Likewise.
3467         (ldstub): Likewise.
3468
3469 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
3470
3471         * config/sparc/sparc.c (fpop_insn_p): New function.
3472         (sparc_do_work_around_errata): Insert NOP instructions to
3473         prevent sequences that could trigger the TN-0012 errata for
3474         GR712RC.
3475         (pass_work_around_errata::gate): Also test sparc_fix_gr712rc.
3476         * config/sparc/sparc.md (fix_gr712rc): New attribute.
3477         (in_branch_annul_delay): Prevent floating-point instructions
3478         in delay slot of annulled integer branch.
3479
3480 2017-11-29  Richard Biener  <rguenther@suse.de>
3481
3482         PR tree-optimization/83202
3483         * tree-vect-slp.c (scalar_stmts_set_t): New typedef.
3484         (bst_fail): Use it.
3485         (vect_analyze_slp_cost_1): Add visited set, do not account SLP
3486         nodes vectorized to the same stmts multiple times.
3487         (vect_analyze_slp_cost): Allocate a visited set and pass it down.
3488         (vect_analyze_slp_instance): Adjust.
3489         (scalar_stmts_to_slp_tree_map_t): New typedef.
3490         (vect_schedule_slp_instance): Add a map recording the SLP node
3491         representing the vectorized stmts for a set of scalar stmts.
3492         Avoid code-generating redundancies.
3493         (vect_schedule_slp): Allocate map and pass it down.
3494
3495 2017-11-29  Nathan Sidwell  <nathan@acm.org>
3496
3497         PR c++/83187
3498         * tree.c (build_complex_type): Fix canonicalization.  Only fill in
3499         type if it is new.
3500
3501 2017-11-29  Wilco Dijkstra  <wdijkstr@arm.com>
3502
3503         * config/aarch64/aarch64.c (aarch64_print_operand): Add new
3504         cases for printing LDP/STP memory addresses.
3505         (aarch64_print_address_internal): Renamed from
3506         aarch64_print_operand_address, added parameter, add Pmode check.
3507         (aarch64_print_ldpstp_address): New function for LDP/STP addresses.
3508         (aarch64_print_operand_address): Indirect to
3509         aarch64_print_address_internal.
3510         * config/aarch64/aarch64-simd.md (store_pair_lanes): Use new
3511         'y' operand output specifier.
3512
3513 2017-11-29  Jakub Jelinek  <jakub@redhat.com>
3514
3515         PR middle-end/83185
3516         * tree.c (build_simple_mem_ref_loc): Handle
3517         get_addr_base_and_unit_offset returning a MEM_REF.
3518
3519         PR middle-end/80929
3520         * rtlanal.c (seq_cost): For non-single_set insns try to use insn_cost.
3521
3522         PR target/80819
3523         * config/i386/sse.md (vec_concatv2di): Remove * from (=Yr,0,*rm)
3524         alternative.
3525
3526 2017-11-28  David Malcolm  <dmalcolm@redhat.com>
3527
3528         * diagnostic-show-locus.c (layout::print_trailing_fixits): Handle
3529         m_x_offset.
3530         (layout::move_to_column): Likewise.
3531
3532 2017-11-28  Jakub Jelinek  <jakub@redhat.com>
3533
3534         PR sanitizer/81275
3535         * tree.c (block_may_fallthru): Return false if SWITCH_ALL_CASES_P
3536         is set on SWITCH_EXPR and !block_may_fallthru (SWITCH_BODY ()).
3537
3538 2017-11-28  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
3539             Martin Jambor  <mjambor@suse.cz>
3540
3541         PR ipa/82808
3542         * tree.h (expr_type_first_operand_type_p): Declare
3543         * tree.c (expr_type_first_operand_type_p): New function.
3544         * ipa-prop.h (ipa_get_type): Allow i to be out of bounds.
3545         (ipa_value_from_jfunc): Adjust declaration.
3546         * ipa-cp.c (ipa_get_jf_pass_through_result): New parameter RES_TYPE.
3547         Use it as result type for arithmetics, unless it is NULL in which case
3548         be more conservative.
3549         (ipa_value_from_jfunc): New parameter PARM_TYPE, pass it to
3550         ipa_get_jf_pass_through_result.
3551         (propagate_vals_across_pass_through): Likewise.
3552         (propagate_scalar_across_jump_function): New parameter PARM_TYPE, pass
3553         is to propagate_vals_across_pass_through.
3554         (propagate_constants_across_call): Pass PARM_TYPE to
3555         propagate_scalar_across_jump_function.
3556         (find_more_scalar_values_for_callers_subset): Pass parameter type to
3557         ipa_value_from_jfunc.
3558         (cgraph_edge_brings_all_scalars_for_node): Likewise.
3559         * ipa-fnsummary.c (evaluate_properties_for_edge): Renamed parms_info
3560         to caller_parms_info, pass parameter type to ipa_value_from_jfunc.
3561         * ipa-prop.c (try_make_edge_direct_simple_call): New parameter
3562         target_type, pass it to ipa_value_from_jfunc.
3563         (update_indirect_edges_after_inlining): Pass parameter type to
3564         try_make_edge_direct_simple_call.
3565
3566 2017-11-28  Jeff Law  <law@redhat.com>
3567
3568         * gimple-ssa-evrp-analyze.c
3569         (evrp_range_analyzer::record_ranges_from_phis): Only use SCEV to
3570         refine ranges if scev_initialized_p returns true.
3571         * vr-values.c (vr_values::extract_range_from_phi_node): Likewise.
3572
3573 2017-11-28  Julia Koval  <julia.koval@intel.com>
3574
3575         * config/i386/avx512vbmi2intrin.h (_mm512_shrdi_epi16,
3576         _mm512_mask_shrdi_epi16, _mm512_maskz_shrdi_epi16, _mm512_shrdi_epi32,
3577         _mm512_mask_shrdi_epi32, _mm512_maskz_shrdi_epi32, _mm512_shrdi_epi64,
3578         _mm512_mask_shrdi_epi64, _mm512_maskz_shrdi_epi64): New intrinsics.
3579         * config/i386/avx512vbmi2vlintrin.h (_mm256_shrdi_epi16,
3580         _mm256_mask_shrdi_epi16, _mm256_maskz_shrdi_epi16,
3581         _mm256_mask_shrdi_epi32, _mm256_maskz_shrdi_epi32, _mm256_shrdi_epi32,
3582         _mm256_mask_shrdi_epi64, _mm256_maskz_shrdi_epi64, _mm256_shrdi_epi64,
3583         _mm_mask_shrdi_epi16, _mm_maskz_shrdi_epi16, _mm_shrdi_epi16,
3584         _mm_mask_shrdi_epi32, _mm_maskz_shrdi_epi32, _mm_shrdi_epi32,
3585         _mm_mask_shrdi_epi64, _mm_maskz_shrdi_epi64, _mm_shrdi_epi64): Ditto.
3586         * config/i386/i386-builtin.def (__builtin_ia32_vpshrd_v32hi,
3587         __builtin_ia32_vpshrd_v32hi_mask, __builtin_ia32_vpshrd_v16hi,
3588         __builtin_ia32_vpshrd_v16hi_mask, __builtin_ia32_vpshrd_v8hi,
3589         __builtin_ia32_vpshrd_v8hi_mask, __builtin_ia32_vpshrd_v16si,
3590         __builtin_ia32_vpshrd_v16si_mask, __builtin_ia32_vpshrd_v8si,
3591         __builtin_ia32_vpshrd_v8si_mask, __builtin_ia32_vpshrd_v4si,
3592         __builtin_ia32_vpshrd_v4si_mask, __builtin_ia32_vpshrd_v8di,
3593         __builtin_ia32_vpshrd_v8di_mask, __builtin_ia32_vpshrd_v4di,
3594         __builtin_ia32_vpshrd_v4di_mask, __builtin_ia32_vpshrd_v2di,
3595         __builtin_ia32_vpshrd_v2di_mask): New builtins.
3596         * config/i386/sse.md (vpshrd_<mode><mask_name>): New pattern.
3597
3598 2017-11-28  Julia Koval  <julia.koval@intel.com>
3599
3600         * config/i386/avx512vbmi2intrin.h (_mm512_shldi_epi16,
3601         _mm512_mask_shldi_epi16, _mm512_maskz_shldi_epi16, _mm512_shldi_epi32,
3602         _mm512_mask_shldi_epi32, _mm512_maskz_shldi_epi32, _mm512_shldi_epi64,
3603         _mm512_mask_shldi_epi64, _mm512_maskz_shldi_epi64): New intrinsics.
3604         * config/i386/avx512vbmi2vlintrin.h (_mm256_shldi_epi16,
3605         _mm256_mask_shldi_epi16, _mm256_maskz_shldi_epi16,
3606         _mm256_mask_shldi_epi32, _mm256_maskz_shldi_epi32, _mm256_shldi_epi32,
3607         _mm256_mask_shldi_epi64, _mm256_maskz_shldi_epi64, _mm256_shldi_epi64,
3608         _mm_mask_shldi_epi16, _mm_maskz_shldi_epi16, _mm_shldi_epi16,
3609         _mm_mask_shldi_epi32, _mm_maskz_shldi_epi32, _mm_shldi_epi32,
3610         _mm_mask_shldi_epi64, _mm_maskz_shldi_epi64, _mm_shldi_epi64): Ditto.
3611         * config/i386/i386-builtin-types.def (V32HI_FTYPE_V32HI_V32HI_INT,
3612         V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT, V16SI_FTYPE_V16SI_V16SI_INT,
3613         V16SI_FTYPE_V16SI_V16SI_INT_V16SI_INT,
3614         V8DI_FTYPE_V8DI_V8DI_INT_V8DI_INT, V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT,
3615         V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT,
3616         V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT,
3617         V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT,
3618         V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT,
3619         V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT): New types.
3620         * config/i386/i386-builtin.def (__builtin_ia32_vpshld_v32hi,
3621         __builtin_ia32_vpshld_v32hi_mask, __builtin_ia32_vpshld_v16hi,
3622         __builtin_ia32_vpshld_v16hi_mask, __builtin_ia32_vpshld_v8hi,
3623         __builtin_ia32_vpshld_v8hi_mask, __builtin_ia32_vpshld_v16si,
3624         __builtin_ia32_vpshld_v16si_mask, __builtin_ia32_vpshld_v8si,
3625         __builtin_ia32_vpshld_v8si_mask, __builtin_ia32_vpshld_v4si,
3626         __builtin_ia32_vpshld_v4si_mask, __builtin_ia32_vpshld_v8di,
3627         __builtin_ia32_vpshld_v8di_mask, __builtin_ia32_vpshld_v4di,
3628         __builtin_ia32_vpshld_v4di_mask, __builtin_ia32_vpshld_v2di,
3629         __builtin_ia32_vpshld_v2di_mask): New builtins.
3630         * config/i386/i386.c (ix86_expand_args_builtin): Handle new types.
3631         * config/i386/sse.md (vpshld_<mode><mask_name>): New pattern.
3632
3633 2017-11-28  Richard Biener  <rguenther@suse.de>
3634
3635         PR tree-optimization/80776
3636         * gimple-ssa-evrp-analyze.h (evrp_range_analyzer::set_ssa_range_info):
3637         Declare.
3638         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::set_ssa_range_info):
3639         New function.
3640         (evrp_range_analyzer::record_ranges_from_incoming_edges):
3641         If the incoming edge is an effective fallthru because the other
3642         edge only reaches a __builtin_unreachable () then record ranges
3643         derived from the controlling condition in SSA info.
3644         (evrp_range_analyzer::record_ranges_from_phis): Use set_ssa_range_info.
3645         (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
3646
3647 2017-11-28  Olivier Hainque  <hainque@adacore.com>
3648
3649         * Makefile.in (SELFTEST_FLAGS): Use nul instead of /dev/null
3650         on mingw build hosts.
3651
3652 2017-11-28  Jakub Jelinek  <jakub@redhat.com>
3653
3654         PR debug/81307
3655         * dbxout.c (dbx_block_with_cold_children): Fix function comment.
3656
3657 2017-11-28  Richard Biener  <rguenther@suse.de>
3658
3659         PR middle-end/83141
3660         * gimple-fold.c (gimple_fold_builtin_memory_op): For aggregate
3661         copies generated from memcpy use a character array as reference
3662         type.
3663
3664 2017-11-28  Julia Koval  <julia.koval@intel.com>
3665             Sebastian Peryt  <sebastian.peryt@intel.com>
3666
3667         * Makefile.in (cilkplus.def, cilk-builtins.def, c-family/cilk.o,
3668         c-family/c-cilkplus.o, c-family/array-notation-common.o,
3669         cilk-common.o, cilk.h, cilk-common.c): Remove.
3670         * builtin-types.def
3671         (BT_FN_INT_PTR_PTR_PTR_FTYPE_BT_INT_BT_PTR_BT_PTR_BT_PTR): Remove.
3672         * builtins.c (is_builtin_name): Remove cilkplus condition.
3673         (BUILT_IN_CILK_DETACH, BUILT_IN_CILK_POP_FRAME): Remove.
3674         * builtins.def (DEF_CILK_BUILTIN_STUB, DEF_CILKPLUS_BUILTIN,
3675         cilk-builtins.def, cilkplus.def): Remove.
3676         * cif-code.def (CILK_SPAWN): Remove.
3677         * cilk-builtins.def: Delete.
3678         * cilk-common.c: Ditto.
3679         * cilk.h: Ditto.
3680         * cilkplus.def: Ditto.
3681         * config/darwin.h (fcilkplus): Delete.
3682         * cppbuiltin.c: Ditto.
3683         * doc/extend.texi: Remove cilkplus doc.
3684         * doc/generic.texi: Ditto.
3685         * doc/invoke.texi: Ditto.
3686         * doc/passes.texi: Ditto.
3687         * gcc.c (fcilkplus): Remove.
3688         * gengtype.c (cilk.h): Remove.
3689         * gimple-pretty-print.c (dump_gimple_omp_for): Remove cilkplus
3690         support.
3691         * gimple.h (GF_OMP_FOR_KIND_CILKFOR, GF_OMP_FOR_KIND_CILKSIMD):
3692         Remove.
3693         * gimplify.c (gimplify_return_expr, maybe_fold_stmt,
3694         gimplify_call_expr,
3695         is_gimple_stmt, gimplify_modify_expr, gimplify_scan_omp_clauses,
3696         gimplify_adjust_omp_clauses, gimplify_omp_for, gimplify_expr): Remove
3697         cilkplus conditions.
3698         * ipa-fnsummary.c (ipa_dump_fn_summary, compute_fn_summary,
3699         inline_read_section): Ditto.
3700         * ipa-inline-analysis.c (cilk.h): Remove.
3701         * ira.c (ira_setup_eliminable_regset): Remove cilkplus support.
3702         * lto-wrapper.c (merge_and_complain, append_compiler_options,
3703         append_linker_options): Remove condition for fcilkplus.
3704         * lto/lto-lang.c (cilk.h): Remove.
3705         (lto_init): Remove condition for fcilkplus.
3706         * omp-expand.c (expand_cilk_for_call): Delete.
3707         (expand_omp_taskreg, expand_omp_for_static_chunk,
3708         expand_omp_for): Remove cilkplus
3709         conditions.
3710         (expand_cilk_for): Delete.
3711         * omp-general.c (omp_extract_for_data): Remove cilkplus support.
3712         * omp-low.c (scan_sharing_clauses, create_omp_child_function,
3713         execute_lower_omp, diagnose_sb_0): Ditto.
3714         * omp-simd-clone.c (simd_clone_clauses_extract): Ditto.
3715         * tree-core.h (OMP_CLAUSE__CILK_FOR_COUNT_): Delete.
3716         * tree-nested.c: Ditto.
3717         * tree-pretty-print.c (dump_omp_clause): Remove cilkplus support.
3718         (dump_generic_node): Ditto.
3719         * tree.c (OMP_CLAUSE__CILK_FOR_COUNT_): Delete.
3720         * tree.def (cilk_simd, cilk_for, cilk_spawn_stmt, cilk_sync_stmt):
3721         Delete.
3722         * tree.h (CILK_SPAWN_FN, EXPR_CILK_SPAWN): Delete.
3723
3724 2017-11-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3725
3726         * config/aarch64/aarch64.md (div<mode>3): Change check to TARGET_FLOAT.
3727         * config/aarch64/aarch64.c (aarch64_emit_approx_div): Add early exit
3728         for vector mode and !TARGET_SIMD.
3729
3730 2017-11-28  Jakub Jelinek  <jakub@redhat.com>
3731
3732         * tree.def (SWITCH_EXPR): Change from 3 operand to 2 operand tree.
3733         Adjust comment.
3734         * tree.h (SWITCH_LABELS): Remove.
3735         * gimplify.c (gimplify_switch_expr): Don't test SWITCH_LABELS,
3736         assert SWITCH_BODY is non-NULL.
3737         * tree-pretty-print.c (dump_generic_node): Remove SWITCH_LABELS
3738         handling.
3739         * tree.c (block_may_fallthru): Always return true; for SWITCH_EXPR.
3740
3741         PR tree-optimization/80788
3742         * match.pd (X +- C1 CMP C2 -> X CMP C2 -+ C1): If res
3743         has TREE_OVERFLOW set, call drop_tree_overflow.
3744
3745 2017-11-28  Richard Biener  <rguenther@suse.de>
3746
3747         PR tree-optimization/83158
3748         * tree-vrp.c (intersect_ranges): Prefer ~[0, 0] in a few more cases.
3749
3750 2017-11-28  Segher Boessenkool  <segher@kernel.crashing.org>
3751
3752         PR 81288/target
3753         * config/rs6000/rs6000.c (rs6000_rtx_costs): Do not handle
3754         TARGET_ISEL && !TARGET_MFCRF differently.  Simplify code.
3755
3756 2017-11-27  Segher Boessenkool  <segher@kernel.crashing.org>
3757
3758         * config/rs6000/rs6000.md (<code><GPR:mode><GPR2:mode>2_isel): Change
3759         LT/GT/LTU/GTU to LE/GE/LEU/GEU where possible.
3760
3761 2017-11-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
3762
3763         PR middle_end/82333
3764         * varasm.c (compare_constant): Take the mode of the constants into
3765         account when comparing floating point constants.
3766
3767 2017-11-27  Gerald Pfeifer  <gerald@pfeifer.com>
3768
3769         * hash-set.h (DEFINE_DEBUG_HASH_SET): Remove static qualifier
3770         from explicit instantiation of debug_helper.
3771         * vec.h (DEFINE_DEBUG_VEC): Ditto.
3772
3773 2017-11-27  Richard Biener  <rguenther@suse.de>
3774
3775         * gimple-fold.c (gimple_fold_builtin_memory_op): Remove dead code,
3776         refactor a bit.
3777
3778 2017-11-27  Richard Biener  <rguenther@suse.de>
3779
3780         * tree.c (wide_int_to_tree): Free discarded INTEGER_CST.
3781         (type_hash_canon): Also clear int_cst_hash_table entry for
3782         TYPE_MIN/MAX_VALUE.
3783         (build_nonstandard_integer_type): Hash all TYPE_MAX_VALUEs.
3784
3785 2017-11-27  Tamar Christina  <tamar.christina@arm.com>
3786
3787         * doc/extend.texi: Add -A suffix (ARMv8*-A, ARMv7-A).
3788         * doc/invoke.texi: Add -A suffix (ARMv8*-A, ARMv7-A).
3789         * doc/sourcebuild.texi: Add -A suffix (ARMv8*-A, ARMv7-A).
3790
3791 2017-11-27  Markus Trippelsdorf  <markus@trippelsdorf.de>
3792
3793         * hash-map.h (gt_cleare_cache): Avoid UB.
3794
3795 2017-11-27  Eric Botcazou  <ebotcazou@adacore.com>
3796
3797         * cfgloop.h (struct loop): Document usage of USHRT_MAX for unroll.
3798         * loop-unroll.c (decide_unroll_constant_iterations): Implement it.
3799         (decide_unroll_runtime_iterations): Likewise.
3800         (decide_unroll_stupid): Likewise.
3801
3802 2017-11-27  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
3803
3804         PR target/83109
3805         * config/i386/i386.md: Add a loop with incssp.
3806
3807 2017-11-27  Martin Jambor  <mjambor@suse.cz>
3808
3809         PR tree-optimization/81248
3810         * tree-sra.c (splice_param_accesses): Remove size check.
3811         (decide_one_param_reduction): Fix size check.
3812         * gimple-pretty-print.c (dump_profile): Silence warning.
3813         * params.def (PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Adjust description.
3814
3815 2017-11-27  Jakub Jelinek  <jakub@redhat.com>
3816
3817         PR debug/81307
3818         * dbxout.c (lastlineno): New variable.
3819         (dbx_debug_hooks): Use dbxout_switch_text_section as
3820         switch_text_section debug hook.
3821         (dbxout_function_end): Switch to current_function_section
3822         rather than function_section.  If crtl->has_bb_partition,
3823         output just one N_FUN, depending on in_cold_section_p.
3824         (dbxout_source_line): Remember last lineno in lastlineno.
3825         (dbxout_switch_text_section): New function.
3826         (dbxout_function_decl): Adjust dbxout_block caller.
3827         (dbx_block_with_cold_children): New function.
3828         (dbxout_block): Return true if any LBRAC/RBRAC have been
3829         emitted.  Use dbx_block_with_cold_children at depth == 0
3830         in second partition.  Add PARENT_BLOCKNUM argument, pass
3831         it optionally adjusted to children.  Output LBRAC/RBRAC
3832         around recursive call only if the block is in the current
3833         partition, if not and anything was output, emit empty
3834         range LBRAC/RBRAC.
3835         * final.c (final_scan_insn): Compute cold_function_name
3836         before calling switch_text_section debug hook.  Call
3837         that hook even if dwarf2out_do_frame if not emitting
3838         dwarf debug info.
3839
3840         PR target/83100
3841         * varasm.c (bss_initializer_p): Return true for DECL_COMMON
3842         TREE_READONLY decls.
3843
3844 2017-11-27  Markus Trippelsdorf  <markus@trippelsdorf.de>
3845
3846         PR rtl-optimization/82488
3847         * expr.c (fixup_args_size_notes): Avoid signed integer overflow.
3848
3849 2017-11-26  Julia Koval  <julia.koval@intel.com>
3850
3851         * config/i386/i386.c (processor_target_table): Add skylake_cost for
3852         skylake-avx512.
3853         * config/i386/x86-tune-costs.h (skylake_memcpy, skylake_memset,
3854         skylake_cost): New.
3855
3856 2017-11-26  Julia Koval  <julia.koval@intel.com>
3857
3858         * config/i386/driver-i386.c (host_detect_local_cpu):
3859         Detect skylake-avx512.
3860
3861 2017-11-26  Julia Koval  <julia.koval@intel.com>
3862
3863         * config.gcc: Add -march=cannonlake.
3864         * config/i386/driver-i386.c (host_detect_local_cpu): Detect cannonlake.
3865         * config/i386/i386-c.c (ix86_target_macros_internal): Handle cannonlake.
3866         * config/i386/i386.c (processor_costs): Add m_CANNONLAKE.
3867         (PTA_CANNONLAKE): New.
3868         (processor_target_table): Add cannonlake.
3869         (ix86_option_override_internal): Ditto.
3870         (fold_builtin_cpu): Ditto.
3871         (get_builtin_code_for_version): Handle cannonlake.
3872         (M_INTEL_COREI7_CANNONLAKE): New.
3873         * config/i386/i386.h (TARGET_CANNONLAKE, PROCESSOR_CANNONLAKE): New.
3874         * doc/invoke.texi: Add -march=cannonlake.
3875
3876 2017-11-14  Boris Kolpackov  <boris@codesynthesis.com>
3877
3878         * plugin.c (add_new_plugin): Use platform-specific library extensions.
3879         (try_init_one_plugin): Alternative implementation for MinGW.
3880         * Makefile.in (plugin_implib): New.
3881         (gengtype-lex.c): Fix broken AIX workaround.
3882         * configure: Regenerate.
3883         * doc/plugins.texi: Document support for MinGW.
3884
3885 2017-11-25  Jakub Jelinek  <jakub@redhat.com>
3886
3887         PR rtl-optimization/81553
3888         * combine.c (simplify_if_then_else): In (if_then_else COND (OP Z C1) Z)
3889         to (OP Z (mult COND (C1 * STORE_FLAG_VALUE))) optimization, if OP
3890         is a shift where C1 has different mode than the whole shift, use C1's
3891         mode for MULT rather than the shift's mode.
3892
3893         PR target/82848
3894         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Don't fold
3895         builtins not enabled in the currently selected ISA.
3896
3897 2017-11-24  Jackson Woodruff  <jackson.woodruff@arm.com>
3898
3899         PR tree-optimization/71026
3900         * tree-ssa-math-opts (is_division_by_square, is_square_of): New.
3901         (insert_reciprocals): Change to insert reciprocals before a division
3902         by a square and to insert the square of a reciprocal.
3903         (execute_cse_reciprocals_1): Change to consider division by a square.
3904         (register_division_in): Add importance parameter.
3905
3906 2017-11-24  Richard Biener  <rguenther@suse.de>
3907
3908         PR tree-optimization/82402
3909         * tree-vect-loop-manip.c (create_lcssa_for_virtual_phi): Properly
3910         set SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
3911
3912 2017-11-24  Marc Glisse  <marc.glisse@inria.fr>
3913
3914         * match.pd (0-ptr): New transformation.
3915
3916 2017-11-24  Jan Hubicka  <hubicka@ucw.cz>
3917
3918         PR bootstrap/83015
3919         * ipa-inline.c (inline_small_functions): Set current badnes correctly
3920         when skipping checking.
3921
3922 2017-11-24  Richard Biener  <rguenther@suse.de>
3923
3924         PR tree-optimization/83128
3925         * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Handle STRING_CSTs.
3926         (vn_reference_lookup_3): Likewise.
3927
3928 2017-11-24  Jakub Jelinek  <jakub@redhat.com>
3929
3930         PR sanitizer/83014
3931         * ubsan.c (ubsan_type_descriptor): Use pp_unsigned_wide_integer
3932         instead of pp_printf with HOST_WIDE_INT_PRINT_DEC.  Avoid calling
3933         tree_to_uhwi twice.
3934
3935         * tree-object-size.c (pass_through_call): Use gimple_call_return_flags
3936         ERF_RETURN*ARG* for builtins other than BUILT_IN_ASSUME_ALIGNED,
3937         check for the latter with gimple_call_builtin_p.  Do not handle
3938         BUILT_IN_STPNCPY_CHK which is not a pass through call.
3939
3940 2017-11-24  Christophe Lyon  <christophe.lyon@linaro.org>
3941
3942         * config/arm/arm_neon.h: Fix pragma GCC push_options before
3943         vdot_u32.
3944
3945 2017-11-23  Julia Koval  <julia.koval@intel.com>
3946
3947         * config/i386/avx512vbmi2intrin.h (_mm512_mask_expand_epi8,
3948         _mm512_maskz_expand_epi8, _mm512_mask_expandloadu_epi8,
3949         _mm512_maskz_expandloadu_epi8, _mm512_mask_expand_epi16,
3950         _mm512_maskz_expand_epi16, _mm512_mask_expandloadu_epi16,
3951         _mm512_maskz_expandloadu_epi16): New intrinsics.
3952         * config/i386/avx512vbmi2vlintrin.h (_mm_mask_expand_epi8,
3953         _mm_maskz_expand_epi8, _mm_mask_expandloadu_epi8,
3954         _mm_maskz_expandloadu_epi8, _mm_mask_expand_epi16,
3955         _mm_maskz_expand_epi16, _mm_mask_expandloadu_epi16,
3956         _mm_maskz_expandloadu_epi16, _mm256_mask_expand_epi16,
3957         _mm256_maskz_expand_epi16, _mm256_mask_expandloadu_epi16,
3958         _mm256_maskz_expandloadu_epi16, _mm256_mask_expand_epi8,
3959         _mm256_maskz_expand_epi8, _mm256_mask_expandloadu_epi8,
3960         _mm256_maskz_expandloadu_epi8): New intrinsics.
3961         * config/i386/i386-builtin-types.def (V64QI_FTYPE_PCV64QI_V64QI_UDI,
3962         V32HI_FTYPE_PCV32HI_V32HI_USI, V32QI_FTYPE_PCV32QI_V32QI_USI,
3963         V16HI_FTYPE_PCV16HI_V16HI_UHI, V16QI_FTYPE_PCV16QI_V16QI_UHI,
3964         V8HI_FTYPE_PCV8HI_V8HI_UQI): New types.
3965         * config/i386/i386.c (ix86_expand_special_args_builtin): Use new types.
3966         * config/i386/sse.md (VI248_VLBW): New iterator.
3967         (expand<mode>_mask, expand<mode>_maskz): New patterns.
3968
3969 2017-11-23  Julia Koval  <julia.koval@intel.com>
3970
3971         * config.gcc (avx512vbmi2intrin.h, avx512vbmi2vlintrin): New headers.
3972         * config/i386/avx512vbmi2intrin.h (_mm512_mask_compress_epi8,
3973         _mm512_maskz_compress_epi8, _mm512_mask_compressstoreu_epi8,
3974         _mm512_mask_compress_epi16, _mm512_maskz_compress_epi16,
3975         _mm512_mask_compressstoreu_epi16): New.
3976         * config/i386/avx512vbmi2vlintrin.h (_mm_mask_compress_epi8,
3977         _mm_maskz_compress_epi8, _mm256_mask_compressstoreu_epi16,
3978         _mm_mask_compress_epi16, _mm_maskz_compress_epi16,
3979         _mm256_mask_compress_epi16, _mm256_maskz_compress_epi16,
3980         _mm_mask_compressstoreu_epi8, _mm_mask_compressstoreu_epi16,
3981         _mm256_mask_compress_epi8, _mm256_maskz_compress_epi8,
3982         _mm256_mask_compressstoreu_epi8): New.
3983         * config/i386/i386-builtin-types.def (VOID_FTYPE_PV64QI_V64QI_UDI,
3984         VOID_FTYPE_PV32HI_V32HI_USI, VOID_FTYPE_PV32QI_V32QI_USI,
3985         VOID_FTYPE_PV16QI_V16QI_UHI, VOID_FTYPE_PV16HI_V16HI_UHI,
3986         VOID_FTYPE_PV8HI_V8HI_UQI): New types.
3987         * config/i386/i386-builtin.def (__builtin_ia32_compressqi512_mask,
3988         __builtin_ia32_compresshi512_mask, __builtin_ia32_compressqi256_mask,
3989         __builtin_ia32_compressqi128_mask, __builtin_ia32_compresshi256_mask,
3990         __builtin_ia32_compresshi128_mask,
3991         __builtin_ia32_compressstoreuqi512_mask,
3992         __builtin_ia32_compressstoreuhi512_mask,
3993         __builtin_ia32_compressstoreuqi256_mask,
3994         __builtin_ia32_compressstoreuqi128_mask,
3995         __builtin_ia32_compressstoreuhi256_mask,
3996         __builtin_ia32_compressstoreuhi128_mask): New builtins.
3997         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Create special args
3998         array for flags2.
3999         (ix86_expand_special_args_builtin): Handle new types.
4000         (s4fma_expand): Handle new builtin array.
4001         * config/i386/immintrin.h: Include new headers.
4002         * config/i386/sse.md (VI12_AVX512VLBW): New iterator.
4003         (compress<mode>_mask, compressstore<mode>_mask): New patterns.
4004
4005 2017-11-23  Jakub Jelinek  <jakub@redhat.com>
4006
4007         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Formatting
4008         fixes.  Declare temp and g variables at the top in order to avoid
4009         {} in most of the cases.
4010
4011 2017-11-23  Marc Glisse  <marc.glisse@inria.fr>
4012
4013         * match.pd (ptr-0): New transformation.
4014
4015 2017-11-23  Charles Baylis  <charles.baylis@linaro.org>
4016
4017         * config/arm/arm-protos.h (enum arm_addr_mode_op): New.
4018         (struct addr_mode_cost_table): New.
4019         (struct tune_params): Add field addr_mode_costs.
4020         * config/arm/arm.c (generic_addr_mode_costs): New.
4021         (arm_slowmul_tune): Initialise addr_mode_costs field.
4022         (arm_fastmul_tune): Likewise.
4023         (arm_strongarm_tune): Likewise.
4024         (arm_xscale_tune): Likewise.
4025         (arm_9e_tune): Likewise.
4026         (arm_marvell_pj4_tune): Likewise.
4027         (arm_v6t2_tune): Likewise.
4028         (arm_cortex_tune): Likewise.
4029         (arm_cortex_a8_tune): Likewise.
4030         (arm_cortex_a7_tune): Likewise.
4031         (arm_cortex_a15_tune): Likewise.
4032         (arm_cortex_a35_tune): Likewise.
4033         (arm_cortex_a53_tune): Likewise.
4034         (arm_cortex_a57_tune): Likewise.
4035         (arm_exynosm1_tune): Likewise.
4036         (arm_xgene1_tune): Likewise.
4037         (arm_cortex_a5_tune): Likewise.
4038         (arm_cortex_a9_tune): Likewise.
4039         (arm_cortex_a12_tune): Likewise.
4040         (arm_cortex_a73_tune): Likewise.
4041         (arm_v7m_tune): Likewise.
4042         (arm_cortex_m7_tune): Likewise.
4043         (arm_v6m_tune): Likewise.
4044         (arm_fa726te_tune): Likewise.
4045         (arm_mem_costs): Use table lookup to calculate cost of addressing mode.
4046
4047 2017-11-23  Charles Baylis  <charles.baylis@linaro.org>
4048
4049         * config/arm/arm.c (arm_mem_costs): New function.
4050         (arm_rtx_costs_internal): Use arm_mem_costs.
4051
4052 2017-11-23  Mark Wielaard  <mark@klomp.org>
4053
4054         * dwarf2out.c (init_sections_and_labels): Use generation to create
4055         unique ranges_section_label and ranges_base_label. Return generation.
4056         (output_rnglists): Add generation argument. Use generation to create
4057         unique ranges labels.
4058         (dwarf2out_finish): Get generation from init_sections_and_labels
4059         and pass generation to output_rnglists.
4060
4061 2017-11-23  Mike Stump  <mikestump@comcast.net>
4062             Eric Botcazou  <ebotcazou@adacore.com>
4063
4064         * doc/generic.texi (ANNOTATE_EXPR): Document 3rd operand.
4065         * cfgloop.h (struct loop): Add unroll field.
4066         * function.h (struct function): Add has_unroll bitfield.
4067         * gimplify.c (gimple_boolify) <ANNOTATE_EXPR>: Deal with unroll kind.
4068         (gimplify_expr) <ANNOTATE_EXPR>: Propagate 3rd operand.
4069         * loop-init.c (pass_loop2::gate): Return true if cfun->has_unroll.
4070         (pass_rtl_unroll_loops::gate): Likewise.
4071         * loop-unroll.c (decide_unrolling): Tweak note message.  Skip loops
4072         for which loop->unroll==1.
4073         (decide_unroll_constant_iterations): Use note for consistency and
4074         take loop->unroll into account.  Return early if loop->unroll is set.
4075         Fix thinko in existing test.
4076         (decide_unroll_runtime_iterations): Use note for consistency and
4077         take loop->unroll into account.
4078         (decide_unroll_stupid): Likewise.
4079         * lto-streamer-in.c (input_cfg): Read loop->unroll.
4080         * lto-streamer-out.c (output_cfg): Write loop->unroll.
4081         * tree-cfg.c (replace_loop_annotate_in_block) <annot_expr_unroll_kind>:
4082         New case.
4083         (replace_loop_annotate) <annot_expr_unroll_kind>: Likewise.
4084         (print_loop): Print loop->unroll if set.
4085         * tree-core.h (enum annot_expr_kind): Add annot_expr_unroll_kind.
4086         * tree-inline.c (copy_loops): Copy unroll and set cfun->has_unroll.
4087         * tree-pretty-print.c (dump_generic_node) <annot_expr_unroll_kind>:
4088         New case.
4089         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Bail out if
4090         loop->unroll is set and smaller than the trip count.  Otherwise bypass
4091         entirely the heuristics if loop->unroll is set.  Remove dead note.
4092         Fix off-by-one bug in other note.
4093         (try_peel_loop): Bail out if loop->unroll is set.  Fix formatting.
4094         (tree_unroll_loops_completely_1): Force unrolling if loop->unroll
4095         is greater than 1.
4096         (tree_unroll_loops_completely): Make static.
4097         (pass_complete_unroll::execute): Use correct type for variable.
4098         (pass_complete_unrolli::execute): Fix formatting.
4099         * tree.def (ANNOTATE_EXPR): Add 3rd operand.
4100
4101 2017-11-23  Sergey Shalnov  <Sergey.Shalnov@intel.com>
4102
4103         * config/i386/i386.h (TARGET_PREFER_AVX256): Also
4104         enable when TARGET_PREFER_AVX128 is set.
4105
4106 2017-11-23  Jan Hubicka  <hubicka@ucw.cz>
4107
4108         * ipa-profile.c (ipa_propagate_frequency_1): Use count instead of
4109         frequency.
4110         * cgraph.c (cgraph_edge::dump_edge_flags): Dump sreal frequencies.
4111         (cgraph_edge::maybe_hot_p): Use sreal frequencies.
4112
4113 2017-11-23  Jan Hubicka  <hubicka@ucw.cz>
4114
4115         * ipa-fnsummary.c (record_modified_bb_info): Use sreal
4116         frequencies. Fix estimation of aggregate parameters.
4117
4118 2017-11-23  Jan Hubicka  <hubicka@ucw.cz>
4119
4120         * cgraphclones.c (cgraph_node::create_clone): Fix updating of profile
4121         when inlining.
4122
4123 2017-11-23  Tom de Vries  <tom@codesourcery.com>
4124
4125         * config/sh/sh.h (ASM_OUTPUT_ADDR_VEC_ELT): Wrap in "do {} while (0)".
4126
4127 2017-11-23  Tom de Vries  <tom@codesourcery.com>
4128
4129         * config/ft32/ft32.h (ASM_OUTPUT_ADDR_VEC_ELT): Remove semicolon after
4130         macro.
4131
4132 2017-11-23  Oleg Endo  <olegendo@gcc.gnu.org>
4133
4134         PR target/83111
4135         * config/sh/sh.md (udivsi3, divsi3, sibcall_value_pcrel,
4136         sibcall_value_pcrel_fdpic): Use local variable instead of
4137         operands[3].
4138         (calli_tbr_rel): Add missing operand 2.
4139         (call_valuei_tbr_rel): Add missing operand 3.
4140
4141 2017-11-23  Jakub Jelinek  <jakub@redhat.com>
4142
4143         PR middle-end/82253
4144         * expr.c (expand_assignment): For CONCAT to_rtx, complex type from and
4145         bitpos/bitsize covering the whole destination, use store_expr only if
4146         the complex mode is the same.  Otherwise, use expand_normal and if
4147         it returns CONCAT, subreg each part separately instead of trying to
4148         subreg the whole result.
4149
4150 2017-11-23  Richard Biener  <rguenther@suse.de>
4151
4152         PR tree-optimization/23094
4153         * tree-ssa-sccvn.c (vuse_ssa_val): Handle VN_TOP when we
4154         come here from walking over backedges in the first iteration.
4155         (vn_reference_lookup_3): Skip clobbers that store the same value.
4156
4157 2017-11-23  Richard Biener  <rguenther@suse.de>
4158
4159         PR tree-optimization/81403
4160         * tree-ssa-pre.c (get_representative_for): Add parameter specifying
4161         a block we need a leader relative to.
4162         (phi_translate_1): For nary processing require a leader from
4163         get_representative_for given we run expression simplification
4164         using match-and-simplify.  Remove previous fix.
4165
4166 2017-11-22  Jeff Law  <law@redhat.com>
4167
4168         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::try_find_new_range):
4169         Use new method allocate_value_range rather than accessing the
4170         vrp_value_range_pool data member directly.
4171         * tree-vrp.c (simplify_stmt_for_jump_threading): Tweak slightly
4172         to use extract_range_from_stmt method to avoid need for
4173         extract_range_from_assignment method.
4174         (vrp_prop::vrp_finalize): Use set_lattice_propagation_complete
4175         method rather than setting values_propgated data member directly.
4176         * vr-values.h (class vr_values): Privatize vrp_value_range_pool,
4177         and values propagated data members and extract_range_from_assignment
4178         method.  Reorder private data members to conform to standards.
4179         Add new methods set_lattice_propagation_complete and
4180         allocate_value_range.
4181
4182 2017-11-22  Eric Botcazou  <ebotcazou@adacore.com>
4183
4184         PR rtl-optimization/83030
4185         * doc/rtl.texi (Flags in an RTL Expression): Alphabetize, add entry
4186         for CROSSING_JUMP_P and mention usage of 'jump' for JUMP_INSNs.
4187         (Insns): Delete entry for REG_CROSSING_JUMP in register notes.
4188         * bb-reorder.c (update_crossing_jump_flags): Do not test whether the
4189         CROSSING_JUMP_P flag is already set before setting it.
4190         * cfgrtl.c (fixup_partition_crossing): Likewise.
4191         * reorg.c (relax_delay_slots): Do not consider a CROSSING_JUMP_P
4192         insn as useless.
4193
4194 2017-11-22  Jakub Jelinek  <jakub@redhat.com>
4195
4196         * simplify-rtx.c (simplify_binary_operation_1) <case VEC_SERIES>:
4197         Handle the case where both arguments are using gen_const_vec_series.
4198
4199 2017-11-22  David Malcolm  <dmalcolm@redhat.com>
4200
4201         PR c++/62170
4202         * pretty-print.c (pp_format): Move quoting implementation to
4203         pp_begin_quote and pp_end_quote.  Update pp_format_decoder call
4204         to pass address of "quote" local.
4205         (pp_begin_quote): New function.
4206         (pp_end_quote): New function.
4207         * pretty-print.h (printer_fn): Convert penultimate param from bool
4208         to bool *.
4209         (pp_begin_quote): New decl.
4210         (pp_end_quote): New decl.
4211         * tree-diagnostic.c (default_tree_printer): Convert penultimate
4212         param from bool to bool *.
4213         * tree-diagnostic.h (default_tree_printer): Likewise.
4214
4215 2017-11-22  Jeff Law  <law@redhat.com>
4216
4217         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::evrp_range_analyzer)
4218         Initialize vr_values.
4219         (evrp_range_analyzer::try_find_new_range): Call methods attached to
4220         vr_values via vr_values class instance rather than delegators.
4221         (evrp_range_analyzer::record_ranges_from_phis): Likewise.
4222         (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
4223         (evrp_range_analyzer::push_value_range): Likewise.
4224         (evrp_range_analyzer::pop_value_range): Likewise.
4225         * gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Remove
4226         most delegators.  Those remaining are exposed as public interfaces.
4227         Make vr_values a pointer and private.
4228         (evrp_range_analyzer::~evrp_range_analyzer): Delete the attached
4229         vr_values.
4230         (evrp_range_analyzer::get_vr_value): New method.
4231         * gimple-ssa-evrp.c (class evrp_folder): Use DISABLE_COPY_AND_ASSIGN.
4232         (evrp_folder::evrp_folder): New ctor to initialize vr_values.
4233         (class evrp_dom_walker): Attach evrp_folder class, initialize
4234         it in the ctor.  Remove temporary delegators.
4235         (evrp_dom_walker::before_dom_children): Call methods in attached
4236         evrp_range_analyzer class via class instance pointer.  Use
4237         free value_range_constant_singleton to remove need for
4238         op_with_constant_singleton_value delegator method.  Do not
4239         create a vrp_prop class instance for every call!  Narrow
4240         scope of a couple variables.
4241         (evrp_dom_walker::cleanup): Call methods in attached
4242         evrp_range_analyzer class via class instance pointer.
4243         * vr-values.h (class vr_values): Privatize many methods and
4244         data members.
4245
4246 2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>
4247
4248         * tree.def (REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR): Delete.
4249         * cfgexpand.c (expand_debug_expr): Remove handling for them.
4250         * expr.c (expand_expr_real_2): Likewise.
4251         * fold-const.c (const_unop): Likewise.
4252         * optabs-tree.c (optab_for_tree_code): Likewise.
4253         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
4254         * tree-inline.c (estimate_operator_cost): Likewise.
4255         * tree-pretty-print.c (dump_generic_node): Likewise.
4256         (op_code_prio): Likewise.
4257         (op_symbol_code): Likewise.
4258         * internal-fn.def (DEF_INTERNAL_SIGNED_OPTAB_FN): Define.
4259         (IFN_REDUC_PLUS, IFN_REDUC_MAX, IFN_REDUC_MIN): New internal functions.
4260         * internal-fn.c (direct_internal_fn_optab): New function.
4261         (direct_internal_fn_array, direct_internal_fn_supported_p
4262         (internal_fn_expanders): Handle DEF_INTERNAL_SIGNED_OPTAB_FN.
4263         * fold-const-call.c (fold_const_reduction): New function.
4264         (fold_const_call): Handle CFN_REDUC_PLUS, CFN_REDUC_MAX and
4265         CFN_REDUC_MIN.
4266         * tree-vect-loop.c: Include internal-fn.h.
4267         (reduction_code_for_scalar_code): Rename to...
4268         (reduction_fn_for_scalar_code): ...this and return an internal
4269         function.
4270         (vect_model_reduction_cost): Take an internal_fn rather than
4271         a tree_code.
4272         (vect_create_epilog_for_reduction): Likewise.  Build calls rather
4273         than assignments.
4274         (vectorizable_reduction): Use internal functions rather than tree
4275         codes for the reduction operation.  Update calls to the functions
4276         above.
4277         * config/aarch64/aarch64-builtins.c (aarch64_gimple_fold_builtin):
4278         Use calls to internal functions rather than REDUC tree codes.
4279         * config/aarch64/aarch64-simd.md: Update comment accordingly.
4280
4281 2017-11-22  Olivier Hainque  <hainque@adacore.com>
4282
4283         * config/vxworks.c (vxworks_override_options): Pick default
4284         dwarf version from macro value, VXWORKS_DWARF_VERSION_DEFAULT.
4285         * config/vxworks.h: Define VXWORKS_DWARF_VERSION_DEFAULT and
4286         DWARF_GNAT_ENCODINGS_DEFAULT.
4287         * config/vxworksae.h: Likewise.
4288
4289 2017-11-22  Marc Glisse  <marc.glisse@inria.fr>
4290
4291         PR tree-optimization/83104
4292         * vr-values.c (simplify_stmt_using_ranges): Check integral argument,
4293         not result.
4294
4295 2017-11-22  Marek Polacek  <polacek@redhat.com>
4296             H.J. Lu  <hongjiu.lu@intel.com>
4297             Jason Merrill  <jason@redhat.com>
4298
4299         PR c++/60336
4300         PR middle-end/67239
4301         PR target/68355
4302         * calls.c (initialize_argument_information): Call
4303         warn_parameter_passing_abi target hook.
4304         (store_one_arg): Use 0 for empty record size.  Don't push 0 size
4305         argument onto stack.
4306         (must_pass_in_stack_var_size_or_pad): Return false for empty types.
4307         * common.opt: Update -fabi-version description.
4308         * config/i386/i386.c (init_cumulative_args): Set cum->warn_empty.
4309         (ix86_gimplify_va_arg): Call arg_int_size_in_bytes instead of
4310         int_size_in_bytes.
4311         (ix86_is_empty_record): New function.
4312         (ix86_warn_parameter_passing_abi): New function.
4313         (TARGET_EMPTY_RECORD_P): Redefine.
4314         (TARGET_WARN_PARAMETER_PASSING_ABI): Redefine.
4315         * config/i386/i386.h (CUMULATIVE_ARGS): Add warn_empty.
4316         * doc/tm.texi: Regenerated.
4317         * doc/tm.texi.in (TARGET_EMPTY_RECORD_P,
4318         TARGET_WARN_PARAMETER_PASSING_ABI): Add.
4319         * dwarf2out.c (get_ultimate_context): Move to tree.c.
4320         * explow.c (hard_function_value): Call arg_int_size_in_bytes
4321         instead of int_size_in_bytes.
4322         * expr.c (copy_blkmode_to_reg): Likewise.
4323         * function.c (aggregate_value_p): Return 0 for empty types.
4324         (assign_parm_find_entry_rtl): Call warn_parameter_passing_abi
4325         target hook.
4326         (locate_and_pad_parm): Call arg size_in_bytes instead
4327         size_in_bytes.
4328         * lto-streamer-out.c (hash_tree): Hash TYPE_EMPTY_P and DECL_PADDING_P.
4329         * stor-layout.c (finalize_type_size): Set TYPE_EMPTY_P.
4330         * target.def (empty_record_p, warn_parameter_passing_abi): New target
4331         hooks.
4332         * targhooks.c (hook_void_CUMULATIVE_ARGS_tree): New hook.
4333         (std_gimplify_va_arg_expr): Skip empty records.  Call
4334         arg_size_in_bytes instead size_in_bytes.
4335         * targhooks.h (hook_void_CUMULATIVE_ARGS_tree): Declare.
4336         * tree-core.h (tree_type_common): Add empty_flag.
4337         (tree_decl_common): Update comments.
4338         * tree-streamer-in.c (unpack_ts_decl_common_value_fields): Stream
4339         DECL_PADDING_P.
4340         (unpack_ts_type_common_value_fields): Stream TYPE_EMPTY_P.
4341         * tree-streamer-out.c (pack_ts_decl_common_value_fields): Stream
4342         DECL_PADDING_P.
4343         (pack_ts_type_common_value_fields): Stream TYPE_EMPTY_P.
4344         * tree.c (default_is_empty_type): New function.
4345         (default_is_empty_record): New function.
4346         (arg_int_size_in_bytes): New function.
4347         (arg_size_in_bytes): New function.
4348         (get_ultimate_context): New function.
4349         * tree.h: Define TYPE_EMPTY_P, DECL_PADDING_P and
4350         TRANSLATION_UNIT_WARN_EMPTY_P.
4351         (default_is_empty_record, arg_int_size_in_bytes,
4352         arg_size_in_bytes, get_ultimate_context): Declare.
4353
4354 2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
4355
4356         * config/arm/arm.c (cmse_clear_registers): New function.
4357         (cmse_nonsecure_call_clear_caller_saved): Replace register clearing
4358         code by call to cmse_clear_registers.
4359         (cmse_nonsecure_entry_clear_before_return): Likewise.
4360
4361 2017-11-22  Tamar Christina  <tamar.christina@arm.com>
4362
4363         * config/arm/arm_neon.h (vdot_u32, vdotq_u32)
4364         (vdot_s32, vdotq_s32): New.
4365         (vdot_lane_u32, vdotq_lane_u32): New.
4366         (vdot_lane_s32, vdotq_lane_s32): New.
4367
4368
4369 2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>
4370
4371         PR middle-end/82547
4372         * wide-int.cc (wi::add_large, wi::sub_large): Fix overflow detection
4373         for unsigned values with fewer HWIs than the precision.
4374         (test_overflow): New function.
4375         (wide_int_cc_tests): Call it.
4376
4377 2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>
4378
4379         * emit-rtl.c (init_derived_machine_modes): Make sure ptr_mode
4380         has the same mode class as Pmode.
4381
4382 2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
4383
4384         * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Get rid of
4385         padding_bits_to_clear_ptr.
4386         (cmse_nonsecure_entry_clear_before_return): Likewise.
4387
4388 2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
4389
4390         * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Use
4391         auto_sbitap instead of integer bitfield to control register needing
4392         clearing.
4393
4394 2017-11-22  Jakub Jelinek  <jakub@redhat.com>
4395
4396         PR tree-optimization/83044
4397         * tree-vrp.c (vrp_prop::check_array_ref): If eltsize is not
4398         INTEGER_CST or is 0, clear up_bound{,_p1} and later ignore tests
4399         that need the upper bound.  Subtract offset from
4400         get_addr_base_and_unit_offset only if positive and subtract it
4401         before division by eltsize rather than after it.
4402
4403         PR debug/83084
4404         * valtrack.c (propagate_for_debug_subst, propagate_for_debug): Reset
4405         debug insns if they would contain UNSPEC_VOLATILE or volatile asm.
4406         (dead_debug_insert_temp): Likewise, but also ignore even non-volatile
4407         asm.
4408
4409         PR middle-end/82875
4410         * optabs.c (expand_doubleword_mult, expand_binop): Before calling
4411         expand_binop with *mul_widen_optab, make sure at least one of the
4412         operands doesn't have VOIDmode.
4413
4414         PR debug/83034
4415         * dwarf2out.c (mem_loc_descriptor): Handle VEC_SERIES.
4416
4417         PR rtl-optimization/82044
4418         PR tree-optimization/82042
4419         * dse.c (record_store): Check for overflow.
4420         (check_mem_read_rtx): Properly check for overflow if width == -1, call
4421         add_wild_read instead of clear_rhs_from_active_local_stores on
4422         overflow and log it into dump_file.
4423
4424 2017-11-22  Richard Biener  <rguenther@suse.de>
4425
4426         * gimple-iterator.c (gimple_find_edge_insert_loc): Ignore
4427         fake edges to exit when looking for a place to insert.
4428         * tree-ssa-pre.c (clear_expression_ids): Inline into callers
4429         and remove.
4430         (insert_into_preds_of_block): Commit edge insertion immediately,
4431         assert that doesn't require new BBs.
4432         (fini_pre): Release expressions.
4433         (pass_pre::execute): Shuffle things around a bit, if the fn
4434         is too large do not compute AVAIL either as this is really the
4435         quadratic bit.
4436
4437 2017-11-22  Richard Biener  <rguenther@suse.de>
4438
4439         PR tree-optimization/83089
4440         * tree-if-conv.c (pass_if_conversion::execute): If anything
4441         changed reset SCEV and free the number of iteration estimates.
4442
4443 2017-11-21  Martin Sebor  <msebor@redhat.com>
4444
4445         PR tree-optimization/82945
4446         * calls.h (warn_nonstring_bound): Remove unused function.
4447
4448 2017-11-21  Martin Sebor  <msebor@redhat.com>
4449
4450         PR tree-optimization/82945
4451         * builtins.c (expand_builtin_strlen): Call maybe_warn_nonstring_arg.
4452         * calls.h (maybe_warn_nonstring_arg): Declare new function.
4453         * calls.c (get_attr_nonstring_decl, maybe_warn_nonstring_arg): New
4454         functions.
4455         (initialize_argument_information): Call maybe_warn_nonstring_arg.
4456         * calls.h (get_attr_nonstring_decl): Declare new function.
4457         * doc/extend.texi (attribute nonstring): Update.
4458         * gimple-fold.c (gimple_fold_builtin_strncpy): Call
4459         get_attr_nonstring_decl and handle it.
4460         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Same.  Improve
4461         detection of nul-termination.
4462         (strlen_to_stridx): Change to a pointer.
4463         (handle_builtin_strlen, handle_builtin_stxncpy): Adjust.
4464         (pass_strlen::execute): Same.
4465
4466 2017-11-21  Sergey Shalnov  <Sergey.Shalnov@intel.com>
4467
4468         * config/i386/i386-opts.h (enum prefer_vector_width): Added new enum
4469         for the new option -mprefer-vector-width=[none|128|256|512].
4470         * config/i386/i386.c (ix86_target_string): remove old style options
4471         -mprefer-avx256 and make -mprefer-avx128 as alias.
4472         (ix86_option_override_internal):  Apply defaults for the
4473         -mprefer-vector-width=[128|256] option.
4474         * config/i386/i386.h (TARGET_PREFER_AVX128, TARGET_PREFER_AVX256):
4475         Implement macros to work with -mprefer-vector-width=.
4476         * config/i386/i386.opt: Implemented option
4477         -mprefer-vector-width=[none|128|256|512].
4478         * doc/invoke.texi: Documentation for
4479         -mprefer-vector-width=[none|128|256|512].
4480
4481 2017-11-21  Pat Haugen  <pthaugen@us.ibm.com>
4482
4483         * config/rs6000/ppc-asm.h (f50, vs50): Fix values.
4484
4485 2017-11-21  Jonathan Wakely  <jwakely@redhat.com>
4486
4487         * doc/invoke.texi (-Wmaybe-uninitialized): Rephrase for clarity.
4488
4489 2017-11-21  Marc Glisse  <marc.glisse@inria.fr>
4490
4491         * doc/generic.texi: Document POINTER_DIFF_EXPR, update
4492         POINTER_PLUS_EXPR.
4493         * cfgexpand.c (expand_debug_expr): Handle POINTER_DIFF_EXPR.
4494         * expr.c (expand_expr_real_2): Likewise.
4495         * fold-const.c (const_binop, fold_addr_of_array_ref_difference,
4496         fold_binary_loc): Likewise.
4497         * match.pd (X-X, P+(Q-P), &D-P, (P+N)-P, P-(P+N), (P+M)-(P+N),
4498         P-Q==0, -(A-B), X-Z<Y-Z, (X-Z)-(Y-Z), Z-X<Z-Y, (Z-X)-(Z-Y),
4499         (A-B)+(C-A)): New transformations for POINTER_DIFF_EXPR, based on
4500         MINUS_EXPR transformations.
4501         * optabs-tree.c (optab_for_tree_code): Handle POINTER_DIFF_EXPR.
4502         * tree-cfg.c (verify_expr, verify_gimple_assign_binary): Likewise.
4503         * tree-inline.c (estimate_operator_cost): Likewise.
4504         * tree-pretty-print.c (dump_generic_node, op_code_prio,
4505         op_symbol_code): Likewise.
4506         * tree-vect-stmts.c (vectorizable_operation): Likewise.
4507         * vr-values.c (extract_range_from_binary_expr): Likewise.
4508         * varasm.c (initializer_constant_valid_p_1): Likewise.
4509         * tree.def: New tree code POINTER_DIFF_EXPR.
4510
4511 2017-11-21  Uros Bizjak  <ubizjak@gmail.com>
4512
4513         * config/i386/i386.md (*bswap<mode>2_movbe): Add
4514         integer suffix to movbe mnemonic.
4515         (*bswaphi2_movbe): Ditto.
4516         (bswaphi_lowpart): Merge with *bswaphi_lowpart_1.
4517
4518 2017-11-21  Jakub Jelinek  <jakub@redhat.com>
4519
4520         PR c++/83045
4521         * tree-cfg.c (pass_warn_function_return::execute): Formatting fix.
4522         Also warn if seen __builtin_unreachable () call with BUILTINS_LOCATION.
4523         Use LOCATION_LOCUS when comparing against UNKNOWN_LOCATION.
4524
4525 2017-11-21  Martin Liska  <mliska@suse.cz>
4526
4527         * tree-inline.c (expand_call_inline): Remove not needed
4528         xstrdup_for_dump.
4529
4530 2017-11-21  James Cowgill  <James.Cowgill@imgtec.com>
4531             Jakub Jelinek  <jakub@redhat.com>
4532
4533         PR target/82880
4534         * config/mips/frame-header-opt.c (mips_register_frame_header_opt):
4535         Remove static keyword from f variable.
4536
4537 2017-11-21  Jakub Jelinek  <jakub@redhat.com>
4538
4539         PR tree-optimization/83086
4540         * gimple-ssa-store-merging.c
4541         (imm_store_chain_info::try_coalesce_bswap): Test this_n.base_addr
4542         rather than n.base_addr.
4543
4544 2017-11-21  Martin Liska  <mliska@suse.cz>
4545
4546         PR rtl-optimization/82044
4547         PR tree-optimization/82042
4548         * dse.c (check_mem_read_rtx): Check for overflow.
4549
4550 2017-11-21  Aldy Hernandez  <aldyh@redhat.com>
4551
4552         * tree-ssa-threadbackward.c (find_jump_threads_backwards): Fix
4553         typo in comment.
4554
4555 2017-11-21  Claudiu Zissulescu  <claziss@synopsys.com>
4556
4557         * cfgrtl.c (force_nonfallthru_and_redirect): Don't split a call
4558         and its corresponding call arg location note.
4559
4560 2017-11-21  Claudiu Zissulescu  <claziss@synopsys.com>
4561             Andrew Burgess  <andrew.burgess@embecosm.com>
4562
4563         * config/arc/arc-protos.h (arc_compute_frame_size): Delete
4564         declaration.
4565         (arc_return_slot_offset): Likewise.
4566         (arc_eh_return_address_location): New declaration.
4567         * config/arc/arc.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
4568         (MUST_SAVE_REGISTER): Add exception handler case.
4569         (MUST_SAVE_RETURN_ADDR): Likewise.
4570         (arc_frame_pointer_required): Likewise.
4571         (arc_frame_pointer_needed): New function.
4572         (arc_compute_frame_size): Changed.
4573         (arc_expand_prologue): Likewise.
4574         (arc_expand_epilogue): Likewise.
4575         (arc_initial_elimination_offset): Likewise.
4576         (arc_return_slot_offset): Delete.
4577         (arc_eh_return_address_location): New function.
4578         (arc_builtin_setjmp_frame_value): Likewise.
4579         * config/arc/arc.h (EH_RETURN_DATA_REGNO): Use 2 registers.
4580         (EH_RETURN_STACKADJ_RTX): Define.
4581         (EH_RETURN_HANDLER_RTX): Likewise.
4582         * config/arc/arc.md (eh_return): Delete.
4583
4584 2017-11-21  Aldy Hernandez  <aldyh@redhat.com>
4585
4586         * print-tree.h (debug_vec_tree): Remove prototype.
4587         * gdbinit.in (pvt): Remove macro.
4588
4589 2017-11-21  Jakub Jelinek  <jakub@redhat.com>
4590
4591         PR tree-optimization/83047
4592         * gimple-ssa-store-merging.c
4593         (imm_store_chain_info::output_merged_store): If the loads with the
4594         same vuse are in different basic blocks, for load_gsi pick a load
4595         location that is dominated by the other loads.
4596
4597         PR c++/83059
4598         * config/i386/i386.c (ix86_memmodel_check): Start
4599         -Winvalid-memory-model diagnostics with lowercase letter.
4600
4601         PR debug/82718
4602         * dwarf2out.c (dw_loc_list): If crtl->has_bb_partition, temporarily
4603         set in_cold_section_p to the partition containing loc_list->first.
4604         When seeing loc_list->last_before_switch node, update secname and
4605         perform range_across_switch second partition handling only after that.
4606
4607         PR debug/82933
4608         * run-rtl-passes.c: Include debug.h.
4609         (run_rtl_passes): Call debug_hooks->assembly_start.
4610         * dwarf2out.c (dwarf2out_assembly_start): Return early if invoked
4611         multiple times.
4612
4613         PR target/82981
4614         * internal-fn.c (expand_mul_overflow): Use OPTAB_WIDEN instead of
4615         OPTAB_DIRECT in calls to expand_simple_binop.
4616
4617 2017-11-20  David Malcolm  <dmalcolm@redhat.com>
4618
4619         PR c/81404
4620         * Makefile.in (C_COMMON_OBJS): Add c-family/known-headers.o.
4621
4622 2017-11-20  David Malcolm  <dmalcolm@redhat.com>
4623
4624         PR c++/72786
4625         * spellcheck.h (best_match::blithely_get_best_candidate): New
4626         accessor.
4627
4628 2017-11-20  Jakub Jelinek  <jakub@redhat.com>
4629
4630         * config/i386/i386.c (parse_mtune_ctrl_str): Start diagnostics
4631         with lower case letter.
4632
4633 2017-11-20  Uros Bizjak  <ubizjak@gmail.com>
4634
4635         * config/i386/i386.md (bswaphi2): New expander.
4636         (*bswaphi2_movbe): New insn pattern.
4637         (bswaphi -> rorhi pepehole2): New peephole pattern.
4638
4639 2017-11-20  Jeff Law  <law@redhat.com>
4640
4641         * Makefile.in (OBJS): Add gimple-ssa-evrp-analyze.o.
4642         * gimple-ssa-evrp-analyze.c: New file pulled from gimple-ssa-evrp.c.
4643         * gimple-ssa-evrp-analyze.h: New file pulled from gimple-ssa-evrp.c.
4644         * gimple-ssa-evrp.c: Remove bits moved into new files.  Include
4645         gimple-ssa-evrp-analyze.h.
4646
4647         * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Do not
4648         set BB_VISITED here.
4649         (evrp_range_analyzer::enter): Set BB_VISITED here instead.
4650
4651 2017-11-20  Bin Cheng  <bin.cheng@arm.com>
4652
4653         * tree-predcom.c: Add general comment on Store-Store chains.
4654         (split_data_refs_to_components): Postpone clearing eliminate_store_p
4655         flag in component.
4656         (get_chain_last_ref_at): Rename into...
4657         (get_chain_last_write_at): ...this.
4658         (get_chain_last_write_before_load): New function.
4659         (add_ref_to_chain): Promote type of chain from CT_STORE_LOAD to
4660         CT_STORE_STORE when write reference is added.
4661         (determine_roots_comp): Support load ref in CT_STORE_STORE chains.
4662         (is_inv_store_elimination_chain): Update get_chain_last_write_at call.
4663         (initialize_root_vars_store_elim_1): Ditto.
4664         (initialize_root_vars_store_elim_2): Ditto.  Replace rhs once default
4665         definition is created.
4666         (execute_pred_commoning_chain): Support load ref in CT_STORE_STORE
4667         chain by replacing it with dominant stored value.
4668
4669 2017-11-20  Bin Cheng  <bin.cheng@arm.com>
4670
4671         * tree-predcom.c (add_ref_to_chain): Remove check on distance.
4672
4673 2017-11-20  Marc Glisse  <marc.glisse@inria.fr>
4674
4675         * vr-values.c (extract_range_from_binary_expr): Use a full range
4676         for VR_VARYING.
4677
4678 2017-11-20  Thomas Preud'homme  <thomas.preudhomme@arm.com>
4679
4680         * config/arm/arm.md (R4_REGNUM): Define constant.
4681         (nonsecure_call_internal): Remove r4 clobber.
4682         (nonsecure_call_value_internal): Likewise.
4683         * config/arm/thumb1.md (nonsecure_call_reg_thumb1_v5): Remove second
4684         clobber and resequence match_operands.
4685         (nonsecure_call_value_reg_thumb1_v5): Likewise.
4686         * config/arm/thumb2.md (nonsecure_call_reg_thumb2): Likewise.
4687         (nonsecure_call_value_reg_thumb2): Likewise.
4688
4689 2017-11-20  Jakub Jelinek  <jakub@redhat.com>
4690
4691         PR tree-optimization/78821
4692         * gimple-ssa-store-merging.c (find_bswap_or_nop_load): Give up
4693         if base is TARGET_MEM_REF.  If base is not MEM_REF, set base_addr
4694         to the address of the base rather than the base itself.
4695         (find_bswap_or_nop_1): Just use pointer comparison for vuse check.
4696         (find_bswap_or_nop_finalize): New function.
4697         (find_bswap_or_nop): Use it.
4698         (bswap_replace): Return a tree rather than bool, change first
4699         argument from gimple * to gimple_stmt_iterator, allow inserting
4700         into an empty sequence, allow ins_stmt to be NULL - then emit
4701         all stmts into gsi.  Fix up MEM_REF address gimplification.
4702         (pass_optimize_bswap::execute): Adjust bswap_replace caller.
4703         (struct store_immediate_info): Add N and INS_STMT non-static
4704         data members.
4705         (store_immediate_info::store_immediate_info): Initialize them
4706         from newly added ctor args.
4707         (merged_store_group::apply_stores): Formatting fixes.  Sort by
4708         bitpos at the end.
4709         (stmts_may_clobber_ref_p): For stores call also
4710         refs_anti_dependent_p.
4711         (gather_bswap_load_refs): New function.
4712         (imm_store_chain_info::try_coalesce_bswap): New method.
4713         (imm_store_chain_info::coalesce_immediate_stores): Use it.
4714         (split_group): Handle LROTATE_EXPR and NOP_EXPR rhs_code specially.
4715         (imm_store_chain_info::output_merged_store): Fail if number of
4716         new estimated stmts is bigger or equal than old.  Handle LROTATE_EXPR
4717         and NOP_EXPR rhs_code.
4718         (pass_store_merging::process_store): Compute n and ins_stmt, if
4719         ins_stmt is non-NULL and the store rhs is otherwise invalid, use
4720         LROTATE_EXPR rhs_code.  Pass n and ins_stmt to store_immediate_info
4721         ctor.
4722         (pass_store_merging::execute): Calculate dominators.
4723
4724         * tree-ssa-math-opts.c (nop_stats, bswap_stats, struct symbolic_number,
4725         BITS_PER_MARKER, MARKER_MASK, MARKER_BYTE_UNKNOWN, HEAD_MARKER, CMPNOP,
4726         CMPXCHG, do_shift_rotate, verify_symbolic_number_p,
4727         init_symbolic_number, find_bswap_or_nop_load, perform_symbolic_merge,
4728         find_bswap_or_nop_1, find_bswap_or_nop, pass_data_optimize_bswap,
4729         class pass_optimize_bswap, bswap_replace,
4730         pass_optimize_bswap::execute): Moved to ...
4731         * gimple-ssa-store-merging.c: ... this file.
4732         Include optabs-tree.h.
4733         (nop_stats, bswap_stats, do_shift_rotate, verify_symbolic_number_p,
4734         init_symbolic_number, find_bswap_or_nop_load, perform_symbolic_merge,
4735         find_bswap_or_nop_1, find_bswap_or_nop, bswap_replace): Put into
4736         anonymous namespace, remove static keywords.
4737         (pass_optimize_bswap::gate): Test BITS_PER_UNIT == 8 here...
4738         (pass_optimize_bswap::execute): ... rather than here.  Formatting fix.
4739
4740 2017-11-20  Jan Hubicka  <hubicka@ucw.cz>
4741
4742         PR bootstrap/83062
4743         * ipa-inline.c (can_inline_edge_p): Fix typo in previous patch.
4744
4745 2017-11-20  Aldy Hernandez  <aldyh@redhat.com>
4746
4747         * vec.h (debug_helper): New function.
4748         (DEFINE_DEBUG_VEC): New macro.
4749         * hash-set.h (debug_helper): New function.
4750         (DEFINE_DEBUG_HASH_SET): New macro.
4751         * cfg.c (debug_slim (edge)): New function.
4752         Call DEFINE_DEBUG_VEC for edges.
4753         Call DEFINE_DEBUG_HASH_SET for edges.
4754         * cfghooks.c (debug_slim (basic_block)): New function.
4755         Call DEFINE_DEBUG_VEC for basic blocks.
4756         Call DEFINE_DEBUG_HASH_SET for basic blocks.
4757         * print-tree.c (debug_slim): New function to handle trees.
4758         Call DEFINE_DEBUG_VEC for trees.
4759         Call DEFINE_DEBUG_HASH_SET for trees.
4760         (debug (vec<tree, va_gc>) &): Remove.
4761         (debug (<vec<tree, va_gc>) *): Remove.
4762         * print-rtl.c (debug_slim): New function to handle const_rtx.
4763         Call DEFINE_DEBUG_VEC for rtx_def.
4764         Call DEFINE_DEBUG_VEC for rtx_insn.
4765         Call DEFINE_DEBUG_HASH_SET for rtx_def.
4766         Call DEFINE_DEBUG_HASH_SET for rtx_insn.
4767         * sel-sched-dump.c (debug (vec<rtx_insn *> &): Remove.
4768         (debug (vec<rtx_insn *> *ptr): Remove.
4769         (debug_insn_vector): Remove.
4770         * stor-layout.c (debug_rli): Call debug() instead of debug_vec_tree.
4771
4772 2017-11-20  Tom de Vries  <tom@codesourcery.com>
4773
4774         PR rtl-optimization/82020
4775         * simplify-rtx.c (simplify_ternary_operation): Fix comparison mode of
4776         IF_THEN_ELSE condition.
4777
4778 2017-11-19  Jeff Law  <law@redhat.com>
4779
4780         * tree-ssa-dom.c (record_equivalences_from_phis): Fix handling
4781         of degenerates resulting from ignoring an edge.
4782
4783 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
4784
4785         PR ipa/81360
4786         * ipa-inline.c (can_inline_edge_p): Also check that caller is optimized
4787
4788 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
4789
4790         PR ipa/83001
4791         * profile-count.c (profile_count::to_sreal_scale): Fix return value
4792         for uninitialied counts.
4793
4794 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
4795
4796         PR ipa/60243
4797         * tree-inline.c (estimate_num_insns): Set to 1 at least.
4798
4799 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
4800
4801         PR target/82713
4802         * i386.c (ix86_builtin_vectorization_cost): Be ready for insane types.
4803
4804 2017-11-19  Tom de Vries  <tom@codesourcery.com>
4805
4806         * config/arc/arc.h (FUNCTION_PROFILER): Remove semicolon after
4807         "do while (0)".
4808
4809 2017-11-19  Tom de Vries  <tom@codesourcery.com>
4810
4811         * config/phoenix.h (TARGET_OS_CPP_BUILTINS): Remove semicolon after
4812         "do {} while (0)".
4813
4814 2017-11-19  Tom de Vries  <tom@codesourcery.com>
4815
4816         * config/visium/visium.h (ASM_OUTPUT_CASE_END): Remove semicolon after
4817         macro body.
4818
4819 2017-11-19  Tom de Vries  <tom@codesourcery.com>
4820
4821         * config/ft32/ft32.h (REGISTER_TARGET_PRAGMAS): Remove semicolon after
4822         "do {} while (0)".
4823         * config/spu/spu.h (REGISTER_TARGET_PRAGMAS): Same.
4824
4825 2017-11-19  Tom de Vries  <tom@codesourcery.com>
4826
4827         * config/mcore/mcore-elf.h (MCORE_EXPORT_NAME): Remove semicolon after
4828         "do {} while (0)".
4829         * config/mcore/mcore.h (ASM_OUTPUT_ALIGNED_COMMON): After missing
4830         semicolon after MCORE_EXPORT_NAME call.
4831
4832 2017-11-19  Tom de Vries  <tom@codesourcery.com>
4833
4834         PR target/82961
4835         * vmsdbgout.c (vmsdbgout_early_finish): New function.
4836         (vmsdbg_debug_hooks): Set early_finish field to vmsdbgout_early_finish.
4837
4838 2017-11-18  Jan Hubicka  <hubicka@ucw.cz>
4839
4840         * cgraphclones.c (cgraph_edge::clone): Rename gcov_count to prof_count.
4841         (cgraph_edge::clone): Cleanup updating of profile.
4842         * ipa-cp.c (update_profiling_info): Likewise.
4843         * ipa-inline-transform.c (inline_transform): Likewise.
4844         * ipa-inline.c (inline_small_functions): Add missing space to dump.
4845         * ipa-split.c (execute_split_functions): Do not split when function
4846         is cold.
4847         * predict.c (estimate_bb_frequencies): Cleanup updating of profile.
4848         * profile-count.c (profile_count::dump): Add global0.
4849         (profile_count::to_cgraph_frequency): Do not ICE when entry is
4850         undefined.
4851         (profile_count::to_sreal_scale): Likewise.
4852         (profile_count::adjust_for_ipa_scaling): Fix typo in comment.
4853         (profile_count::combine_with_ipa_count): New function.
4854         * profile-count.h (profile_guessed_global0adjusted): New.
4855         (profile_count::adjusted_zero): New.
4856         (profile_count::global0adjusted): New.
4857         (profile_count::combine_with_ipa_count): New.
4858         * tree-inline.c (copy_edges_for_bb): Add NUM/DEN arugment;
4859         correct profile of return block of split functions.
4860         (copy_cfg_body): Remove unused profile_count.
4861         (copy_body): Likewise.
4862         (expand_call_inline): Update.
4863         (tree_function_versioning): Update.
4864
4865 2017-11-18  Aldy Hernandez  <aldyh@redhat.com>
4866
4867         * hash-set.h (hash_set::empty): New.
4868         * tree-ssa-threadbackward.h: Delete.
4869         * tree-ssa-threadbackward.c (class thread_jumps): New.
4870         Move max_threaded_paths into class.
4871         (fsm_find_thread_path): Remove arguments that are now in class.
4872         (profitable_jump_thread_path): Rename to...
4873         (thread_jumps::profitable_jump_thread_path): ...this.
4874         (convert_and_register_jump_thread_path): Rename to...
4875         (thread_jumps::convert_and_register_current_path): ...this.
4876         (check_subpath_and_update_thread_path): Rename to...
4877         (thread_jumps::check_subpath_and_update_thread_path): ...this.
4878         (register_jump_thread_path_if_profitable): Rename to...
4879         (thread_jumps::register_jump_thread_path_if_profitable): ...this.
4880         (handle_phi): Rename to...
4881         (thread_jumps::handle_phi): ...this.
4882         (handle_assignment): Rename to...
4883         (thread_jumps::handle_assignment): ...this.
4884         (fsm_find_control_statement_thread_paths): Rename to...
4885         (thread_jumps::fsm_find_control_statement_thread_paths): ...this.
4886         (find_jump_threads_backwards): Rename to...
4887         (thread_jumps::find_jump_threads_backwards): ...this.
4888         Initialize path local data.
4889         (pass_thread_jumps::execute): Call find_jump_threads_backwards
4890         from within thread_jumps class.
4891         (pass_early_thread_jumps::execute): Same.
4892
4893 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
4894
4895         * cgraph.c (cgraph_node::dump): Do IPA sanity checking on IPA counts.
4896
4897 2017-11-17  Steve Ellcey  <sellcey@cavium.com>
4898
4899         * config/aarch64/aarch64-simd.md (fnma<mode>4): Move neg operator
4900         to canonical location.
4901
4902 2017-11-17  Steve Ellcey  <sellcey@cavium.com>
4903
4904         PR target/81356
4905         * config/aarch64/aarch64.c (aarch64_use_by_pieces_infrastructure_p):
4906         Remove.
4907         (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): Remove define.
4908
4909 2017-11-17  H.J. Lu  <hongjiu.lu@intel.com>
4910
4911         * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Use
4912         rcrt1.o%s/grcrt1.o%s for -static-pie.
4913
4914 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
4915
4916         * i386.c (ix86_multiplication_cost, ix86_division_cost,
4917         ix86_shift_rotate_cost): Break out from ...
4918         (ix86_rtx_costs): ... here.
4919         (ix86_add_stmt_cost): Use rtx cost machinery to compute cost of
4920         vector operations.
4921
4922 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
4923
4924         * predict.c (determine_unlikely_bbs): Set cgraph node count to 0
4925         when entry block was promoted unlikely.
4926         (estimate_bb_frequencies): Increase frequency scale.
4927         * profile-count.h (profile_count): Export precision info.
4928
4929 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
4930
4931         * tree-tailcall.c (eliminate_tail_call): Be more careful about not
4932         disturbin profile of entry block.
4933
4934 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
4935
4936         * ipa-fnsummary.c (estimate_node_size_and_time): Be more tolerant for
4937         roundoff errors.
4938
4939 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
4940
4941         * ipa-cp.c (update_profiling_info): Handle conversion to local profile.
4942         * tree-cfg.c (execute_fixup_cfg): Do fixup same way as inliner does.
4943
4944 2017-11-17  Jeff Law  <law@redhat.com>
4945
4946         * gimple-ssa-evrp.c (class evrp_range_analyzer): New class extracted
4947         from evrp_dom_walker class.  Various methods moved into new class.
4948         (evrp_range_analyzer::evrp_range_analyzer): Constructor for new class.
4949         (evrp_range_analyzer::enter): New method.
4950         (evrp_range_analyzer::leave): New method.
4951         (evrp_dom_walker): Remove delegators no longer needed by this class.
4952         Replace vr_values data member with evrp_range_analyzer
4953
4954         * gimple-ssa-evrp.c (evrp_dom_walker::record_ranges_from_phis): New
4955         method extracted from evrp_dom_walker::before_dom_children.
4956         (evrp_dom_walker::record_ranges_from_stmt): Likewise.
4957         (evrp_dom_walker::record_ranges_from_incoming_edge): Likewise.
4958
4959         * gimple-ssa-evrp.c (evrp_dom_walker): Add cleanup method.
4960         Add private copy constructor and move assignment operators.
4961         Privatize methods and class data where trivially possible.
4962         (evrp_dom_walker::cleanup): New function, extracted from
4963         execute_early_vrp.  Simplify access to class data.
4964
4965         * vr-values.h (get_output_for_vrp): Prototype.
4966         * vr-values.c (get_output_for_vrp): New function extracted from
4967         vrp_visit_assignment_or_call and extract_range_from_stmt.
4968         (vrp_visit_assignment_or_call): Use get_output_for_vrp.  Simplify.
4969
4970 2017-11-17  Luis Machado  <luis.machado@linaro.org>
4971
4972         * config/aarch64/aarch64.c
4973         (qdf24xx_prefetch_tune) <default_opt_level>: Set to -1.
4974         (qdf24xx_tunings) <autoprefetcher_model>: Set to
4975         tune_params::AUTOPREFETCHER_WEAK.
4976
4977 2017-11-17  Tamar Christina  <tamar.christina@arm.com>
4978
4979         PR target/82641
4980         * config/arm/arm.c (arm_valid_target_attribute_rec):
4981         Parse "arch=" and "+<ext>".
4982         (arm_valid_target_attribute_tree): Re-init global options.
4983         (arm_option_override): Make non-static.
4984         (arm_options_perform_arch_sanity_checks): Make errors fatal.
4985         * gcc/config/arm/arm-c.c (__ARM_FEATURE_CMSE): Support undef.
4986         (__ARM_FEATURE_CRC32): Support undef.
4987         * config/arm/arm_acle.h (__ARM_FEATURE_CRC32): Replace with pragma.
4988         * doc/extend.texi (ARM Function Attributes): Add pragma and target.
4989
4990 2017-11-17  David Malcolm  <dmalcolm@redhat.com>
4991
4992         * gdbinit.in (break-on-diagnostic): New command.
4993
4994 2017-11-17  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
4995
4996         * config/i386/i386.c (ix86_expand_epilogue): Change simple
4997         return to indirect jump for EH return if control-flow
4998         protection is enabled. Change explicit 'false' argument in
4999         pro_epilogue_adjust_stack with a value of
5000         flag_cf_protection.
5001         * config/i386/i386.md (simple_return_indirect_internal):
5002         Remove SImode restriction to support 64-bit.
5003
5004 2017-11-17  Segher Boessenkool  <segher@kernel.crashing.org>
5005
5006         * combine.c (added_notes_insn): New.
5007         (try_combine): Handle added_notes_insn like added_links_insn.
5008         Rewrite return value code.
5009         (distribute_notes): Set added_notes_insn to the earliest insn we added
5010         a note to.
5011
5012 2017-11-17  Segher Boessenkool  <segher@kernel.crashing.org>
5013
5014         PR rtl-optimization/82621
5015         * combine.c (try_combine): Do not split PARALLELs of two SETs if the
5016         dest of one of those SETs is unused.
5017
5018 2017-11-17  Richard Biener  <rguenther@suse.de>
5019
5020         PR fortran/83017
5021         * tree-core.h (enum annot_expr_kind): Add annot_expr_parallel_kind.
5022         * tree-pretty-print.c (dump_generic_node): Handle
5023         annot_expr_parallel_kind.
5024         * tree-cfg.c (replace_loop_annotate_in_block): Likewise.
5025         * gimplify.c (gimple_boolify): Likewise.
5026
5027 2017-11-17  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
5028
5029         * config.gcc (extra_headers): Add cet.h for x86 targets.
5030         * config/i386/cet.h: New file.
5031         * doc/install.texi: Add --enable-cet/--disable-cet.
5032
5033 2017-11-17  Richard Biener  <rguenther@suse.de>
5034
5035         PR tree-optimization/83017
5036         * tree-parloops.c (MIN_PER_THREAD): Use --param parloops-min-per-thread.
5037         (gen_parallel_loop): Properly count iterations.
5038         (parallelize_loops): Handle loop->can_be_parallel independent
5039         of flag_loop_parallelize_all.  Make static profitability test match
5040         the runtime one.
5041         * params.def (PARAM_PARLOOPS_MIN_PER_THREAD): New.
5042         * invoke.texi (parloops-min-per-thread): Document.
5043
5044 2017-11-17  Vineet Gupta  <vgupta@synopsys.com>
5045
5046         * config/arc/linux.h: GLIBC_DYNAMIC_LINKER update per glibc
5047         upstreaming review comments.
5048
5049 2017-11-17  Tamar Christina  <tamar.christina@arm.com>
5050
5051         * expr.c (copy_blkmode_to_reg): Fix bitsize for targets
5052         with fast unaligned access.
5053         * doc/sourcebuild.texi (word_mode_no_slow_unalign): New.
5054
5055 2017-11-17  Thomas Preud'homme  <thomas.preudhomme@arm.com>
5056
5057         * config/arm/arm.c (cmse_nonsecure_entry_clear_before_return): Allocate
5058         to_clear_arg_regs_bitmap to the same size as to_clear_bitmap.
5059
5060 2017-11-17  Richard Biener  <rguenther@suse.de>
5061
5062         * tree-ssa-pre.c (phi_translate_1): Remove redundant constant
5063         folding of references.
5064
5065 2017-11-17  Qing Zhao  <qing.zhao@oracle.com>
5066
5067         PR middle-end/78809
5068         * gimple-fold.c (gimple_fold_builtin_string_compare): Add handling
5069         of replacing call to strncmp with corresponding call to strcmp when
5070         meeting conditions.
5071
5072 2017-11-17  Sergey Shalnov  <Sergey.Shalnov@intel.com>
5073
5074         * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Add tuning
5075         option prefer-avx256 for skylake-avx512 configuration.
5076         * config/i386/i386.c (ix86_option_override_internal): Ditto.
5077         (get_builtin_code_for_version): Ditto.
5078
5079 2017-11-17  Chung-Ju Wu  <jasonwucj@gmail.com>
5080             Monk Chiang  <sh.chiang04@gmail.com>
5081
5082         * config/nds32/nds32.h (FIRST_PSEUDO_REGISTER): Modify.
5083         (FIXED_REGISTERS): Reserve more register numbers.
5084         (CALL_USED_REGISTERS): Likewise.
5085         (REG_ALLOC_ORDER): Likewise.
5086         (REG_CLASS_CONTENTS): Likewise.
5087         (REGISTER_NAMES): Likewise.
5088
5089 2017-11-17  Chung-Ju Wu  <jasonwucj@gmail.com>
5090             Kito Cheng  <kito.cheng@gmail.com>
5091
5092         * config/nds32/nds32-modes.def: Add vector mode V4QI V2HI V8QI V4HI
5093         V2SI.
5094         * config/nds32/iterators.md: Add vector mode iterators and attributes.
5095
5096 2017-11-16  Steven Munroe  <munroesj@gcc.gnu.org>
5097
5098         * config/rs6000/mmintrin.h (_mm_add_pi32[_ARCH_PWR]): Correct
5099         parameter list for vec_splats.
5100
5101 2017-11-16  Joseph Myers  <joseph@codesourcery.com>
5102
5103         * doc/invoke.texi (-std=c17): Refer to 2018 expected publication
5104         date of C17.
5105         (-std=c18, -std=iso9899:2018, -std=gnu18): Document option aliases.
5106
5107 2017-11-16  Thomas Koenig  <tkoenig@gcc.gnu.org>
5108
5109         PR bootstrap/82856
5110         * doc/install.texi: Document incompatibility of Perl >=5.6.26
5111         with the required version of automake 1.11.6.
5112
5113 2017-11-16  Pat Haugen  <pthaugen@us.ibm.com>
5114
5115         * rs6000/power9.md (power9fpdiv): New automaton and cpu_unit defined
5116         for it.
5117         (DU_C2_3_power9): Correct reservation combinations.
5118         (FP_DIV_power9, VEC_DIV_power9): New.
5119         (power9-alu): Split out rotate/shift...
5120         (power9-rot): ...to here, correct dispatch resource.
5121         (power9-cracked-alu, power9-mul, power9-mul-compare): Correct dispatch
5122         resource.
5123         (power9-fp): Correct latency.
5124         (power9-sdiv): Add div/sqrt resource.
5125         (power9-ddiv): Correct latency, add div/sqrt resource.
5126         (power9-sqrt, power9-dsqrt): Add div/sqrt resource.
5127         (power9-vecfdiv, power9-vecdiv): Correct latency, add div/sqrt
5128         resource.
5129         (power9-qpdiv, power9-qpmul): Adjust resource usage.
5130
5131 2017-11-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
5132
5133         * config/rs6000/rs6000.c (rs6000_expand_builtin): Do not do the
5134         switch statement mapping KF built-ins to TF built-ins if we don't
5135         have the proper ISA 3.0 assembler support.
5136
5137 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
5138
5139         * tree-emutls.c (lower_emutls_data): Remove unused bb_freq.
5140         (lower_emutls_function_body): Do not compute it.
5141
5142 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
5143
5144         * ipa-split.c (split_bb_info): Turn time to sreal.
5145         (split_point): Likewise.
5146         (dump_split_point): Likewise.
5147         (fine_split_points): Likewise.
5148         (execute_split_functions): Only zero split_bbs; turn time to sreals.
5149
5150 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
5151
5152         * ipa-fnsummary.c (analyze_function_body): Accumulate time consistently
5153         in sreal.
5154
5155 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
5156
5157         * predict.c (combine_predictions_for_bb): Preserve zero predicted
5158         edges.
5159         (expensive_function_p): Remove useless assert.
5160         (determine_unlikely_bbs): Propagate also forward; determine cold blocks
5161
5162 2017-11-16  Martin Sebor  <msebor@redhat.com>
5163
5164         PR tree-optimization/82588
5165         PR tree-optimization/82583
5166         * tree-vrp.c (check_array_ref): Handle flexible array members,
5167         string literals, and inner indices.
5168         (search_for_addr_array): Add detail to diagnostics.
5169
5170 2017-11-16  Nathan Sidwell  <nathan@acm.org>
5171
5172         PR c++/82836
5173         PR c++/82737
5174         * tree.h (COPY_DECL_RTL): Rename parms for clarity.
5175         (SET_DECL_ASSEMBLER_NAME): Forward to
5176         overwrite_decl_assembler_name.
5177         (COPY_DECL_ASSEMBLER_NAME): Rename parms for clarity.
5178         (overwrite_decl_assembler_name): Declare.
5179         * tree.c (overwrite_decl_assembler_name): New.
5180         * langhooks-def.h (lhd_overwrite_decl_assembler_name): Declare.
5181         (LANG_HOOKS_OVERWRITE_DECL_ASSEMBLER_NAME): Provide default.
5182         (LANG_HOOKS_INITIALIZER): Add it.
5183         * langhooks.h (struct lang_hooks): Add overwrite_decl_assembler_name.
5184         * langhooks.c (lhd_set_decl_assembler_name): Use
5185         SET_DECL_ASSEMBLER_NAME.
5186         (lhd_overwrite_decl_assembler_name): Default implementation.
5187
5188 2017-11-16  Wilco Dijkstra  <wdijkstr@arm.com>
5189             Jackson Woodruff  <jackson.woodruff@arm.com>
5190
5191         PR tree-optimization/71026
5192         * match.pd: Canonicalize constant multiplies in division.
5193
5194 2017-11-16  Wilco Dijkstra  <wdijkstr@arm.com>
5195
5196         * opts.c (default_options_table): Add OPT_fomit_frame_pointer entry.
5197         * common/config/alpha/alpha-common.c (TARGET_OPTION_OPTIMIZATION_TABLE):
5198         Remove OPT_fomit_frame_pointer entry.
5199         * common/config/arc/arc-common.c: Likewise.
5200         * common/config/arm/arm-common.c: Likewise.
5201         * common/config/avr/avr-common.c: Likewise.
5202         * common/config/c6x/c6x-common.c: Likewise.
5203         * common/config/cr16/cr16-common.c: Likewise.
5204         * common/config/cris/cris-common.c: Likewise.
5205         * common/config/epiphany/epiphany-common.c: Likewise.
5206         * common/config/fr30/fr30-common.c: Likewise.
5207         * common/config/frv/frv-common.c: Likewise.
5208         * common/config/ia64/ia64-common.c: Likewise.
5209         * common/config/iq2000/iq2000-common.c: Likewise.
5210         * common/config/lm32/lm32-common.c: Likewise.
5211         * common/config/m32r/m32r-common.c: Likewise.
5212         * common/config/mcore/mcore-common.c: Likewise.
5213         * common/config/microblaze/microblaze-common.c: Likewise.
5214         * common/config/mips/mips-common.c: Likewise.
5215         * common/config/mmix/mmix-common.c: Likewise.
5216         * common/config/mn10300/mn10300-common.c: Likewise.
5217         * common/config/nios2/nios2-common.c: Likewise.
5218         * common/config/pa/pa-common.c: Likewise.
5219         * common/config/pdp11/pdp11-common.c: Likewise.
5220         * common/config/powerpcspe/powerpcspe-common.c: Likewise.
5221         * common/config/riscv/riscv-common.c: Likewise.
5222         * common/config/rs6000/rs6000-common.c: Likewise.
5223         * common/config/rx/rx-common.c: Likewise.
5224         * common/config/s390/s390-common.c: Likewise.
5225         * common/config/sh/sh-common.c: Likewise.
5226         * common/config/sparc/sparc-common.c: Likewise.
5227         * common/config/tilegx/tilegx-common.c: Likewise.
5228         * common/config/tilepro/tilepro-common.c: Likewise.
5229         * common/config/v850/v850-common.c: Likewise.
5230         * common/config/visium/visium-common.c: Likewise.
5231         * common/config/xstormy16/xstormy16-common.c: Likewise.
5232         * common/config/xtensa/xtensa-common.c: Likewise.
5233         * invoke.texi (-fomit-frame-pointer): Update documentation.
5234
5235 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
5236
5237         * tree-cfg.c (gimple_find_sub_bbs): Do not compute freq.
5238
5239 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
5240
5241         * cfg.c (scale_bbs_frequencies_int,
5242         cale_bbs_frequencies_gcov_type): Remove.
5243         * cfg.h (scale_bbs_frequencies_int,
5244         cale_bbs_frequencies_gcov_type): Remove.
5245
5246 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
5247
5248         * tree-ssa-loop-manip.c
5249         (scale_dominated_blocks_in_loop): Update to profile counts.
5250         (tree_transform_and_unroll_loop): Likewise.
5251
5252 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
5253
5254         * tree-vect-loop-manip.c (vect_do_peeling): Do not use
5255         scale_bbs_frequencies_int.
5256
5257 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
5258
5259         * final.c (compute_alignments): Use counts rather than frequencies.
5260
5261 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
5262
5263         * cfgloopanal.c: Include sreal.h
5264         (average_num_loop_insns): Use counts and sreal for accounting.
5265
5266 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
5267
5268         * cfgloopmanip.c (duplicate_loop_to_header_edge): Cleanup profile
5269         manipulation.
5270
5271 2017-11-16  Chung-Ju Wu  <jasonwucj@gmail.com>
5272             Kito Cheng  <kito.cheng@gmail.com>
5273
5274         * config/nds32/constraints.md: Provide more constraints.
5275         * config/nds32/nds32.h (enum reg_class, REG_CLASS_NAMES,
5276         REG_CLASS_CONTENTS): Define R5_REG, R8_REG, and FRAME_POINTER_REG to
5277         support constraints usage.
5278
5279 2017-11-16  Chung-Ju Wu  <jasonwucj@gmail.com>
5280
5281         * config/nds32/constants.md (UNSPEC_VOLATILE_FUNC_RETURN): Remove.
5282
5283 2017-11-16  Chung-Ju Wu  <jasonwucj@gmail.com>
5284             Kito Cheng  <kito.cheng@gmail.com>
5285
5286         * config/nds32/nds32.opt: Add mext-perf, mext-perf2, mext-string.
5287         * config/nds32/nds32.opt: Refine the layout.
5288         * config/nds32/nds32.c (TARGET_EXT_PERF, TARGET_EXT_PERF2,
5289         TARGET_EXT_STRING): Support new options.
5290         * config/nds32/nds32.h: Likewise.
5291         * config/nds32/nds32.md: Likewise.
5292         * config/nds32/nds32-predicates.c: Likewise.
5293         * config/nds32/constraints.md: Likewise.
5294         * common/config/nds32/nds32-common.c: Likewise.
5295
5296 2017-11-16  Julia Koval  <julia.koval@intel.com>
5297
5298         PR target/82983
5299         * config/i386/gfniintrin.h: Add sse check.
5300         * config/i386/i386.c (ix86_expand_builtin): Fix gfni check.
5301
5302 2017-11-16  Julia Koval  <julia.koval@intel.com>
5303
5304         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VBMI2_SET,
5305         OPTION_MASK_ISA_AVX512VBMI2_UNSET): New.
5306         (ix86_handle_option): Handle -mavx512vbmi2.
5307         * config/i386/cpuid.h: Add bit_AVX512VBMI2.
5308         * config/i386/driver-i386.c (host_detect_local_cpu): Handle new bit.
5309         * config/i386/i386-c.c (__AVX512VBMI2__): New.
5310         * config/i386/i386.c (ix86_target_string): Handle -mavx512vbmi2.
5311         (ix86_valid_target_attribute_inner_p): Ditto.
5312         * config/i386/i386.h (TARGET_AVX512VBMI2, TARGET_AVX512VBMI2_P): New.
5313         * config/i386/i386.opt (mavx512vbmi2): New option.
5314         * doc/invoke.texi: Add new option.
5315
5316 2017-11-16  Julia Koval  <julia.koval@intel.com>
5317
5318         * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8, _mm256_gf2p8mul_epi8,
5319         _mm_mask_gf2p8mul_epi8, _mm_maskz_gf2p8mul_epi8,
5320         _mm256_mask_gf2p8mul_epi8, _mm256_maskz_gf2p8mul_epi8,
5321         _mm512_mask_gf2p8mul_epi8, _mm512_maskz_gf2p8mul_epi8,
5322         _mm512_gf2p8mul_epi8): New intrinsics.
5323         * config/i386/i386-builtin-types.def
5324         (V64QI_FTYPE_V64QI_V64QI): New type.
5325         * config/i386/i386-builtin.def (__builtin_ia32_vgf2p8mulb_v64qi,
5326         __builtin_ia32_vgf2p8mulb_v64qi_mask, __builtin_ia32_vgf2p8mulb_v32qi,
5327         __builtin_ia32_vgf2p8mulb_v32qi_mask, __builtin_ia32_vgf2p8mulb_v16qi,
5328         __builtin_ia32_vgf2p8mulb_v16qi_mask): New builtins.
5329         * config/i386/sse.md (vgf2p8mulb_*): New pattern.
5330         * config/i386/i386.c (ix86_expand_args_builtin): Handle new type.
5331
5332 2017-11-15  Uros Bizjak  <ubizjak@gmail.com>
5333
5334         * config/i386/i386.c (x86_print_call_or_nop): Emit 5 byte nop
5335         explicitly as a stream of bytes.
5336
5337 2017-11-15  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
5338
5339         * config/rs6000/altivec.h (vec_xst_be): New #define.
5340         * config/rs6000/altivec.md (altivec_vperm_<mode>_direct): Rename
5341         and externalize from *altivec_vperm_<mode>_internal.
5342         * config/rs6000/rs6000-builtin.def (XL_BE_V16QI): Remove macro
5343         instantiation.
5344         (XL_BE_V8HI): Likewise.
5345         (XL_BE_V4SI): Likewise.
5346         (XL_BE_V4SI): Likewise.
5347         (XL_BE_V2DI): Likewise.
5348         (XL_BE_V4SF): Likewise.
5349         (XL_BE_V2DF): Likewise.
5350         (XST_BE): Add BU_VSX_OVERLOAD_X macro instantiation.
5351         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Correct
5352         all array entries with these keys: VSX_BUILTIN_VEC_XL,
5353         VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_VEC_XST.  Add entries for key
5354         VSX_BUILTIN_VEC_XST_BE.
5355         * config/rs6000/rs6000.c (altivec_expand_xl_be_builtin): Remove.
5356         (altivec_expand_builtin): Remove handling for VSX_BUILTIN_XL_BE_*
5357         built-ins.
5358         (altivec_init_builtins): Replace conditional calls to def_builtin
5359         for __builtin_vsx_ld_elemrev_{v8hi,v16qi} and
5360         __builtin_vsx_st_elemrev_{v8hi,v16qi} based on TARGET_P9_VECTOR
5361         with unconditional calls.  Remove calls to def_builtin for
5362         __builtin_vsx_le_be_<mode>.  Add a call to def_builtin for
5363         __builtin_vec_xst_be.
5364         * config/rs6000/vsx.md (vsx_ld_elemrev_v8hi): Convert define_insn
5365         to define_expand, and add alternate RTL generation for P8.
5366         (*vsx_ld_elemrev_v8hi_internal): New define_insn based on
5367         vsx_ld_elemrev_v8hi.
5368         (vsx_ld_elemrev_v16qi): Convert define_insn to define_expand, and
5369         add alternate RTL generation for P8.
5370         (*vsx_ld_elemrev_v16qi_internal): New define_insn based on
5371         vsx_ld_elemrev_v16qi.
5372         (vsx_st_elemrev_v8hi): Convert define_insn
5373         to define_expand, and add alternate RTL generation for P8.
5374         (*vsx_st_elemrev_v8hi_internal): New define_insn based on
5375         vsx_st_elemrev_v8hi.
5376         (vsx_st_elemrev_v16qi): Convert define_insn to define_expand, and
5377         add alternate RTL generation for P8.
5378         (*vsx_st_elemrev_v16qi_internal): New define_insn based on
5379         vsx_st_elemrev_v16qi.
5380
5381 2017-11-15  H.J. Lu  <hongjiu.lu@intel.com>
5382
5383         PR target/82990
5384         * config/i386/i386.c (pass_insert_vzeroupper::gate): Remove
5385         TARGET_AVX512ER check.
5386         (ix86_option_override_internal): Set MASK_VZEROUPPER if
5387         neither -mzeroupper nor -mno-zeroupper is used and
5388         TARGET_EMIT_VZEROUPPER is set.
5389         * config/i386/i386.h (TARGET_EMIT_VZEROUPPER): New.
5390         * config/i386/x86-tune.def: Add X86_TUNE_EMIT_VZEROUPPER.
5391
5392 2017-11-15  Will Schmidt  <will_schmidt@vnet.ibm.com>
5393
5394         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
5395         folding of vector compares.
5396         (fold_build_vec_cmp): New helper function.
5397         (fold_compare_helper): New helper function.
5398         (builtin_function_type): Add compare builtins to the list of functions
5399         having unsigned arguments.  Cosmetic updates to comment indentation.
5400         * config/rs6000/vsx.md (vcmpneb, vcmpneh, vcmpnew): Update to specify
5401         the not+eq combination.
5402
5403 2017-11-15  Bin Cheng  <bin.cheng@arm.com>
5404
5405         PR tree-optimization/82726
5406         PR tree-optimization/70754
5407         * tree-predcom.c (order_drefs_by_pos): New function.
5408         (combine_chains): Move code setting has_max_use_after to...
5409         (try_combine_chains): ...here.  New parameter.  Sort combined chains
5410         according to position information.
5411         (tree_predictive_commoning_loop): Update call to above function.
5412         (update_pos_for_combined_chains, pcom_stmt_dominates_stmt_p): New.
5413
5414 2017-11-15  Bin Cheng  <bin.cheng@arm.com>
5415
5416         PR tree-optimization/82726
5417         Revert
5418         2017-01-23  Bin Cheng  <bin.cheng@arm.com>
5419
5420         PR tree-optimization/70754
5421         * tree-predcom.c (stmt_combining_refs): New parameter INSERT_BEFORE.
5422         (reassociate_to_the_same_stmt): New parameter INSERT_BEFORE.  Insert
5423         combined stmt before it if not NULL.
5424         (combine_chains): Process refs reversely and compute dominance point
5425         for root ref.
5426
5427         Revert
5428         2017-02-23  Bin Cheng  <bin.cheng@arm.com>
5429
5430         PR tree-optimization/79663
5431         * tree-predcom.c (combine_chains): Process refs in reverse order
5432         only for ZERO length chains, and add explaining comment.
5433
5434 2017-11-15  Tamar Christina  <tamar.christina@arm.com>
5435
5436         * config/arm/arm-cpus.in (armv8_3, ARMv8_3a, armv8.3-a): New
5437         * config/arm/arm-tables.opt (armv8.3-a): Regenerated.
5438         * doc/invoke.texi (ARM Options): Add armv8.3-a.
5439
5440 2017-11-15  Tamar Christina  <tamar.christina@arm.com>
5441
5442         * config/arm/arm.h (TARGET_DOTPROD): Add arm_arch8_2.
5443
5444 2017-11-15  Martin Liska  <mliska@suse.cz>
5445
5446         * tree-cfg.c (pass_warn_function_return::execute):
5447         Compare warn_return_type for greater than zero.
5448
5449 2017-11-15  Sebastian Peryt  <sebastian.peryt@intel.com>
5450
5451         PR target/82941
5452         PR target/82942
5453         * config/i386/i386.c (pass_insert_vzeroupper): Modify gate condition
5454         to return true on Xeon and not on Xeon Phi.
5455         (ix86_check_avx256_register): Changed to ...
5456         (ix86_check_avx_upper_register): ... this. Add extra check for
5457         VALID_AVX512F_REG_OR_XI_MODE.
5458         (ix86_avx_u128_mode_needed): Changed
5459         ix86_check_avx256_register to ix86_check_avx_upper_register.
5460         (ix86_check_avx256_stores): Changed to ...
5461         (ix86_check_avx_upper_stores): ... this. Changed
5462         ix86_check_avx256_register to ix86_check_avx_upper_register.
5463         (ix86_avx_u128_mode_after): Changed
5464         avx_reg256_found to avx_upper_reg_found. Changed
5465         ix86_check_avx256_stores to ix86_check_avx_upper_stores.
5466         (ix86_avx_u128_mode_entry): Changed
5467         ix86_check_avx256_register to ix86_check_avx_upper_register.
5468         (ix86_avx_u128_mode_exit): Ditto.
5469         * config/i386/i386.h: (host_detect_local_cpu): New define.
5470
5471 2017-11-15  Dominik Infuehr  <dominik.infuehr@theobroma-systems.com>
5472
5473         * config/arm/xgene1.md (xgene1): Split into automatons
5474         xgene1_main, xgene1_decoder, xgene1_div, xgene1_simd.
5475         (xgene1_f_load): Adjust reservations and/or types.
5476         (xgene1_f_store): Likewise.
5477         (xgene1_load_pair): Likewise.
5478         (xgene1_store_pair): Likewise.
5479         (xgene1_fp_load1): Likewise.
5480         (xgene1_load1): Likewise.
5481         (xgene1_store1): Likewise.
5482         (xgene1_move): Likewise.
5483         (xgene1_alu): Likewise.
5484         (xgene1_simd): Likewise.
5485         (xgene1_bfm): Likewise.
5486         (xgene1_neon_load1): Likewise.
5487         (xgene1_neon_store1): Likewise.
5488         (xgene1_neon_logic): Likewise.
5489         (xgene1_neon_st1): Likewise.
5490         (xgene1_neon_ld1r): Likewise.
5491         (xgene1_alu_cond): Added.
5492         (xgene1_shift_reg): Likwise.
5493         (xgene1_bfx): Likewise.
5494         (xgene1_mul): Split into xgene1_mul32, xgene1_mul64.
5495
5496 2017-11-15  Jakub Jelinek  <jakub@redhat.com>
5497
5498         PR target/82981
5499         * internal-fn.c: Include gimple-ssa.h, tree-phinodes.h and
5500         ssa-iterators.h.
5501         (can_widen_mult_without_libcall): New function.
5502         (expand_mul_overflow): If only checking unsigned mul overflow,
5503         not result, and can do efficiently MULT_HIGHPART_EXPR, emit that.
5504         Don't use WIDEN_MULT_EXPR if it would involve a libcall, unless
5505         no other way works.  Add MULT_HIGHPART_EXPR + MULT_EXPR support.
5506         (expand_DIVMOD): Formatting fix.
5507         * expmed.h (expand_mult): Add NO_LIBCALL argument.
5508         * expmed.c (expand_mult): Likewise.  Use OPTAB_WIDEN rather
5509         than OPTAB_LIB_WIDEN if NO_LIBCALL is true, and allow it to fail.
5510
5511         PR tree-optimization/82977
5512         * tree-ssa-strlen.c (strlen_optimize_stmt): Pass a reference to a copy
5513         constructed temporary to strlen_to_stridx.put.
5514
5515 2017-11-15  Martin Liska  <mliska@suse.cz>
5516
5517         * configure.ac: Remove -fkeep-inline-functions from coverage_flags.
5518         * configure: Regenerate.
5519
5520 2017-11-15  Martin Liska  <mliska@suse.cz>
5521
5522         PR target/82927
5523         * config/sh/sh-mem.cc: Use proper probability for
5524         REG_BR_PROB_NOTE.
5525
5526 2017-11-14  Jeff Law  <law@redhat.com>
5527
5528         * explow.c (anti_adjust_stack_and_probe_stack_clash): Avoid probing
5529         the red zone for stack_clash_protection_final_dynamic_probe targets
5530         when the total dynamic stack size is zero bytes.
5531
5532         * tree-ssa-threadupdate.c (thread_through_all_blocks): Thread
5533         blocks is post order.
5534
5535 2017-11-15  Alexandre Oliva  <aoliva@redhat.com>
5536
5537         * dumpfile.h (TDF_COMPARE_DEBUG): New.
5538         * final.c (rest_of_clean_state): Set it for the
5539         -fcompare-debug dump.
5540         * tree-pretty-print.c (dump_generic_node): Omit OBJ_TYPE_REF
5541         class when TDF_COMPARE_DEBUG is set.
5542
5543         * dwarf2out.c (gen_producer_string): Discard
5544         OPT_fcompare_debug.
5545
5546 2017-11-15  Joseph Myers  <joseph@codesourcery.com>
5547
5548         PR c/81156
5549         * doc/extend.texi (Other Builtins): Document __builtin_tgmath.
5550         * ginclude/tgmath.h (__tg_cplx, __tg_ldbl, __tg_dbl, __tg_choose)
5551         (__tg_choose_2, __tg_choose_3, __TGMATH_REAL_1_2)
5552         (__TGMATH_REAL_2_3): Remove macros.
5553         (__TGMATH_CPLX, __TGMATH_CPLX_2, __TGMATH_REAL, __TGMATH_REAL_2)
5554         (__TGMATH_REAL_3, __TGMATH_CPLX_ONLY): Define using
5555         __builtin_tgmath.
5556         (frexp, ldexp, nexttoward, scalbn, scalbln): Define using
5557         __TGMATH_REAL_2.
5558         (remquo): Define using __TGMATH_REAL_3.
5559
5560 2017-11-14  Jeff Law  <law@redhat.com>
5561
5562         * vr-values.c: New file with contents extracted from tree-vrp.c.
5563         * Makefile.in (OBJS): Add vr-values.o
5564         * tree-vrp.h (set_value_range_to_nonnull): Prototype.
5565         (set_value_range, set_and_canonicalize_value_range): Likewise.
5566         (vrp_bitmap_equal_p, range_is_nonnull): Likewise.
5567         (value_range_constant_singleton, symbolic_range_p): Likewise.
5568         (compare_values, compare_values_warnv, vrp_val_is_min): Likewise.
5569         (vrp_val_is_max, copy_value_range, set_value_range_to_value): Likewise.
5570         (extract_range_from_binary_expr_1, vrp_val_min, vrp_val_max): Likewise.
5571         (set_value_range_to_null, range_int_cst_p, opreand_less_p): Likewise.
5572         (find_case_label_range, find_case_label_index): Likewise.
5573         (zero_nonzero_bits_from_vr, overflow_comparison_p): Likewise.
5574         (range_int_cst_singleton_p, value_inside_range): Likewise.
5575         (get_single_symbol): Likewise.
5576         (switch_update): Move structure definition here.
5577         (to_remove_edges, to_update_switch_stmts): Provide externs.
5578         * tree-vrp.c: Move all methods for vr-values class to vr-values.c
5579         (vrp_val_max, vrp_val_min, vrp_val_is_max): Make externally visible.
5580         (vrp_val_is_min, set_value_range): Likewise.
5581         (set_and_canonicalize_value_range, copy_value_range): Likewise.
5582         (set_value_range_to_value, set_value_range_to_nonnull): Likewise.
5583         (set_value_range_to_null, vrp_bitmap_equal_p): Likewise.
5584         (range_is_nonnull, range_int_cst_p): Likewwise.
5585         (range_int_cst_singleton_p, symbolic_range_p): Likewise.
5586         (get_single_symbol, operand_less_p): Likewise
5587         (compare_values_warnv, compare_values): Likewise.
5588         (value_inside_range, value_range_constant_singleton): Likewise.
5589         (zero_nonzero_bitgs_from_vr): Likewise.
5590         (extract_range_from_binary_expr_1): Likewise.
5591         (overflow_comparison_p): Likewise.
5592         (to_remove_edges, to_update_switch_stmts): Likewise.
5593         (find_case_label-index, find_case_label_range): Likewise.
5594         (switch_update, set_value_range_to_nonnegative): Remove.
5595         (set_value_range_to_truthvalue): Likewise.
5596         (symbolic_range_based_on_p, gimple_assign_nonzero_p): Likewise.
5597         (gimple_stmt_nonzero_p, compare_ranges): Likewise.
5598         (compare_range_with_value, vrp_valueize, vrp_valueize_1): Likewise.
5599         (find_case_label_ranges, test_for_singularity): Likewise.
5600         (range_fits_type_p, simplify_conversion_using_ranges): LIkewise.
5601         (x_vr_values): Move to its remaining use site.
5602
5603 2017-11-10  Jeff Law  <law@redhat.com>
5604
5605         * vr-values.h (VR_INITIALIZER): Move #define here.
5606         * gimple-ssa-evrp.c: New file with contents extracted from tree-vrp.c
5607         * Makefile.in (OBJS): Add tree-evrp.o
5608         * tree-vrp.h (assert_info): Move structure definition here.
5609         (set_value_range_to_varying): Prototype.
5610         (vrp_operand_equal_p, range_includes_zero_p): Likewise.
5611         (infer_value_range, register_edge_assert_for): Likewise.
5612         (stmt_interesting_for_vrp): Likewise.
5613         * tree-vrp.c: Move all methods for evrp class into gimple-ssa-evrp.c.
5614         (set_value_range_to_varying): No longer static.
5615         (vrp_operand_equal_p, range_includes_zero_p): Likewise.
5616         (infer_value_range, register_edge_assert_for): Likewise.
5617
5618 2017-11-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
5619
5620         * config/rs6000/rs6000.md (bswapdi2): On 32-bit ISA 3.0, don't
5621         generate the XXBRD instruction.
5622
5623         * config/rs6000/rs6000-c.c (is_float128_p): New helper function.
5624         (rs6000_builtin_type_compatible): Treat _Float128 and long double
5625         as being compatible if -mabi=ieeelongdouble.
5626         * config/rs6000/rs6000-builtin.def (BU_FLOAT128_HW_1): New macros
5627         to setup float128 built-ins with hardware support.
5628         (BU_FLOAT128_HW_2): Likewise.
5629         (BU_FLOAT128_HW_3): Likewise.
5630         (BU_FLOAT128_HW_VSX_1): Likewise.
5631         (BU_FLOAT128_HW_VSX_2): Likewise.
5632         (scalar_extract_expq): Change float128 built-in functions to
5633         accommodate having both KFmode and TFmode functions.  Use the
5634         KFmode variant as the default.
5635         (scalar_extract_sigq): Likewise.
5636         (scalar_test_neg_qp): Likewise.
5637         (scalar_insert_exp_q): Likewise.
5638         (scalar_insert_exp_qp): Likewise.
5639         (scalar_test_data_class_qp): Likewise.
5640         (sqrtf128_round_to_odd): Delete processing the round to odd
5641         built-in functions as special built-in functions, and define them
5642         as float128 built-ins.  Use the KFmode variant as the default.
5643         (truncf128_round_to_odd): Likewise.
5644         (addf128_round_to_odd): Likewise.
5645         (subf128_round_to_odd): Likewise.
5646         (mulf128_round_to_odd): Likewise.
5647         (divf128_round_to_odd): Likewise.
5648         (fmaf128_round_to_odd): Likewise.
5649         * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Add
5650         support for KFmode and TFmode xststdcqp calls.
5651         (rs6000_expand_builtin): If long double is IEEE 128-bit floating
5652         point, switch the built-in handlers for the get/set float128
5653         exponent, get float128 mantissa, float128 test built-ins, and the
5654         float128 round to odd built-in functions.  Eliminate creating the
5655         float128 round to odd built-in functions as special built-ins.
5656         (rs6000_init_builtins): Eliminate special creation of the float128
5657         round to odd built-in functions.
5658         * config/rs6000/vsx.md (xsxexpqp_<mode>): Change float128 built-in
5659         function insns to support both TFmode and KFmode variants.
5660         (xsxsigqp_<mode>): Likewise.
5661         (xsiexpqpf_<mode>): Likewise.
5662         (xsiexpqp_<mode>): Likewise.
5663         (xststdcqp_<mode>): Likewise.
5664         (xststdcnegqp_<mode>): Likewise.
5665         (xststdcqp_<mode>): Likewise.
5666
5667 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
5668
5669         * tree-ssa-threadupdate.c (compute_path_counts): Remove
5670         unused path_in_freq_ptr parameter.
5671         (ssa_fix_duplicate_block_edges): Do not pass around path_in_freq
5672
5673 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
5674
5675         * ipa-inline.c (edge_badness): Dump sreal frequency.
5676         (compute_inlined_call_time): Match natural implementaiton ...
5677         * ipa-fnsummary.c (estimate_edge_size_and_time): ... here; remove
5678         forgotten division by CGRAPH_FREQ_BASE.
5679
5680 2017-11-14  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5681
5682         * config.gcc (*-*-solaris2*): Enable default_use_cxa_atexit since
5683         Solaris 11.  Update comment.
5684         * configure.ac (gcc_cv_ld_pid): Adapt comment for Solaris 12
5685         renaming.
5686         * config/sol2.h (STARTFILE_SPEC): Likewise.
5687         * configure: Regenerate.
5688
5689 2017-11-14  Carl Love  <cel@us.ibm.com>
5690
5691         * config/rs6000/rs6000.c (swap_endian_selector_for_mode): Remove
5692         le_ and be_ prefixes to swap* variables.  Remove
5693         if (VECTOR_ELT_ORDER_BIG) statement. Remove E_V16QImode case
5694         statements.
5695
5696 2017-11-14  Jason Merrill  <jason@redhat.com>
5697
5698         Support GTY((cache)) on hash_map.
5699         * hash-traits.h (ggc_remove): Add ggc_maybe_mx member function.
5700         (ggc_cache_remove): Override it instead of ggc_mx.
5701         * hash-table.h (gt_ggc_mx): Call it instead of ggc_mx.
5702         (gt_cleare_cache): Call ggc_mx instead of gt_ggc_mx.
5703         * hash-map-traits.h (simple_hashmap_traits): Add maybe_mx member.
5704         (simple_cache_map_traits): Override maybe_mx.
5705         * hash-map.h (hash_entry): Add ggc_maybe_mx and keep_cache_entry.
5706         (hash_map): Friend gt_cleare_cache.
5707         (gt_cleare_cache): New.
5708         * tree.h (tree_cache_traits): New hash_map traits class.
5709         (tree_cache_map): New typedef.
5710
5711 2017-11-14  Richard Biener  <rguenther@suse.de>
5712
5713         * tree-cfgcleanup.c (cleanup_control_expr_graph): Remove first_p
5714         paramter and handling.
5715         (cleanup_control_flow_bb): Likewise.
5716         (cleanup_control_flow_pre): New helper performing a DFS walk
5717         to call cleanup_control_flow_bb in PRE order.
5718         (cleanup_tree_cfg_1): Do the first phase of cleanup_control_flow_bb
5719         via cleanup_control_flow_pre.
5720
5721 2017-11-14  James Greenhalgh  <james.greenhalgh@arm.com>
5722
5723         * config/aarch64/aarch64-simd.md
5724         (aarch64_simd_bsl<mode>_internal): Remove DImode.
5725         (*aarch64_simd_bsl<mode>_alt): Likewise.
5726         (aarch64_simd_bsldi_internal): New.
5727         (aarch64_simd_bsldi_alt): Likewise.
5728
5729 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
5730
5731         * tracer.c (better_p): Do not compare frequencies.
5732         * reg-stack.c (better_edge): Likewise.
5733         * shrink-wrap.c (try_shrink_wrapping): Do not convert to gcov counts
5734         and back.
5735
5736 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
5737
5738         * auto-profile.c (afdo_annotate_cfg): Use update_max_bb_count.
5739         * cgraphunit.c (cgraph_node::expand_thunk): Use update_max_bb_count.
5740         * ipa-utils.c (ipa_merge_profiles): Use update_max_bb_count.
5741         * lto-streamer-in.c (input_function): Use update_max_bb_count.
5742         * omp-expand.c (expand_omp_taskreg): Use update_max_bb_count.
5743         * predict.c (maybe_hot_frequency_p): Inline to ...
5744         (maybe_hot_count_p): ... here; rewrite to counts.
5745         (counts_to_freqs): Rename to ...
5746         (update_max_bb_count): ... this one.
5747         (expensive_function_p): Use counts.
5748         (estimate_bb_frequencies): Update.
5749         (rebuild_frequencies): Update.
5750         * predict.h (counts_to_freqs): Rename to ...
5751         (update_max_bb_count): ... this one.
5752         * profile.c (compute_branch_probabilities): Add debug info
5753         * tree-inline.c (expand_call_inline): Update debug info.
5754         (optimize_inline_calls): Use update_max_bb_count..
5755         (tree_function_versioning): Use update_max_bb_count..
5756         * value-prof.c (gimple_value_profile_transformations):
5757         Do not use update_max_bb_count.
5758
5759 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
5760
5761         * ipa-inline.c (compute_uninlined_call_time, compute_inlined_call_time):
5762         always use frequencies.
5763
5764 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
5765
5766         * bb-reorder.c: Remove frequencies from comments.
5767         (better_edge_p): Use profile counts.
5768         (find_traces): Dump profile counts.
5769         (rotate_loop): Use profile counts.
5770         (find_traces_1_round): Likewise.
5771         (connect_better_edge_p): Use counts instead of probabilities for
5772         reverse walk.
5773         (copy_bb_p): Drop early check for non-0 frequency.
5774         (sanitize_hot_paths): Update comments.
5775
5776 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
5777
5778         * ipa-split.c (struct split_point): Add count.
5779         (consider_split): Do not compute incoming frequency; compute incoming
5780         count and store it to split_point.
5781         (split_function): Set count of the call to split part correctly.
5782
5783 2017-11-13  Carl Love  <cel@us.ibm.com>
5784
5785         * config/rs6000/altivec.md (altivec_vsumsws_be): Add define_expand.
5786
5787 2017-11-13  Tom Tromey  <tom@tromey.com>
5788
5789         * doc/cpp.texi (Variadic Macros): Document __VA_OPT__.
5790
5791 2017-11-13  Carl Love  <cel@us.ibm.com>
5792
5793         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
5794         Add support for builtins:
5795         unsigned int vec_first_{,miss}_match_{,or_eos}index,
5796         vector {un,}signed {char,int,short},
5797         vector {un,}signed {char,int,short}) arguments.
5798         * config/rs6000/rs6000-builtin.def (VFIRSTMATCHINDEX,
5799         VFIRSTMATCHOREOSINDEX, VFIRSTMISMATCHINDEX, VFIRSTMISMATCHOREOSINDEX):
5800         Add BU_P9V_AV_2 expansions for the builtins.
5801         * config/rs6000/altivec.h (vec_first_match_index,
5802         vec_first_mismatch_index, vec_first_match_or_eos_index,
5803         vec_first_mismatch_or_eos_index): Add #defines for the builtins.
5804         * config/rs6000/rs6000-protos.h (bytes_in_mode): Add
5805         new extern declaration.
5806         * config/rs6000/rs6000.c (bytes_in_mode): Add new function.
5807         * config/rs6000/vsx.md (first_match_index_<mode>,
5808         first_match_or_eos_index_<mode>, first_mismatch_index_<mode>,
5809         first_mismatch_or_eos_index_<mode>): Add define expand.
5810         (vctzlsbb_<mode>): Add mode field to define_insn for vctzlsbb.
5811         * doc/extend.texi: Update the built-in documenation file for the new
5812         built-in functions.
5813
5814 2017-11-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
5815
5816         * match.pd: Convert fminf<N>, fminf<N>x, fmax<N>, and fmax<N>x
5817         into the min/max operations for _Float<N> and _Float<N>X types.
5818
5819 2017-11-13  Eric Botcazou  <ebotcazou@adacore.com>
5820
5821         PR lto/81351
5822         * dwarf2out.c (do_eh_frame): New static variable.
5823         (dwarf2out_begin_prologue): Set it.
5824         (dwarf2out_frame_finish): Test it instead of dwarf2out_do_eh_frame.
5825
5826 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
5827
5828         * tree-ssa-coalesce.c (coalesce_cost): Fix formating.
5829
5830         * tree-ssa-sink.c (select_best_block): Do not use frequencies.
5831
5832 2017-11-13  Eric Botcazou  <ebotcazou@adacore.com>
5833
5834         PR lto/81351
5835         * debug.h (dwarf2out_do_eh_frame): Declare.
5836         * dwarf2cfi.c (dwarf2out_do_eh_frame): New predicate.
5837         (dwarf2out_do_frame): Use it.
5838         (dwarf2out_do_cfi_asm): Likewise.
5839         * dwarf2out.c (dwarf2out_frame_finish): Likewise.
5840         (dwarf2out_assembly_start): Likewise.
5841         (dwarf2out_begin_prologue): Fix comment.
5842         * toplev.c (compile_file): Always call dwarf2out_frame_finish
5843         if the target needs either debug or unwind DWARF2 info.
5844         * lto-opts.c (lto_write_options): Do not save -fexceptions,
5845         -fnon-call-exceptions, -ffp-contract, -fmath-errno, -fsigned-zeros,
5846         -ftrapping-math, -ftrapv and -fwrapv.
5847
5848 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
5849
5850         * cgraph.c (cgraph_edge::sreal_frequency): New function.
5851         * cgraph.h (cgraph_edge::sreal_frequency): Declare.
5852         * ipa-fnsummary.c (dump_ipa_call_summary): Use sreal_frequency.
5853         (estimate_edge_size_and_time): Likewise.
5854         (ipa_merge_fn_summary_after_inlining): Likewise.
5855         * ipa-inline.c (cgraph_freq_base_rec): Remove.
5856         (compute_uninlined_call_time): Use sreal_frequency.
5857         (compute_inlined_call_time): Likewise.
5858         (ipa_inline): Do not initialize cgraph_freq_base_rec.
5859         * profile-count.c: Include sreal.h.
5860         (profile_count::to_sreal_scale): New.
5861         * profile-count.h: Forward declare sreal.
5862         (profile_count::to_sreal_scale): Declare.
5863
5864 2017-11-13  Nathan Sidwell  <nathan@acm.org>
5865
5866         * diagnostic.c (maybe_line_and_column): New.
5867         (diagnostic_get_location_text): Use it.
5868         (diagnostic_report_current_module): Likewise.
5869         (test_diagnostic_get_location_text): Add tests.
5870
5871 2017-11-13  Luis Machado  <luis.machado@linaro.org>
5872
5873         * doc/md.texi (Specifying processor pipeline description): Fix
5874         incorrect latency for the div instruction example.
5875
5876 2017-11-13  Jakub Jelinek  <jakub@redhat.com>
5877
5878         PR tree-optimization/78821
5879         * gimple-ssa-store-merging.c (compatible_load_p): Don't require
5880         that bit_not_p is the same.
5881         (imm_store_chain_info::coalesce_immediate_stores): Likewise.
5882         (split_group): Count precisely bit_not_p bits in each statement.
5883         (invert_op): New function.
5884         (imm_store_chain_info::output_merged_store): Use invert_op to
5885         emit BIT_XOR_EXPR with a xor_mask instead of BIT_NOT_EXPR if some
5886         but not all orig_stores have BIT_NOT_EXPR in the corresponding spots.
5887
5888 2017-11-13  Martin Liska  <mliska@suse.cz>
5889
5890         * gcov.c (struct coverage_info): Remove typedef of coverage_t.
5891         (struct source_info): Likewise.
5892         (add_branch_counts): Likewise.
5893         (add_line_counts): Likewise.
5894         (function_summary): Likewise.
5895         (output_intermediate_line): Likewise.
5896         (generate_results): Likewise.
5897
5898 2017-11-13  Martin Liska  <mliska@suse.cz>
5899
5900         * gcov.c (struct block_info): Remove typedef for block_t.
5901         (struct line_info): Likewise.
5902         (line_info::has_block): Likewise.
5903         (EXIT_BLOCK): Likewise.
5904         (unblock): Likewise.
5905         (circuit): Likewise.
5906         (get_cycles_count): Likewise.
5907         (process_file): Likewise.
5908         (read_graph_file): Likewise.
5909         (solve_flow_graph): Likewise.
5910         (find_exception_blocks): Likewise.
5911         (add_line_counts): Likewise.
5912         (accumulate_line_info): Likewise.
5913         (output_line_details): Likewise.
5914
5915 2017-11-13  Martin Liska  <mliska@suse.cz>
5916
5917         * gcov.c (struct arc_info): Remove typedef for arc_t.
5918         (struct line_info): Likewise.
5919         (add_branch_counts): Likewise.
5920         (output_branch_count): Likewise.
5921         (function_info::~function_info): Likewise.
5922         (circuit): Likewise.
5923         (output_intermediate_line): Likewise.
5924         (read_graph_file): Likewise.
5925         (solve_flow_graph): Likewise.
5926         (find_exception_blocks): Likewise.
5927         (add_line_counts): Likewise.
5928         (accumulate_line_info): Likewise.
5929         (output_line_details): Likewise.
5930         (output_function_details): Likewise.
5931
5932 2017-11-13  Martin Liska  <mliska@suse.cz>
5933
5934         * gcov.c (struct function_info): Remove typedef for function_t.
5935         (struct source_info): Likewise.
5936         (source_info::get_functions_at_location): Likewise.
5937         (solve_flow_graph): Likewise.
5938         (find_exception_blocks): Likewise.
5939         (add_line_counts): Likewise.
5940         (output_intermediate_file): Likewise.
5941         (process_file): Likewise.
5942         (generate_results): Likewise.
5943         (release_structures): Likewise.
5944         (read_graph_file): Likewise.
5945         (read_count_file): Likewise.
5946         (accumulate_line_counts): Likewise.
5947         (output_lines): Likewise.
5948
5949 2017-11-13  Martin Liska  <mliska@suse.cz>
5950
5951         * gcov.c (function_info::function_info): Remove num_counts
5952         and add vector<gcov_type>.
5953         (function_info::~function_info): Use the vector.
5954         (process_file): Likewise.
5955         (read_graph_file): Likewise.
5956         (read_count_file): Likewise.
5957         (solve_flow_graph): Likewise.
5958
5959 2017-11-13  Martin Liska  <mliska@suse.cz>
5960
5961         * gcov.c (function_info::is_artificial): New function.
5962         (process_file): Erase all artificial early.
5963         (generate_results): Skip as all artificial are already
5964         removed.
5965
5966 2017-11-13  Martin Liska  <mliska@suse.cz>
5967
5968         * gcov.c (read_graph_file): Store to global vector of functions.
5969         (read_count_file): Iterate the vector.
5970         (process_file): Likewise.
5971         (generate_results): Likewise.
5972         (release_structures): Likewise.
5973
5974 2017-11-13  Jakub Jelinek  <jakub@redhat.com>
5975
5976         PR tree-optimization/82954
5977         * gimple-ssa-store-merging.c
5978         (imm_store_chain_info::coalesce_immediate_stores): If
5979         !infof->ops[N].base_addr, split group if info->ops[N].base_addr.
5980
5981 2017-11-13  Richard Sandiford  <richard.sandiford@linaro.org>
5982
5983         * config/aarch64/aarch64-simd.md (aarch64_store_lane0<mode>):
5984         Upddate call to ENDIAN_LANE_N.
5985         (aarch64_<sur>dot_lane<vsi2qi>): Use aarch64_endian_lane_rtx.
5986         (aarch64_<sur>dot_laneq<vsi2qi>): Likewise.
5987         (*aarch64_simd_vec_copy_lane<mode>): Update calls to ENDIAN_LANE_N
5988         and use aarch64_endian_lane_rtx.
5989         (*aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
5990
5991 2017-11-12  Tom de Vries  <tom@codesourcery.com>
5992
5993         * config/riscv/riscv.h (ASM_OUTPUT_LABELREF): Wrap in do {} while (0).
5994
5995 2017-11-12  Tom de Vries  <tom@codesourcery.com>
5996
5997         * config/elfos.h (ASM_OUTPUT_ASCII): Remove semicolon after macro body.
5998
5999 2017-11-12  Tom de Vries  <tom@codesourcery.com>
6000
6001         * config/cr16/cr16.h (ASM_OUTPUT_LABELREF): Remove semicolon after macro
6002         body.
6003         * config/powerpcspe/xcoff.h (ASM_OUTPUT_LABELREF): Same.
6004         * config/rs6000/xcoff.h (ASM_OUTPUT_LABELREF): Same.
6005         * defaults.h (ASM_OUTPUT_LABELREF): Same.
6006
6007 2017-11-11  Martin Sebor  <msebor@redhat.com>
6008
6009         PR c/81117
6010         * doc/extend.texi (attribute nonstring): Remove spurious argument.
6011
6012         PR bootstrap/82948
6013         * prefic.c (translate_name): Replace strncpy with memcpy to
6014         avoid -Wstringop-truncation.
6015
6016 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
6017
6018         * tree-ssa-loop-im.c (execute_sm_if_changed): Do not compute freq_sum.
6019
6020 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
6021
6022         * predict.c (maybe_hot_frequency_p): Do not use cfun.
6023
6024 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
6025
6026         * tree-ssa-tail-merge.c (replace_block_by): Fix and re-enable profile
6027         merging.
6028
6029 2017-11-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
6030
6031         * config/rs6000/rs6000.md (bswaphi2_reg): On ISA 3.0 systems,
6032         enable generating XXBRH if the value is in a vector register.
6033         (bswapsi2_reg): On ISA 3.0 systems, enable generating XXBRW if the
6034         value is in a vector register.
6035         (bswapdi2_reg): On ISA 3.0 systems, always use XXBRD to do
6036         register to register bswap64's instead of doing the GPR sequence
6037         used on previous machines.
6038         (bswapdi2_xxbrd): New insn.
6039         (bswapdi2_reg): Disallow on ISA 3.0.
6040         (register to register bswap64 splitter): Do not split the insn on
6041         ISA 3.0 systems that use XXBRD.
6042
6043 2017-11-10  Martin Sebor  <msebor@redhat.com>
6044
6045         PR c/81117
6046         * config/darwin-c.c (framework_construct_pathname): Replace strncpy
6047         with memcpy.
6048         (find_subframework_file): Same.
6049
6050 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
6051
6052         * auto-profile.c (afdo_indirect_call): Drop frequency.
6053         * cgraph.c (symbol_table::create_edge): Drop frequency argument.
6054         (cgraph_node::create_edge): Drop frequency argument.
6055         (cgraph_node::create_indirect_edge): Drop frequency argument.
6056         (cgraph_edge::make_speculative): Drop frequency arguments.
6057         (cgraph_edge::resolve_speculation): Do not update frequencies
6058         (cgraph_edge::dump_edge_flags): Do not dump frequency.
6059         (cgraph_node::dump): Check consistency in IPA mode.
6060         (cgraph_edge::maybe_hot_p): Use IPA counter.
6061         (cgraph_edge::verify_count_and_frequency): Rename to ...
6062         (cgraph_edge::verify_count): ... this one; drop frequency checking.
6063         (cgraph_node::verify_node): Update.
6064         * cgraph.h (struct cgraph_edge): Drop frequency.
6065         (cgraph_edge::frequency): New function.
6066         * cgraphbuild.c (pass_build_cgraph_edges::execute): Donot pass
6067         frequencies.
6068         (cgraph_edge::rebuild_edges): Likewise.
6069         * cgraphclones.c (cgraph_edge::clone): Scale only counts.
6070         (duplicate_thunk_for_node): Do not pass frequency.
6071         (cgraph_node::create_clone): Scale only counts.
6072         (cgraph_node::create_virtual_clone): Do not pass frequency.
6073         (cgraph_node::create_edge_including_clones): Do not pass frequency.
6074         (cgraph_node::create_version_clone): Do not pass frequency.
6075         * cgraphunit.c (cgraph_node::analyze): Do not pass frequency.
6076         (cgraph_node::expand_thunk): Do not pass frequency.
6077         (cgraph_node::create_wrapper): Do not pass frequency.
6078         * gimple-iterator.c (update_call_edge_frequencies): Do not pass
6079         frequency.
6080         * gimple-streamer-in.c (input_bb): Scale only IPA counts.
6081         * ipa-chkp.c (chkp_produce_thunks): Do not pass frequency.
6082         * ipa-cp.c (ipcp_lattice::print): Use frequency function.
6083         (gather_caller_stats): Use frequency function.
6084         (ipcp_cloning_candidate_p): Use frequency function.
6085         (ipcp_propagate_stage): Use frequency function.
6086         (get_info_about_necessary_edges): Use frequency function.
6087         (update_profiling_info): Update only IPA profile.
6088         (update_specialized_profile): Use frequency functoin.
6089         (perhaps_add_new_callers): Update only IPA profile.
6090         * ipa-devirt.c (ipa_devirt): Use IPA profile.
6091         * ipa-fnsummary.c (redirect_to_unreachable): Do not set frequrency.
6092         (dump_ipa_call_summary): Use frequency function.
6093         (estimate_edge_size_and_time): Use frequency function.
6094         (ipa_merge_fn_summary_after_inlining): Use frequency function.
6095         * ipa-inline-analysis.c (do_estimate_edge_time): Use IPA profile.
6096         * ipa-inline-transform.c (update_noncloned_frequencies): Rename to ..
6097         (update_noncloned_counts): ... ths one; scale counts only.
6098         (clone_inlined_nodes): Do not scale frequency.
6099         (inline_call): Do not pass frequency.
6100         * ipa-inline.c (compute_uninlined_call_time): Use IPA profile.
6101         (compute_inlined_call_time): Use IPA profile.
6102         (want_inline_small_function_p): Use IPA profile.
6103         (want_inline_self_recursive_call_p): Use IPA profile.
6104         (edge_badness): Use IPA profile.
6105         (lookup_recursive_calls): Use IPA profile.
6106         (recursive_inlining): Do not pass frequency.
6107         (resolve_noninline_speculation): Do not update frequency.
6108         (inline_small_functions): Collect max of IPA profile.
6109         (dump_overall_stats): Dump IPA porfile.
6110         (dump_inline_stats): Dump IPA porfile.
6111         (ipa_inline): Collect IPA stats.
6112         * ipa-inline.h (clone_inlined_nodes): Update prototype.
6113         * ipa-profile.c (ipa_propagate_frequency_1): Use frequency function.
6114         (ipa_propagate_frequency): Use frequency function.
6115         (ipa_profile): Cleanup.
6116         * ipa-prop.c (ipa_make_edge_direct_to_target): Do not pass frequency
6117         * ipa-utils.c (ipa_merge_profiles): Merge all profiles.
6118         * lto-cgraph.c (lto_output_edge): Do not stream frequency.
6119         (input_node): Do not stream frequency.
6120         (input_edge): Do not stream frequency.
6121         (merge_profile_summaries): Scale only IPA profiles.
6122         * omp-simd-clone.c (simd_clone_adjust): Do not pass frequency.
6123         * predict.c (drop_profile): Do not recompute frequency.
6124         * trans-mem.c (ipa_tm_insert_irr_call): Do not pass frequency.
6125         (ipa_tm_insert_gettmclone_call): Do not pass frequency.
6126         * tree-cfg.c (execute_fixup_cfg): Drop profile to global0 if needed.
6127         * tree-chkp.c (chkp_copy_bounds_for_assign): Do not pass frequency.
6128         * tree-emutls.c (gen_emutls_addr): Do not pass frequency.
6129         * tree-inline.c (copy_bb): Do not scale frequency.
6130         (expand_call_inline): Do not scale frequency.
6131         (tree_function_versioning): Do not scale frequency.
6132         * ubsan.c (ubsan_create_edge): Do not pass frequency.
6133
6134 2017-11-10  Julia Koval  <julia.koval@intel.com>
6135
6136         * config/i386/gfniintrin.h (_mm_gf2p8affine_epi64_epi8)
6137         (_mm256_gf2p8affine_epi64_epi8, _mm_mask_gf2p8affine_epi64_epi8)
6138         (_mm_maskz_gf2p8affine_epi64_epi8, _mm256_mask_gf2p8affine_epi64_epi8)
6139         (_mm256_maskz_gf2p8affine_epi64_epi8)
6140         (_mm512_mask_gf2p8affine_epi64_epi8, _mm512_gf2p8affine_epi64_epi8)
6141         (_mm512_maskz_gf2p8affine_epi64_epi8): New intrinsics.
6142         * config/i386/i386-builtin.def (__builtin_ia32_vgf2p8affineqb_v64qi)
6143         (__builtin_ia32_vgf2p8affineqb_v32qi)
6144         (__builtin_ia32_vgf2p8affineqb_v16qi): New builtins.
6145         * config/i386/sse.md (vgf2p8affineqb_<mode><mask_name>): New pattern.
6146
6147 2017-11-10  Tamar Christina  <tamar.christina@arm.com>
6148
6149         PR target/82641
6150         * config/arm/arm.c
6151         (arm_option_override): Refactor.
6152         (arm_option_reconfigure_globals): New.
6153         (arm_options_perform_arch_sanity_checks): New.
6154         * config/arm/arm-protos.h (arm_option_reconfigure_globals):
6155         New prototype.
6156         (arm_options_perform_arch_sanity_checks): Likewise
6157
6158 2017-11-10  Pat Haugen  <pthaugen@us.ibm.com>
6159
6160         * rs6000/power9.md (power9-qpdiv): Correct DFU pipe usage.
6161         (power9-qpmul): New.
6162         * rs6000/rs6000.md ("type" attr): Add qmul.
6163         (mul<mode>3, fma<mode>4_hw, *fms<mode>4_hw, *nfma<mode>4_hw,
6164         *nfms<mode>4_hw, mul<mode>3_odd, fma<mode>4_odd, *fms<mode>4_odd,
6165         *nfma<mode>4_odd, *nfms<mode>4_odd): Change type to qmul.
6166
6167 2017-11-10  Martin Sebor  <msebor@redhat.com>
6168
6169         PR c/81117
6170         * builtins.c (compute_objsize): Handle arrays that
6171         compute_builtin_object_size likes to fail for.  Make extern.
6172         * builtins.h (compute_objsize): Declare.
6173         (check_strncpy_sizes): New function.
6174         (expand_builtin_strncpy): Call check_strncpy_sizes.
6175         * gimple-fold.c (gimple_fold_builtin_strncpy): Implement
6176         -Wstringop-truncation.
6177         (gimple_fold_builtin_strncat): Same.
6178         * gimple.c (gimple_build_call_from_tree): Set call location.
6179         * tree-ssa-strlen.c (strlen_to_stridx): New global variable.
6180         (maybe_diag_bound_equal_length, is_strlen_related_p): New functions.
6181         (handle_builtin_stxncpy, handle_builtin_strncat): Same.
6182         (handle_builtin_strlen): Use strlen_to_stridx.
6183         (strlen_optimize_stmt): Handle flavors of strncat, strncpy, and
6184         stpncpy.
6185         Use strlen_to_stridx.
6186         (pass_strlen::execute): Release strlen_to_stridx.
6187         * doc/invoke.texi (-Wsizeof-pointer-memaccess): Document enhancement.
6188         (-Wstringop-truncation): Document new option.
6189
6190 2017-11-10  Martin Liska  <mliska@suse.cz>
6191
6192         PR gcov-profile/82702
6193         * gcov.c (main): Handle intermediate files in a different
6194         way.
6195         (get_gcov_intermediate_filename): New function.
6196         (output_gcov_file): Remove support of intermediate files.
6197         (generate_results): Allocate intermediate file.
6198         (release_structures): Clean-up properly fn_end.
6199         (output_intermediate_file): Start iterating with line 1.
6200
6201 2017-11-10  Jakub Jelinek  <jakub@redhat.com>
6202
6203         PR tree-optimization/82929
6204         * gimple-ssa-store-merging.c (struct store_immediate_info): Add
6205         ops_swapped_p non-static data member.
6206         (store_immediate_info::store_immediate_info): Clear it.
6207         (imm_store_chain_info::coalesce_immediate_stores): If swapping
6208         ops set ops_swapped_p.
6209         (count_multiple_uses): Handle ops_swapped_p.
6210
6211 2017-11-10  Martin Liska  <mliska@suse.cz>
6212
6213         * coverage.c (coverage_init): Stream information about
6214         support of has_unexecuted_blocks.
6215         * doc/gcov.texi: Document that.
6216         * gcov-dump.c (dump_gcov_file): Support it in gcov_dump tool.
6217         * gcov.c (read_graph_file): Likewise.
6218         (output_line_beginning): Fix a small issue with
6219         color output.
6220
6221 2017-11-10  Bin Cheng  <bin.cheng@arm.com>
6222
6223         * tree-predcom.c (determine_roots_comp): Avoid memory leak by freeing
6224         reference of trivial component.
6225
6226 2017-11-10  Jakub Jelinek  <jakub@redhat.com>
6227
6228         PR bootstrap/82916
6229         * gimple-ssa-store-merging.c
6230         (pass_store_merging::terminate_all_aliasing_chains): For
6231         gimple_store_p stmts also call refs_output_dependent_p.
6232
6233         PR rtl-optimization/82913
6234         * compare-elim.c (try_merge_compare): Punt if def_insn is not
6235         single set.
6236
6237 2017-11-09  Jeff Law  <law@redhat.com>
6238
6239         * vr-values.h: New file with vr_values class.
6240         * tree-vrp.c: Include vr-values.h
6241         (vrp_value_range_pool, vrp_equiv_obstack, num_vr_values): Move static
6242         data objects into the vr_values class.
6243         (vr_value, values_propagated, vr_phi_edge_counts): Likewise.
6244         (get_value_range): Make it a member function within vr_values class.
6245         (set_defs_to_varying, update_value_range, add_equivalence): Likewise.
6246         (vrp_stmt_computes_nonzero_p, op_with_boolean_value_range_p): Likewise.
6247         (op_with_constant_singleton_value_range): Likewise.
6248         (extract_range_for_var_from_comparison_expr): Likewise.
6249         (extract_range_from_assert, extract_range_from_ssa_name): Likewise.
6250         (extract_range_from_binary_expr): Likewise.
6251         (extract_range_from_unary_expr): Likewise.
6252         (extract_range_from_cond_expr, extrat_range_from_comparison): Likewise.
6253         (check_for_binary_op_overflow, extract_range_basic): Likewise.
6254         (extract_range_from_assignment, adjust_range_with_scev): Likewise.
6255         (dump_all_value_ranges, get_vr_for_comparison): Likewise.
6256         (compare_name_with_value, compare_names): Likewise.
6257         (vrp_evaluate_conditional_warnv_with_ops_using_ranges): Likewise.
6258         (vrp_evaluate_conditional_warnv_with_ops): Likewise.  Remove prototype.
6259         (vrp_evaluate_conditional, vrp_visit_cond_stmt): Likewise.
6260         (vrp_visit_switch_stmt, extract_range_from_stmt): Likewise.
6261         (extract_range_from_phi_node): Likewise.
6262         (simplify_truth_ops_using_ranges): Likewise.
6263         (simplify_div_or_mod_using_ranges): Likewise.
6264         (simplify_min_or_max_using_ranges, simplify_abs_using_ranges): Likewise.
6265         (simplify_bit_ops_using_ranges, simplify_cond_using_ranges_1): Likewise.
6266         (simplify_cond_using_ranges_2, simplify_switch_using_ranges): Likewise.
6267         (simplify_float_conversion_using_ranges): Likewise.
6268         (simplify_internal_call_using_ranges): Likewise.
6269         (two_valued_val_range_p, simplify_stmt_using_ranges): Likewise.
6270         (vrp_visit_assignment_or_call): Likewise.  Smuggle class instance
6271         poitner via x_vr_values for calls into gimple folder.
6272         (vrp_initialize_lattice): Make this the vr_values ctor.
6273         (vrp_free_lattice): Make this the vr_values dtor.
6274         (set_vr_value): New function.
6275         (class vrp_prop): Add vr_values data member.  Add various member
6276         functions as well as member functions that delegate to vr_values.
6277         (check_array_ref): Make a member function within vrp_prop class.
6278         (search_for_addr_array, vrp_initialize): Likewise.
6279         (vrp_finalize): Likewise.  Revamp to avoid direct access to
6280         vr_value, values_propagated, etc.
6281         (check_array_bounds): Extract vrp_prop class instance pointer from
6282         walk info structure.  Use it to call member functions.
6283         (check_all_array_refs): Make a member function within vrp_prop class.
6284         Smuggle class instance pointer via walk info structure.
6285         (x_vr_values): New local static.
6286         (vrp_valueize): Use x_vr_values to get class instance.
6287         (vr_valueize_1): Likewise.
6288         (class vrp_folder): Add vr_values data member.  Add various member
6289         functions as well as member functions that delegate to vr_values.
6290         (fold_predicate_in): Make a mber fucntion within vrp_folder class.
6291         (simplify_stmt_for_jump_threading): Extract smuggled vr_values
6292         class instance from vr_values.  Use it to call member functions.
6293         (vrp_dom_walker): Add vr_values data member.
6294         (vrp_dom_walker::after_dom_children): Smuggle vr_values class
6295         instance via x_vr_values.
6296         (identify_jump_threads): Accept vr_values as argument.  Store
6297         it into the walker structure.
6298         (evrp_dom_walker): Add vr_values class data member.  Add various
6299         delegators.
6300         (evrp_dom_walker::try_find_new_range): Use vr_values data
6301         member to access the memory allocator.
6302         (evrp_dom_walker::before_dom_children): Store vr_values class
6303         instance into the vrp_folder class.
6304         (evrp_dom_walker::push_value_range): Rework to avoid direct
6305         access to num_vr_values and vr_value.
6306         (evrp_dom_walker::pop_value_range): Likewise.
6307         (execute_early_vrp): Remove call to vrp_initialize_lattice.
6308         Use vr_values to get to dump_all_value_ranges member function.
6309         Remove call to vrp_free_lattice.  Call vrp_initialize, vrp_finalize,
6310         and simplify_cond_using_ranges_2 via vrp_prop class instance.
6311         Pass vr_values class instance down to identify_jump_threads.
6312         Remove call to vrp_free_lattice.
6313         (debug_all_value_ranges): Remove.
6314
6315         * tree-vrp.c (vrp_prop): Move class to earlier point in the file.
6316         (vrp_folder): Likewise.
6317
6318         * tree-vrp.c (set_value_range): Do not reference vrp_equiv_obstack.
6319         Get it from the existing bitmap instead.
6320         (vrp_intersect_ranges_1): Likewise.
6321
6322 2017-11-09  Jakub Jelinek  <jakub@redhat.com>
6323
6324         * gimple-ssa-store-merging.c (struct store_immediate_info): Add
6325         bit_not_p field.
6326         (store_immediate_info::store_immediate_info): Add bitnotp argument,
6327         set bit_not_p to it.
6328         (imm_store_chain_info::coalesce_immediate_stores): Break group
6329         if bit_not_p is different.
6330         (count_multiple_uses, split_group,
6331         imm_store_chain_info::output_merged_store): Handle info->bit_not_p.
6332         (handled_load): Avoid multiple chained BIT_NOT_EXPRs.
6333         (pass_store_merging::process_store): Handle BIT_{AND,IOR,XOR}_EXPR
6334         result inverted using BIT_NOT_EXPR, compute bit_not_p, pass it
6335         to store_immediate_info ctor.
6336
6337 2017-11-09  Jim Wilson  <jimw@sifive.com>
6338
6339         * collect2.c (OBJECT_FORMAT_COFF): Remove EXTENDED_COFF support.
6340         (scan_prog_file): Likewise.
6341
6342 2017-11-09  Jan Hubicka  <hubicka@ucw.cz>
6343
6344         * bb-reorder.c (max_entry_frequency): Remove.
6345         (find_traces, rotate_loop, mark_bb_visited, connect_better_edge_p,
6346         connect_traces, push_to_next_round_p): Remove prototypes.
6347         (find_traces_1_round): Use counts only.
6348         (push_to_next_round_p): Likewise.
6349         (find_traces): Likewise.
6350         (rotate_loop): Likewise.
6351         (find_traces_1_round): Likewise.
6352         (connect_traces): Likewise.
6353         (edge_order): Likewise.
6354
6355 2017-11-09  Thomas Preud'homme  <thomas.preudhomme@arm.com>
6356
6357         * config/arm/arm.c (output_return_instruction): Add comments to
6358         indicate requirement for cmse_nonsecure_entry return to account
6359         for the size of clearing instruction output here.
6360         (thumb_exit): Likewise.
6361         * config/arm/thumb2.md (thumb2_cmse_entry_return): Fix length for
6362         return in hardfloat mode.
6363
6364 2017-11-09  Segher Boessenkool  <segher@kernel.crashing.org>
6365
6366         * config/rs6000/rs6000.c (machine_function): Add a bool,
6367         "toc_is_wrapped_separately".
6368         (rs6000_option_override_internal): Enable OPTION_MASK_SAVE_TOC_INDIRECT
6369         if it wasn't explicitly set or unset, we are optimizing for speed, and
6370         doing separate shrink-wrapping.
6371         (rs6000_get_separate_components): Enable the TOC component if
6372         saving the TOC register in the prologue.
6373         (rs6000_components_for_bb): Handle the TOC component.
6374         (rs6000_emit_prologue_components): Store the TOC register where needed.
6375         (rs6000_set_handled_components): Mark TOC as handled, if handled.
6376         (rs6000_emit_prologue): Don't save the TOC if that is already done.
6377
6378 2017-11-09  Martin Jambor  <mjambor@suse.cz>
6379
6380         * ipa-param-manipulation.c: New file.
6381         * ipa-param-manipulation.h: Likewise.
6382         * Makefile.in (OBJS): Add ipa-param-manipulation.o.
6383         (PLUGIN_HEADERS): Addded ipa-param-manipulation.h
6384         * ipa-param.h (ipa_parm_op): Moved to ipa-param-manipulation.h.
6385         (ipa_parm_adjustment): Likewise.
6386         (ipa_parm_adjustment_vec): Likewise.
6387         (ipa_get_vector_of_formal_parms): Moved declaration to
6388         ipa-param-manipulation.h.
6389         (ipa_get_vector_of_formal_parm_types): Likewise.
6390         (ipa_modify_formal_parameters): Likewise.
6391         (ipa_modify_call_arguments): Likewise.
6392         (ipa_combine_adjustments): Likewise.
6393         (ipa_dump_param_adjustments): Likewise.
6394         (ipa_modify_expr): Likewise.
6395         (ipa_get_adjustment_candidate): Likewise.
6396         * ipa-prop.c (ipa_get_vector_of_formal_parms): Moved to
6397         ipa-param-manipulation.c.
6398         (ipa_get_vector_of_formal_parm_types): Likewise.
6399         (ipa_modify_formal_parameters): Likewise.
6400         (ipa_modify_call_arguments): Likewise.
6401         (ipa_modify_expr): Likewise.
6402         (get_ssa_base_param): Likewise.
6403         (ipa_get_adjustment_candidate): Likewise.
6404         (index_in_adjustments_multiple_times_p): Likewise.
6405         (ipa_combine_adjustments): Likewise.
6406         (ipa_dump_param_adjustments): Likewise.
6407         * tree-sra.c: Also include ipa-param-manipulation.h
6408         * omp-simd-clone.c: Include ipa-param-manipulation.h instead of
6409         ipa-param.h.
6410
6411 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
6412             Alan Hayward  <alan.hayward@arm.com>
6413             David Sherwood  <david.sherwood@arm.com>
6414
6415         * doc/sourcebuild.texi (vect_masked_store): Document.
6416
6417 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
6418             Alan Hayward  <alan.hayward@arm.com>
6419             David Sherwood  <david.sherwood@arm.com>
6420
6421         * doc/sourcebuild.texi (vect_align_stack_vars): Document.
6422
6423 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
6424             Alan Hayward  <alan.hayward@arm.com>
6425             David Sherwood  <david.sherwood@arm.com>
6426
6427         * doc/sourcebuild.texi (vect_variable_length): Document.
6428
6429 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
6430             Alan Hayward  <alan.hayward@arm.com>
6431             David Sherwood  <david.sherwood@arm.com>
6432
6433         * doc/sourcebuild.texi (vect_unaligned_possible): Document.
6434
6435 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
6436             Alan Hayward  <alan.hayward@arm.com>
6437             David Sherwood  <david.sherwood@arm.com>
6438
6439         * doc/sourcebuild.texi (vect_element_align_preferred): Document.
6440
6441 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
6442             Alan Hayward  <alan.hayward@arm.com>
6443             David Sherwood  <david.sherwood@arm.com>
6444
6445         * doc/sourcebuild.texi (vect_perm_short, vect_perm_byte): Document
6446         previously undocumented selectors.
6447         (vect_perm3_byte, vect_perm3_short, vect_perm3_int): Document.
6448
6449 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
6450
6451         * doc/rtl.texi (const_vector): Say that elements can be
6452         const_wide_ints too.
6453         * emit-rtl.h (valid_for_const_vec_duplicate_p): Declare.
6454         * emit-rtl.c (valid_for_const_vec_duplicate_p): New function.
6455         (gen_vec_duplicate): Use it instead of CONSTANT_P.
6456         * optabs.c (expand_vector_broadcast): Likewise.
6457
6458 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
6459             Alan Hayward  <alan.hayward@arm.com>
6460             David Sherwood  <david.sherwood@arm.com>
6461
6462         * tree-ssa-loop-ivopts.c (get_address_cost): Try using a
6463         scaled index even if the unscaled address was invalid.
6464         Don't increase the complexity of using a scale in that case.
6465
6466 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
6467             Alan Hayward  <alan.hayward@arm.com>
6468             David Sherwood  <david.sherwood@arm.com>
6469
6470         * doc/rtl.texi: Rewrite the subreg rules so that they partition
6471         the inner register into REGMODE_NATURAL_SIZE bytes rather than
6472         UNITS_PER_WORD bytes.
6473         * emit-rtl.c (validate_subreg): Divide subregs into blocks
6474         based on REGMODE_NATURAL_SIZE of the inner mode.
6475         (gen_lowpart_common): Split the SCALAR_FLOAT_MODE_P and
6476         !SCALAR_FLOAT_MODE_P cases.  Use REGMODE_NATURAL_SIZE for the latter.
6477         * expmed.c (lowpart_bit_field_p): Divide the value up into
6478         chunks of REGMODE_NATURAL_SIZE rather than UNITS_PER_WORD.
6479         * expr.c (store_constructor): Use REGMODE_NATURAL_SIZE to test
6480         whether something is likely to occupy more than one register.
6481
6482 2017-11-09  Jan Hubicka  <hubicka@ucw.cz>
6483
6484         PR ipa/82879
6485         * ipa-inline-transform.c (update_noncloned_frequencies): Use
6486         profile_count::adjust_for_ipa_scaling.
6487         * tree-inline.c (copy_bb, copy_cfg_body): Likewise.
6488         * profile-count.c (profile_count::adjust_for_ipa_scaling): New member
6489         function.
6490         * profile-count.h (profile_count::adjust_for_ipa_scaling): Declare.
6491
6492 2017-11-09  Jakub Jelinek  <jakub@redhat.com>
6493
6494         * gimple-ssa-store-merging.c (count_multiple_uses): New function.
6495         (split_group): Add total_orig and total_new arguments, estimate the
6496         number of statements related to the store group without store merging
6497         and with store merging.
6498         (imm_store_chain_info::output_merged_store): Adjust split_group
6499         callers, punt if estimated number of statements with store merging
6500         is not smaller than estimated number of statements without it.
6501         Formatting fix.
6502         (handled_load): Remove has_single_use checks.
6503         (pass_store_merging::process_store): Likewise.
6504
6505 2017-11-09  Richard Biener  <rguenther@suse.de>
6506
6507         PR tree-optimization/82902
6508         * tree-ssa-phiprop.c (propagate_with_phi): Test proper type.
6509
6510 2017-11-09  Martin Liska  <mliska@suse.cz>
6511
6512         PR target/82863
6513         * emit-rtl.c (init_emit_regs): Initialize split_branch_probability to
6514         uninitialized.
6515
6516 2017-11-09  Martin Liska  <mliska@suse.cz>
6517
6518         PR tree-optimization/82669
6519         * sbitmap.h (bmp_iter_set_init): Remove non needed check.
6520
6521 2017-11-09  Martin Liska  <mliska@suse.cz>
6522
6523         PR gcov-profile/48463
6524         * coverage.c (coverage_begin_function): Output also end locus
6525         of a function and information whether the function is
6526         artificial.
6527         * gcov-dump.c (tag_function): Parse and print the information.
6528         * gcov.c (INCLUDE_MAP): Add include.
6529         (INCLUDE_SET): Likewise.
6530         (struct line_info): Move earlier in the source file because
6531         of vector<line_info> in function_info structure.
6532         (line_info::line_info): Likewise.
6533         (line_info::has_block): Likewise.
6534         (struct source_info): Add new member index.
6535         (source_info::get_functions_at_location): New function.
6536         (function_info::group_line_p): New function.
6537         (output_intermediate_line): New function.
6538         (output_intermediate_file): Use the mentioned function.
6539         (struct function_start): New.
6540         (struct function_start_pair_hash): Likewise.
6541         (process_file): Add code that identifies group functions.
6542         Assign lines either to global or function scope.
6543         (generate_results): Skip artificial functions.
6544         (find_source): Assign index for each source file.
6545         (read_graph_file): Read new flag artificial and end_line.
6546         (add_line_counts): Assign it either to global of function scope.
6547         (accumulate_line_counts): Isolate core of the function to
6548         accumulate_line_info and call it for both function and global
6549         scope lines.
6550         (accumulate_line_info): New function.
6551         (output_line_beginning): Fix GNU coding style.
6552         (print_source_line): New function.
6553         (output_line_details): Likewise.
6554         (output_function_details): Likewise.
6555         (output_lines): Iterate both source (global) scope and function
6556         scope.
6557         (struct function_line_start_cmp): New class.
6558         * doc/gcov.texi: Reflect changes in documentation.
6559
6560 2017-11-09  Jakub Jelinek  <jakub@redhat.com>
6561
6562         PR debug/82837
6563         * dwarf2out.c (const_ok_for_output_1): Reject NEG in addition to NOT.
6564         (mem_loc_descriptor): Handle (const (neg (...))) as (neg (const (...)))
6565         and similarly for not instead of neg.
6566
6567 2017-11-08  Andi Kleen  <ak@linux.intel.com>
6568
6569         * config/i386/i386.opt: Add -mforce-indirect-call.
6570         * config/i386/predicates.md: Check for flag_force_indirect_call.
6571         * doc/invoke.texi: Document -mforce-indirect-call
6572
6573 2017-11-08  Kito Cheng  <kito.cheng@gmail.com>
6574
6575         * config/riscv/riscv-protos.h (riscv_slow_unaligned_access_p):
6576         New extern.
6577         (MOVE_RATIO): Use riscv_slow_unaligned_access_p.
6578         config/riscv/riscv.c (predict.h): New include.
6579         (riscv_slow_unaligned_access_p): No longer static.
6580         (riscv_block_move_straight): Add require.
6581         * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): Delete.
6582
6583 2017-11-08  Jakub Jelinek  <jakub@redhat.com>
6584
6585         PR target/82855
6586         * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>,
6587         <avx512>_eq<mode>3<mask_scalar_merge_name>_1): Use
6588         nonimmediate_operand predicate for operand 1 instead of
6589         register_operand.
6590
6591 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6592
6593         * config/aarch64/aarch64-simd.md (store_pair_lanes<mode>):
6594         New pattern.
6595         * config/aarch64/constraints.md (Uml): New constraint.
6596         * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): New
6597         predicate.
6598
6599 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6600
6601         * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
6602         of two vec_duplicates into a vec_concat.
6603
6604 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6605
6606         * simplify-rtx.c (simplify_ternary_operation, VEC_MERGE):
6607         Simplify vec_merge of vec_duplicate and vec_concat.
6608         * config/aarch64/constraints.md (Utq): New constraint.
6609         * config/aarch64/aarch64-simd.md (load_pair_lanes<mode>): New
6610         define_insn.
6611
6612 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6613
6614         * simplify-rtx.c (simplify_ternary_operation, VEC_MERGE):
6615         Simplify vec_merge of vec_duplicate and const_vector.
6616         * config/aarch64/predicates.md (aarch64_simd_or_scalar_imm_zero):
6617         New predicate.
6618         * config/aarch64/aarch64-simd.md (*aarch64_combinez<mode>): Use VDC
6619         mode iterator.  Update predicate on operand 1 to
6620         handle non-const_vec constants.  Delete constraints.
6621         (*aarch64_combinez_be<mode>): Likewise for operand 2.
6622
6623 2017-11-08  Jakub Jelinek  <jakub@redhat.com>
6624
6625         PR tree-optimization/78821
6626         * gimple-ssa-store-merging.c (struct store_operand_info): Add bit_not_p
6627         data member.
6628         (store_operand_info::store_operand_info): Initialize it to false.
6629         (pass_store_merging::terminate_all_aliasing_chains): Rewritten to use
6630         ref_maybe_used_by_stmt_p and stmt_may_clobber_ref_p on lhs of each
6631         store in the group, and if chain_info is non-NULL, to ignore altogether
6632         that chain.
6633         (compatible_load_p): Fail if bit_not_p does not match.
6634         (imm_store_chain_info::output_merged_store): Handle bit_not_p loads.
6635         (handled_load): Fill in bit_not_p.  Handle BIT_NOT_EXPR.
6636         (pass_store_merging::process_store): Adjust
6637         terminate_all_aliasing_chains calls to pass NULL in all current spots,
6638         call terminate_all_aliasing_chains newly when adding a store into
6639         a chain with non-NULL chain_info.
6640
6641 2017-11-08  Wilco Dijkstra  <wdijkstr@arm.com>
6642
6643         * config/aarch64/aarch64.c (aarch64_can_eliminate): Simplify logic.
6644
6645 2017-11-08  Wilco Dijkstra  <wdijkstr@arm.com>
6646
6647         * config/aarch64/aarch64.c (aarch64_frame_pointer_required)
6648         Remove.
6649         (aarch64_layout_frame): Initialise emit_frame_chain.
6650         (aarch64_can_eliminate): Remove omit leaf frame pointer code.
6651         (TARGET_FRAME_POINTER_REQUIRED): Remove define.
6652
6653 2017-11-08  Martin Liska  <mliska@suse.cz>
6654
6655         * gimplify.c (expand_FALLTHROUGH_r): Simplify usage
6656         of gimple_call_internal_p.
6657
6658 2017-11-07  Tom de Vries  <tom@codesourcery.com>
6659
6660         * config/mips/mips.h (ASM_OUTPUT_LABELREF): Wrap in "do {} while (0)".
6661
6662 2017-11-07  Tom de Vries  <tom@codesourcery.com>
6663
6664         * config/mips/mips.h (ASM_OUTPUT_CASE_END): Remove semicolon after
6665         "do {} while (0)".
6666
6667 2017-11-08  Martin Liska  <mliska@suse.cz>
6668
6669         PR sanitizer/82792
6670         * gimplify.c (expand_FALLTHROUGH_r): Skip IFN_ASAN_MARK.
6671
6672 2017-11-07  Eric Botcazou  <ebotcazou@adacore.com>
6673
6674         * gimple-pretty-print.c (dump_profile): Return "" instead of NULL.
6675
6676 2017-11-07  Jakub Jelinek  <jakub@redhat.com>
6677
6678         PR target/82855
6679         * config/i386/i386.md (SWI1248_AVX512BWDQ2_64): New mode iterator.
6680         (*cmp<mode>_ccz_1): New insn with $k alternative.
6681
6682         PR target/82855
6683         * config/i386/i386.c (ix86_swap_binary_operands_p): Treat
6684         RTX_COMM_COMPARE as commutative as well.
6685         (ix86_binary_operator_ok): Formatting fix.
6686         * config/i386/sse.md (*mul<mode>3<mask_name><round_name>,
6687         *<code><mode>3<mask_name><round_saeonly_name>,
6688         *<code><mode>3<mask_name>, *<code>tf3, *mul<mode>3<mask_name>,
6689         *<s>mul<mode>3_highpart<mask_name>,
6690         *vec_widen_umult_even_v16si<mask_name>,
6691         *vec_widen_umult_even_v8si<mask_name>,
6692         *vec_widen_umult_even_v4si<mask_name>,
6693         *vec_widen_smult_even_v16si<mask_name>,
6694         *vec_widen_smult_even_v8si<mask_name>, *sse4_1_mulv2siv2di3<mask_name>,
6695         *avx2_pmaddwd, *sse2_pmaddwd, *<sse4_1_avx2>_mul<mode>3<mask_name>,
6696         *avx2_<code><mode>3, *avx512f_<code><mode>3<mask_name>,
6697         *sse4_1_<code><mode>3<mask_name>, *<code>v8hi3,
6698         *sse4_1_<code><mode>3<mask_name>, *<code>v16qi3, *avx2_eq<mode>3,
6699         <avx512>_eq<mode>3<mask_scalar_merge_name>_1, *sse4_1_eqv2di3,
6700         *sse2_eq<mode>3, <mask_codefor><code><mode>3<mask_name>,
6701         *<code><mode>3, *<sse2_avx2>_uavg<mode>3<mask_name>,
6702         *<ssse3_avx2>_pmulhrsw<mode>3<mask_name>, *ssse3_pmulhrswv4hi3): Use
6703         !(MEM_P (operands[1]) && MEM_P (operands[2])) condition instead of
6704         ix86_binary_operator_ok.  Formatting fixes.
6705         (*<plusminus_insn><mode>3<mask_name><round_name>,
6706         *<plusminus_insn><mode>3, *<plusminus_insn><mode>3_m): Formatting
6707         fixes.
6708
6709 2017-11-07  Segher Boessenkool  <segher@kernel.crashing.org>
6710
6711         * config/rs6000/rs6000.md (GPR2): New mode_iterator.
6712         ("cstore<mode>4"): Don't always expand with rs6000_emit_int_cmove for
6713         eq and ne if TARGET_ISEL.
6714         (cmp): New code_iterator.
6715         (UNS, UNSU_, UNSIK): New code_attrs.
6716         (<code><GPR:mode><GPR2:mode>2_isel): New define_insn_and_split.
6717         ("eq<mode>3"): New define_expand, rename the define_insn_and_split
6718         to...
6719         ("eq<mode>3"): ... this.
6720         ("ne<mode>3"): New define_expand, rename the define_insn_and_split
6721         to...
6722         ("ne<mode>3"): ... this.
6723
6724 2017-11-07  Julia Koval  <julia.koval@intel.com>
6725
6726         PR target/82812
6727         * common/config/i386/i386-common.c
6728         (OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET): Remove MPX from flag.
6729         (ix86_handle_option): Move MPX to isa_flags2 and GFNI to isa_flags.
6730         * config/i386/i386-c.c (ix86_target_macros_internal): Ditto.
6731         * config/i386/i386.opt: Ditto.
6732         * config/i386/i386.c (ix86_target_string): Ditto.
6733         (ix86_option_override_internal): Ditto.
6734         (ix86_init_mpx_builtins): Move MPX to args2.
6735         (ix86_expand_builtin): Special handling for OPTION_MASK_ISA_GFNI.
6736         * config/i386/i386-builtin.def (__builtin_ia32_vgf2p8affineinvqb_v64qi,
6737         __builtin_ia32_vgf2p8affineinvqb_v64qi_mask,
6738         __builtin_ia32_vgf2p8affineinvqb_v32qi,
6739         __builtin_ia32_vgf2p8affineinvqb_v32qi_mask,
6740         __builtin_ia32_vgf2p8affineinvqb_v16qi,
6741         __builtin_ia32_vgf2p8affineinvqb_v16qi_mask): Move to ARGS array.
6742
6743 2017-11-07  Uros Bizjak  <ubizjak@gmail.com>
6744
6745         PR target/80425
6746         * config/i386.i386.md (*zero_extendsidi2): Change (?r,*Yj), (?*Yi,r)
6747         and (*x,m) to ($r,Yj), ($Yi,r) and ($x,m).
6748         (zero-extendsidi peephole2): Remove peephole.
6749
6750 2017-11-07  Eric Botcazou  <ebotcazou@adacore.com>
6751
6752         PR c/53037
6753         * stor-layout.c: Include attribs.h.
6754         (handle_warn_if_not_align): Replace test on TYPE_USER_ALIGN with
6755         explicit lookup of "aligned" attribute.
6756
6757 2017-11-07  Andrew Waterman  <andrew@sifive.com>
6758
6759         * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): New prototype.
6760         (riscv_expand_block_move): Likewise.
6761         * config/riscv/riscv.h (MOVE_RATIO): Tune cost to movmemsi
6762         implementation.
6763         (RISCV_MAX_MOVE_BYTES_PER_LOOP_ITER): New define.
6764         (RISCV_MAX_MOVE_BYTES_STRAIGHT): New define.
6765         * config/riscv/riscv.c (riscv_block_move_straight): New function.
6766         (riscv_adjust_block_mem): Likewise.
6767         (riscv_block_move_loop): Likewise.
6768         (riscv_expand_block_move): Likewise.
6769         * config/riscv/riscv.md (movmemsi): New pattern.
6770
6771 2017-11-07  Michael Clark  <michaeljclark@mac.com>
6772
6773         * config/riscv/linux.h (MUSL_ABI_SUFFIX): New define.
6774         (MUSL_DYNAMIC_LINKER): Likewise.
6775
6776 2017-11-07  Richard Sandiford  <richard.sandiford@linaro.org>
6777
6778         * config/aarch64/aarch64.md (ashl<mode>3, ashr<mode>3, lshr<mode>3)
6779         (rotr<mode>3, rotl<mode>3): Use aarch64_reg_or_imm instead of
6780         nonmmory_operand.
6781
6782 2017-11-07  Richard Biener  <rguenther@suse.de>
6783
6784         * match.pd: Fix build.
6785
6786 2017-11-07  Wilco Dijkstra  <wdijkstr@arm.com>
6787             Jackson Woodruff  <jackson.woodruff@arm.com>
6788
6789         PR tree-optimization/71026
6790         * match.pd: Canonicalize negate in division.
6791
6792 2017-11-07  Sudakshina Das  <sudi.das@arm.com>
6793
6794         PR middle-end/80131
6795         * match.pd: Simplify 1 << (C - x) where C = precision (x) - 1.
6796
6797 2017-11-07  Marc Glisse  <marc.glisse@inria.fr>
6798
6799         * match.pd ((a&~b)|(a^b),(a&~b)^~a,(a|b)&~(a^b),a|~(a^b),
6800         (a|b)|(a&^b),(a&b)|~(a^b),~(~a&b),~X^Y): New transformations.
6801
6802 2017-11-07  Marc Glisse  <marc.glisse@inria.fr>
6803
6804         * fold-const.c (negate_expr_p) [PLUS_EXPR, MINUS_EXPR]: Handle
6805         non-scalar integral types.
6806         * match.pd (negate_expr_p): Handle MINUS_EXPR.
6807         (-(A-B), -(~A)): New transformations.
6808
6809 2017-11-07  Tom de Vries  <tom@codesourcery.com>
6810
6811         * config/powerpcspe/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Remove
6812         semicolon after "do {} while (0)".
6813         * config/powerpcspe/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
6814         * config/powerpcspe/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
6815         * config/powerpcspe/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
6816         * config/powerpcspe/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
6817         * config/powerpcspe/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
6818
6819 2017-11-07  Tom de Vries  <tom@codesourcery.com>
6820
6821         * config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Remove semicolon
6822         after "do {} while (0)".
6823         * config/rs6000/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
6824         * config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
6825         * config/rs6000/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
6826         * config/rs6000/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
6827         * config/rs6000/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
6828
6829 2017-11-07  Tom de Vries  <tom@codesourcery.com>
6830
6831         PR other/82784
6832         * config/arm/arm.c (HANDLE_NARROW_SHIFT_ARITH): Remove semicolon after
6833         "while {} do (0)".
6834         (arm_rtx_costs_internal): Add missing semicolon after
6835         HANDLE_NARROW_SHIFT_ARITH call.
6836
6837 2017-11-06  Segher Boessenkool  <segher@kernel.crashing.org>
6838
6839         * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
6840         disable isel if it was not set explicitly.
6841
6842 2017-11-06  James Bowman  <james.bowman@ftdichip.com>
6843
6844         * gcc/dwarf2out.c (modified_type_die): Retain ADDR_SPACE qualifiers.
6845         (add_type_attribute) likewise.
6846
6847 2017-11-06  H.J. Lu  <hongjiu.lu@intel.com>
6848
6849         * config/i386/i386.c (ix86_can_use_return_insn_p): Use reference
6850         of struct ix86_frame.
6851         (ix86_initial_elimination_offset): Likewise.
6852         (ix86_expand_split_stack_prologue): Likewise.
6853
6854 2017-11-06  Marc Glisse  <marc.glisse@inria.fr>
6855
6856         * tree-vrp.h (enum value_range_type): Update stale comment.
6857
6858 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
6859             Alan Hayward  <alan.hayward@arm.com>
6860             David Sherwood  <david.sherwood@arm.com>
6861
6862         * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm)
6863         (aarch64_expand_vec_perm_const): Take the number of units too.
6864         * config/aarch64/aarch64.c (aarch64_expand_vec_perm)
6865         (aarch64_expand_vec_perm_const): Likewise.
6866         * config/aarch64/aarch64-simd.md (vec_perm_const<mode>)
6867         (vec_perm<mode>): Update accordingly.
6868
6869 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
6870             Alan Hayward  <alan.hayward@arm.com>
6871             David Sherwood  <david.sherwood@arm.com>
6872
6873         * config/aarch64/aarch64-protos.h (aarch64_simd_vect_par_cnst_half):
6874         Take the number of units too.
6875         * config/aarch64/aarch64.c (aarch64_simd_vect_par_cnst_half): Likewise.
6876         (aarch64_simd_check_vect_par_cnst_half): Update call accordingly,
6877         but check for a vector mode before rather than after the call.
6878         * config/aarch64/aarch64-simd.md (aarch64_split_simd_mov<mode>)
6879         (move_hi_quad_<mode>, vec_unpack<su>_hi_<mode>)
6880         (vec_unpack<su>_lo_<mode, vec_widen_<su>mult_lo_<mode>)
6881         (vec_widen_<su>mult_hi_<mode>, vec_unpacks_lo_<mode>)
6882         (vec_unpacks_hi_<mode>, aarch64_saddl2<mode>, aarch64_uaddl2<mode>)
6883         (aarch64_ssubl2<mode>, aarch64_usubl2<mode>, widen_ssum<mode>3)
6884         (widen_usum<mode>3, aarch64_saddw2<mode>, aarch64_uaddw2<mode>)
6885         (aarch64_ssubw2<mode>, aarch64_usubw2<mode>, aarch64_sqdmlal2<mode>)
6886         (aarch64_sqdmlsl2<mode>, aarch64_sqdmlal2_lane<mode>)
6887         (aarch64_sqdmlal2_laneq<mode>, aarch64_sqdmlsl2_lane<mode>)
6888         (aarch64_sqdmlsl2_laneq<mode>, aarch64_sqdmlal2_n<mode>)
6889         (aarch64_sqdmlsl2_n<mode>, aarch64_sqdmull2<mode>)
6890         (aarch64_sqdmull2_lane<mode>, aarch64_sqdmull2_laneq<mode>)
6891         (aarch64_sqdmull2_n<mode>): Update accordingly.
6892
6893 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
6894             Alan Hayward  <alan.hayward@arm.com>
6895             David Sherwood  <david.sherwood@arm.com>
6896
6897         * config/aarch64/aarch64-protos.h (aarch64_reverse_mask): Take
6898         the number of units too.
6899         * config/aarch64/aarch64.c (aarch64_reverse_mask): Likewise.
6900         * config/aarch64/aarch64-simd.md (vec_load_lanesoi<mode>)
6901         (vec_store_lanesoi<mode>, vec_load_lanesci<mode>)
6902         (vec_store_lanesci<mode>, vec_load_lanesxi<mode>)
6903         (vec_store_lanesxi<mode>): Update accordingly.
6904
6905 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
6906             Alan Hayward  <alan.hayward@arm.com>
6907             David Sherwood  <david.sherwood@arm.com>
6908
6909         * config/aarch64/aarch64-protos.h (aarch64_endian_lane_rtx): Declare.
6910         * config/aarch64/aarch64.c (aarch64_endian_lane_rtx): New function.
6911         * config/aarch64/aarch64.h (ENDIAN_LANE_N): Take the number
6912         of units rather than the mode.
6913         * config/aarch64/iterators.md (nunits): New mode attribute.
6914         * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args):
6915         Use aarch64_endian_lane_rtx instead of GEN_INT (ENDIAN_LANE_N ...).
6916         * config/aarch64/aarch64-simd.md (aarch64_dup_lane<mode>)
6917         (aarch64_dup_lane_<vswap_width_name><mode>, *aarch64_mul3_elt<mode>)
6918         (*aarch64_mul3_elt_<vswap_width_name><mode>): Likewise.
6919         (*aarch64_mul3_elt_to_64v2df, *aarch64_mla_elt<mode>): Likewise.
6920         (*aarch64_mla_elt_<vswap_width_name><mode>, *aarch64_mls_elt<mode>)
6921         (*aarch64_mls_elt_<vswap_width_name><mode>, *aarch64_fma4_elt<mode>)
6922         (*aarch64_fma4_elt_<vswap_width_name><mode>):: Likewise.
6923         (*aarch64_fma4_elt_to_64v2df, *aarch64_fnma4_elt<mode>): Likewise.
6924         (*aarch64_fnma4_elt_<vswap_width_name><mode>): Likewise.
6925         (*aarch64_fnma4_elt_to_64v2df, reduc_plus_scal_<mode>): Likewise.
6926         (reduc_plus_scal_v4sf, reduc_<maxmin_uns>_scal_<mode>): Likewise.
6927         (reduc_<maxmin_uns>_scal_<mode>): Likewise.
6928         (*aarch64_get_lane_extend<GPI:mode><VDQQH:mode>): Likewise.
6929         (*aarch64_get_lane_zero_extendsi<mode>): Likewise.
6930         (aarch64_get_lane<mode>, *aarch64_mulx_elt_<vswap_width_name><mode>)
6931         (*aarch64_mulx_elt<mode>, *aarch64_vgetfmulx<mode>): Likewise.
6932         (aarch64_sq<r>dmulh_lane<mode>, aarch64_sq<r>dmulh_laneq<mode>)
6933         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Likewise.
6934         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Likewise.
6935         (aarch64_sqdml<SBINQOPS:as>l_lane<mode>): Likewise.
6936         (aarch64_sqdml<SBINQOPS:as>l_laneq<mode>): Likewise.
6937         (aarch64_sqdml<SBINQOPS:as>l2_lane<mode>_internal): Likewise.
6938         (aarch64_sqdml<SBINQOPS:as>l2_laneq<mode>_internal): Likewise.
6939         (aarch64_sqdmull_lane<mode>, aarch64_sqdmull_laneq<mode>): Likewise.
6940         (aarch64_sqdmull2_lane<mode>_internal): Likewise.
6941         (aarch64_sqdmull2_laneq<mode>_internal): Likewise.
6942         (aarch64_vec_load_lanesoi_lane<mode>): Likewise.
6943         (aarch64_vec_store_lanesoi_lane<mode>): Likewise.
6944         (aarch64_vec_load_lanesci_lane<mode>): Likewise.
6945         (aarch64_vec_store_lanesci_lane<mode>): Likewise.
6946         (aarch64_vec_load_lanesxi_lane<mode>): Likewise.
6947         (aarch64_vec_store_lanesxi_lane<mode>): Likewise.
6948         (aarch64_simd_vec_set<mode>): Update use of ENDIAN_LANE_N.
6949         (aarch64_simd_vec_setv2di): Likewise.
6950
6951 2017-11-06  Carl Love  <cel@us.ibm.com>
6952
6953         * config/rs6000/rs6000-c.c (P8V_BUILTIN_VEC_REVB): Add power 8
6954         definitions.
6955         (P9V_BUILTIN_VEC_REVB): Remove the power 9 instance definitions.
6956         * config/rs6000/altivec.h (vec_revb): Change the #define from power 9
6957         to power 8.
6958         * config/rs6000/r6000-protos.h (swap_endian_selector_for_mode): Add new
6959         extern declaration.
6960         * config/rs6000/rs6000.c (swap_endian_selector_for_mode): Add function.
6961         * config/rs6000/rs6000-builtin.def (BU_P8V_VSX_1, BU_P8V_OVERLOAD_1):
6962         Add power 8 macro expansions.
6963         (BU_P9V_OVERLOAD_1): Remove power 9 overload expansion.
6964         * config/rs6000/vsx.md (revb_<mode>): Add define_expand to generate
6965         power 8 instructions.  (VSX_XXBR): Add iterator.
6966
6967 2017-11-06  Wilco Dijkstra  <wdijkstr@arm.com>
6968
6969         * config/arm/arm.md (predicable_short_it): Change default to "no",
6970         improve documentation, remove uses that are identical to the default.
6971         (enabled_for_depr_it): Rename to enabled_for_short_it.
6972         * gcc/config/arm/arm-fixed.md (predicable_short_it):
6973         Remove default uses.
6974         * gcc/config/arm/ldmstm.md (predicable_short_it): Likewise.
6975         * gcc/config/arm/sync.md (predicable_short_it): Likewise.
6976         * gcc/config/arm/thumb2.md (predicable_short_it): Likewise.
6977         * gcc/config/arm/vfp.md (predicable_short_it): Likewise.
6978
6979 2017-11-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
6980
6981         PR target/82748
6982         * config/rs6000/rs6000-builtin.def (BU_FLOAT128_1): Delete
6983         float128 helper macros, which are no longer used after deleting
6984         the old 'q' built-in functions, and moving the round to odd
6985         built-in functions to being special built-in functions.
6986         (BU_FLOAT128_2): Likewise.
6987         (BU_FLOAT128_1_HW): Likewise.
6988         (BU_FLOAT128_2_HW): Likewise.
6989         (BU_FLOAT128_3_HW): Likewise.
6990         (FABSQ): Delete old 'q' built-in functions.
6991         (COPYSIGNQ): Likewise.
6992         (SQRTF128_ODD): Move round to odd built-in functions to be
6993         special built-in functions, so that we can handle
6994         -mabi=ieeelongdouble.
6995         (TRUNCF128_ODD): Likewise.
6996         (ADDF128_ODD): Likewise.
6997         (SUBF128_ODD): Likewise.
6998         (MULF128_ODD): Likewise.
6999         (DIVF128_ODD): Likewise.
7000         (FMAF128_ODD): Likewise.
7001         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Map old 'q'
7002         built-in names to 'f128'.
7003         * config/rs6000/rs6000.c (rs6000_fold_builtin): Remove folding the
7004         old 'q' built-in functions, as the machine independent code for
7005         'f128' built-in functions handles this.
7006         (rs6000_expand_builtin): Add expansion for float128 round to odd
7007         functions, keying off on -mabi=ieeelongdouble of whether to use
7008         the KFmode or TFmode variant.
7009         (rs6000_init_builtins): Initialize the _Float128 round to odd
7010         built-in functions.
7011         * doc/extend.texi (PowerPC Built-in Functions): Document the old
7012         _Float128 'q' built-in functions are now mapped into the new
7013         'f128' built-in functions.
7014
7015 2017-11-06  David Edelsohn  <dje.gcc@gmail.com>
7016
7017         * collect2.c (add_lto_object): Compile for OBJECT_COFF.
7018         (scan_prog_file): Don't skip PASS_LTOINFO. Scan for LTO objects.
7019
7020 2017-11-06  David Malcolm  <dmalcolm@redhat.com>
7021
7022         PR jit/82826
7023         * ipa-fnsummary.c (ipa_fnsummary_c_finalize): New function.
7024         * ipa-fnsummary.h (ipa_fnsummary_c_finalize): New decl.
7025         * toplev.c: Include "ipa-fnsummary.h".
7026         (toplev::finalize): Call ipa_fnsummary_c_finalize.
7027
7028 2017-11-06  Jakub Jelinek  <jakub@redhat.com>
7029
7030         PR tree-optimization/82838
7031         * gimple-ssa-store-merging.c
7032         (imm_store_chain_info::output_merged_store): Call force_gimple_operand_1
7033         on a separate gimple_seq which is then appended to seq.
7034
7035 2017-11-06  Jeff Law  <law@redhat.com>
7036
7037         PR target/82788
7038         * config/i386/i386.c (PROBE_INTERVAL): Remove.
7039         (get_probe_interval): New functions.
7040         (ix86_adjust_stack_and_probe_stack_clash): Use get_probe_interval.
7041         (ix86_adjust_stack_and_probe): Likewise.
7042         (output_adjust_stack_and_probe): Likewise.
7043         (ix86_emit_probe_stack_range): Likewise.
7044         (ix86_expand_prologue): Likewise.
7045
7046 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
7047
7048         PR tree-optimization/82816
7049         * tree-ssa-math-opts.c (convert_mult_to_widen): Return false
7050         if the modes of the two types are the same.
7051         (convert_plusminus_to_widen): Likewise.
7052
7053 2017-11-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
7054
7055         * config/rs6000/altivec.md (*p9_vadu<mode>3) Rename to
7056         p9_vadu<mode>3.
7057         (usadv16qi): New define_expand.
7058         (usadv8hi): New define_expand.
7059
7060 2017-11-06  Jan Hubicka  <hubicka@ucw.cz>
7061
7062         PR bootstrap/82832
7063         * ipa-inline-transform.c (update_noncloned_frequencies): Always
7064         scale.
7065         (inline_transform): Likewise.
7066         * predict.c (counts_to_freqs): Remove useless conditional.
7067         * profile-count.h (profile_count::apply_scale): Move sanity check.
7068         * tree-inline.c (copy_bb): Always scale.
7069         (copy_cfg_body): Likewise.
7070
7071 2017-11-06  Christophe Lyon  <christophe.lyon@linaro.org>
7072
7073         PR target/67591
7074         * config/arm/arm.md (*sub_shiftsi): Add predicable_short_it
7075         attribute.
7076         (*cmp_ite0): Add enabled_for_depr_it attribute.
7077         (*cmp_ite1): Likewise.
7078
7079 2017-11-06  Segher Boessenkool  <segher@kernel.crashing.org>
7080
7081         * config/rs6000/rs6000.c (rs6000_insn_cost): Handle TYPE_MFCR and
7082         TYPE_MFCRF.
7083
7084 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
7085
7086         * tree-vrp.c (vrp_int_const_binop): Return true on success and
7087         return the value by pointer.
7088         (extract_range_from_multiplicative_op_1): Update accordingly.
7089         Return as soon as an operation fails.
7090
7091 2017-11-05  Tom de Vries  <tom@codesourcery.com>
7092
7093         PR other/82784
7094         * asan.c (DEF_SANITIZER_BUILTIN_1): Factor out of ...
7095         (DEF_SANITIZER_BUILTIN): ... here.
7096         (initialize_sanitizer_builtins): Use DEF_SANITIZER_BUILTIN_1 instead of
7097         DEF_SANITIZER_BUILTIN in if stmt.  Add missing semicolon.
7098
7099 2017-11-05  Tom de Vries  <tom@codesourcery.com>
7100
7101         PR other/82784
7102         * config/elfos.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove semicolon after
7103         macro body.
7104         (ASM_OUTPUT_CASE_LABEL): Add semicolon after
7105         ASM_OUTPUT_BEFORE_CASE_LABEL call.
7106         * config/arc/arc.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove semicolon
7107         after macro body.
7108         * config/m68k/m68kelf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same.
7109         * config/mips/mips.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same.
7110         * config/v850/v850.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same.
7111
7112 2017-11-05  Tom de Vries  <tom@codesourcery.com>
7113
7114         PR other/82784
7115         * graphite-scop-detection.c (DEBUG_PRINT): Remove semicolon after
7116         "do {} while (0)".
7117
7118 2017-11-04  Michael Clark  <michaeljclark@mac.com>
7119
7120         * config/riscv/riscv.c (riscv_print_operand): Add a 'i' format.
7121         config/riscv/riscv.md (addsi3): Use 'i' for immediates.
7122         (adddi3): Likewise.
7123         (*addsi3_extended): Likewise.
7124         (*addsi3_extended2): Likewise.
7125         (<optab>si3): Likewise.
7126         (<optab>di3): Likewise.
7127         (<optab><mode>3): Likewise.
7128         (<*optabe>si3_internal): Likewise.
7129         (zero_extendqi<SUPERQI:mode>2): Likewise.
7130         (*add<mode>hi3): Likewise.
7131         (*xor<mode>hi3): Likewise.
7132         (<optab>di3): Likewise.
7133         (*<optab>si3_extend): Likewise.
7134         (*sge<u>_<X:mode><GPR:mode>): Likewise.
7135         (*slt<u>_<X:mode><GPR:mode>): Likewise.
7136         (*sle<u>_<X:mode><GPR:mode>): Likewise.
7137
7138 2017-11-04  Andrew Waterman  <andrew@sifive.com>
7139
7140         * config/riscv/riscv.c (riscv_option_override): Conditionally set
7141         TARGET_STRICT_ALIGN based upon -mtune argument.
7142
7143 2017-11-04  Andrew Waterman  <andrew@sifive.com>
7144
7145         * config/riscv/riscv.h (SLOW_BYTE_ACCESS): Change to 1.
7146
7147 2017-11-04  Daniel Santos  <daniel.santos@pobox.com>
7148
7149         * config/i386/i386.c (choose_basereg): Use optional scratch
7150         register and add assertion.
7151         (x86_emit_outlined_ms2sysv_save): Use scratch register when
7152         needed, and don't allocate stack.
7153         (ix86_expand_prologue): Rearrange where SSE saves/stub call is
7154         emitted, correct wrong allocation with -mcall-ms2sysv-xlogues.
7155         (ix86_emit_outlined_ms2sysv_restore): Fix non-immediate offsets.
7156
7157 2017-11-03  Jeff Law  <law@redhat.com>
7158
7159         * config/i386/i386.c (ix86_emit_restore_reg_using_pop): Prototype.
7160         (ix86_adjust_stack_and_probe_stack_clash): Use a push/pop sequence
7161         to probe at the start of a noreturn function.
7162
7163 2017-11-03  Jakub Jelinek  <jakub@redhat.com>
7164
7165         PR tree-optimization/78821
7166         * gimple-ssa-store-merging.c: Update the file comment.
7167         (MAX_STORE_ALIAS_CHECKS): Define.
7168         (struct store_operand_info): New type.
7169         (store_operand_info::store_operand_info): New constructor.
7170         (struct store_immediate_info): Add rhs_code and ops data members.
7171         (store_immediate_info::store_immediate_info): Add rhscode, op0r
7172         and op1r arguments to the ctor, initialize corresponding data members.
7173         (struct merged_store_group): Add load_align_base and load_align
7174         data members.
7175         (merged_store_group::merged_store_group): Initialize them.
7176         (merged_store_group::do_merge): Update them.
7177         (merged_store_group::apply_stores): Pick the constant for
7178         encode_tree_to_bitpos from one of the two operands, or skip
7179         encode_tree_to_bitpos if neither operand is a constant.
7180         (class pass_store_merging): Add process_store method decl.  Remove
7181         bool argument from terminate_all_aliasing_chains method decl.
7182         (pass_store_merging::terminate_all_aliasing_chains): Remove
7183         var_offset_p argument and corresponding handling.
7184         (stmts_may_clobber_ref_p): New function.
7185         (compatible_load_p): New function.
7186         (imm_store_chain_info::coalesce_immediate_stores): Terminate group
7187         if there is overlap and rhs_code is not INTEGER_CST.  For
7188         non-overlapping stores terminate group if rhs is not mergeable.
7189         (get_alias_type_for_stmts): Change first argument from
7190         auto_vec<gimple *> & to vec<gimple *> &.  Add IS_LOAD, CLIQUEP and
7191         BASEP arguments.  If IS_LOAD is true, look at rhs1 of the stmts
7192         instead of lhs.  Compute *CLIQUEP and *BASEP in addition to the
7193         alias type.
7194         (get_location_for_stmts): Change first argument from
7195         auto_vec<gimple *> & to vec<gimple *> &.
7196         (struct split_store): Remove orig_stmts data member, add orig_stores.
7197         (split_store::split_store): Create orig_stores rather than orig_stmts.
7198         (find_constituent_stmts): Renamed to ...
7199         (find_constituent_stores): ... this.  Change second argument from
7200         vec<gimple *> * to vec<store_immediate_info *> *, push pointers
7201         to info structures rather than the statements.
7202         (split_group): Rename ALLOW_UNALIGNED argument to
7203         ALLOW_UNALIGNED_STORE, add ALLOW_UNALIGNED_LOAD argument and handle
7204         it.  Adjust find_constituent_stores caller.
7205         (imm_store_chain_info::output_merged_store): Handle rhs_code other
7206         than INTEGER_CST, adjust split_group, get_alias_type_for_stmts and
7207         get_location_for_stmts callers.  Set MR_DEPENDENCE_CLIQUE and
7208         MR_DEPENDENCE_BASE on the MEM_REFs if they are the same in all stores.
7209         (mem_valid_for_store_merging): New function.
7210         (handled_load): New function.
7211         (pass_store_merging::process_store): New method.
7212         (pass_store_merging::execute): Use process_store method.  Adjust
7213         terminate_all_aliasing_chains caller.
7214
7215 2017-11-03  Wilco Dijkstra  <wdijkstr@arm.com>
7216
7217         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
7218         Return true for more constants, symbols and label references.
7219         (aarch64_valid_floating_const): Remove unused function.
7220
7221 2017-11-03  Wilco Dijkstra  <wdijkstr@arm.com>
7222
7223         PR target/82786
7224         * config/aarch64/aarch64.c (aarch64_layout_frame):
7225         Undo forcing of LR at bottom of frame.
7226
7227 2017-11-03  Jeff Law  <law@redhat.com>
7228
7229         PR target/82823
7230         * config/i386/i386.c (ix86_expand_prologue): Tighten assert
7231         for int_registers_saved.
7232
7233         * cfganal.c (single_pred_edge_ignoring_loop_edges): New function
7234         extracted from tree-ssa-dom.c.
7235         * cfganal.h (single_pred_edge_ignoring_loop_edges): Prototype.
7236         * tree-ssa-dom.c (single_incoming_edge_ignoring_loop_edges): Remove.
7237         (record_equivalences_from_incoming_edge): Add additional argument
7238         to single_pred_edge_ignoring_loop_edges call.
7239         * tree-ssa-uncprop.c (single_incoming_edge_ignoring_loop_edges): Remove.
7240         (uncprop_dom_walker::before_dom_children): Add additional argument
7241         to single_pred_edge_ignoring_loop_edges call.
7242         * tree-ssa-sccvn.c (sccvn_dom_walker::before_dom_children): Use
7243         single_pred_edge_ignoring_loop_edges rather than open coding.
7244         * tree-vrp.c (evrp_dom_walker::before_dom_children): Similarly.
7245
7246 2017-11-03  Marc Glisse  <marc.glisse@inria.fr>
7247
7248         * match.pd (-(-A)): Rewrite.
7249
7250 2017-11-03  Segher Boessenkool  <segher@kernel.crashing.org>
7251
7252         * config/rs6000/rs60000-protos.h (rs6000_emit_sISEL): Delete.
7253         (rs6000_emit_int_cmove): New declaration.
7254         * config/rs6000/rs6000.c (rs6000_emit_int_cmove): Delete declaration.
7255         (rs6000_emit_sISEL): Delete.
7256         (rs6000_emit_int_cmove): Make non-static.
7257         * config/rs6000/rs6000.md (cstore<mode>4): Use rs6000_emit_int_cmove
7258         instead of rs6000_emit_sISEL.
7259
7260 2017-11-03  Jan Hubicka  <hubicka@ucw.cz>
7261
7262         * asan.c (create_cond_insert_point): Maintain profile.
7263         * ipa-utils.c (ipa_merge_profiles): Be sure only IPA profiles are
7264         merged.
7265         * basic-block.h (struct basic_block_def): Remove frequency.
7266         (EDGE_FREQUENCY): Use to_frequency
7267         * bb-reorder.c (push_to_next_round_p): Use only IPA counts for global
7268         heuristics.
7269         (find_traces): Update to use to_frequency.
7270         (find_traces_1_round): Likewise; use only IPA counts.
7271         (bb_to_key): Likewise.
7272         (connect_traces): Use IPA counts only.
7273         (copy_bb_p): Update to use to_frequency.
7274         (fix_up_crossing_landing_pad): Likewise.
7275         (sanitize_hot_paths): Likewise.
7276         * bt-load.c (basic_block_freq): Likewise.
7277         * cfg.c (init_flow): Set count_max to uninitialized.
7278         (check_bb_profile): Remove frequencies; check counts.
7279         (dump_bb_info): Do not dump frequencies.
7280         (update_bb_profile_for_threading): Update counts only.
7281         (scale_bbs_frequencies_int): Likewise.
7282         (MAX_SAFE_MULTIPLIER): Remove.
7283         (scale_bbs_frequencies_gcov_type): Update counts only.
7284         (scale_bbs_frequencies_profile_count): Update counts only.
7285         (scale_bbs_frequencies): Update counts only.
7286         * cfg.h (struct control_flow_graph): Add count-max.
7287         (update_bb_profile_for_threading): Update prototype.
7288         * cfgbuild.c (find_bb_boundaries): Do not update frequencies.
7289         (find_many_sub_basic_blocks): Likewise.
7290         * cfgcleanup.c (try_forward_edges): Likewise.
7291         (try_crossjump_to_edge): Likewise.
7292         * cfgexpand.c (expand_gimple_cond): Likewise.
7293         (expand_gimple_tailcall): Likewise.
7294         (construct_init_block): Likewise.
7295         (construct_exit_block): Likewise.
7296         * cfghooks.c (verify_flow_info): Check consistency of counts.
7297         (dump_bb_for_graph): Do not dump frequencies.
7298         (split_block_1): Do not update frequencies.
7299         (split_edge): Do not update frequencies.
7300         (make_forwarder_block): Do not update frequencies.
7301         (duplicate_block): Do not update frequencies.
7302         (account_profile_record): Do not update frequencies.
7303         * cfgloop.c (find_subloop_latch_edge_by_profile): Use IPA counts
7304         for global heuristics.
7305         * cfgloopanal.c (average_num_loop_insns): Update to use to_frequency.
7306         (expected_loop_iterations_unbounded): Use counts only.
7307         * cfgloopmanip.c (scale_loop_profile): Simplify.
7308         (create_empty_loop_on_edge): Simplify
7309         (loopify): Simplify
7310         (duplicate_loop_to_header_edge): Simplify
7311         * cfgrtl.c (force_nonfallthru_and_redirect): Update profile.
7312         (update_br_prob_note): Take care of removing note when profile
7313         becomes undefined.
7314         (relink_block_chain): Do not dump frequency.
7315         (rtl_account_profile_record): Use to_frequency.
7316         * cgraph.c (symbol_table::create_edge): Convert count to ipa count.
7317         (cgraph_edge::redirect_call_stmt_to_calle): Conver tcount to ipa count.
7318         (cgraph_update_edges_for_call_stmt_node): Likewise.
7319         (cgraph_edge::verify_count_and_frequency): Update.
7320         (cgraph_node::verify_node): Temporarily disable frequency verification.
7321         * cgraphbuild.c (compute_call_stmt_bb_frequency): Use
7322         to_cgraph_frequency.
7323         (cgraph_edge::rebuild_edges): Convert to ipa counts.
7324         * cgraphunit.c (init_lowered_empty_function): Do not initialize
7325         frequencies.
7326         (cgraph_node::expand_thunk): Update profile.
7327         * except.c (dw2_build_landing_pads): Do not update frequency.
7328         * final.c (compute_alignments): Use to_frequency.
7329         (dump_basic_block_info): Do not dump frequency.
7330         * gimple-pretty-print.c (dump_profile): Do not dump frequency.
7331         (dump_gimple_bb_header): Do not dump frequency.
7332         * gimple-ssa-isolate-paths.c (isolate_path): Do not update frequency;
7333         do update count.
7334         * gimple-streamer-in.c (input_bb): Do not stream frequency.
7335         * gimple-streamer-out.c (output_bb): Do not stream frequency.
7336         * haifa-sched.c (sched_pressure_start_bb): Use to_freuqency.
7337         (init_before_recovery): Do not update frequency.
7338         (sched_create_recovery_edges): Do not update frequency.
7339         * hsa-gen.c (convert_switch_statements): Do not update frequency.
7340         * ipa-cp.c (ipcp_propagate_stage): Update search for max_count.
7341         (ipa_cp_c_finalize): Set max_count to uninitialized.
7342         * ipa-fnsummary.c (get_minimal_bb): Use counts.
7343         (param_change_prob): Use counts.
7344         * ipa-profile.c (ipa_profile_generate_summary): Do not summarize
7345         local profiles.
7346         * ipa-split.c (consider_split): Use to_frequency.
7347         (split_function): Use to_frequency.
7348         * ira-build.c (loop_compare_func): Likewise.
7349         (mark_loops_for_removal): Likewise.
7350         (mark_all_loops_for_removal): Likewise.
7351         * loop-doloop.c (doloop_modify): Do not update frequency.
7352         * loop-unroll.c (unroll_loop_runtime_iterations): Do not update
7353         frequency.
7354         * lto-streamer-in.c (input_function): Update count_max.
7355         * omp-expand.c (expand_omp_taskreg): Update count_max.
7356         * omp-simd-clone.c (simd_clone_adjust): Update profile.
7357         * predict.c (maybe_hot_frequency_p): Use to_frequency.
7358         (maybe_hot_count_p): Use ipa counts only.
7359         (maybe_hot_bb_p): Simplify.
7360         (maybe_hot_edge_p): Simplify.
7361         (probably_never_executed): Do not take frequency argument.
7362         (probably_never_executed_bb_p): Do not pass frequency.
7363         (probably_never_executed_edge_p): Likewise.
7364         (combine_predictions_for_bb): Check that profile is nonzero.
7365         (propagate_freq): Do not set frequency.
7366         (drop_profile): Simplify.
7367         (counts_to_freqs): Simplify.
7368         (expensive_function_p): Use to_frequency.
7369         (propagate_unlikely_bbs_forward): Simplify.
7370         (determine_unlikely_bbs): Simplify.
7371         (estimate_bb_frequencies): Add hack to silence graphite issues.
7372         (compute_function_frequency): Use ipa counts.
7373         (pass_profile::execute): Update.
7374         (rebuild_frequencies): Use counts only.
7375         (force_edge_cold): Use counts only.
7376         * profile-count.c (profile_count::dump): Dump new count types.
7377         (profile_count::differs_from_p): Check compatiblity.
7378         (profile_count::to_frequency): New function.
7379         (profile_count::to_cgraph_frequency): New function.
7380         * profile-count.h (struct function): Declare.
7381         (enum profile_quality): Add profile_guessed_local and
7382         profile_guessed_global0.
7383         (class profile_proability): Decrease number of bits to 29;
7384         update from_reg_br_prob_note and to_reg_br_prob_note.
7385         (class profile_count: Update comment; decrease number of bits
7386         to 61. Check compatibility.
7387         (profile_count::compatible_p): New private member function.
7388         (profile_count::ipa_p): New member function.
7389         (profile_count::operator<): Handle global zero correctly.
7390         (profile_count::operator>): Handle global zero correctly.
7391         (profile_count::operator<=): Handle global zero correctly.
7392         (profile_count::operator>=): Handle global zero correctly.
7393         (profile_count::nonzero_p): New member function.
7394         (profile_count::force_nonzero): New member function.
7395         (profile_count::max): New member function.
7396         (profile_count::apply_scale): Handle IPA scalling.
7397         (profile_count::guessed_local): New member function.
7398         (profile_count::global0): New member function.
7399         (profile_count::ipa): New member function.
7400         (profile_count::to_frequency): Declare.
7401         (profile_count::to_cgraph_frequency): Declare.
7402         * profile.c (OVERLAP_BASE): Delete.
7403         (compute_frequency_overlap): Delete.
7404         (compute_branch_probabilities): Do not use compute_frequency_overlap.
7405         * regs.h (REG_FREQ_FROM_BB): Use to_frequency.
7406         * sched-ebb.c (rank): Use counts only.
7407         * shrink-wrap.c (handle_simple_exit): Use counts only.
7408         (try_shrink_wrapping): Use counts only.
7409         (place_prologue_for_one_component): Use counts only.
7410         * tracer.c (find_best_predecessor): Use to_frequency.
7411         (find_trace): Use to_frequency.
7412         (tail_duplicate): Use to_frequency.
7413         * trans-mem.c (expand_transaction): Do not update frequency.
7414         * tree-call-cdce.c: Do not update frequency.
7415         * tree-cfg.c (gimple_find_sub_bbs): Likewise.
7416         (gimple_merge_blocks): Likewise.
7417         (gimple_split_edge): Likewise.
7418         (gimple_duplicate_sese_region): Likewise.
7419         (gimple_duplicate_sese_tail): Likewise.
7420         (move_sese_region_to_fn): Likewise.
7421         (gimple_account_profile_record): Likewise.
7422         (insert_cond_bb): Likewise.
7423         * tree-complex.c (expand_complex_div_wide): Likewise.
7424         * tree-eh.c (lower_resx): Update profile.
7425         * tree-inline.c (copy_bb): Simplify count scaling; do not scale
7426         frequencies.
7427         (initialize_cfun): Do not initialize frequencies
7428         (freqs_to_counts): Delete.
7429         (copy_cfg_body): Ignore count parameter.
7430         (copy_body): Update.
7431         (expand_call_inline): Update count_max.
7432         (optimize_inline_calls): Update count_max.
7433         (tree_function_versioning): Update count_max.
7434         * tree-ssa-coalesce.c (coalesce_cost_bb): Use to_frequency.
7435         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Do not update
7436         frequency.
7437         * tree-ssa-loop-im.c (execute_sm_if_changed): Use counts only.
7438         * tree-ssa-loop-ivcanon.c (unloop_loops): Do not update freuqency.
7439         (try_peel_loop): Likewise.
7440         * tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at): Use
7441         to_frequency.
7442         * tree-ssa-loop-manip.c (niter_for_unrolled_loop): Pass -1.
7443         (tree_transform_and_unroll_loop): Do not use frequencies
7444         * tree-ssa-loop-niter.c (estimate_numbers_of_iterations):
7445         Use reliable prediction only.
7446         * tree-ssa-loop-unswitch.c (hoist_guard): Do not use frequencies.
7447         * tree-ssa-sink.c (select_best_block): Use to_frequency.
7448         * tree-ssa-tail-merge.c (replace_block_by): Temporarily disable
7449         probability scaling.
7450         * tree-ssa-threadupdate.c (create_block_for_threading): Do
7451         not update frequency
7452         (any_remaining_duplicated_blocks): Likewise.
7453         (update_profile): Likewise.
7454         (estimated_freqs_path): Delete.
7455         (freqs_to_counts_path): Delete.
7456         (clear_counts_path): Delete.
7457         (ssa_fix_duplicate_block_edges): Likewise.
7458         (duplicate_thread_path): Likewise.
7459         * tree-switch-conversion.c (gen_inbound_check): Use counts.
7460         * tree-tailcall.c (decrease_profile): Do not update frequency.
7461         (eliminate_tail_call): Likewise.
7462         * tree-vect-loop-manip.c (vect_do_peeling): Likewise.
7463         * tree-vect-loop.c (scale_profile_for_vect_loop): Likewise.
7464         (optimize_mask_stores): Likewise.
7465         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
7466         * ubsan.c (ubsan_expand_null_ifn): Update profile.
7467         (ubsan_expand_ptr_ifn): Update profile.
7468         * value-prof.c (gimple_ic): Simplify.
7469         * value-prof.h (gimple_ic): Update prototype.
7470         * ipa-inline-transform.c (inline_transform): Fix scaling conditoins.
7471         * ipa-inline.c (compute_uninlined_call_time): Be sure that
7472         counts are nonzero.
7473         (want_inline_self_recursive_call_p): Likewise.
7474         (resolve_noninline_speculation): Only cummulate defined counts.
7475         (inline_small_functions): Use nonzero_p.
7476         (ipa_inline): Do not access freed node.
7477
7478 2017-11-03  Wilco Dijkstra  <wdijkstr@arm.com>
7479
7480         * config/aarch64/aarch64.c (aarch64_override_options_internal):
7481         Set PARAM_SCHED_PRESSURE_ALGORITHM to SCHED_PRESSURE_MODEL.
7482
7483 2017-11-03  Kito Cheng  <kito.cheng@gmail.com>
7484
7485         * config/riscv/riscv.c (riscv_legitimize_move): Handle
7486         non-legitimate address.
7487
7488 2017-11-03  Segher Boessenkool  <segher@kernel.crashing.org>
7489
7490         * config/rs6000/rs6000.md (*lt0_disi): Delete.
7491         (*lt0_<mode>di, *lt0_<mode>si): New.
7492
7493 2017-11-03  Segher Boessenkool  <segher@kernel.crashing.org>
7494
7495         * config/rs6000/rs6000.md (move_from_CR_ov_bit): Change condition to
7496         TARGET_PAIRED_FLOAT.
7497
7498 2017-11-03  Siddhesh Poyarekar  <siddhesh.poyarekar@linaro.org>
7499             Jim Wilson  <jim.wilson@linaro.org>
7500
7501         * config/aarch64/aarch64-cores.def (saphira): New CPU.
7502         * config/aarch64/aarch64-tune.md: Regenerated.
7503         * doc/invoke.texi (AArch64 Options/-mtune): Add "saphira".
7504         * gcc/config/aarch64/aarch64.c (saphira_tunings): New tuning table.
7505
7506 2017-11-03  Cupertino Miranda  <cmiranda@synopsys.com>
7507
7508         * config/arc/arc.c (arc_save_restore): Corrected CFA note.
7509         (arc_expand_prologue): Restore blink for millicode.
7510         * config/arc/linux.h (LINK_EH_SPEC): Defined.
7511
7512 2017-11-03  Richard Sandiford  <richard.sandiford@linaro.org>
7513
7514         PR target/82809
7515         * config/i386/i386.c (ix86_vector_duplicate_value): Use
7516         gen_vec_duplicate after forcing the scalar into a register.
7517
7518 2017-11-02  Segher Boessenkool  <segher@kernel.crashing.org>
7519
7520         * combine (try_combine): Print the insns input to try_combine to the
7521         dump file.
7522
7523 2017-11-02  Steve Ellcey  <sellcey@cavium.com>
7524
7525         PR target/79868
7526         * config/aarch64/aarch64-c.c (aarch64_pragma_target_parse):
7527         Remove second argument from aarch64_process_target_attr call.
7528         * config/aarch64/aarch64-protos.h (aarch64_process_target_attr):
7529         Ditto.
7530         * config/aarch64/aarch64.c (aarch64_attribute_info): Change
7531         field type.
7532         (aarch64_handle_attr_arch): Remove second argument.
7533         (aarch64_handle_attr_cpu): Ditto.
7534         (aarch64_handle_attr_tune): Ditto.
7535         (aarch64_handle_attr_isa_flags): Ditto.
7536         (aarch64_process_one_target_attr): Ditto.
7537         (aarch64_process_target_attr): Ditto.
7538         (aarch64_option_valid_attribute_p): Remove second argument.
7539         on aarch64_process_target_attr call.
7540
7541 2017-11-02  David Malcolm  <dmalcolm@redhat.com>
7542
7543         * diagnostic.c: Include "selftest-diagnostic.h".
7544         (selftest::assert_location_text): New function.
7545         (selftest::test_diagnostic_get_location_text): New function.
7546         (selftest::diagnostic_c_tests): Call it.
7547
7548 2017-11-02  David Malcolm  <dmalcolm@redhat.com>
7549
7550         * Makefile.in (OBJS-libcommon): Add selftest-diagnostic.o.
7551         * diagnostic-show-locus.c: Include "selftest-diagnostic.h".
7552         (class selftest::test_diagnostic_context): Move to...
7553         * selftest-diagnostic.c: New file.
7554         * selftest-diagnostic.h: New file.
7555
7556 2017-11-02  James Bowman  <james.bowman@ftdichip.com>
7557
7558         * config/ft32/ft32.c (ft32_addr_space_legitimate_address_p): increase
7559         offset range for FT32B.
7560         * config/ft32/ft32.h: option "mcompress" enables relaxation.
7561         * config/ft32/ft32.md: Add TARGET_NOPM.
7562         * config/ft32/ft32.opt: Add mft32b, mcompress, mnopm.
7563         * gcc/doc/invoke.texi: Add mft32b, mcompress, mnopm.
7564
7565 2017-11-02  Wilco Dijkstra  <wdijkstr@arm.com>
7566
7567         * config/aarch64/aarch64.h (MALLOC_ABI_ALIGNMENT): New define.
7568
7569 2017-11-02  Jeff Law  <law@redhat.com>
7570
7571         * gimple-ssa-sprintf.c (sprintf_dom_walker): Remove
7572         virtual keyword on FINAL OVERRIDE members.
7573
7574         * tree-ssa-propagate.h (ssa_propagation_engine): Group
7575         virtuals together.  Add virtual destructor.
7576         (substitute_and_fold_engine): Similarly.
7577
7578 2017-11-02  Jan Hubicka  <hubicka@ucw.cz>
7579
7580         * x86-tune.def (X86_TUNE_USE_INCDEC): Enable for Haswell+.
7581
7582 2017-11-02  Richard Biener  <rguenther@suse.de>
7583
7584         PR tree-optimization/82795
7585         * tree-if-conv.c (predicate_mem_writes): Remove bogus assert.
7586
7587 2017-11-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
7588
7589         * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Don't require
7590         gcc_SUN_LD_VERSION.
7591         (gcc_GAS_CHECK_FEATURE): Remove.
7592         * configure.ac (ld_vers) <*-*-solaris2*>: Move comments from
7593         gcc_AC_INITFINI_ARRAY here.  Update for Solaris 11.4 changes.
7594         * configure: Regenerate.
7595
7596 2017-11-02  Claudiu Zissulescu <claziss@synopsys.com>
7597
7598         * config/arc/arc.c (hwloop_optimize): Account for empty
7599         body loops.
7600
7601 2017-11-02  Richard Biener  <rguenther@suse.de>
7602
7603         PR middle-end/82765
7604         * varasm.c (decode_addr_const): Make offset HOST_WIDE_INT.
7605         Truncate ARRAY_REF index and element size.
7606
7607 2017-11-01  Palmer Dabbelt  <palmer@dabbelt.com>
7608
7609         * doc/invoke.texi (RISC-V Options): Use "@minus{}2 GB", not "-2 GB".
7610
7611 2017-11-01  Jeff Law  <law@redhat.com>
7612
7613         * tree-ssa-ccp.c (ccp_folder): New class derived from
7614         substitute_and_fold_engine.
7615         (ccp_folder::get_value): New member function.
7616         (ccp_folder::fold_stmt): Renamed from ccp_fold_stmt.
7617         (ccp_fold_stmt): Remove prototype.
7618         (ccp_finalize): Call substitute_and_fold from the ccp_class.
7619         * tree-ssa-copy.c (copy_folder): New class derived from
7620         substitute_and_fold_engine.
7621         (copy_folder::get_value): Renamed from get_value.
7622         (fini_copy_prop): Call substitute_and_fold from copy_folder class.
7623         * tree-vrp.c (vrp_folder): New class derived from
7624         substitute_and_fold_engine.
7625         (vrp_folder::fold_stmt): Renamed from vrp_fold_stmt.
7626         (vrp_folder::get_value): New member function.
7627         (vrp_finalize): Call substitute_and_fold from vrp_folder class.
7628         (evrp_dom_walker::before_dom_children): Similarly for replace_uses_in.
7629         * tree-ssa-propagate.h (substitute_and_fold_engine): New class to
7630         provide a class interface to folder/substitute routines.
7631         (ssa_prop_fold_stmt_fn): Remove typedef.
7632         (ssa_prop_get_value_fn): Likewise.
7633         (subsitute_and_fold): Remove prototype.
7634         (replace_uses_in): Likewise.
7635         * tree-ssa-propagate.c (substitute_and_fold_engine::replace_uses_in):
7636         Renamed from replace_uses_in.  Call the virtual member function
7637         (substitute_and_fold_engine::replace_phi_args_in): Similarly.
7638         (substitute_and_fold_dom_walker): Remove initialization of
7639         data member entries for calbacks.  Add substitute_and_fold_engine
7640         member and initialize it.
7641         (substitute_and_fold_dom_walker::before_dom_children0: Use the
7642         member functions for get_value, replace_phi_args_in c
7643         replace_uses_in, and fold_stmt calls.
7644         (substitute_and_fold_engine::substitute_and_fold): Renamed from
7645         substitute_and_fold.  Remove assert.   Update ctor call.
7646
7647         * tree-ssa-propagate.h (ssa_prop_visit_stmt_fn): Remove typedef.
7648         (ssa_prop_visit_phi_fn): Likewise.
7649         (class ssa_propagation_engine): New class to provide an interface
7650         into ssa_propagate.
7651         * tree-ssa-propagate.c (ssa_prop_visit_stmt): Remove file scoped
7652         variable.
7653         (ssa_prop_visit_phi): Likewise.
7654         (ssa_propagation_engine::simulate_stmt): Moved into class.
7655         Call visit_phi/visit_stmt from the class rather than via
7656         file scoped static variables.
7657         (ssa_propagation_engine::simulate_block): Moved into class.
7658         (ssa_propagation_engine::process_ssa_edge_worklist): Similarly.
7659         (ssa_propagation_engine::ssa_propagate): Similarly.  No longer
7660         set file scoped statics for the visit_stmt/visit_phi callbacks.
7661         * tree-complex.c (complex_propagate): New class derived from
7662         ssa_propagation_engine.
7663         (complex_propagate::visit_stmt): Renamed from complex_visit_stmt.
7664         (complex_propagate::visit_phi): Renamed from complex_visit_phi.
7665         (tree_lower_complex): Call ssa_propagate via the complex_propagate
7666         class.
7667         * tree-ssa-ccp.c: (ccp_propagate): New class derived from
7668         ssa_propagation_engine.
7669         (ccp_propagate::visit_phi): Renamed from ccp_visit_phi_node.
7670         (ccp_propagate::visit_stmt): Renamed from ccp_visit_stmt.
7671         (do_ssa_ccp): Call ssa_propagate from the ccp_propagate class.
7672         * tree-ssa-copy.c (copy_prop): New class derived from
7673         ssa_propagation_engine.
7674         (copy_prop::visit_stmt): Renamed from copy_prop_visit_stmt.
7675         (copy_prop::visit_phi): Renamed from copy_prop_visit_phi_node.
7676         (execute_copy_prop): Call ssa_propagate from the copy_prop class.
7677         * tree-vrp.c (vrp_prop): New class derived from ssa_propagation_engine.
7678         (vrp_prop::visit_stmt): Renamed from vrp_visit_stmt.
7679         (vrp_prop::visit_phi): Renamed from vrp_visit_phi_node.
7680         (execute_vrp): Call ssa_propagate from the vrp_prop class.
7681
7682 2017-11-01  Jakub Jelinek  <jakub@redhat.com>
7683
7684         PR rtl-optimization/82778
7685         PR rtl-optimization/82597
7686         * compare-elim.c (struct comparison): Add in_a_setter field.
7687         (find_comparison_dom_walker::before_dom_children): Remove killed
7688         bitmap and df_simulate_find_defs call, instead walk the defs.
7689         Compute last_setter and initialize in_a_setter.  Merge definitions
7690         with first initialization for a few variables.
7691         (try_validate_parallel): Use insn_invalid_p instead of
7692         recog_memoized.  Return insn rather than just the pattern.
7693         (try_merge_compare): Fix up comment.  Don't uselessly test if
7694         in_a is a REG_P.  Use cmp->in_a_setter instead of walking UD
7695         chains.
7696         (execute_compare_elim_after_reload): Remove df_chain_add_problem
7697         call.
7698
7699 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
7700             Alan Hayward  <alan.hayward@arm.com>
7701             David Sherwood  <david.sherwood@arm.com>
7702
7703         * config/aarch64/aarch64.c (aarch64_rtx_costs): Use
7704         aarch64_hard_regno_nregs to get the number of registers
7705         in a mode.
7706
7707 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
7708             Alan Hayward  <alan.hayward@arm.com>
7709             David Sherwood  <david.sherwood@arm.com>
7710
7711         * config/aarch64/constraints.md (Upl): Rename to...
7712         (Uaa): ...this.
7713         * config/aarch64/aarch64.md
7714         (*zero_extend<SHORT:mode><GPI:mode>2_aarch64, *addsi3_aarch64_uxtw):
7715         Update accordingly.
7716
7717 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
7718             Alan Hayward  <alan.hayward@arm.com>
7719             David Sherwood  <david.sherwood@arm.com>
7720
7721         * config/aarch64/aarch64.c (aarch64_add_constant_internal)
7722         (aarch64_add_constant, aarch64_add_sp, aarch64_sub_sp): Move
7723         earlier in file.
7724
7725 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
7726             Alan Hayward  <alan.hayward@arm.com>
7727             David Sherwood  <david.sherwood@arm.com>
7728
7729         * config/aarch64/aarch64.c (aarch64_evpc_trn, aarch64_evpc_uzp)
7730         (aarch64_evpc_zip, aarch64_evpc_ext, aarch64_evpc_rev)
7731         (aarch64_evpc_dup): Generate rtl direcly, rather than using
7732         named expanders.
7733         (aarch64_expand_vec_perm_const_1): Explicitly check for permutes
7734         of a single element.
7735         * config/aarch64/iterators.md: Add a comment above the permute
7736         unspecs to say that they are generated directly by
7737         aarch64_expand_vec_perm_const.
7738         * config/aarch64/aarch64-simd.md: Likewise the permute instructions.
7739
7740 2017-11-01  Nathan Sidwell  <nathan@acm.org>
7741
7742         * tree-dump.c (dequeue_and_dump): Use HAS_DECL_ASSEMBLER_NAME_P.
7743
7744 2017-11-01  Palmer Dabbelt  <palmer@dabbelt.com>
7745
7746         * doc/invoke.texi (RISC-V Options): Explicitly name the medlow
7747         and medany code models, and describe what they do.
7748
7749 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
7750
7751         Revert accidental duplicate:
7752
7753         * combine.c (can_change_dest_mode): Reject changes in
7754         REGMODE_NATURAL_SIZE.
7755
7756 2017-11-01  Segher Boessenkool  <segher@kernel.crashing.org>
7757
7758         PR rtl-optimization/64682
7759         PR rtl-optimization/69567
7760         PR rtl-optimization/69737
7761         PR rtl-optimization/82683
7762         * combine.c (distribute_notes) <REG_DEAD>: If the new I2 sets the same
7763         register mentioned in the note, drop the note, unless it came from I3,
7764         in which case it should go to I3 again.
7765
7766 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
7767
7768         * tree-ssa-dse.c (normalize_ref): Check whether the ranges overlap
7769         and return false if not.
7770         (clear_bytes_written_by, live_bytes_read): Update accordingly.
7771
7772 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
7773
7774         * tree-ssa-alias.h (ranges_overlap_p): Return false if either
7775         range is known to be empty.
7776
7777 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
7778             Alan Hayward  <alan.hayward@arm.com>
7779             David Sherwood  <david.sherwood@arm.com>
7780
7781         * simplify-rtx.c (simplify_const_unary_operation): Use GET_MODE_NUNITS
7782         and CONST_VECTOR_NUNITS instead of computing the number of units from
7783         the byte sizes of the vector and element.
7784         (simplify_binary_operation_1): Likewise.
7785         (simplify_const_binary_operation): Likewise.
7786         (simplify_ternary_operation): Likewise.
7787
7788 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
7789             Alan Hayward  <alan.hayward@arm.com>
7790             David Sherwood  <david.sherwood@arm.com>
7791
7792         * var-tracking.c (INT_MEM_OFFSET): Replace with...
7793         (int_mem_offset): ...this new function.
7794         (var_mem_set, var_mem_delete_and_set, var_mem_delete)
7795         (find_mem_expr_in_1pdv, dataflow_set_preserve_mem_locs)
7796         (same_variable_part_p, use_type, add_stores, vt_get_decl_and_offset):
7797         Update accordingly.
7798
7799 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
7800             Alan Hayward  <alan.hayward@arm.com>
7801             David Sherwood  <david.sherwood@arm.com>
7802
7803         * lower-subreg.c (interesting_mode_p): New function.
7804         (compute_costs, find_decomposable_subregs, decompose_register)
7805         (simplify_subreg_concatn, can_decompose_p, resolve_simple_move)
7806         (resolve_clobber, dump_choices): Use it.
7807
7808 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
7809             Alan Hayward  <alan.hayward@arm.com>
7810             David Sherwood  <david.sherwood@arm.com>
7811
7812         * rtlhash.c (add_rtx): Use add_hwi for 'w' and add_int for 'i'.
7813
7814 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
7815             Alan Hayward  <alan.hayward@arm.com>
7816             David Sherwood  <david.sherwood@arm.com>
7817
7818         * alias.c (find_base_value, find_base_term): Only process integer
7819         truncations.  Check the precision rather than the size.
7820
7821 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
7822             Alan Hayward  <alan.hayward@arm.com>
7823             David Sherwood  <david.sherwood@arm.com>
7824
7825         * machmode.h (is_narrower_int_mode): New function
7826         * optabs.c (expand_float, expand_fix): Use it.
7827         * dwarf2out.c (rotate_loc_descriptor): Likewise.
7828
7829 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
7830             Alan Hayward  <alan.hayward@arm.com>
7831             David Sherwood  <david.sherwood@arm.com>
7832
7833         * rtl.h (narrower_subreg_mode): New function.
7834         * ira-color.c (update_costs_from_allocno): Use it.
7835
7836 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
7837             Alan Hayward  <alan.hayward@arm.com>
7838             David Sherwood  <david.sherwood@arm.com>
7839
7840         * optabs-query.h (convert_optab_p): New function, split out from...
7841         (convert_optab_handler): ...here.
7842         (widening_optab_handler): Delete.
7843         (find_widening_optab_handler): Remove permit_non_widening parameter.
7844         (find_widening_optab_handler_and_mode): Likewise.  Provide an
7845         override that operates on mode class wrappers.
7846         * optabs-query.c (widening_optab_handler): Delete.
7847         (find_widening_optab_handler_and_mode): Remove permit_non_widening
7848         parameter.  Assert that the two modes are the same class and that
7849         the "from" mode is narrower than the "to" mode.  Use
7850         convert_optab_handler instead of widening_optab_handler.
7851         * expmed.c (expmed_mult_highpart_optab): Use convert_optab_handler
7852         instead of widening_optab_handler.
7853         * expr.c (expand_expr_real_2): Update calls to
7854         find_widening_optab_handler.
7855         * optabs.c (expand_widen_pattern_expr): Likewise.
7856         (expand_binop_directly): Take the insn_code as a parameter.
7857         (expand_binop): Only call find_widening_optab_handler for
7858         conversion optabs; use optab_handler otherwise.  Update calls
7859         to find_widening_optab_handler and expand_binop_directly.
7860         Use convert_optab_handler instead of widening_optab_handler.
7861         * tree-ssa-math-opts.c (convert_mult_to_widen): Update calls to
7862         find_widening_optab_handler and use scalar_mode rather than
7863         machine_mode.
7864         (convert_plusminus_to_widen): Likewise.
7865
7866 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
7867             Alan Hayward  <alan.hayward@arm.com>
7868             David Sherwood  <david.sherwood@arm.com>
7869
7870         * machmode.h (fixed_size_mode): New class.
7871         * rtl.h (get_pool_mode): Return fixed_size_mode.
7872         * gengtype.c (main): Add fixed_size_mode.
7873         * target.def (get_raw_result_mode): Return a fixed_size_mode.
7874         (get_raw_arg_mode): Likewise.
7875         * doc/tm.texi: Regenerate.
7876         * targhooks.h (default_get_reg_raw_mode): Return a fixed_size_mode.
7877         * targhooks.c (default_get_reg_raw_mode): Likewise.
7878         * config/ia64/ia64.c (ia64_get_reg_raw_mode): Likewise.
7879         * config/mips/mips.c (mips_get_reg_raw_mode): Likewise.
7880         * config/msp430/msp430.c (msp430_get_raw_arg_mode): Likewise.
7881         (msp430_get_raw_result_mode): Likewise.
7882         * config/avr/avr-protos.h (regmask): Use as_a <fixed_side_mode>
7883         * dbxout.c (dbxout_parms): Require fixed-size modes.
7884         * expr.c (copy_blkmode_from_reg, copy_blkmode_to_reg): Likewise.
7885         * gimple-ssa-store-merging.c (encode_tree_to_bitpos): Likewise.
7886         * omp-low.c (lower_oacc_reductions): Likewise.
7887         * simplify-rtx.c (simplify_immed_subreg): Take fixed_size_modes.
7888         (simplify_subreg): Update accordingly.
7889         * varasm.c (constant_descriptor_rtx::mode): Change to fixed_size_mode.
7890         (force_const_mem): Update accordingly.  Return NULL_RTX for modes
7891         that aren't fixed-size.
7892         (get_pool_mode): Return a fixed_size_mode.
7893         (output_constant_pool_2): Take a fixed_size_mode.
7894
7895 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
7896             Alan Hayward  <alan.hayward@arm.com>
7897             David Sherwood  <david.sherwood@arm.com>
7898
7899         * doc/rtl.texi (vec_series): Document.
7900         (const): Say that the operand can be a vec_series.
7901         * rtl.def (VEC_SERIES): New rtx code.
7902         * rtl.h (const_vec_series_p_1): Declare.
7903         (const_vec_series_p): New function.
7904         * emit-rtl.h (gen_const_vec_series): Declare.
7905         (gen_vec_series): Likewise.
7906         * emit-rtl.c (const_vec_series_p_1, gen_const_vec_series)
7907         (gen_vec_series): Likewise.
7908         * optabs.c (expand_mult_highpart): Use gen_const_vec_series.
7909         * simplify-rtx.c (simplify_unary_operation): Handle negations
7910         of vector series.
7911         (simplify_binary_operation_series): New function.
7912         (simplify_binary_operation_1): Use it.  Handle VEC_SERIES.
7913         (test_vector_ops_series): New function.
7914         (test_vector_ops): Call it.
7915         * config/powerpcspe/altivec.md (altivec_lvsl): Use
7916         gen_const_vec_series.
7917         (altivec_lvsr): Likewise.
7918         * config/rs6000/altivec.md (altivec_lvsl, altivec_lvsr): Likewise.
7919
7920 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
7921             Alan Hayward  <alan.hayward@arm.com>
7922             David Sherwood  <david.sherwood@arm.com>
7923
7924         * doc/rtl.texi (const): Update description of address constants.
7925         Say that vector constants are allowed too.
7926         * common.md (E, F): Use CONSTANT_P instead of checking for
7927         CONST_VECTOR.
7928         * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
7929         checking for CONST_VECTOR.
7930         * expmed.c (make_tree): Use build_vector_from_val for a CONST
7931         VEC_DUPLICATE.
7932         * expr.c (expand_expr_real_2): Check for vector modes instead
7933         of checking for CONST_VECTOR.
7934         * rtl.h (const_vec_p): New function.
7935         (const_vec_duplicate_p): Check for a CONST VEC_DUPLICATE.
7936         (unwrap_const_vec_duplicate): Handle them here too.
7937
7938 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
7939             David Malcolm  <dmalcolm@redhat.com>
7940             Alan Hayward  <alan.hayward@arm.com>
7941             David Sherwood  <david.sherwood@arm.com>
7942
7943         * rtl.h (vec_duplicate_p): New function.
7944         * selftest-rtl.c (assert_rtx_eq_at): New function.
7945         * selftest-rtl.h (ASSERT_RTX_EQ): New macro.
7946         (assert_rtx_eq_at): Declare.
7947         * selftest.h (selftest::simplify_rtx_c_tests): Declare.
7948         * selftest-run-tests.c (selftest::run_tests): Call it.
7949         * simplify-rtx.c: Include selftest.h and selftest-rtl.h.
7950         (simplify_unary_operation_1): Recursively handle vector duplicates.
7951         (simplify_binary_operation_1): Likewise.  Handle VEC_SELECTs of
7952         vector duplicates.
7953         (simplify_subreg): Handle subregs of vector duplicates.
7954         (make_test_reg, test_vector_ops_duplicate, test_vector_ops)
7955         (selftest::simplify_rtx_c_tests): New functions.
7956
7957 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
7958             Alan Hayward  <alan.hayward@arm.com>
7959             David Sherwood  <david.sherwood@arm.com>
7960
7961         * emit-rtl.h (gen_const_vec_duplicate): Declare.
7962         (gen_vec_duplicate): Likewise.
7963         * emit-rtl.c (gen_const_vec_duplicate_1): New function, split
7964         out from...
7965         (gen_const_vector): ...here.
7966         (gen_const_vec_duplicate, gen_vec_duplicate): New functions.
7967         (gen_rtx_CONST_VECTOR): Use gen_const_vec_duplicate for constants
7968         whose elements are all equal.
7969         * optabs.c (expand_vector_broadcast): Use gen_const_vec_duplicate.
7970         * simplify-rtx.c (simplify_const_unary_operation): Likewise.
7971         (simplify_relational_operation): Likewise.
7972         * config/aarch64/aarch64.c (aarch64_simd_gen_const_vector_dup):
7973         Likewise.
7974         (aarch64_simd_dup_constant): Use gen_vec_duplicate.
7975         (aarch64_expand_vector_init): Likewise.
7976         * config/arm/arm.c (neon_vdup_constant): Likewise.
7977         (neon_expand_vector_init): Likewise.
7978         (arm_expand_vec_perm): Use gen_const_vec_duplicate.
7979         (arm_block_set_unaligned_vect): Likewise.
7980         (arm_block_set_aligned_vect): Likewise.
7981         * config/arm/neon.md (neon_copysignf<mode>): Likewise.
7982         * config/i386/i386.c (ix86_expand_vec_perm): Likewise.
7983         (expand_vec_perm_even_odd_pack): Likewise.
7984         (ix86_vector_duplicate_value): Use gen_vec_duplicate.
7985         * config/i386/sse.md (one_cmpl<mode>2): Use CONSTM1_RTX.
7986         * config/ia64/ia64.c (ia64_expand_vecint_compare): Use
7987         gen_const_vec_duplicate.
7988         * config/ia64/vect.md (addv2sf3, subv2sf3): Use CONST1_RTX.
7989         * config/mips/mips.c (mips_gen_const_int_vector): Use
7990         gen_const_vec_duplicate.
7991         (mips_expand_vector_init): Use CONST0_RTX.
7992         * config/powerpcspe/altivec.md (abs<mode>2, nabs<mode>2): Likewise.
7993         (define_split): Use gen_const_vec_duplicate.
7994         * config/rs6000/altivec.md (abs<mode>2, nabs<mode>2): Use CONST0_RTX.
7995         (define_split): Use gen_const_vec_duplicate.
7996         * config/s390/vx-builtins.md (vec_genmask<mode>): Likewise.
7997         (vec_ctd_s64, vec_ctd_u64, vec_ctsl, vec_ctul): Likewise.
7998         * config/spu/spu.c (spu_const): Likewise.
7999
8000 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8001             Alan Hayward  <alan.hayward@arm.com>
8002             David Sherwood  <david.sherwood@arm.com>
8003
8004         * combine.c (can_change_dest_mode): Reject changes in
8005         REGMODE_NATURAL_SIZE.
8006
8007 2017-10-31  Sandra Loosemore  <sandra@codesourcery.com>
8008
8009         * configure.ac (--enable-libssp): New.
8010         (gcc_cv_libc_provides_ssp): Check for explicit setting before
8011         trying to determine target-specific default.  Adjust indentation.
8012         * configure: Regenerated.
8013         * doc/install.texi (Configuration): Expand --disable-libssp
8014         documentation.
8015
8016 2017-10-31  Daniel Santos  <daniel.santos@pobox.com>
8017
8018         config/i386/i386.c (ix86_expand_epilogue): Correct stack
8019         calculation.
8020
8021 2017-10-31  Martin Jambor  <mjambor@suse.cz>
8022
8023         PR c++/81702
8024         * gimple-fold.c (gimple_get_virt_method_for_vtable): Remove assert.
8025
8026 2017-10-31  David Malcolm  <dmalcolm@redhat.com>
8027
8028         * auto-profile.c (autofdo_source_profile::read): Use
8029         UNKNOWN_LOCATION rather than 0.
8030         * diagnostic-core.h (warning_at_rich_loc): Rename to...
8031         (warning_at): ...this overload.
8032         (warning_at_rich_loc_n): Rename to...
8033         (warning_n): ...this overload.
8034         (error_at_rich_loc): Rename to...
8035         (error_at): ...this overload.
8036         (pedwarn_at_rich_loc): Rename to...
8037         (pedwarn): ...this overload.
8038         (permerror_at_rich_loc): Rename to...
8039         (permerror): ...this overload.
8040         (inform_at_rich_loc): Rename to...
8041         (inform): ...this overload.
8042         * diagnostic.c: (diagnostic_n_impl): Delete location_t-based decl.
8043         (diagnostic_n_impl_richloc): Rename to...
8044         (diagnostic_n_impl): ...this rich_location *-based decl.
8045         (inform_at_rich_loc): Rename to...
8046         (inform): ...this, and add an assertion.
8047         (inform_n): Update for removal of location_t-based diagnostic_n_impl.
8048         (warning_at_rich_loc): Rename to...
8049         (warning_at): ...this, and add an assertion.
8050         (warning_at_rich_loc_n): Rename to...
8051         (warning_n): ...this, and add an assertion.
8052         (warning_n): Update location_t-based implementation for removal of
8053         location_t-based diagnostic_n_impl.
8054         (pedwarn_at_rich_loc): Rename to...
8055         (pedwarn): ...this, and add an assertion.
8056         (permerror_at_rich_loc): Rename to...
8057         (permerror): ...this, and add an assertion.
8058         (error_n): Update for removal of location_t-based diagnostic_n_impl.
8059         (error_at_rich_loc): Rename to...
8060         (error_at): ...this, and add an assertion.
8061         * gcc.c (do_spec_1): Use UNKNOWN_LOCATION rather than 0.
8062         (driver::do_spec_on_infiles): Likewise.
8063         * substring-locations.c (format_warning_va): Update for renaming
8064         of inform_at_rich_loc.
8065
8066 2017-10-31  Michael Meissner  <meissner@linux.vnet.ibm.com>
8067
8068         * builtins.def (DEF_FLOATN_BUILTIN): Change most _Float<N> and
8069         _Float<N>X built-in functions so that the variant without the
8070         "__builtin_" prefix is only enabled for the GNU C and Objective C
8071         languages when they are in non-strict ANSI/ISO mode.
8072         (DEF_EXT_LIB_FLOATN_NX_BUILTINS): Likewise.
8073         * target.def (floatn_builtin_p): Add a target hook to control
8074         whether _Float<N> and _Float<N>X built-in functions without the
8075         "__builtin_" prefix are enabled, and return true for C and
8076         Objective C in the default hook.  Include langhooks.h in
8077         targhooks.c.
8078         * targhooks.h (default_floatn_builtin_p): Likewise.
8079         * targhooks.c (default_floatn_builtin_p): Likewise.
8080         * doc/tm.texi.in (TARGET_FLOATN_BUILTIN_P): Document the
8081         floatn_builtin_p target hook.
8082         * doc/tm.texi (TARGET_FLOATN_BUILTIN_P): Likewise.
8083
8084 2017-10-31  Matthew Fortune  <matthew.fortune@imgtec.com>
8085             Eric Botcazou  <ebotcazou@adacore.com>
8086
8087         PR rtl-optimization/81803
8088         * lra-constraints.c (curr_insn_transform): Also reload the whole
8089         register for a strict subreg no wider than a word if this is for
8090         a WORD_REGISTER_OPERATIONS target.
8091
8092 2017-10-31  Jason Merrill  <jason@redhat.com>
8093
8094         * gdbinit.in: Skip over inlines from timevar.h.
8095
8096 2017-10-31  Martin Liska  <mliska@suse.cz>
8097
8098         * doc/gcov.texi: Document new option.
8099         * gcov.c (print_usage): Likewise print it.
8100         (process_args): Support the argument.
8101         (format_count): New function.
8102         (format_gcov): Use the function.
8103
8104 2017-10-31  Martin Liska  <mliska@suse.cz>
8105
8106         * gcov.c (struct name_map): do not use typedef.
8107         Define operator== and operator<.
8108         (name_search): Remove.
8109         (name_sort): Remove.
8110         (main): Do not allocate names.
8111         (process_file): Add vertical space.
8112         (generate_results): Use std::find.
8113         (release_structures): Do not release memory.
8114         (find_source): Use std::find.
8115
8116 2017-10-31  Martin Liska  <mliska@suse.cz>
8117
8118         * gcov.c (struct line_info): Remove it's typedef.
8119         (line_info::line_info): Add proper ctor.
8120         (line_info::has_block): Do not use a typedef.
8121         (struct source_info): Do not use typedef.
8122         (circuit): Likewise.
8123         (get_cycles_count): Likewise.
8124         (output_intermediate_file): Iterate via vector iterator.
8125         (add_line_counts): Use std::vector methods.
8126         (accumulate_line_counts): Likewise.
8127         (output_lines): Likewise.
8128
8129 2017-10-31  Martin Liska  <mliska@suse.cz>
8130
8131         * gcov.c (struct source_info): Remove typedef.
8132         (source_info::source_info): Add proper ctor.
8133         (accumulate_line_counts): Use struct, not it's typedef.
8134         (output_gcov_file): Likewise.
8135         (output_lines): Likewise.
8136         (main): Do not allocate an array.
8137         (output_intermediate_file): Use size of vector container.
8138         (process_file): Resize the vector.
8139         (generate_results): Do not preallocate, use newly added vector
8140         lines.
8141         (release_structures): Do not release sources.
8142         (find_source): Use vector methods.
8143         (add_line_counts): Do not use typedef.
8144
8145 2017-10-31  Martin Liska  <mliska@suse.cz>
8146
8147         * doc/gcov.texi: Document that.
8148         * gcov.c (add_line_counts): Mark lines with a non-executed
8149         statement.
8150         (output_line_beginning): Handle such lines.
8151         (output_lines): Pass new argument.
8152         (output_intermediate_file): Print it in intermediate format.
8153
8154 2017-10-31  Martin Liska  <mliska@suse.cz>
8155
8156         * color-macros.h: New file.
8157         * diagnostic-color.c: Factor out color related to macros to
8158         color-macros.h.
8159         * doc/gcov.texi: Document -k option.
8160         * gcov.c (INCLUDE_STRING): Include string.h.
8161         (print_usage): Add -k option.
8162         (process_args): Parse it.
8163         (pad_count_string): New function.
8164         (output_line_beginning): Likewise.
8165         (DEFAULT_LINE_START): New macro.
8166         (output_lines): Support color output.
8167
8168 2017-10-31  Martin Liska  <mliska@suse.cz>
8169
8170         PR gcov-profile/82633
8171         * doc/gcov.texi: Document -fkeep-{static,inline}-functions and
8172         their interaction with GCOV infrastructure.
8173         * configure.ac: Add -fkeep-{inline,static}-functions to
8174         coverage_flags.
8175         * configure: Regenerate.
8176
8177 2017-10-31  Uros Bizjak  <ubizjak@gmail.com>
8178
8179         PR target/82772
8180         * config/alpha/sync.md (fetchop_constr) <and>: Change to "rINM".
8181
8182 2017-10-31  Segher Boessenkool  <segher@kernel.crashing.org>
8183
8184         PR target/82674
8185         * config/rs6000/rs6000.md (allocate_stack): Force update interval
8186         into a register if it does not fit into an immediate offset field.
8187
8188 2017-10-31  Olivier Hainque  <hainque@adacore.com>
8189
8190         * gcc/Makefile.in (FLAGS_TO_PASS): Pass libsubdir as well.
8191
8192 2017-10-31  Julia Koval  <julia.koval@intel.com>
8193
8194         * config.gcc: Add gfniintrin.h.
8195         * config/i386/gfniintrin.h: New.
8196         * config/i386/i386-builtin-types.def
8197         (__builtin_ia32_vgf2p8affineinvqb_v64qi,
8198         __builtin_ia32_vgf2p8affineinvqb_v64qi_mask,
8199         __builtin_ia32_vgf2p8affineinvqb_v32qi,
8200         __builtin_ia32_vgf2p8affineinvqb_v32qi_mask,
8201         __builtin_ia32_vgf2p8affineinvqb_v16qi,
8202         __builtin_ia32_vgf2p8affineinvqb_v16qi_mask): New builtins.
8203         * config/i386/i386-builtin.def (V64QI_FTYPE_V64QI_V64QI_INT_V64QI_UDI,
8204         V32QI_FTYPE_V32QI_V32QI_INT_V32QI_USI,
8205         V16QI_FTYPE_V16QI_V16QI_INT_V16QI_UHI,
8206         V64QI_FTYPE_V64QI_V64QI_INT): New types.
8207         * config/i386/i386.c (ix86_expand_args_builtin): Handle new types.
8208         * config/i386/immintrin.h: Include gfniintrin.h.
8209         * config/i386/sse.md (vgf2p8affineinvqb_*) New pattern.
8210
8211 2017-10-30  Eric Botcazou  <ebotcazou@adacore.com>
8212
8213         * gcc.c (HAVE_TARGET_EXECUTABLE_SUFFIX): Remove old kludge.
8214
8215 2017-10-30  Wilco Dijkstra  <wdijkstr@arm.com>
8216
8217         * config/arm/arm.md (ashldi3): Remove shift by 1 expansion.
8218         (arm_ashldi3_1bit): Remove pattern.
8219         (ashrdi3): Remove shift by 1 expansion.
8220         (arm_ashrdi3_1bit): Remove pattern.
8221         (lshrdi3): Remove shift by 1 expansion.
8222         (arm_lshrdi3_1bit): Remove pattern.
8223         * config/arm/arm.c (arm_rtx_costs_internal): Slightly increase
8224         cost of ashldi3 by 1.
8225         * config/arm/neon.md (ashldi3_neon): Remove shift by 1 expansion.
8226         (<shift>di3_neon): Likewise.
8227
8228 2017-10-30  Dominik Infuehr  <dominik.infuehr@theobroma-systems.com>
8229
8230         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov): Rename
8231         both identically named patterns to (*aarch64_simd_mov<VD:mode>)
8232         and (*aarch64_simd_mov<VQ:mode>).
8233         (*aarch64_simd_mov<VD:mode>): Change type attribute to match
8234         pattern alternative.
8235         (*aarch64_simd_mov<VQ:mode>): Re-order and change type
8236         attributes to match pattern alternative.
8237
8238 2017-10-30  Steven Munroe  <munroesj@gcc.gnu.org>
8239
8240         * config.gcc (powerpc*-*-*): Add emmintrin.h.
8241         * config/rs6000/emmintrin.h: New file.
8242         * config/rs6000/x86intrin.h [__ALTIVEC__]: Include emmintrin.h.
8243
8244 2017-10-30  Wilco Dijkstra  <wdijkstr@arm.com>
8245
8246         * config/arm/vfp.md (movdi_vfp): Merge changes from movdi_vfp_cortexa8.
8247         * (movdi_vfp_cortexa8): Remove pattern.
8248
8249 2017-10-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8250
8251         * doc/install.texi (Specific, alpha*-*-*): Remove DEC OSF/1
8252         etc. reference.
8253         (Specific, alpha*-dec-osf5.1): Remove.
8254         (Specific, mips-sgi-irix5): Remove.
8255         (Specific, mips-sgi-irix6): Remove.
8256
8257 2017-10-30  Jakub Jelinek  <jakub@redhat.com>
8258
8259         PR middle-end/22141
8260         * gimple-ssa-store-merging.c (merged_store_group::apply_stores): Fix
8261         arguments to clear_bit_region_be.
8262
8263 2017-10-30  Jim Wilson  <wilson@tuliptree.org>
8264
8265         * gimplify.c: Include memmodel.h.
8266
8267 2017-10-30  Martin Jambor  <mjambor@suse.cz>
8268
8269         * omp-grid.c (grid_attempt_target_gridification): Also insert a
8270         condition whether loop should be executed at all.
8271
8272 2017-10-30  Will Schmidt  <will_schmidt@vnet.ibm.com>
8273
8274         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
8275         gimple folding of vec_madd() intrinsics.
8276         * config/rs6000/altivec.md (mulv8hi3): Rename altivec_vmladduhm to
8277         fmav8hi4.  (altivec_vmladduhm): Rename to fmav8hi4.
8278         * config/rs6000/rs6000-builtin.def: Rename vmladduhm to fmav8hi4
8279
8280 2017-10-30  Richard Biener  <rguenther@suse.de>
8281
8282         PR tree-optimization/82762
8283         Revert
8284         2017-10-23  Richard Biener  <rguenther@suse.de>
8285
8286         PR tree-optimization/82129
8287         Revert
8288         2017-08-01  Richard Biener  <rguenther@suse.de>
8289
8290         PR tree-optimization/81181
8291         * tree-ssa-pre.c (compute_antic_aux): Defer clean() to ...
8292         (compute_antic): ... end of iteration here.
8293
8294 2017-10-30  Joseph Myers  <joseph@codesourcery.com>
8295
8296         * doc/invoke.texi (C Dialect Options): Document -std=c17,
8297         -std=iso9899:2017 and -std=gnu17.
8298         * doc/standards.texi (C Language): Document C17 support.
8299         * doc/cpp.texi (Overview): Mention -std=c17.
8300         (Standard Predefined Macros): Document C11 and C17 values of
8301         __STDC_VERSION__.  Do not refer to C99 support as incomplete.
8302         * doc/extend.texi (Inline): Do not list individual options for
8303         standards newer than C99.
8304         * dwarf2out.c (highest_c_language, gen_compile_unit_die): Handle
8305         "GNU C17".
8306         * config/rl78/rl78.c (rl78_option_override): Handle "GNU C17"
8307         language name.
8308
8309 2017-10-30  Maxim Ostapenko  <m.ostapenko@samsung.com>
8310
8311         * asan.c (asan_finish_file): Align asan globals array by shadow
8312         granularity.
8313
8314 2017-10-30  Jakub Jelinek  <jakub@redhat.com>
8315
8316         PR middle-end/22141
8317         * gimple-ssa-store-merging.c: Include rtl.h and expr.h.
8318         (struct store_immediate_info): Add bitregion_start and bitregion_end
8319         fields.
8320         (store_immediate_info::store_immediate_info): Add brs and bre
8321         arguments and initialize bitregion_{start,end} from those.
8322         (struct merged_store_group): Add bitregion_start, bitregion_end,
8323         align_base and mask fields.  Drop unnecessary struct keyword from
8324         struct store_immediate_info.  Add do_merge method.
8325         (clear_bit_region_be): Use memset instead of loop storing zeros.
8326         (merged_store_group::do_merge): New method.
8327         (merged_store_group::merge_into): Use do_merge.  Allow gaps in between
8328         stores as long as the surrounding bitregions have no gaps.
8329         (merged_store_group::merge_overlapping): Use do_merge.
8330         (merged_store_group::apply_stores): Test that bitregion_{start,end}
8331         is byte aligned, rather than requiring that start and width are
8332         byte aligned.  Drop unnecessary struct keyword from
8333         struct store_immediate_info.  Allocate and populate also mask array.
8334         Make start of the arrays relative to bitregion_start rather than
8335         start and size them according to bitregion_{end,start} difference.
8336         (struct imm_store_chain_info): Drop unnecessary struct keyword from
8337         struct store_immediate_info.
8338         (pass_store_merging::gate): Punt if BITS_PER_UNIT or CHAR_BIT is not 8.
8339         (pass_store_merging::terminate_all_aliasing_chains): Drop unnecessary
8340         struct keyword from struct store_immediate_info.
8341         (imm_store_chain_info::coalesce_immediate_stores): Allow gaps in
8342         between stores as long as the surrounding bitregions have no gaps.
8343         Formatting fixes.
8344         (struct split_store): Add orig non-static data member.
8345         (split_store::split_store): Initialize orig to false.
8346         (find_constituent_stmts): Return store_immediate_info *, non-NULL
8347         if there is exactly a single original stmt.  Change stmts argument
8348         to pointer from reference, if NULL, don't push anything to it.  Add
8349         first argument, use it to optimize skipping over orig stmts that
8350         are known to be before bitpos already.  Simplify.
8351         (split_group): Return unsigned int count how many stores are or
8352         would be needed rather than a bool.  Add allow_unaligned argument.
8353         Change split_stores argument from reference to pointer, if NULL,
8354         only do a dry run computing how many stores would be produced.
8355         Rewritten algorithm to use both alignment and misalign if
8356         !allow_unaligned and handle bitfield stores with gaps.
8357         (imm_store_chain_info::output_merged_store): Set start_byte_pos
8358         from bitregion_start instead of start.  Compute allow_unaligned
8359         here, if true, do 2 split_group dry runs to compute which one
8360         produces fewer stores and prefer aligned if equal.  Punt if
8361         new count is bigger or equal than original before emitting any
8362         statements, rather than during that.  Remove no longer needed
8363         new_ssa_names tracking.  Replace num_stmts with
8364         split_stores.length ().  Use 32-bit stack allocated entries
8365         in split_stores auto_vec.  Try to reuse original store lhs/rhs1
8366         if possible.  Handle bitfields with gaps.
8367         (pass_store_merging::execute): Ignore bitsize == 0 stores.
8368         Compute bitregion_{start,end} for the stores and construct
8369         store_immediate_info with that.  Formatting fixes.
8370
8371 2017-10-30  Uros Bizjak  <ubizjak@gmail.com>
8372
8373         PR target/82725
8374         * config/i386/i386.c (legitimate_pic_address_disp_p): Allow
8375         UNSPEC_DTPOFF and UNSPEC_NTPOFF with SImode immediate offset.
8376
8377 2017-10-29  Jim Wilson  <wilson@tuliptree.org>
8378
8379         * gimplify.c: Include tm_p.h.
8380
8381         * common.opt (gcoff): Re-add as ignored option.
8382         (gcoff1, gcoff2, gcoff3): Likewise.
8383
8384         * Makefile.in (OBJS): Delete sdbout.o.
8385         (GTFILES): Delete $(srcdir)/sdbout.c.
8386         * debug.h: Delete sdb_debug_hooks.
8387         * final.c: Delete sdbout.h include.
8388         (final_scan_insn): Delete SDB_DEBUG check.
8389         (rest_of_clean_state): Likewise.
8390         * output.h: Delete sdb_begin_function_line.
8391         * sdbout.c: Delete.
8392         * sdbout.h: Delete.
8393         * toplev.c: Delete sdbout.h include.
8394         (process_options): Delete SDB_DEBUG check.
8395         * tree-core.h (tree_type_common): Delete pointer field of
8396         tree_type_symtab.
8397         * tree.c (copy_node): Clear TYPE_SYMTAB_DIE instead of
8398         TYPE_SYMTAB_POINTER.
8399         * tree.h (TYPE_SYMTAB_POINTER): Delete.
8400         (TYPE_SYMTAB_IS_POINTER): Delete.
8401         (TYPE_SYMTAB_IS_DIE): Renumber.
8402         * xcoffout.c: Refer to former sdbout.c file.
8403         (xcoffout_begin_prologue): Use past tense for sdbout.c reference.
8404
8405         * doc/install.texi (--with-stabs): Delete COFF and ECOFF info.
8406         * doc/invoke.texi (SEEALSO): Delete adb and sdb references.
8407         (Debugging Options): Delete -gcoff.
8408         (-gstabs): Delete SDB reference.
8409         (-gcoff): Delete.
8410         (-gcoff@var{level}): Delete.
8411         * doc/passes.texi (Debugging information output): Delete SDB and
8412         sdbout.c references.
8413         * doc/tm.texi: Regenerate.
8414         * doc/tm.texi.in (DWARF_CIE_DATA_ALIGNMENT): Delete SDB from xref.
8415         (SDB and DWARF): Change node name to DWARF and delete SDB and COFF
8416         references.
8417         (DEBUGGER_AUTO_OFFSET): Delete COFF and SDB references.
8418         (PREFERRED_DEBUGGING_TYPE): Delete SDB_DEBUG and -gcoff references.
8419         (SDB_DEBUGGING_INFO): Delete.
8420         (PUT_SDB_@dots{}, SDB_DELIM, SDB_ALLOW_UNKNOWN_REFERENCES)
8421         SDB_ALLOW_FORWARD_REFERENCES, SDB_OUTPUT_SOURCE_LINE): Delete.
8422         * target.def (output_source_filename): Delete COFF reference.
8423
8424         * common.opt (gcoff): Delete.
8425         (gxcoff+): Update Negative chain.
8426         * defaults.h: Delete all references to SDB_DEBUGGING_INFO and
8427         SDB_DEBUG.
8428         * dwarf2out.c (gen_array_type_die): Change SDB to debuggers.
8429         * flag-types.h (enum debug_info_type): Delete SDB_DEBUG.
8430         * function.c (number_blocks): Delete SDB_DEBUGGING_INFO, SDB_DEBUG,
8431         and SDB references.
8432         (expand_function_start): Change sdb reference to past tense.
8433         (expand_function_end): Change sdb reference to past tense.
8434         * gcc.c (cpp_unique_options): Delete gcoff3 reference.
8435         * opts.c (debug_type_names): Delete coff entry.
8436         (common_handle_option): Delete OPT_gcoff case.
8437         * system.h (SDB_DEBUG, SDB_DEBUGGING_INFO): Poison.
8438
8439         * config/dbxcoff.h (PREFERRED_DEBUGGING_TYPE): Set to DBX_DEBUG.
8440         * config/cris/cris.h: Delete SDB reference in comment.
8441         * config/i386/cygming.h: Don't define SDB_DEBUGGING_INFO.
8442         (ASM_DECLARE_FUNCTION_NAME): Delete SDB reference from comment.
8443         * config/i386/gas.h: Don't define SDB_DEBUGGING_INFO.
8444         * config/i386/i386.c (svr4_dbx_register_map): Change SDB references
8445         to past tense.
8446         (ix86_expand_prologue): Likewise.
8447         * config/i386/winnt.c (i386_pe_start_function): Don't check SDB_DEBUG.
8448         * config/ia64/ia64.h: Likewise.
8449         * config/m68k/m68kelf.h (DBX_REGISTER_NUMBER): Delete SDB reference.
8450         * config/mips/mips.h (SUBTARGET_ASM_DEBUGGING_SPEC): Delete gcoff*
8451         support.
8452         * config/mmix/mmix.h: Likewise.
8453         * config/nds32/nds32.c: Likewise.
8454         * config/stormy/storym16.h: Likewise.
8455         * config/visium/visium.h: Likewise.
8456         * config/vx-common.h (SDB_DEBUGGING_INFO): Delete undef.
8457
8458 2017-10-28  Sandra Loosemore  <sandra@codesourcery.com>
8459
8460         * config/nios2/nios2.h (FRAME_GROWS_DOWNWARD): Define to 1.
8461         * config/nios2/nios2.c (nios2_initial_elimination_offset):  Make
8462         FRAME_POINTER_REGNUM point at high end of local var area.
8463
8464 2017-10-27  Eric Botcazou  <ebotcazou@adacore.com>
8465
8466         * bb-reorder.c (find_traces_1_round): Fix off-by-one index.
8467         Move comment around.  Do not reset best_edge for a copiable
8468         destination if the copy would cause a partition change.
8469         (better_edge_p): Remove redundant check.
8470
8471 2017-10-27  Uros Bizjak  <ubizjak@gmail.com>
8472
8473         * config/i386/i386-protos.h (ix86_fp_compare_mode): Remove prototype.
8474
8475 2017-10-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
8476
8477         * builtins.c (CASE_MATHFN_FLOATN): New helper macro to add cases
8478         for math functions that have _Float<N> and _Float<N>X variants.
8479         (mathfn_built_in_2): Add support for math functions that have
8480         _Float<N> and _Float<N>X variants.
8481         (DEF_INTERNAL_FLT_FLOATN_FN): New helper macro.
8482         (expand_builtin_mathfn_ternary): Add support for fma with
8483         _Float<N> and _Float<N>X variants.
8484         (expand_builtin): Likewise.
8485         (fold_builtin_3): Likewise.
8486         * builtins.def (DEF_EXT_LIB_FLOATN_NX_BUILTINS): New macro to
8487         create math function _Float<N> and _Float<N>X variants as external
8488         library builtins.
8489         (BUILT_IN_COPYSIGN _Float<N> and _Float<N>X variants) Use
8490         DEF_EXT_LIB_FLOATN_NX_BUILTINS to make built-in functions using
8491         the __builtin_ prefix and if not strict ansi, without the prefix.
8492         (BUILT_IN_FABS _Float<N> and _Float<N>X variants): Likewise.
8493         (BUILT_IN_FMA _Float<N> and _Float<N>X variants): Likewise.
8494         (BUILT_IN_FMAX _Float<N> and _Float<N>X variants): Likewise.
8495         (BUILT_IN_FMIN _Float<N> and _Float<N>X variants): Likewise.
8496         (BUILT_IN_NAN _Float<N> and _Float<N>X variants): Likewise.
8497         (BUILT_IN_SQRT _Float<N> and _Float<N>X variants): Likewise.
8498         * builtin-types.def (BT_FN_FLOAT16_FLOAT16_FLOAT16_FLOAT16): New
8499         function signatures for fma _Float<N> and _Float<N>X variants.
8500         (BT_FN_FLOAT32_FLOAT32_FLOAT32_FLOAT32): Likewise.
8501         (BT_FN_FLOAT64_FLOAT64_FLOAT64_FLOAT64): Likewise.
8502         (BT_FN_FLOAT128_FLOAT128_FLOAT128_FLOAT128): Likewise.
8503         (BT_FN_FLOAT32X_FLOAT32X_FLOAT32X_FLOAT32X): Likewise.
8504         (BT_FN_FLOAT64X_FLOAT64X_FLOAT64X_FLOAT64X): Likewise.
8505         (BT_FN_FLOAT128X_FLOAT128X_FLOAT128X_FLOAT128X): Likewise.
8506         * gencfn-macros.c (print_case_cfn): Add support for math functions
8507         that have _Float<N> and _Float<N>X variants.
8508         (print_define_operator_list): Likewise.
8509         (fltfn_suffixes): Likewise.
8510         (main): Likewise.
8511         * internal-fn.def (DEF_INTERNAL_FLT_FLOATN_FN): New helper macro
8512         for math functions that have _Float<N> and _Float<N>X variants.
8513         (SQRT): Add support for sqrt, copysign, fmin and fmax _Float<N>
8514         and _Float<N>X variants.
8515         (COPYSIGN): Likewise.
8516         (FMIN): Likewise.
8517         (FMAX): Likewise.
8518         * fold-const.c (tree_call_nonnegative_warnv_p): Add support for
8519         copysign, fma, fmax, fmin, and sqrt _Float<N> and _Float<N>X
8520         variants.
8521         (integer_valued_read_call_p): Likewise.
8522         * fold-const-call.c (fold_const_call_ss): Likewise.
8523         (fold_const_call_sss): Add support for copysign, fmin, and fmax
8524         _Float<N> and _Float<N>X variants.
8525         (fold_const_call_ssss): Add support for fma _Float<N> and
8526         _Float<N>X variants.
8527         * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Add
8528         support for copysign and fma _Float<N> and _Float<N>X variants.
8529         (backprop::process_builtin_call_use): Likewise.
8530         * tree-call-cdce.c (can_test_argument_range); Add support for
8531         sqrt _Float<N> and _Float<N>X variants.
8532         (edom_only_function): Likewise.
8533         (get_no_error_domain): Likewise.
8534         * tree-ssa-math-opts.c (internal_fn_reciprocal): Likewise.
8535         * tree-ssa-reassoc.c (attempt_builtin_copysign): Add support for
8536         copysign _Float<N> and _Float<N>X variants.
8537         * config/rs6000/rs6000-builtin.def (SQRTF128): Delete, this is now
8538         handled by machine independent code.
8539         (FMAF128): Likewise.
8540         * doc/cpp.texi (Common Predefined Macros): Document defining
8541         __FP_FAST_FMAF<N> and __FP_FAST_FMAF<N>X if the backend supports
8542         fma _Float<N> and _Float<N>X variants.
8543
8544 2017-10-27  Uros Bizjak  <ubizjak@gmail.com>
8545
8546         PR target/82692
8547         * config/i386/i386-modes.def (CCFPU): Remove definition.
8548         * config/i386/i386.c (put_condition_mode): Remove CCFPU mode handling.
8549         (ix86_cc_modes_compatible): Ditto.
8550         (ix86_expand_carry_flag_compare): Ditto.
8551         (ix86_expand_int_movcc): Ditto.
8552         (ix86_expand_int_addcc): Ditto.
8553         (ix86_reverse_condition): Ditto.
8554         (ix86_unordered_fp_compare): Rename from ix86_fp_compare_mode.
8555         Return true/false for unordered/ordered fp comparisons.
8556         (ix86_cc_mode): Always return CCFPmode for float mode comparisons.
8557         (ix86_prepare_fp_compare_args): Update for rename.
8558         (ix86_expand_fp_compare): Update for rename.  Generate unordered
8559         compare RTXes wrapped with UNSPEC_NOTRAP unspec.
8560         (ix86_expand_sse_compare_and_jump): Ditto.
8561         * config/i386/predicates.md (fcmov_comparison_operator):
8562         Remove CCFPU mode handling.
8563         (ix86_comparison_operator): Ditto.
8564         (ix86_carry_flag_operator): Ditto.
8565         * config/i386/i386.md (UNSPEC_NOTRAP): New unspec.
8566         (*cmpu<mode>_i387): Wrap compare RTX with UNSPEC_NOTRAP unspec.
8567         (*cmpu<mode>_cc_i387): Ditto.
8568         (FPCMP): Remove mode iterator.
8569         (unord): Remove mode attribute.
8570         (unord_subst): New define_subst transformation
8571         (unord): New define_subst attribute.
8572         (unordered): Ditto.
8573         (*cmpi<unord><MODEF:mode>): Rewrite using unord_subst transformation.
8574         (*cmpi<unord>xf_i387): Ditto.
8575         * config/i386/sse.md (<sse>_<unord>comi<round_saeonly_name>): Merge
8576         from <sse>_comi<round_saeonly_name> and <sse>_ucomi<round_saeonly_name>
8577         using unord_subst transformation.
8578         * config/i386/subst.md (SUBST_A): Remove CCFP and CCFPU modes.
8579         (round_saeonly): Also handle CCFP mode.
8580         * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_NOTRAP unspec.
8581         Remove UNSPEC_SAHF unspec handling.
8582
8583 2017-10-27  Jan Hubicka  <hubicka@ucw.cz>
8584
8585         * x86-tune.def (X86_TUNE_INTER_UNIT_MOVES_TO_VEC): Disable for Zen.
8586
8587 2017-10-27  Jeff Law  <law@redhat.com>
8588
8589         * gimple-ssa-sprintf.c: Include domwalk.h.
8590         (class sprintf_dom_walker): New class, derived from dom_walker.
8591         (sprintf_dom_walker::before_dom_children): New function.
8592         (struct call_info): Moved into sprintf_dom_walker class
8593         (compute_formath_length, handle_gimple_call): Likewise.
8594         (sprintf_length::execute): Call the dominator walker rather
8595         than walking the statements.
8596
8597         * tree-vrp.c (check_all_array_refs): Do not use wi->info to smuggle
8598         gimple statement locations.
8599         (check_array_bounds): Corresponding changes.  Get the statement's
8600         location directly from wi->stmt.
8601
8602 2017-10-27  Palmer Dabbelt  <palmer@dabbelt.com>
8603
8604         PR target/82717
8605         * doc/invoke.texi (RISC-V) <-mabi>: Correct and improve.
8606
8607 2017-10-27  Jan Hubicka  <hubicka@ucw.cz>
8608
8609         * config/i386/x86-tune.def (X86_TUNE_PARTIAL_REG_DEPENDENCY,
8610         X86_TUNE_MOVX): Disable for Haswell and newer CPUs.
8611
8612 2017-10-27  Jakub Jelinek  <jakub@redhat.com>
8613
8614         PR target/82703
8615         * config/i386/i386-protos.h (maybe_get_pool_constant): Removed.
8616         * config/i386/i386.c (maybe_get_pool_constant): Removed.
8617         (ix86_split_to_parts): Use avoid_constant_pool_reference instead of
8618         maybe_get_pool_constant.
8619         * config/i386/predicates.md (zero_extended_scalar_load_operand):
8620         Likewise.
8621
8622 2017-10-27  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8623
8624         * doc/install.texi (Specific, i?86-*-solaris2.10): Simplify gas
8625         2.26 caveat.  Update gas and gld versions.
8626         (Specific, *-*-solaris2*): Update binutils version.  Remove caveat
8627         reference.
8628
8629 2017-10-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
8630
8631         * cgraph.h (set_malloc_flag): Declare.
8632         * cgraph.c (set_malloc_flag_1): New function.
8633         (set_malloc_flag): Likewise.
8634         * ipa-fnsummary.h (ipa_call_summary): Add new field is_return_callee.
8635         * ipa-fnsummary.c (ipa_call_summary::reset): Set is_return_callee to
8636         false.
8637         (read_ipa_call_summary): Add support for reading is_return_callee.
8638         (write_ipa_call_summary): Stream is_return_callee.
8639         * ipa-inline.c (ipa_inline): Remove call to ipa_free_fn_summary.
8640         * ipa-pure-const.c: Add headers ssa.h, alloc-pool.h, symbol-summary.h,
8641         ipa-prop.h, ipa-fnsummary.h.
8642         (pure_const_names): Change to static.
8643         (malloc_state_e): Define.
8644         (malloc_state_names): Define.
8645         (funct_state_d): Add field malloc_state.
8646         (varying_state): Set malloc_state to STATE_MALLOC_BOTTOM.
8647         (check_retval_uses): New function.
8648         (malloc_candidate_p): Likewise.
8649         (analyze_function): Add support for malloc attribute.
8650         (pure_const_write_summary): Stream malloc_state.
8651         (pure_const_read_summary): Add support for reading malloc_state.
8652         (dump_malloc_lattice): New function.
8653         (propagate_malloc): New function.
8654         (warn_function_malloc): New function.
8655         (ipa_pure_const::execute): Call propagate_malloc and
8656         ipa_free_fn_summary.
8657         (pass_local_pure_const::execute): Add support for malloc attribute.
8658         * ssa-iterators.h (RETURN_FROM_IMM_USE_STMT): New macro.
8659         * doc/invoke.texi: Document Wsuggest-attribute=malloc.
8660
8661 2017-10-27  Martin Liska  <mliska@suse.cz>
8662
8663         PR gcov-profile/82457
8664         * doc/invoke.texi: Document that one needs a non-strict ISO mode
8665         for fork-like functions to be properly instrumented.
8666
8667 2017-10-27  Richard Biener  <rguenther@suse.de>
8668
8669         PR middle-end/81659
8670         * tree-eh.c (pass_lower_eh_dispatch::execute): Free dominator
8671         info when we redirected EH.
8672
8673 2017-10-26  Michael Collison  <michael.collison@arm.com>
8674
8675         * config/aarch64/aarch64.md(<optab>_trunc><vf><GPI:mode>2):
8676         New pattern.
8677         (<optab>_trunchf<GPI:mode>2: New pattern.
8678         (<optab>_trunc<vgp><GPI:mode>2: New pattern.
8679         * config/aarch64/iterators.md (wv): New mode attribute.
8680         (vf, VF): New mode attributes.
8681         (vgp, VGP): New mode attributes.
8682         (s): Update attribute with SImode and DImode prefixes.
8683
8684 2017-10-26  Sandra Loosemore  <sandra@codesourcery.com>
8685
8686         * config/nios2/constraints.md ("S"): Match r0rel_constant_p too.
8687         * config/nios2/nios2-protos.h (r0rel_constant_p): Declare.
8688         * config/nios2/nios2.c: (nios2_r0rel_sec_regex): New.
8689         (nios2_option_overide): Initialize it.  Don't allow R0-relative
8690         addressing with PIC.
8691         (nios2_rtx_costs): Handle r0rel_constant_p like gprel_constant_p.
8692         (nios2_symbolic_constant_p): Likewise.
8693         (nios2_legitimate_address_p): Likewise.
8694         (nios2_r0rel_section_name_p): New.
8695         (nios2_symbol_ref_in_r0rel_data_p): New.
8696         (nios2_emit_move_sequence): Handle r0rel_constant_p.
8697         (r0rel_constant_p): New.
8698         (nios2_print_operand_address): Handle r0rel_constant_p.
8699         (nios2_cdx_narrow_form_p): Likewise.
8700         * config/nios2/nios2.opt (mr0rel-sec=): New option.
8701         * doc/invoke.texi (Option Summary): Add -mr0rel-sec.
8702         (Nios II Options): Document -mr0rel-sec.
8703
8704 2017-10-26  Sandra Loosemore  <sandra@codesourcery.com>
8705
8706         * config/nios2/nios2.c: Include xregex.h.
8707         (nios2_gprel_sec_regex): New.
8708         (nios2_option_overide): Initialize it.  Don't allow GP-relative
8709         addressing with PIC.
8710         (nios2_small_section_name_p): Check for regex match.
8711         * config/nios2/nios2.opt (mgprel-sec=): New option.
8712         * doc/invoke.texi (Option Summary): Add -mgprel-sec.
8713         (Nios II Options): Document -mgprel-sec.
8714
8715 2017-10-26  Jim Wilson  <wilson@tuliptree.org>
8716
8717         * doc/invoke.texi (-fdebug-prefix-map): Expand documentation.
8718
8719 2017-10-26  Tom de Vries  <tom@codesourcery.com>
8720
8721         PR tree-optimization/82707
8722         * gimple.c (gimple_copy): Fix unsharing of
8723         GIMPLE_OMP_{SINGLE,TARGET,TEAMS}.
8724
8725 2017-10-26  Olga Makhotina  <olga.makhotina@intel.com>
8726
8727         * config/i386/avx512fintrin.h (_mm512_cmpeq_pd_mask,
8728         _mm512_cmple_pd_mask, _mm512_cmplt_pd_mask,
8729         _mm512_cmpneq_pd_mask, _mm512_cmpnle_pd_mask,
8730         _mm512_cmpnlt_pd_mask, _mm512_cmpord_pd_mask,
8731         _mm512_cmpunord_pd_mask, _mm512_mask_cmpeq_pd_mask,
8732         _mm512_mask_cmple_pd_mask, _mm512_mask_cmplt_pd_mask,
8733         _mm512_mask_cmpneq_pd_mask, _mm512_mask_cmpnle_pd_mask,
8734         _mm512_mask_cmpnlt_pd_mask, _mm512_mask_cmpord_pd_mask,
8735         _mm512_mask_cmpunord_pd_mask, _mm512_cmpeq_ps_mask,
8736         _mm512_cmple_ps_mask, _mm512_cmplt_ps_mask,
8737         _mm512_cmpneq_ps_mask, _mm512_cmpnle_ps_mask,
8738         _mm512_cmpnlt_ps_mask, _mm512_cmpord_ps_mask,
8739         _mm512_cmpunord_ps_mask, _mm512_mask_cmpeq_ps_mask,
8740         _mm512_mask_cmple_ps_mask, _mm512_mask_cmplt_ps_mask,
8741         _mm512_mask_cmpneq_ps_mask, _mm512_mask_cmpnle_ps_mask,
8742         _mm512_mask_cmpnlt_ps_mask, _mm512_mask_cmpord_ps_mask,
8743         _mm512_mask_cmpunord_ps_mask): New intrinsics.
8744
8745 2017-10-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
8746
8747         * config/rs6000/aix.h (TARGET_IEEEQUAD_DEFAULT): Set long double
8748         default to IBM.
8749         * config/rs6000/darwin.h (TARGET_IEEEQUAD_DEFAULT): Likewise.
8750         * config/rs6000/rs6000.opt (-mabi=ieeelongdouble): Move the
8751         warning to rs6000.c.  Remove the Undocumented flag, since it has
8752         been documented.
8753         (-mabi=ibmlongdouble): Likewise.
8754         * config/rs6000/rs6000.c (TARGET_IEEEQUAD_DEFAULT): If it is not
8755         already set, set the default format for long double.
8756         (rs6000_debug_reg_global): Print whether long double is IBM or
8757         IEEE.
8758         (rs6000_option_override_internal): Rework setting long double
8759         format.  Only warn if the user is changing the long double default
8760         and they did not use -Wno-psabi.
8761         * doc/invoke.texi (PowerPC options): Update the documentation for
8762         -mabi=ieeelongdouble and -mabi=ibmlongdouble.
8763
8764 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
8765             Alan Hayward  <alan.hayward@arm.com>
8766             David Sherwood  <david.sherwood@arm.com>
8767
8768         * rtl.h (wider_subreg_mode): New function.
8769         * ira.h (ira_sort_regnos_for_alter_reg): Take a machine_mode *
8770         rather than an unsigned int *.
8771         * ira-color.c (regno_max_ref_width): Replace with...
8772         (regno_max_ref_mode): ...this new variable.
8773         (coalesced_pseudo_reg_slot_compare): Update accordingly.
8774         Use wider_subreg_mode.
8775         (ira_sort_regnos_for_alter_reg): Likewise.  Take a machine_mode *
8776         rather than an unsigned int *.
8777         * lra-constraints.c (uses_hard_regs_p): Use wider_subreg_mode.
8778         (process_alt_operands): Likewise.
8779         (invariant_p): Likewise.
8780         * lra-spills.c (assign_mem_slot): Likewise.
8781         (add_pseudo_to_slot): Likewise.
8782         * lra.c (collect_non_operand_hard_regs): Likewise.
8783         (add_regs_to_insn_regno_info): Likewise.
8784         * reload1.c (regno_max_ref_width): Replace with...
8785         (regno_max_ref_mode): ...this new variable.
8786         (reload): Update accordingly.  Update call to
8787         ira_sort_regnos_for_alter_reg.
8788         (alter_reg): Update to use regno_max_ref_mode.  Call wider_subreg_mode.
8789         (init_eliminable_invariants): Update to use regno_max_ref_mode.
8790         (scan_paradoxical_subregs): Likewise.
8791
8792 2017-10-26  Wilco Dijkstra  <wdijkstr@arm.com>
8793
8794         * config/aarch64/aarch64.h (EXIT_IGNORE_STACK): Set if alloca is used.
8795         (aarch64_frame): Add emit_frame_chain boolean.
8796         * config/aarch64/aarch64.c (aarch64_frame_pointer_required)
8797         Move eh_return case to aarch64_layout_frame.
8798         (aarch64_layout_frame): Initialize emit_frame_chain.
8799         (aarch64_expand_prologue): Use emit_frame_chain.
8800
8801 2017-10-26  Wilco Dijkstra  <wdijkstr@arm.com>
8802
8803         * config/aarch64/aarch64.c (aarch64_layout_frame):
8804         Ensure LR is always stored at the bottom of the callee-saves.
8805         Remove rarely used frame layout which saves callee-saves at top of
8806         frame, so the store of LR can be used as a valid probe in all cases.
8807
8808 2017-10-26  Wilco Dijkstra  <wdijkstr@arm.com>
8809
8810         * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
8811         Improve unaligned TImode/TFmode base/offset split.
8812
8813 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
8814             Alan Hayward  <alan.hayward@arm.com>
8815             David Sherwood  <david.sherwood@arm.com>
8816
8817         * caller-save.c (mark_referenced_regs):  Use read_modify_subreg_p.
8818         * combine.c (find_single_use_1): Likewise.
8819         (expand_field_assignment): Likewise.
8820         (move_deaths): Likewise.
8821         * lra-constraints.c (simplify_operand_subreg): Likewise.
8822         (curr_insn_transform): Likewise.
8823         * lra.c (collect_non_operand_hard_regs): Likewise.
8824         (add_regs_to_insn_regno_info): Likewise.
8825         * rtlanal.c (reg_referenced_p): Likewise.
8826         (covers_regno_no_parallel_p): Likewise.
8827
8828 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
8829
8830         * wide-int-print.cc (print_hex): Loop based on extract_uhwi.
8831         Don't print any bits outside the precision of the value.
8832         * wide-int.cc (test_printing): Add some new tests.
8833
8834 2017-10-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8835
8836         * configure.ac (gcc_cv_as_ix86_xbrace_comment): Check if assembler
8837         supports -xbrace_comment option.
8838         * configure: Regenerate.
8839         * config.in: Regenerate.
8840         * config/i386/sol2.h (ASM_XBRACE_COMMENT_SPEC): Define.
8841         (ASM_CPU_SPEC): Use it.
8842
8843 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
8844
8845         * target.def (static_rtx_alignment): New hook.
8846         * targhooks.h (default_static_rtx_alignment): Declare.
8847         * targhooks.c (default_static_rtx_alignment): New function.
8848         * doc/tm.texi.in (TARGET_STATIC_RTX_ALIGNMENT): New hook.
8849         * doc/tm.texi: Regenerate.
8850         * varasm.c (force_const_mem): Use targetm.static_rtx_alignment
8851         instead of targetm.constant_alignment.  Remove call to
8852         set_mem_attributes.
8853         * config/cris/cris.c (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
8854         (cris_preferred_mininum_alignment): New function, split out from...
8855         (cris_constant_alignment): ...here.
8856         (cris_static_rtx_alignment): New function.
8857         * config/i386/i386.c (ix86_static_rtx_alignment): New function,
8858         split out from...
8859         (ix86_constant_alignment): ...here.
8860         (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
8861         * config/mmix/mmix.c (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
8862         (mmix_static_rtx_alignment): New function.
8863         * config/spu/spu.c (spu_static_rtx_alignment): New function.
8864         (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
8865
8866 2017-10-26  Tamar Christina  <tamar.christina@arm.com>
8867
8868         PR target/81800
8869         * config/aarch64/aarch64.md (lrint<GPF:mode><GPI:mode>2):
8870         Add flag_trapping_math and flag_fp_int_builtin_inexact.
8871
8872 2017-10-25  Palmer Dabbelt  <palmer@dabbelt.com>
8873
8874         * config/riscv/riscv.md (ZERO_EXTEND_LOAD): Define.
8875         * config/riscv/pic.md (local_pic_load): Rename to local_pic_load_s,
8876         mark as a sign-extending load.
8877         (local_pic_load_u): Define.
8878
8879 2017-10-25  Eric Botcazou  <ebotcazou@adacore.com>
8880
8881         PR middle-end/82062
8882         * fold-const.c (operand_equal_for_comparison_p): Also return true
8883         if ARG0 is a simple variant of ARG1 with narrower precision.
8884         (fold_ternary_loc): Always pass unstripped operands to the predicate.
8885
8886 2017-10-25  Jan Hubicka  <hubicka@ucw.cz>
8887
8888         * i386.c (ix86_builtin_vectorization_cost): Compute scatter/gather
8889         cost correctly.
8890         * i386.h (processor_costs): Add gather_static, gather_per_elt,
8891         scatter_static, scatter_per_elt.
8892         * x86-tune-costs.h: Add new cost entries.
8893
8894 2017-10-25  Richard Biener  <rguenther@suse.de>
8895
8896         * tree-ssa-sccvn.h (vn_eliminate): Declare.
8897         * tree-ssa-pre.c (class eliminate_dom_walker, eliminate,
8898         class pass_fre): Move to ...
8899         * tree-ssa-sccvn.c (class eliminate_dom_walker, vn_eliminate,
8900         class pass_fre): ... here and adjust for statistics.
8901
8902 2017-10-25  Jakub Jelinek  <jakub@redhat.com>
8903
8904         PR libstdc++/81706
8905         * attribs.c (attribute_value_equal): Use omp_declare_simd_clauses_equal
8906         for comparison of OMP_CLAUSEs regardless of flag_openmp{,_simd}.
8907         (duplicate_one_attribute, copy_attributes_to_builtin): New functions.
8908         * attribs.h (duplicate_one_attribute, copy_attributes_to_builtin): New
8909         declarations.
8910
8911 2017-10-25  Richard Biener  <rguenther@suse.de>
8912
8913         * tree-ssa-pre.c (need_eh_cleanup, need_ab_cleanup, el_to_remove,
8914         el_to_fixup, el_todo, el_avail, el_avail_stack, eliminate_avail,
8915         eliminate_push_avail, eliminate_insert): Move inside...
8916         (class eliminate_dom_walker): ... this class in preparation
8917         of move.
8918         (fini_eliminate): Remove by merging with ...
8919         (eliminate): ... this function.  Adjust for class changes.
8920         (pass_pre::execute): Remove fini_eliminate call.
8921         (pass_fre::execute): Likewise.
8922
8923 2017-10-24  Jakub Jelinek  <jakub@redhat.com>
8924
8925         PR target/82460
8926         * config/i386/sse.md (UNSPEC_VPERMI2, UNSPEC_VPERMI2_MASK): Remove.
8927         (VPERMI2, VPERMI2I): New mode iterators.
8928         (<avx512>_vpermi2var<mode>3_maskz): Remove 3 define_expand patterns.
8929         (<avx512>_vpermi2var<mode>3<sd_maskz_name>): Remove 3 define_insn
8930         patterns.
8931         (<avx512>_vpermi2var<mode>3_mask): New define_expand using VPERMI2
8932         mode iterator.  Remove 3 old define_insn patterns.
8933         (*<avx512>_vpermi2var<mode>3_mask): 2 new define_insn patterns.
8934         (<avx512>_vpermt2var<mode>3_maskz): Adjust 1 define_expand to use
8935         VPERMI2 mode iterator, remove the other two expanders.
8936         (<avx512>_vpermt2var<mode>3<sd_maskz_name>): Adjust 1 define_insn
8937         to use VPERMI2 mode iterator, add another alternative for vpermi2*
8938         instructions, remove the other two patterns.
8939         (<avx512>_vpermt2var<mode>3_mask): Adjust 1 define_insn to use VPERMI2
8940         mode iterator, remove the other two patterns.
8941         * config/i386/i386.c (ix86_expand_vec_perm_vpermi2): Renamed to ...
8942         (ix86_expand_vec_perm_vpermt2): ... this.  Swap mask and op0
8943         arguments, use gen_*vpermt2* expanders instead of gen_*vpermi2*
8944         and adjust argument order accordingly.
8945         (ix86_expand_vec_perm): Adjust caller.
8946         (expand_vec_perm_1): Likewise.
8947         (expand_vec_perm_vpermi2_vpshub2): Rename to ...
8948         (expand_vec_perm_vpermt2_vpshub2): ... this.
8949         (ix86_expand_vec_perm_const_1): Adjust caller.
8950         (ix86_vectorize_vec_perm_const_ok): Adjust comments.
8951
8952         PR target/82370
8953         * config/i386/sse.md (VIMAX_AVX2): Remove V4TImode.
8954         (VIMAX_AVX2_AVX512BW, VIMAX_AVX512VL): New mode iterators.
8955         (vec_shl_<mode>): Remove unused expander.
8956         (avx512bw_<shift_insn><mode>3): New define_insn.
8957         (<sse2_avx2>_ashl<mode>3, <sse2_avx2>_lshr<mode>3): Replaced by ...
8958         (<sse2_avx2>_<shift_insn><mode>3): ... this.  New define_insn.
8959
8960 2017-10-24  Paolo Carlini  <paolo.carlini@oracle.com>
8961
8962         PR c++/82466
8963         * doc/invoke.texi ([Wbuiltin-declaration-mismatch]): Extend
8964         description.
8965
8966 2017-10-24  Wilco Dijkstra  <wdijkstr@arm.com>
8967
8968         PR rtl-optimization/82396
8969         * gcc/haifa-sched.c (ready_sort_real): Remove qsort workaround.
8970         (autopref_multipass_init): Simplify initialization.
8971         (autopref_rank_data): Simplify sort order.
8972         * gcc/sched-int.h (autopref_multipass_data_): Remove
8973         multi_mem_insn_p, min_offset and max_offset.
8974
8975 2017-10-24  Wilco Dijkstra  <wdijkstr@arm.com>
8976
8977         PR middle-end/60580
8978         * config/aarch64/aarch64.c (aarch64_frame_pointer_required)
8979         Check special value of flag_omit_frame_pointer.
8980         (aarch64_can_eliminate): Likewise.
8981         (aarch64_override_options_after_change_1): Simplify handling of
8982         -fomit-frame-pointer and -fomit-leaf-frame-pointer.
8983
8984 2017-10-24  Richard Biener  <rguenther@suse.de>
8985
8986         PR tree-optimization/82697
8987         * tree-ssa-phiopt.c (cond_store_replacement): Use alias-set
8988         zero for conditional load and unconditional store.
8989
8990 2017-10-24  H.J. Lu  <hongjiu.lu@intel.com>
8991
8992         * doc/install.texi: Document bootstrap-cet.
8993
8994 2017-10-24  H.J. Lu  <hongjiu.lu@intel.com>
8995
8996         PR target/82659
8997         * config/i386/i386.c (rest_of_insert_endbranch): Don't insert
8998         ENDBR instruction at function entrance if function is only
8999         called directly.
9000
9001 2017-10-24  Jakub Jelinek  <jakub@redhat.com>
9002
9003         PR target/82628
9004         * config/i386/i386.md (addcarry<mode>, subborrow<mode>): Change
9005         patterns to better describe from which operation the CF is computed.
9006         (addcarry<mode>_0, subborrow<mode>_0): New patterns.
9007         * config/i386/i386.c (ix86_expand_builtin) <case handlecarry>: Pass
9008         one LTU with [DT]Imode and another one with [SD]Imode.  If arg0
9009         is 0, use _0 suffixed expanders instead of emitting a comparison
9010         before it.
9011
9012 2017-10-06  Sergey Shalnov  <Sergey.Shalnov@intel.com>
9013
9014         * config/i386/i386.md(*movsf_internal, *movdf_internal):
9015         Avoid 512-bit AVX modes for TARGET_PREFER_AVX256.
9016
9017 2017-10-24  Eric Botcazou  <ebotcazou@adacore.com>
9018
9019         PR middle-end/82569
9020         * tree-outof-ssa.h (always_initialized_rtx_for_ssa_name_p): Delete.
9021         * expr.c (expand_expr_real_1) <expand_decl_rtl>: Revert latest change.
9022         * loop-iv.c (iv_get_reaching_def): Likewise.
9023         * cfgexpand.c (expand_one_ssa_partition): Initialize the RTX if the
9024         variable is promoted and the partition contains undefined values.
9025
9026 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
9027
9028         * config/nios2/nios2.c (nios2_rtx_costs): Make costs better
9029         reflect reality.
9030         (nios2_address_cost): Define.
9031         (nios2_legitimize_address): Recognize (exp + constant) directly.
9032         (TARGET_ADDRESS_COST): Define.
9033
9034 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
9035
9036         * config/nios2/nios2-protos.h (nios2_large_constant_p): Declare.
9037         (nios2_symbolic_memory_operand_p): Declare.
9038         (nios2_split_large_constant): Declare.
9039         (nios2_split_symbolic_memory_operand): Declare.
9040         * config/nios2/nios2.c: Adjust includes.
9041         (nios2_symbolic_constant_allowed): New.
9042         (nios2_symbolic_constant_p): New.
9043         (nios2_plus_symbolic_constant_p): New.
9044         (nios2_valid_addr_expr_p): Recognize addresses involving
9045         symbolic constants.
9046         (nios2_legitimate_address_p): Likewise, also LO_SUM.
9047         (nios2_symbolic_memory_operand_p): New.
9048         (nios2_large_constant_p): New.
9049         (nios2_split_large_constant): New.
9050         (nios2_split_plus_large_constant): New.
9051         (nios2_split_symbolic_memory_operand): New.
9052         (nios2_legitimize_address): Code refactoring.  Handle addresses
9053         involving symbolic constants.
9054         (nios2_emit_move_sequence): Likewise.
9055         (nios2_print_operand): Improve error output.
9056         (nios2_print_operand_address): Handle LO_SUM.
9057         (nios2_cdx_narrow_form_p): Likewise.
9058         * config/nios2/nios2.md (movqi_internal): Add splitter for memory
9059         operands involving symbolic constants.
9060         (movhi_internal, movsi_internal): Likewise.
9061         (zero_extendhisi2, zero_extendqi<mode>2): Likewise.
9062         (extendhisi2, extendqi<mode>2): Likewise.
9063
9064 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
9065
9066         * tree-pass.h (PROP_rtl_split_insns): Define.
9067         * recog.c (pass_data_split_all_insns): Provide PROP_rtl_split_insns.
9068
9069 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
9070
9071         * config/nios2/nios2.c (TARGET_LRA_P): Don't override.
9072
9073 2017-10-23  Jakub Jelinek  <jakub@redhat.com>
9074
9075         PR debug/82630
9076         * target.def (const_not_ok_for_debug_p): Default to
9077         default_const_not_ok_for_debug_p instead of hook_bool_rtx_false.
9078         * targhooks.h (default_const_not_ok_for_debug_p): New declaration.
9079         * targhooks.c (default_const_not_ok_for_debug_p): New function.
9080         * dwarf2out.c (const_ok_for_output_1): Only reject UNSPECs for
9081         which targetm.const_not_ok_for_debug_p returned true.
9082         * config/arm/arm.c (arm_const_not_ok_for_debug_p): Return true
9083         for UNSPECs.
9084         * config/powerpcspe/powerpcspe.c (rs6000_const_not_ok_for_debug_p):
9085         Likewise.
9086         * config/rs6000/rs6000.c (rs6000_const_not_ok_for_debug_p): Likewise.
9087         * config/i386/i386.c (ix86_delegitimize_address_1): Don't delegitimize
9088         UNSPEC_GOTOFF with addend into addend - _GLOBAL_OFFSET_TABLE_ + symbol
9089         if !base_term_p.
9090         (ix86_const_not_ok_for_debug_p): New function.
9091         (i386_asm_output_addr_const_extra): Handle UNSPEC_GOTOFF.
9092         (TARGET_CONST_NOT_OK_FOR_DEBUG_P): Redefine.
9093
9094 2017-10-23  David Malcolm  <dmalcolm@redhat.com>
9095
9096         PR bootstrap/82610
9097         * system.h: Conditionally include "unique-ptr.h" if
9098         INCLUDE_UNIQUE_PTR is defined.
9099         * unique-ptr-tests.cc: Remove include of "unique-ptr.h" in favor
9100         of defining INCLUDE_UNIQUE_PTR before including "system.h".
9101
9102 2017-10-23  Sebastian Perta  <sebastian.perta@renesas.com>
9103
9104         * config/rl78/rl78.md: New define_expand "subdi3".
9105
9106 2017-10-23  H.J. Lu  <hongjiu.lu@intel.com>
9107
9108         PR target/82673
9109         * config/i386/i386.c (ix86_finalize_stack_frame_flags): Skip
9110         DF_REF_INSN if DF_REF_INSN_INFO is false.
9111
9112 2017-10-23  Jan Hubicka  <hubicka@ucw.cz>
9113
9114         * i386.c (dimode_scalar_chain::compute_convert_gain): Use
9115         xmm_move instead of sse_move.
9116         (sse_store_index): New function.
9117         (ix86_register_move_cost): Be more sensible about mismatch stall;
9118         model AVX moves correctly; make difference between sse->integer and
9119         integer->sse.
9120         (ix86_builtin_vectorization_cost): Model correctly aligned and unaligned
9121         moves; make difference between SSE and AVX.
9122         * i386.h (processor_costs): Remove sse_move; add xmm_move, ymm_move
9123         and zmm_move. Increase size of sse load and store tables;
9124         add unaligned load and store tables; add ssemmx_to_integer.
9125         * x86-tune-costs.h: Update all entries according to real
9126         move latencies from Agner Fog's manual and chip documentation.
9127
9128 2017-10-23  Jakub Jelinek  <jakub@redhat.com>
9129
9130         PR target/82628
9131         * config/i386/predicates.md (x86_64_dwzext_immediate_operand): New.
9132         * config/i386/constraints.md (Wf): New constraint.
9133         * config/i386/i386.md (UNSPEC_SBB): New unspec.
9134         (cmp<dwi>_doubleword): Removed.
9135         (sub<mode>3_carry_ccc, *sub<mode>3_carry_ccc_1): New patterns.
9136         (sub<mode>3_carry_ccgz): Use unspec instead of compare.
9137         * config/i386/i386.c (ix86_expand_branch) <case E_TImode>: Don't
9138         expand with cmp<dwi>_doubleword.  For LTU and GEU use
9139         sub<mode>3_carry_ccc instead of sub<mode>3_carry_ccgz and use CCCmode.
9140
9141         * common.opt (gcolumn-info): Enable by default.
9142         * doc/invoke.texi (gcolumn-info): Document new default.
9143
9144 2017-10-23  Richard Biener  <rguenther@suse.de>
9145
9146         PR tree-optimization/82672
9147         * graphite-isl-ast-to-gimple.c (graphite_copy_stmts_from_block):
9148         Fold the stmt if we propagated into it.
9149
9150 2017-10-23  Richard Biener  <rguenther@suse.de>
9151
9152         * tree-ssa-pre.c (bitmap_remove_from_set): Rename to...
9153         (bitmap_remove_expr_from_set): ... this.  All callers call this
9154         for non-constant values.
9155         (bitmap_set_subtract): Rename to...
9156         (bitmap_set_subtract_expressions): ... this.  Adjust and
9157         optimize.
9158         (bitmap_set_contains_value): Remove superfluous check.
9159         (bitmap_set_replace_value): Inline into single caller ...
9160         (bitmap_value_replace_in_set): ... here and simplify.
9161         (dependent_clean): Merge into ...
9162         (clean): ... this using an overload.  Adjust.
9163         (prune_clobbered_mems): Adjust.
9164         (compute_antic_aux): Likewise.
9165         (compute_partial_antic_aux): Likewise.
9166
9167 2017-10-23  Richard Biener  <rguenther@suse.de>
9168
9169         PR tree-optimization/82129
9170         Revert
9171         2017-08-01  Richard Biener  <rguenther@suse.de>
9172
9173         PR tree-optimization/81181
9174         * tree-ssa-pre.c (compute_antic_aux): Defer clean() to ...
9175         (compute_antic): ... end of iteration here.
9176
9177 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
9178
9179         * target.def (starting_frame_offset): New hook.
9180         * doc/tm.texi (STARTING_FRAME_OFFSET): Remove in favor of...
9181         (TARGET_STARTING_FRAME_OFFSET): ...this new hook.
9182         * doc/tm.texi.in: Regenerate.
9183         * hooks.h (hook_hwi_void_0): Declare.
9184         * hooks.c (hook_hwi_void_0): New function.
9185         * doc/rtl.texi: Refer to TARGET_STARTING_FRAME_OFFSET instead of
9186         STARTING_FRAME_OFFSET.
9187         * builtins.c (expand_builtin_setjmp_receiver): Likewise.
9188         * reload1.c (reload): Likewise.
9189         * cfgexpand.c (expand_used_vars): Use targetm.starting_frame_offset
9190         instead of STARTING_FRAME_OFFSET.
9191         * function.c (try_fit_stack_local): Likewise.
9192         (assign_stack_local_1): Likewise
9193         (instantiate_virtual_regs): Likewise.
9194         * rtlanal.c (rtx_addr_can_trap_p_1): Likewise.
9195         * config/avr/avr.md (nonlocal_goto_receiver): Likewise.
9196         * config/aarch64/aarch64.h (STARTING_FRAME_OFFSET): Delete.
9197         * config/alpha/alpha.h (STARTING_FRAME_OFFSET): Likewise.
9198         * config/arc/arc.h (STARTING_FRAME_OFFSET): Likewise.
9199         * config/arm/arm.h (STARTING_FRAME_OFFSET): Likewise.
9200         * config/bfin/bfin.h (STARTING_FRAME_OFFSET): Likewise.
9201         * config/c6x/c6x.h (STARTING_FRAME_OFFSET): Likewise.
9202         * config/cr16/cr16.h (STARTING_FRAME_OFFSET): Likewise.
9203         * config/cris/cris.h (STARTING_FRAME_OFFSET): Likewise.
9204         * config/fr30/fr30.h (STARTING_FRAME_OFFSET): Likewise.
9205         * config/frv/frv.h (STARTING_FRAME_OFFSET): Likewise.
9206         * config/ft32/ft32.h (STARTING_FRAME_OFFSET): Likewise.
9207         * config/h8300/h8300.h (STARTING_FRAME_OFFSET): Likewise.
9208         * config/i386/i386.h (STARTING_FRAME_OFFSET): Likewise.
9209         * config/ia64/ia64.h (STARTING_FRAME_OFFSET): Likewise.
9210         * config/m32c/m32c.h (STARTING_FRAME_OFFSET): Likewise.
9211         * config/m68k/m68k.h (STARTING_FRAME_OFFSET): Likewise.
9212         * config/mcore/mcore.h (STARTING_FRAME_OFFSET): Likewise.
9213         * config/mn10300/mn10300.h (STARTING_FRAME_OFFSET): Likewise.
9214         * config/moxie/moxie.h (STARTING_FRAME_OFFSET): Likewise.
9215         * config/msp430/msp430.h (STARTING_FRAME_OFFSET): Likewise.
9216         * config/nds32/nds32.h (STARTING_FRAME_OFFSET): Likewise.
9217         * config/nios2/nios2.h (STARTING_FRAME_OFFSET): Likewise.
9218         * config/nvptx/nvptx.h (STARTING_FRAME_OFFSET): Likewise.
9219         * config/pdp11/pdp11.h (STARTING_FRAME_OFFSET): Likewise.
9220         * config/riscv/riscv.h (STARTING_FRAME_OFFSET): Likewise.
9221         * config/rl78/rl78.h (STARTING_FRAME_OFFSET): Likewise.
9222         * config/rx/rx.h (STARTING_FRAME_OFFSET): Likewise.
9223         * config/s390/s390.h (STARTING_FRAME_OFFSET): Likewise.
9224         * config/sh/sh.h (STARTING_FRAME_OFFSET): Likewise.
9225         * config/sparc/sparc.c (sparc_compute_frame_size): Likewise.
9226         * config/sparc/sparc.h (STARTING_FRAME_OFFSET): Likewise.
9227         * config/spu/spu.h (STARTING_FRAME_OFFSET): Likewise.
9228         * config/stormy16/stormy16.h (STARTING_FRAME_OFFSET): Likewise.
9229         * config/tilegx/tilegx.h (STARTING_FRAME_OFFSET): Likewise.
9230         * config/tilepro/tilepro.h (STARTING_FRAME_OFFSET): Likewise.
9231         * config/v850/v850.h (STARTING_FRAME_OFFSET): Likewise.
9232         * config/visium/visium.h (STARTING_FRAME_OFFSET): Likewise.
9233         * config/avr/avr.h (STARTING_FRAME_OFFSET): Likewise.
9234         * config/avr/avr-protos.h (avr_starting_frame_offset): Likewise.
9235         * config/avr/avr.c (avr_starting_frame_offset): Make static and
9236         return a HOST_WIDE_INT.
9237         (avr_builtin_setjmp_frame_value): Use it instead of
9238         STARTING_FRAME_OFFSET.
9239         (TARGET_STARTING_FRAME_OFFSET): Redefine.
9240         * config/epiphany/epiphany.h (STARTING_FRAME_OFFSET): Delete.
9241         * config/epiphany/epiphany.c (epiphany_starting_frame_offset):
9242         New function.
9243         (TARGET_STARTING_FRAME_OFFSET): Redefine.
9244         * config/iq2000/iq2000.h (STARTING_FRAME_OFFSET): Delete.
9245         * config/iq2000/iq2000.c (iq2000_starting_frame_offset): New function.
9246         (TARGET_CONSTANT_ALIGNMENT): Redefine.
9247         * config/lm32/lm32.h (STARTING_FRAME_OFFSET): Delete.
9248         * config/lm32/lm32.c (lm32_starting_frame_offset): New function.
9249         (TARGET_STARTING_FRAME_OFFSET): Redefine.
9250         * config/m32r/m32r.h (STARTING_FRAME_OFFSET): Delete.
9251         * config/m32r/m32r.c (m32r_starting_frame_offset): New function.
9252         (TARGET_STARTING_FRAME_OFFSET): Redefine.
9253         * config/microblaze/microblaze.h (STARTING_FRAME_OFFSET): Delete.
9254         * config/microblaze/microblaze.c (microblaze_starting_frame_offset):
9255         New function.
9256         (TARGET_STARTING_FRAME_OFFSET): Redefine.
9257         * config/mips/mips.h (STARTING_FRAME_OFFSET): Delete.
9258         * config/mips/mips.c (mips_compute_frame_info): Refer to
9259         TARGET_STARTING_FRAME_OFFSET instead of STARTING_FRAME_OFFSET.
9260         (mips_starting_frame_offset): New function.
9261         (TARGET_STARTING_FRAME_OFFSET): Redefine.
9262         * config/mmix/mmix.h (STARTING_FRAME_OFFSET): Delete.
9263         * config/mmix/mmix-protos.h (mmix_starting_frame_offset): Delete.
9264         * config/mmix/mmix.c (mmix_starting_frame_offset): Make static
9265         and return a HOST_WIDE_INT.
9266         (TARGET_STARTING_FRAME_OFFSET): Redefine.
9267         (mmix_initial_elimination_offset): Refer to
9268         TARGET_STARTING_FRAME_OFFSET instead of STARTING_FRAME_OFFSET.
9269         * config/pa/pa.h (STARTING_FRAME_OFFSET): Delete.
9270         * config/pa/pa.c (pa_starting_frame_offset): New function.
9271         (pa_compute_frame_size): Use it instead of STARTING_FRAME_OFFSET.
9272         (pa_expand_prologue): Likewise.
9273         (TARGET_STARTING_FRAME_OFFSET): Redefine.
9274         * config/powerpcspe/aix.h (STARTING_FRAME_OFFSET): Split out
9275         !FRAME_GROWS_DOWNWARD handling to...
9276         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
9277         * config/powerpcspe/darwin.h (STARTING_FRAME_OFFSET): Split out
9278         !FRAME_GROWS_DOWNWARD handling to...
9279         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
9280         * config/powerpcspe/powerpcspe.h (STARTING_FRAME_OFFSET): Split out
9281         !FRAME_GROWS_DOWNWARD handling to...
9282         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
9283         * config/powerpcspe/powerpcspe.c (TARGET_STARTING_FRAME_OFFSET):
9284         Redefine.
9285         (rs6000_starting_frame_offset): New function.
9286         * config/rs6000/aix.h (STARTING_FRAME_OFFSET): Split out
9287         !FRAME_GROWS_DOWNWARD handling to...
9288         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
9289         * config/rs6000/darwin.h (STARTING_FRAME_OFFSET): Split out
9290         !FRAME_GROWS_DOWNWARD handling to...
9291         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
9292         * config/rs6000/rs6000.h (STARTING_FRAME_OFFSET): Split out
9293         !FRAME_GROWS_DOWNWARD handling to...
9294         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
9295         * config/rs6000/rs6000.c (TARGET_STARTING_FRAME_OFFSET): Refine.
9296         (rs6000_starting_frame_offset): New function.
9297         * config/vax/elf.h (STARTING_FRAME_OFFSET): Delete.
9298         * config/vax/vax.h (STARTING_FRAME_OFFSET): Delete.
9299         * config/vax/vax.c (vax_starting_frame_offset): New function.
9300         (vax_expand_prologue): Use it instead of STARTING_FRAME_OFFSET.
9301         (TARGET_STARTING_FRAME_OFFSET): Redefine.
9302         * config/xtensa/xtensa.h (STARTING_FRAME_OFFSET): Delete.
9303         * config/xtensa/xtensa.c (xtensa_starting_frame_offset): New function.
9304         (TARGET_STARTING_FRAME_OFFSET): Redefine.
9305         * system.h (STARTING_FRAME_OFFSET): Poison.
9306
9307 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
9308
9309         * tree-vect-loop.c (vect_create_epilog_for_reduction): Use
9310         SCALAR_TYPE_MODE instead of TYPE_MODE.
9311
9312 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
9313             Alan Hayward  <alan.hayward@arm.com>
9314             David Sherwood  <david.sherwood@arm.com>
9315
9316         * dwarf2out.c (loc_list_from_tree_1): Use SCALAR_INT_TYPE_MODE
9317
9318 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
9319             Alan Hayward  <alan.hayward@arm.com>
9320             David Sherwood  <david.sherwood@arm.com>
9321
9322         * expmed.c (expand_shift_1): Use scalar_mode for scalar_mode.
9323
9324 2017-10-23  Richard Biener  <rguenther@suse.de>
9325
9326         PR tree-optimization/82129
9327         * tree-ssa-pre.c (bitmap_set_and): Remove.
9328         (compute_antic_aux): Compute ANTIC_OUT intersection in a way
9329         canonicalizing expressions in the set to those with lowest
9330         ID rather than taking that from the first edge.
9331
9332 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
9333
9334         * combine.c (rtx_equal_for_field_assignment_p): Use
9335         byte_lowpart_offset.
9336
9337 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
9338             Alan Hayward  <alan.hayward@arm.com>
9339             David Sherwood  <david.sherwood@arm.com>
9340
9341         * internal-fn.c (expand_direct_optab_fn): Don't assign directly
9342         to a SUBREG_PROMOTED_VAR.
9343
9344 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
9345             Alan Hayward  <alan.hayward@arm.com>
9346             David Sherwood  <david.sherwood@arm.com>
9347
9348         * cfgexpand.c (expand_debug_expr): Use GET_MODE_UNIT_PRECISION.
9349         (expand_debug_source_expr): Likewise.
9350         * combine.c (combine_simplify_rtx): Likewise.
9351         * cse.c (fold_rtx): Likewise.
9352         * optabs.c (expand_float): Likewise.
9353         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
9354         (simplify_binary_operation_1): Likewise.
9355
9356 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
9357             Alan Hayward  <alan.hayward@arm.com>
9358             David Sherwood  <david.sherwood@arm.com>
9359
9360         * combine.c (simplify_comparison): Use HWI_COMPUTABLE_MODE_P.
9361         (record_promoted_value): Likewise.
9362         * expr.c (expand_expr_real_2): Likewise.
9363         * ree.c (update_reg_equal_equiv_notes): Likewise.
9364         (combine_set_extension): Likewise.
9365         * rtlanal.c (low_bitmask_len): Likewise.
9366         * simplify-rtx.c (neg_const_int): Likewise.
9367         (simplify_binary_operation_1): Likewise.
9368
9369 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
9370             Alan Hayward  <alan.hayward@arm.com>
9371             David Sherwood  <david.sherwood@arm.com>
9372
9373         * lra-spills.c (assign_mem_slot): Use subreg_size_lowpart_offset.
9374         * regcprop.c (maybe_mode_change): Likewise.
9375         * reload1.c (alter_reg): Likewise.
9376
9377 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
9378
9379         * inchash.h (inchash::hash::add_wide_int): New function.
9380         * lto-streamer-out.c (hash_tree): Use it.
9381
9382 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
9383
9384         * inchash.h (inchash::hash::add_wide_int): Rename to...
9385         (inchash::hash::add_hwi): ...this.
9386         * ipa-devirt.c (hash_odr_vtable): Update accordingly.
9387         (polymorphic_call_target_hasher::hash): Likewise.
9388         * ipa-icf.c (sem_function::get_hash, sem_function::init): Likewise.
9389         (sem_item::add_expr, sem_item::add_type, sem_variable::get_hash)
9390         (sem_item_optimizer::update_hash_by_addr_refs): Likewise.
9391         * lto-streamer-out.c (hash_tree): Likewise.
9392         * optc-save-gen.awk: Likewise.
9393         * tree.c (add_expr): Likewise.
9394
9395 2017-10-22  Uros Bizjak  <ubizjak@gmail.com>
9396
9397         PR target/52451
9398         * config/i386/i386.c (ix86_fp_compare_mode): Return CCFPmode
9399         for ordered inequality comparisons even with TARGET_IEEE_FP.
9400
9401 2017-10-22  Uros Bizjak  <ubizjak@gmail.com>
9402
9403         PR target/82628
9404         * config/i386/i386.md (cmp<dwi>_doubleword): New pattern.
9405         * config/i386/i386.c (ix86_expand_branch) <case E_TImode>:
9406         Expand with cmp<dwi>_doubleword.
9407
9408 2017-10-21  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
9409
9410         * extend.texi: Add x86 specific to 'nocf_check' attribute.
9411         List CET intrinsics.
9412         * invoke.texi: Add -mcet, -mibt, -mshstk options.  Add x86
9413         specific to -fcf-protection option.
9414
9415 2017-10-21  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
9416
9417         * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET): New.
9418         (OPTION_MASK_ISA_SHSTK_SET): Likewise.
9419         (OPTION_MASK_ISA_IBT_UNSET): Likewise.
9420         (OPTION_MASK_ISA_SHSTK_UNSET): Likewise.
9421         (ix86_handle_option): Add -mibt, -mshstk, -mcet handling.
9422         * config.gcc (extra_headers): Add cetintrin.h for x86 targets.
9423         (extra_objs): Add cet.o for Linux/x86 targets.
9424         (tmake_file): Add i386/t-cet for Linux/x86 targets.
9425         * config/i386/cet.c: New file.
9426         * config/i386/cetintrin.h: Likewise.
9427         * config/i386/t-cet: Likewise.
9428         * config/i386/cpuid.h (bit_SHSTK): New.
9429         (bit_IBT): Likewise.
9430         * config/i386/driver-i386.c (host_detect_local_cpu): Detect and
9431         pass IBT and SHSTK bits.
9432         * config/i386/i386-builtin-types.def
9433         (VOID_FTYPE_UNSIGNED_PVOID): New.
9434         (VOID_FTYPE_UINT64_PVOID): Likewise.
9435         * config/i386/i386-builtin.def: Add CET intrinsics.
9436         * config/i386/i386-c.c (ix86_target_macros_internal): Add
9437         OPTION_MASK_ISA_IBT, OPTION_MASK_ISA_SHSTK handling.
9438         * config/i386/i386-passes.def: Add pass_insert_endbranch pass.
9439         * config/i386/i386-protos.h (make_pass_insert_endbranch): New
9440         prototype.
9441         * config/i386/i386.c (rest_of_insert_endbranch): New.
9442         (pass_data_insert_endbranch): Likewise.
9443         (pass_insert_endbranch): Likewise.
9444         (make_pass_insert_endbranch): Likewise.
9445         (ix86_notrack_prefixed_insn_p): Likewise.
9446         (ix86_target_string): Add -mibt, -mshstk flags.
9447         (ix86_option_override_internal): Add flag_cf_protection
9448         processing.
9449         (ix86_valid_target_attribute_inner_p): Set OPT_mibt, OPT_mshstk.
9450         (ix86_print_operand): Add 'notrack' prefix output.
9451         (ix86_init_mmx_sse_builtins): Add CET intrinsics.
9452         (ix86_expand_builtin): Expand CET intrinsics.
9453         (x86_output_mi_thunk): Add 'endbranch' instruction.
9454         * config/i386/i386.h (TARGET_IBT): New.
9455         (TARGET_IBT_P): Likewise.
9456         (TARGET_SHSTK): Likewise.
9457         (TARGET_SHSTK_P): Likewise.
9458         * config/i386/i386.md (unspecv): Add UNSPECV_NOP_RDSSP,
9459         UNSPECV_INCSSP, UNSPECV_SAVEPREVSSP, UNSPECV_RSTORSSP,
9460         UNSPECV_WRSS, UNSPECV_WRUSS, UNSPECV_SETSSBSY, UNSPECV_CLRSSBSY.
9461         (builtin_setjmp_setup): New pattern.
9462         (builtin_longjmp): Likewise.
9463         (rdssp<mode>): Likewise.
9464         (incssp<mode>): Likewise.
9465         (saveprevssp): Likewise.
9466         (rstorssp): Likewise.
9467         (wrss<mode>): Likewise.
9468         (wruss<mode>): Likewise.
9469         (setssbsy): Likewise.
9470         (clrssbsy): Likewise.
9471         (nop_endbr): Likewise.
9472         * config/i386/i386.opt: Add -mcet, -mibt, -mshstk and -mcet-switch
9473         options.
9474         * config/i386/immintrin.h: Include <cetintrin.h>.
9475         * config/i386/linux-common.h
9476         (file_end_indicate_exec_stack_and_cet): New prototype.
9477         (TARGET_ASM_FILE_END): New.
9478
9479 2017-10-20  Jan Hubicka  <hubicka@ucw.cz>
9480
9481         * i386.c (ix86_builtin_vectorization_cost): Use existing rtx_cost
9482         latencies instead of having separate table; make difference between
9483         integer and float costs.
9484         * i386.h (processor_costs): Remove scalar_stmt_cost,
9485         scalar_load_cost, scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
9486         scalar_to_vec_cost, vec_align_load_cost, vec_unalign_load_cost,
9487         vec_store_cost.
9488         * x86-tune-costs.h: Remove entries which has been removed in
9489         procesor_costs from all tables; make cond_taken_branch_cost
9490         and cond_not_taken_branch_cost COST_N_INSNS based.
9491
9492 2017-10-20  Jan Hubicka  <hubicka@ucw.cz>
9493
9494         * x86-tune-costs.h (intel_cost, generic_cost): Fix move costs.
9495
9496 2017-10-20  Jakub Jelinek  <jakub@redhat.com>
9497
9498         * config/i386/i386.md (isa): Remove fma_avx512f.
9499         * config/i386/sse.md (<avx512>_fmadd_<mode>_mask<round_name>,
9500         <avx512>_fmadd_<mode>_mask3<round_name>,
9501         <avx512>_fmsub_<mode>_mask<round_name>,
9502         <avx512>_fmsub_<mode>_mask3<round_name>,
9503         <avx512>_fnmadd_<mode>_mask<round_name>,
9504         <avx512>_fnmadd_<mode>_mask3<round_name>,
9505         <avx512>_fnmsub_<mode>_mask<round_name>,
9506         <avx512>_fnmsub_<mode>_mask3<round_name>,
9507         <avx512>_fmaddsub_<mode>_mask<round_name>,
9508         <avx512>_fmaddsub_<mode>_mask3<round_name>,
9509         <avx512>_fmsubadd_<mode>_mask<round_name>,
9510         <avx512>_fmsubadd_<mode>_mask3<round_name>): Remove isa attribute.
9511         (*vec_widen_umult_even_v16si<mask_name>,
9512         *vec_widen_smult_even_v16si<mask_name>): Likewise.
9513         (<mask_codefor>avx512bw_dbpsadbw<mode><mask_name>): Likewise.
9514
9515 2017-10-20  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
9516
9517         * extend.texi: Add 'nocf_check' documentation.
9518         * gimple.texi: Add second parameter to
9519         gimple_build_call_from_tree.
9520         * invoke.texi: Add -fcf-protection documentation.
9521         * rtl.texi: Add REG_CALL_NOTRACK documenation.
9522
9523 2017-10-20  Richard Biener  <rguenther@suse.de>
9524
9525         PR tree-optimization/82473
9526         * tree-vect-loop.c (vectorizable_reduction): Properly get at
9527         the largest input type.
9528
9529 2017-10-20  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
9530
9531         * c-attribs.c (handle_nocf_check_attribute): New function.
9532         (c_common_attribute_table): Add 'nocf_check' handling.
9533         * gimple-parser.c: Add second argument NULL to
9534         gimple_build_call_from_tree.
9535         * attrib.c (comp_type_attributes): Check nocf_check attribute.
9536         * cfgexpand.c (expand_call_stmt): Set REG_CALL_NOCF_CHECK for
9537         call insn.
9538         * combine.c (distribute_notes): Add REG_CALL_NOCF_CHECK handling.
9539         * common.opt: Add fcf-protection flag.
9540         * emit-rtl.c (try_split): Add REG_CALL_NOCF_CHECK handling.
9541         * flag-types.h: Add enum cf_protection_level.
9542         * gimple.c (gimple_build_call_from_tree): Add second parameter.
9543         Add 'nocf_check' attribute propagation to gimple call.
9544         * gimple.h (gf_mask): Add GF_CALL_NOCF_CHECK.
9545         (gimple_build_call_from_tree): Update prototype.
9546         (gimple_call_nocf_check_p): New function.
9547         (gimple_call_set_nocf_check): Likewise.
9548         * gimplify.c: Add second argument to gimple_build_call_from_tree.
9549         * ipa-icf.c: Add nocf_check attribute in statement hash.
9550         * recog.c (peep2_attempt): Add REG_CALL_NOCF_CHECK handling.
9551         * reg-notes.def: Add REG_NOTE (CALL_NOCF_CHECK).
9552         * toplev.c (process_options): Add flag_cf_protection handling.
9553
9554 2017-10-19  Jan Hubicka  <hubicka@ucw.cz>
9555
9556         * x86-tune-costs.h (core_cost): Fix div, move and sqrt latencies.
9557
9558 2017-10-20  Richard Biener  <rguenther@suse.de>
9559
9560         PR tree-optimization/82603
9561         * tree-if-conv.c (predicate_mem_writes): Make sure to only
9562         remove false predicated stores.
9563
9564 2017-10-20  Richard Biener  <rguenther@suse.de>
9565
9566         * graphite-isl-ast-to-gimple.c
9567         (translate_isl_ast_to_gimple::graphite_copy_stmts_from_block):
9568         Remove return value and simplify, dump copied stmt after lhs
9569         adjustment.
9570         (translate_isl_ast_to_gimple::translate_isl_ast_node_user):
9571         Reduce dump verbosity.
9572         (gsi_insert_earliest): Likewise.
9573         (translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Adjust.
9574         * graphite.c (print_global_statistics): Adjust dumping.
9575         (print_graphite_scop_statistics): Likewise.
9576         (print_graphite_statistics): Do not dump loops here.
9577         (graphite_transform_loops): But here.
9578
9579 2017-10-20  Nicolas Roche  <roche@adacore.com>
9580
9581         * configure.ac (ACX_PROG_GNAT): Append "libgnat" to include search dir.
9582         * configure: Regenerate.
9583
9584 2017-10-20  Jakub Jelinek  <jakub@redhat.com>
9585
9586         PR target/82158
9587         * tree-cfg.c (pass_warn_function_return::execute): In noreturn
9588         functions when optimizing replace GIMPLE_RETURN stmts with
9589         calls to __builtin_unreachable ().
9590
9591         PR sanitizer/82595
9592         * config/gnu-user.h (LIBTSAN_EARLY_SPEC): Add libtsan_preinit.o
9593         for -fsanitize=thread link of executables.
9594         (LIBLSAN_EARLY_SPEC): Add liblsan_preinit.o for -fsanitize=leak
9595         link of executables.
9596
9597         PR target/82370
9598         * config/i386/sse.md (VI248_AVX2, VI248_AVX512BW, VI248_AVX512BW_2):
9599         New mode iterators.
9600         (<shift_insn><mode>3<mask_name>): Change the last of the 3
9601         define_insns for logical vector shifts to use VI248_AVX512BW
9602         iterator instead of VI48_AVX512, remove <mask_mode512bit_condition>
9603         condition, useless isa and prefix attributes.  Change the first
9604         2 of these define_insns to ...
9605         (<mask_codefor><shift_insn><mode>3<mask_name>): ... this, new
9606         define_insn for avx512vl.
9607         (<shift_insn><mode>3): ... and this, new define_insn without
9608         masking for non-avx512vl.
9609
9610         PR target/82370
9611         * config/i386/sse.md (*andnot<mode>3,
9612         <mask_codefor><code><mode>3<mask_name>, *<code><mode>3): Split
9613         (=v,v,vm) alternative into (=x,x,xm) and (=v,v,vm), for 128-bit
9614         and 256-bit vectors, the (=x,x,xm) alternative and when mask is
9615         not applied use empty suffix even for TARGET_AVX512VL.
9616         * config/i386/subst.md (mask_prefix3, mask_prefix4): When mask
9617         is applied, supply evex,evex or evex,evex,evex instead of just
9618         evex.
9619
9620 2017-10-20  Julia Koval  <julia.koval@intel.com>
9621
9622         * common/config/i386/i386-common.c (OPTION_MASK_ISA_GFNI_SET,
9623         (OPTION_MASK_ISA_GFNI_UNSET): New.
9624         (ix86_handle_option): Handle OPT_mgfni.
9625         * config/i386/cpuid.h (bit_GFNI): New.
9626         * config/i386/driver-i386.c (host_detect_local_cpu): Detect gfni.
9627         * config/i386/i386-c.c (ix86_target_macros_internal): Define __GFNI__.
9628         * config/i386/i386.c (ix86_target_string): Add -mgfni.
9629         (ix86_valid_target_attribute_inner_p): Add OPT_mgfni.
9630         * config/i386/i386.h (TARGET_GFNI, TARGET_GFNI_P): New.
9631         * config/i386/i386.opt: Add mgfni.
9632
9633 2017-10-20  Orlando Arias  <oarias@knights.ucf.edu>
9634
9635         * config/msp430/msp430.c (msp430_option_override): Disable
9636         -fdelete-null-pointer-checks.
9637         * doc/invoke.text (-fdelete-null-pointer-checks): Document that.
9638
9639 2017-10-19  Jan Hubicka  <hubicka@ucw.cz>
9640
9641         * x86-tune-costs.h (generic_cost, core_cost): Correct costs
9642         of x87 and SSE instructions.
9643
9644 2017-10-19  Jan Hubicka  <hubicka@ucw.cz>
9645
9646         * asan.c (create_cond_insert_point): Do not update edge count.
9647         * auto-profile.c (afdo_propagate_edge): Update for edge count removal.
9648         (afdo_propagate_circuit): Likewise.
9649         (afdo_calculate_branch_prob): Likewise.
9650         (afdo_annotate_cfg): Likewise.
9651         * basic-block.h (struct edge_def): Remove count.
9652         (edge_def::count): New accessor.
9653         * bb-reorder.c (rotate_loop): Update.
9654         (find_traces_1_round): Update.
9655         (connect_traces): Update.
9656         (sanitize_hot_paths): Update.
9657         * cfg.c (unchecked_make_edge): Update.
9658         (make_single_succ_edge): Update.
9659         (check_bb_profile): Update.
9660         (dump_edge_info): Update.
9661         (update_bb_profile_for_threading): Update.
9662         (scale_bbs_frequencies_int): Update.
9663         (scale_bbs_frequencies_gcov_type): Update.
9664         (scale_bbs_frequencies_profile_count): Update.
9665         (scale_bbs_frequencies): Update.
9666         * cfganal.c (connect_infinite_loops_to_exit): Update.
9667         * cfgbuild.c (compute_outgoing_frequencies): Update.
9668         (find_many_sub_basic_blocks): Update.
9669         * cfgcleanup.c (try_forward_edges): Update.
9670         (try_crossjump_to_edge): Update
9671         * cfgexpand.c (expand_gimple_cond): Update
9672         (expand_gimple_tailcall): Update
9673         (construct_exit_block): Update
9674         * cfghooks.c (verify_flow_info): Update
9675         (redirect_edge_succ_nodup): Update
9676         (split_edge): Update
9677         (make_forwarder_block): Update
9678         (duplicate_block): Update
9679         (account_profile_record): Update
9680         * cfgloop.c (find_subloop_latch_edge_by_profile): Update.
9681         * cfgloopanal.c (expected_loop_iterations_unbounded): Update.
9682         * cfgloopmanip.c (scale_loop_profile): Update.
9683         (loopify): Update.
9684         (lv_adjust_loop_entry_edge): Update.
9685         * cfgrtl.c (try_redirect_by_replacing_jump): Update.
9686         (force_nonfallthru_and_redirect): Update.
9687         (purge_dead_edges): Update.
9688         (rtl_flow_call_edges_add): Update.
9689         * cgraphunit.c (init_lowered_empty_function): Update.
9690         (cgraph_node::expand_thunk): Update.
9691         * gimple-pretty-print.c (dump_probability): Update.
9692         (dump_edge_probability): Update.
9693         * gimple-ssa-isolate-paths.c (isolate_path): Update.
9694         * haifa-sched.c (sched_create_recovery_edges): Update.
9695         * hsa-gen.c (convert_switch_statements): Update.
9696         * ifcvt.c (dead_or_predicable): Update.
9697         * ipa-inline-transform.c (inline_transform): Update.
9698         * ipa-split.c (split_function): Update.
9699         * ipa-utils.c (ipa_merge_profiles): Update.
9700         * loop-doloop.c (add_test): Update.
9701         * loop-unroll.c (unroll_loop_runtime_iterations): Update.
9702         * lto-streamer-in.c (input_cfg): Update.
9703         (input_function): Update.
9704         * lto-streamer-out.c (output_cfg): Update.
9705         * modulo-sched.c (sms_schedule): Update.
9706         * postreload-gcse.c (eliminate_partially_redundant_load): Update.
9707         * predict.c (maybe_hot_edge_p): Update.
9708         (unlikely_executed_edge_p): Update.
9709         (probably_never_executed_edge_p): Update.
9710         (dump_prediction): Update.
9711         (drop_profile): Update.
9712         (propagate_unlikely_bbs_forward): Update.
9713         (determine_unlikely_bbs): Update.
9714         (force_edge_cold): Update.
9715         * profile.c (compute_branch_probabilities): Update.
9716         * reg-stack.c (better_edge): Update.
9717         * shrink-wrap.c (handle_simple_exit): Update.
9718         * tracer.c (better_p): Update.
9719         * trans-mem.c (expand_transaction): Update.
9720         (split_bb_make_tm_edge): Update.
9721         * tree-call-cdce.c: Update.
9722         * tree-cfg.c (gimple_find_sub_bbs): Update.
9723         (gimple_split_edge): Update.
9724         (gimple_duplicate_sese_region): Update.
9725         (gimple_duplicate_sese_tail): Update.
9726         (gimple_flow_call_edges_add): Update.
9727         (insert_cond_bb): Update.
9728         (execute_fixup_cfg): Update.
9729         * tree-cfgcleanup.c (cleanup_control_expr_graph): Update.
9730         * tree-complex.c (expand_complex_div_wide): Update.
9731         * tree-eh.c (lower_resx): Update.
9732         (unsplit_eh): Update.
9733         (cleanup_empty_eh_move_lp): Update.
9734         * tree-inline.c (copy_edges_for_bb): Update.
9735         (freqs_to_counts): Update.
9736         (copy_cfg_body): Update.
9737         * tree-ssa-dce.c (remove_dead_stmt): Update.
9738         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update.
9739         * tree-ssa-loop-im.c (execute_sm_if_changed): Update.
9740         * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update.
9741         (unloop_loops): Update.
9742         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
9743         * tree-ssa-loop-split.c (connect_loops): Update.
9744         (split_loop): Update.
9745         * tree-ssa-loop-unswitch.c (hoist_guard): Update.
9746         * tree-ssa-phionlycprop.c (propagate_rhs_into_lhs): Update.
9747         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update.
9748         * tree-ssa-reassoc.c (branch_fixup): Update.
9749         * tree-ssa-tail-merge.c (replace_block_by): Update.
9750         * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Update.
9751         (compute_path_counts): Update.
9752         (update_profile): Update.
9753         (recompute_probabilities): Update.
9754         (update_joiner_offpath_counts): Update.
9755         (estimated_freqs_path): Update.
9756         (freqs_to_counts_path): Update.
9757         (clear_counts_path): Update.
9758         (ssa_fix_duplicate_block_edges): Update.
9759         (duplicate_thread_path): Update.
9760         * tree-switch-conversion.c (hoist_edge_and_branch_if_true): Update.
9761         (case_bit_test_cmp): Update.
9762         (collect_switch_conv_info): Update.
9763         (gen_inbound_check): Update.
9764         (do_jump_if_equal): Update.
9765         (emit_cmp_and_jump_insns): Update.
9766         * tree-tailcall.c (decrease_profile): Update.
9767         (eliminate_tail_call): Update.
9768         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Update.
9769         (vect_do_peeling): Update.
9770         * tree-vect-loop.c (scale_profile_for_vect_loop): Update.
9771         * ubsan.c (ubsan_expand_null_ifn): Update.
9772         (ubsan_expand_ptr_ifn): Update.
9773         * value-prof.c (gimple_divmod_fixed_value): Update.
9774         (gimple_mod_pow2): Update.
9775         (gimple_mod_subtract): Update.
9776         (gimple_ic): Update.
9777         (gimple_stringop_fixed_value): Update.
9778
9779 2017-10-19  Uros Bizjak  <ubizjak@gmail.com>
9780
9781         PR target/82618
9782         * config/i386/i386.md (sub to cmp): New peephole2 pattern.
9783
9784 2017-10-19  Alexander Monakov  <amonakov@ispras.ru>
9785
9786         PR rtl-optimization/82395
9787         * ira-color.c (allocno_priority_compare_func): Fix comparison step
9788         based on non_spilled_static_chain_regno_p.
9789
9790 2017-10-19  Uros Bizjak  <ubizjak@gmail.com>
9791
9792         * config/i386/i386.c (output_387_binary_op): Rewrite SSE part.
9793         (ix86_emit_mode_set): Rewrite insn mnemonic construction.
9794         (ix86_prepare_fp_compare_args): Redefine is_sse as bool.
9795
9796 2017-10-19  Martin Sebor  <msebor@redhat.com>
9797
9798         PR tree-optimization/82596
9799         * tree.c (array_at_struct_end_p): Handle STRING_CST.
9800
9801 2017-10-19  Eric Botcazou  <ebotcazou@adacore.com>
9802
9803         * asan.c (handle_builtin_alloca): Deal with all alloca variants.
9804         (get_mem_refs_of_builtin_call): Likewise.
9805         * builtins.c (expand_builtin_apply): Adjust call to
9806         allocate_dynamic_stack_space.
9807         (expand_builtin_alloca): For __builtin_alloca_with_align_and_max, pass
9808         the third argument to allocate_dynamic_stack_space, otherwise -1.
9809         (expand_builtin): Deal with all alloca variants.
9810         (is_inexpensive_builtin): Likewise.
9811         * builtins.def (BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX): New.
9812         * calls.c (special_function_p): Deal with all alloca variants.
9813         (initialize_argument_information): Adjust call to
9814         allocate_dynamic_stack_space.
9815         (expand_call): Likewise.
9816         * cfgexpand.c (expand_call_stmt): Deal with all alloca variants.
9817         * doc/extend.texi (Built-ins): Add __builtin_alloca_with_align_and_max
9818         * explow.c (allocate_dynamic_stack_space): Add MAX_SIZE parameter and
9819         use it for the stack usage computation.
9820         * explow.h (allocate_dynamic_stack_space): Adjust prototype.
9821         * function.c (gimplify_parameters): Call build_alloca_call_expr.
9822         * gimple-ssa-warn-alloca.c (alloca_call_type): Simplify control flow.
9823         Take into account 3rd argument of __builtin_alloca_with_align_and_max.
9824         (in_loop_p): Remove first argument and useless check.
9825         (pass_walloca::execute): Remove useless test and adjust call to above.
9826         * gimple.c (gimple_build_call_from_tree): Deal with all alloc variants
9827         * gimplify.c (gimplify_vla_decl): Call build_alloca_call_expr.
9828         (gimplify_call_expr): Deal with all alloca variants.
9829         * hsa-gen.c (gen_hsa_alloca): Likewise.
9830         (gen_hsa_insns_for_call): Likewise.
9831         * ipa-pure-const.c (special_builtin_state): Likewise.
9832         * tree-chkp.c (chkp_build_returned_bound): Likewise.
9833         * tree-object-size.c (alloc_object_size): Likewise.
9834         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Likewise.
9835         (call_may_clobber_ref_p_1): Likewise.
9836         * tree-ssa-ccp.c (evaluate_stmt): Likewise.
9837         (ccp_fold_stmt): Likewise.
9838         (optimize_stack_restore): Likewise.
9839         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
9840         (mark_all_reaching_defs_necessary_1): Likewise.
9841         (propagate_necessity): Likewise.
9842         (eliminate_unnecessary_stmts): Likewise.
9843         * tree.c (build_common_builtin_nodes): Build
9844         BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX.
9845         (build_alloca_call_expr): New function.
9846         * tree.h (ALLOCA_FUNCTION_CODE_P): New macro.
9847         (CASE_BUILT_IN_ALLOCA): Likewise.
9848         (build_alloca_call_expr): Declare.
9849         * varasm.c (incorporeal_function_p): Deal with all alloca variants.
9850
9851 2017-10-19  Eric Botcazou  <ebotcazou@adacore.com>
9852
9853         PR debug/82509
9854         * dwarf2out.c (new_die_raw): New static inline function.
9855         (new_die): Use it to create the DIE.
9856         (add_AT_external_die_ref): Likewise.
9857         (clone_die): Likewise.
9858         (clone_as_declaration): Likewise.
9859         (dwarf2out_vms_debug_main_pointer): Likewise.
9860         (base_type_die): Likewise.  Remove early return for corner cases.
9861         Do not call add_pubtype on the DIE here.
9862         (is_base_type): Remove ERROR_MARK and return 0 for VOID_TYPE.
9863         (modified_type_die): Adjust the lookup for reverse order DIEs.  Skip
9864         typedefs for base types with DW_AT_endianity.  Make sure a DIE with
9865         native order exists for base types, attach the DIE manually and call
9866         add_pubtype on it.  Do not equate a reverse order DIE to the type.
9867
9868 2017-10-19  Richard Earnshaw  <rearnsha@arm.com>
9869
9870         * config/arm/arm.c (align_ok_ldrd_strd): New function.
9871         (mem_ok_for_ldrd_strd): New parameter align.  Extract the alignment of
9872         the mem into it.
9873         (gen_operands_ldrd_strd): Validate the alignment of the accesses.
9874
9875 2017-10-19  Jakub Jelinek  <jakub@redhat.com>
9876
9877         * flag-types.h (enum sanitize_code): Add SANITIZE_BUILTIN.  Or
9878         SANITIZE_BUILTIN into SANITIZE_UNDEFINED.
9879         * sanitizer.def (BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN,
9880         BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN_ABORT): New builtins.
9881         * opts.c (sanitizer_opts): Add builtin.
9882         * ubsan.c (instrument_builtin): New function.
9883         (pass_ubsan::execute): Call it.
9884         (pass_ubsan::gate): Enable even for SANITIZE_BUILTIN.
9885         * doc/invoke.texi: Document -fsanitize=builtin.
9886
9887         * ubsan.c (ubsan_expand_null_ifn): Use _v1 suffixed type mismatch
9888         builtins, store max (log2 (align), 0) into uchar field instead of
9889         align into uptr field.
9890         (ubsan_expand_objsize_ifn): Use _v1 suffixed type mismatch builtins,
9891         store uchar 0 field instead of uptr 0 field.
9892         (instrument_nonnull_return): Use _v1 suffixed nonnull return builtin,
9893         instead of passing one address of struct with 2 locations pass
9894         two addresses of structs with 1 location each.
9895         * sanitizer.def (BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH,
9896         BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_ABORT,
9897         BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN,
9898         BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_ABORT): Removed.
9899         (BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1,
9900         BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1_ABORT,
9901         BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1,
9902         BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1_ABORT): New builtins.
9903
9904 2017-10-19  Martin Liska  <mliska@suse.cz>
9905
9906         PR driver/81829
9907         * file-find.c (remove_prefix): Remove.
9908         * file-find.h (remove_prefix): Likewise.
9909         * gcc-ar.c: Remove smartness of lookup.
9910
9911 2017-10-19  Segher Boessenkool  <segher@kernel.crashing.org>
9912
9913         * config/rs6000/rs6000.md (*call_indirect_aix<mode>,
9914         *call_value_indirect_aix<mode>, *call_indirect_elfv2<mode>,
9915         *call_value_indirect_elfv2<mode>): Add correct mode to the unspec.
9916
9917 2017-10-19  Jakub Jelinek  <jakub@redhat.com>
9918
9919         PR target/82580
9920         * config/i386/i386.md (setcc + movzbl to xor + setcc): New peephole2.
9921         (setcc + and to xor + setcc): New peephole2.
9922
9923 2017-10-19  Tom de Vries  <tom@codesourcery.com>
9924
9925         * doc/sourcebuild.texi (Test Directives, Variants of
9926         dg-require-support): Add dg-require-stack-size.
9927
9928 2017-10-19  Martin Liska  <mliska@suse.cz>
9929
9930         PR sanitizer/82517
9931         * gimplify.c (gimplify_decl_expr): Do not instrument variables
9932         that have a large alignment.
9933         (gimplify_target_expr): Likewise.
9934
9935 2017-10-18  Segher Boessenkool  <segher@kernel.crashing.org>
9936
9937         PR rtl-optimization/82602
9938         * ira.c (rtx_moveable_p): Return false for volatile asm.
9939
9940 2017-10-18  Uros Bizjak  <ubizjak@gmail.com>
9941
9942         PR target/82580
9943         * config/i386/i386-modes.def (CCGZ): New CC mode.
9944         * config/i386/i386.md (sub<mode>3_carry_ccgz): New insn pattern.
9945         * config/i386/predicates.md (ix86_comparison_operator):
9946         Handle CCGZmode.
9947         * config/i386/i386.c (ix86_expand_branch) <case E_TImode>:
9948         Emulate LE, LEU, GT, GTU, LT, LTU, GE and GEU double-word comparisons
9949         with double-word subtraction.
9950         (put_condition_code): Handle CCGZmode.
9951
9952 2017-10-18  Aldy Hernandez  <aldyh@redhat.com>
9953
9954         * wide-int.cc (debug (const wide_int &)): New.
9955         (debug (const wide_int *)): New.
9956         (debug (const widest_int &)): New.
9957         (debug (const widest_int *)): New.
9958
9959 2017-10-18  Vladimir Makarov  <vmakarov@redhat.com>
9960
9961         PR middle-end/82556
9962         * lra-constraints.c (curr_insn_transform): Use non-input operand
9963         instead of output one for matched reload.
9964
9965 2017-10-18  Bin Cheng  <bin.cheng@arm.com>
9966
9967         * tree-loop-distribution.c (INCLUDE_ALGORITHM): New header file.
9968         (tree-ssa-loop-ivopts.h): New header file.
9969         (struct builtin_info): New fields.
9970         (classify_builtin_1): Compute and record base and offset parts for
9971         memset builtin partition by calling strip_offset.
9972         (offset_cmp, fuse_memset_builtins): New functions.
9973         (finalize_partitions): Fuse adjacent memset partitions by calling
9974         above function.
9975         * tree-ssa-loop-ivopts.c (strip_offset): Delete static declaration.
9976         Expose the interface.
9977         * tree-ssa-loop-ivopts.h (strip_offset): New declaration.
9978
9979 2017-10-18  Bin Cheng  <bin.cheng@arm.com>
9980
9981         PR tree-optimization/82574
9982         * tree-loop-distribution.c (find_single_drs): New parameter.  Check
9983         that data reference must be executed exactly once per iteration
9984         against the outermost loop in nest.
9985         (classify_partition): Update call to above function.
9986
9987 2017-10-18  Richard Biener  <rguenther@suse.de>
9988
9989         PR tree-optimization/82591
9990         * graphite.c (graphite_transform_loops): Move code gen message
9991         printing ...
9992         * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl):
9993         Here.  Handle scop_to_isl_ast failing.
9994         (scop_to_isl_ast): Limit the number of ISL operations.
9995
9996 2017-10-18  Richard Biener  <rguenther@suse.de>
9997
9998         * graphite-isl-ast-to-gimple.c
9999         (translate_isl_ast_to_gimple::set_rename): Simplify.
10000         (translate_isl_ast_to_gimple::set_rename_for_each_def): Inline...
10001         (graphite_copy_stmts_from_block): ... here.
10002         (copy_bb_and_scalar_dependences): Simplify.
10003         (add_parameters_to_ivs_params): Canonicalize.
10004         (generate_entry_out_of_ssa_copies): Simplify.
10005         * graphite-sese-to-poly.c (extract_affine_name): Simplify
10006         by passing in ISL dimension.
10007         (parameter_index_in_region_1): Rename to ...
10008         (parameter_index_in_region): ... this.
10009         (extract_affine): Adjust assert, pass down parameter index.
10010         (add_param_constraints): Use range-info when available.
10011         (build_scop_context): Adjust.
10012         * sese.c (new_sese_info): Adjust.
10013         (free_sese_info): Likewise.
10014         * sese.h (bb_map_t, rename_map_t, phi_rename, init_back_edge_pair_t):
10015         Remove unused typedefs.
10016         (struct sese_info_t): Simplify rename_map, remove incomplete_phis.
10017
10018 2017-10-18  Martin Liska  <mliska@suse.cz>
10019
10020         * combine.c (simplify_compare_const): Add gcc_fallthrough.
10021
10022 2017-10-18  Robin Dapp  <rdapp@linux.vnet.ibm.com>
10023
10024         * config/s390/s390.c (s390_bb_fallthru_entry_likely): New function.
10025         (s390_sched_init): Do not reset s390_sched_state if we entered the
10026         current basic block via a fallthru edge and all others are unlikely.
10027
10028 2017-10-18  Robin Dapp  <rdapp@linux.vnet.ibm.com>
10029
10030         * config/s390/s390.c (NUM_SIDES): New variable.
10031         (LONGRUNNING_THRESHOLD): New variable.
10032         (LATENCY_FACTOR): New variable.
10033         (s390_sched_score): Decrease score for long-running instructions on
10034         wrong side.
10035         (s390_sched_variable_issue): Perform bookkeeping for long-running
10036         instructions.
10037
10038 2017-10-18  Richard Biener  <rguenther@suse.de>
10039
10040         * graphite-isl-ast-to-gimple.c (gcc_expression_from_isl_ast_expr_id):
10041         Simplify with removal of the parameter rename map.
10042         (set_rename): Likewise.
10043         (should_copy_to_new_region): Likewise.
10044         (graphite_copy_stmts_from_block): Likewise.
10045         (copy_bb_and_scalar_dependences): Remove initialization of
10046         unused copied_bb_map.
10047         (copy_def): Remove.
10048         (copy_internal_parameters): Likewise.
10049         (graphite_regenerate_ast_isl): Do not call copy_internal_parameters.
10050         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
10051         Use INTEGRAL_TYPE_P.
10052         (parameter_index_in_region_1): Rename to ...
10053         (assign_parameter_index_in_region): ... this.  Assert we have
10054         a parameter we handle.
10055         (scan_tree_for_params): Adjust.
10056         * sese.h (parameter_rename_map_t): Remove.
10057         (struct sese_info_t): Remove unused parameter_rename_map and
10058         copied_bb_map members.
10059         * sese.c (new_sese_info): Adjust.
10060         (free_sese_info): Likewise.
10061
10062 2017-10-18  Martin Liska  <mliska@suse.cz>
10063
10064         PR sanitizer/82545
10065         * asan.c (asan_expand_poison_ifn): Do not put gimple stmt
10066         on an abnormal edge.
10067
10068 2017-10-18  Sebastian Huber  <sebastian.huber@embedded-brains.de>
10069
10070         * doc/invoke.texi (ffunction-sections and fdata-sections):
10071         Update.
10072
10073 2017-10-17  Eric Botcazou  <ebotcazou@adacore.com>
10074
10075         * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Bail out only if
10076         the use statement can throw internally.
10077
10078 2017-10-17  Eric Botcazou  <ebotcazou@adacore.com>
10079
10080         * config/visium/visium.c (visium_select_cc_mode): Return CCmode for
10081         any RTX present on the RHS of a SET.
10082         * compare-elim.c (try_eliminate_compare): Restore comment.
10083
10084 2017-10-17  Jakub Jelinek  <jakub@redhat.com>
10085
10086         * langhooks.h (struct lang_hooks): Document that tree_size langhook
10087         may be also called on tcc_type nodes.
10088         * langhooks.c (lhd_tree_size): Likewise.
10089
10090 2017-10-17  David Malcolm  <dmalcolm@redhat.com>
10091
10092         * gimple-ssa-sprintf.c (fmtwarn): Update for changed signature of
10093         format_warning_at_substring.
10094         (maybe_warn): Convert source_range * param to a location_t.  Pass
10095         UNKNOWN_LOCATION rather than NULL to fmtwarn.
10096         (format_directive): Remove code to extract source_ranges and
10097         source_range * in favor of just a location_t.
10098         (parse_directive): Pass UNKNOWN_LOCATION rather than NULL to
10099         fmtwarn.
10100         * substring-locations.c (format_warning_va): Convert
10101         source_range * param to a location_t.
10102         (format_warning_at_substring): Likewise.
10103         * substring-locations.h (format_warning_va): Likewise.
10104         (format_warning_at_substring): Likewise.
10105
10106 2017-10-17  Jan Hubicka  <hubicka@ucw.cz>
10107
10108         * target.h (enum vect_cost_for_stmt): Add vec_gather_load and
10109         vec_scatter_store
10110         * tree-vect-stmts.c (record_stmt_cost): Make difference between normal
10111         and scatter/gather ops.
10112
10113         * aarch64/aarch64.c (aarch64_builtin_vectorization_cost): Add
10114         vec_gather_load and vec_scatter_store.
10115         * arm/arm.c (arm_builtin_vectorization_cost): Likewise.
10116         * powerpcspe/powerpcspe.c (rs6000_builtin_vectorization_cost): Likewise.
10117         * rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Likewise.
10118         * s390/s390.c (s390_builtin_vectorization_cost): Likewise.
10119         * spu/spu.c (spu_builtin_vectorization_cost): Likewise.
10120         * i386/i386.c (x86_builtin_vectorization_cost): Likewise.
10121
10122 2017-10-17  Uros Bizjak  <ubizjak@gmail.com>
10123
10124         * reg-stack.c (compare_for_stack_reg): Add bool argument.
10125         Detect FTST instruction and handle its register pops.  Only pop
10126         second operand if can_pop_second_op is true.
10127         (subst_stack_regs_pat) <case COMPARE>: Detect FCOMI instruction to
10128         set can_pop_second_op to false in the compare_for_stack_reg call.
10129
10130         * config/i386/i386.md (*cmpi<FPCMP:unord><MODEF:mode>): Only call
10131         output_fp_compare for stack register operands.
10132         * config/i386/i386.c (output_fp_compare): Do not output SSE compare
10133         instructions here.  Do not emit stack register pops here.  Assert
10134         that FCOMPP pops next to top stack register.  Rewrite function.
10135
10136 2017-10-17  Nathan Sidwell  <nathan@acm.org>
10137
10138         PR middle-end/82577
10139         * alias.c (compare_base_decls): Check HAS_DECL_ASSEMBLER_NAME_P,
10140         use DECL_ASSEMBLER_NAME_RAW.
10141
10142         PR middle-end/82546
10143         * tree.c (tree_code_size): Reformat.  Punt to lang hook for unknown
10144         TYPE nodes.
10145
10146 2017-10-17  Qing Zhao <qing.zhao@oracle.com>
10147             Wilco Dijkstra <wilco.dijkstra@arm.com>
10148
10149         * builtins.c (expand_builtin_update_setjmp_buf): Add a
10150         converstion to Pmode from the buf_addr.
10151
10152 2017-10-17  Richard Biener  <rguenther@suse.de>
10153
10154         * graphite-dependences.c (scop_get_reads_and_writes): Change
10155         output parameters to references.
10156
10157 2017-10-17  Jackson Woodruff  <jackson.woodruff@arm.com>
10158
10159         PR 71026/tree-optimization
10160         * fold-const.c (distribute_real_division): Removed.
10161         (fold_binary_loc): Remove calls to distribute_real_divison.
10162
10163 2017-10-17  Richard Biener  <rguenther@suse.de>
10164
10165         * graphite-scop-detection.c
10166         (scop_detection::stmt_has_simple_data_refs_p): Always use
10167         the full nest as region.
10168         (try_generate_gimple_bb): Likewise.
10169         * sese.c (scalar_evolution_in_region): Simplify now that
10170         SCEV can handle instantiation in regions.
10171         * tree-scalar-evolution.c (instantiate_scev_name): Also instantiate
10172         in the non-loop part of a function if requested.
10173
10174 2017-10-17  Richard Biener  <rguenther@suse.de>
10175
10176         PR tree-optimization/82563
10177         * graphite-isl-ast-to-gimple.c (generate_entry_out_of_ssa_copies):
10178         New function.
10179         (graphite_regenerate_ast_isl): Call it.
10180         * graphite-scop-detection.c (build_scops): Remove entry edge split.
10181
10182 2017-10-17  Jakub Jelinek  <jakub@redhat.com>
10183
10184         PR tree-optimization/82549
10185         * fold-const.c (optimize_bit_field_compare, fold_truth_andor_1):
10186         Formatting fixes.  Instead of calling make_bit_field_ref with negative
10187         bitpos return 0.
10188
10189 2017-10-17  Olga Makhotina  <olga.makhotina@intel.com>
10190
10191         * config/i386/avx512dqintrin.h (_mm_mask_reduce_sd,
10192         _mm_maskz_reduce_sd, _mm_mask_reduce_ss,=20
10193         _mm_maskz_reduce_ss): New.
10194         * config/i386/i386-builtin.def (__builtin_ia32_reducesd_mask,
10195         __builtin_ia32_reducess_mask): Ditto..
10196         (__builtin_ia32_reducesd, __builtin_ia32_reducess): Remove.
10197         * config/i386/sse.md (reduces<mode>): Renamed to ...
10198         (reduces<mode><mask_scalar_name>): ... this.
10199         (vreduce<ssescalarmodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}):
10200         Changed to ...
10201         (vreduce<ssescalarmodesuffix>\t{%3, %2, %1, %0<mask_scalar_operand4>|
10202         %0<mask_scalar_operand4>, %1, %2, %3}): ... this.
10203
10204 2017-10-16  David Malcolm  <dmalcolm@redhat.com>
10205
10206         * Makefile.in (OBJS): Add unique-ptr-tests.o.
10207         * selftest-run-tests.c (selftest::run_tests): Call
10208         selftest::unique_ptr_tests_cc_tests.
10209         * selftest.h (selftest::unique_ptr_tests_cc_tests): New decl.
10210         * unique-ptr-tests.cc: New file.
10211
10212 2017-10-16  Vladimir Makarov  <vmakarov@redhat.com>
10213
10214         PR sanitizer/82353
10215         * lra.c (collect_non_operand_hard_regs): Don't ignore operator
10216         locations.
10217         * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up.
10218         (make_hard_regno_born, make_hard_regno_dead): Update
10219         bb_killed_pseudos and bb_gen_pseudos for fixed regs.
10220
10221 2017-10-16  Jeff Law  <law@redhat.com>
10222
10223         * tree-ssa-dse.c (live_bytes_read): Fix thinko.
10224
10225 2017-10-16  Jan Hubicka  <hubicka@ucw.cz>
10226
10227         * x86-tune-costs.h (znver1_cost): Fix move cost tables.
10228
10229 2017-10-16  Olivier Hainque  <hainque@adacore.com>
10230
10231         * gcc/config.gcc (powerpc*-*-*spe*): Pick 8548 as the default
10232         with_cpu if we were configured for an e500v2 target cpu name.
10233
10234 2017-10-16  Thomas Preud'homme  <thomas.preudhomme@arm.com>
10235
10236         * config/arm/arm-cpus.in (cortex-m33): Add nodsp option.
10237         * doc/invoke.texi: Document +nodsp as a valid extension for
10238         -mcpu=cortex-m33.
10239
10240 2017-10-16  Martin Liska  <mliska@suse.cz>
10241
10242         * sbitmap.c (bitmap_bit_in_range_p_checking): New function.
10243         (test_set_range): Likewise.
10244         (test_range_functions): Rename to ...
10245         (test_bit_in_range): ... this.
10246         (sbitmap_c_tests): Add new test.
10247
10248 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
10249
10250         * config/aarch64/arm_neon.h (vdot_u32, vdotq_u32, vdot_s32, vdotq_s32):
10251         New.
10252         (vdot_lane_u32, vdot_laneq_u32, vdotq_lane_u32, vdotq_laneq_u32): New.
10253         (vdot_lane_s32, vdot_laneq_s32, vdotq_lane_s32, vdotq_laneq_s32): New.
10254
10255 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
10256
10257         * config/aarch64/aarch64-builtins.c
10258         (aarch64_types_quadopu_lane_qualifiers): New.
10259         (TYPES_QUADOPU_LANE): New.
10260         * config/aarch64/aarch64-simd.md (aarch64_<sur>dot<vsi2qi>): New.
10261         (<sur>dot_prod<vsi2qi>, aarch64_<sur>dot_lane<vsi2qi>): New.
10262         (aarch64_<sur>dot_laneq<vsi2qi>): New.
10263         * config/aarch64/aarch64-simd-builtins.def (sdot, udot): New.
10264         (sdot_lane, udot_lane, sdot_laneq, udot_laneq): New.
10265         * config/aarch64/iterators.md (sur): Add UNSPEC_SDOT, UNSPEC_UDOT.
10266         (Vdottype, DOTPROD): New.
10267         (sur): Add SDOT and UDOT.
10268
10269 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
10270
10271         * config/aarch64/aarch64.h (AARCH64_FL_DOTPROD): New.
10272         (AARCH64_ISA_DOTPROD, TARGET_DOTPROD): New.
10273         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
10274         Add TARGET_DOTPROD.
10275         * config/aarch64/aarch64-option-extensions.def (dotprod): New.
10276         * config/aarch64/aarch64-cores.def (cortex-a55, cortex-a75):
10277         Enable TARGET_DOTPROD.
10278         (cortex-a75.cortex-a55): Likewise.
10279         * doc/invoke.texi (aarch64-feature-modifiers): Document dotprod.
10280
10281 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
10282
10283         * config/arm/arm-builtins.c (arm_unsigned_uternop_qualifiers): New.
10284         (UTERNOP_QUALIFIERS, arm_umac_lane_qualifiers, UMAC_LANE_QUALIFIERS):
10285         New.
10286         * config/arm/arm_neon_builtins.def (sdot, udot, sdot_lane, udot_lane):
10287         New.
10288         * config/arm/iterators.md (DOTPROD, VSI2QI, vsi2qi): New.
10289         (UNSPEC_DOT_S, UNSPEC_DOT_U, opsuffix): New.
10290         * config/arm/neon.md (neon_<sup>dot<vsi2qi>): New.
10291         (neon_<sup>dot_lane<vsi2qi>, <sup>dot_prod<vsi2qi>): New.
10292         * config/arm/types.md (neon_dot, neon_dot_q): New.
10293         * config/arm/unspecs.md (sup): Add UNSPEC_DOT_S, UNSPEC_DOT_U.
10294
10295 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
10296
10297         * config/arm/arm.h (TARGET_DOTPROD): New.
10298         * config/arm/arm.c (arm_arch_dotprod): New.
10299         (arm_option_reconfigure_globals): Add arm_arch_dotprod.
10300         * config/arm/arm-c.c (__ARM_FEATURE_DOTPROD): New.
10301         * config/arm/arm-cpus.in (armv8.2-a): Enabled +dotprod.
10302         (feature dotprod, group dotprod, ALL_SIMD_INTERNAL): New.
10303         (ALL_FPU_INTERNAL): Use ALL_SIMD_INTERNAL.
10304         * config/arm/t-multilib (v8_2_a_simd_variants): Add dotprod.
10305         * doc/invoke.texi (armv8.2-a): Document dotprod
10306
10307 2017-10-14  Jan Hubicka  <hubicka@ucw.cz>
10308
10309         * i386.c (ix86_vec_cost): New function.
10310         (ix86_rtx_costs): Handle vector operations better.
10311         * i386.h (struct processor_costs): Add sse_op, fmasd, fmass.
10312         * x86-tune-costs.h: Add new costs to all tables.
10313
10314 2017-10-14  Jan Hubicka  <hubicka@ucw.cz>
10315
10316         * i386.c (ix86_rtx_costs): Make difference between x87 and SSE
10317         operations.
10318         * i386.h (struct processor_costs): Add addss, mulss, mulsd, divss,
10319         divsd, sqrtss and sqrtsd
10320         * x86-tune-costs.h: Add new entries to all costs.
10321         (znver1_cost): Fix to match real instruction latencies.
10322
10323 2017-10-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10324             Michael Collison <michael.collison@arm.com>
10325
10326         * compare-elim.c: Include emit-rtl.h.
10327         (can_merge_compare_into_arith): New function.
10328         (try_validate_parallel): Likewise.
10329         (try_merge_compare): Likewise.
10330         (try_eliminate_compare): Call the above when no previous clobber
10331         is available.
10332         (execute_compare_elim_after_reload): Add DF_UD_CHAIN and DF_DU_CHAIN
10333         dataflow problems.
10334
10335 2017-10-14  Jakub Jelinek  <jakub@redhat.com>
10336
10337         PR middle-end/62263
10338         PR middle-end/82498
10339         * tree-ssa-phiopt.c (value_replacement): Comment fix.  Handle
10340         up to 2 preparation statements for ASSIGN in MIDDLE_BB.
10341
10342         PR middle-end/62263
10343         PR middle-end/82498
10344         * tree-ssa-forwprop.c (simplify_rotate): Allow def_arg1[N]
10345         to be any operand_equal_p operands.  For & (B - 1) require
10346         B to be power of 2.  Recognize
10347         (X << (Y & (B - 1))) | (X >> ((-Y) & (B - 1))) and similar patterns.
10348
10349 2017-10-14  Uros Bizjak  <ubizjak@gmail.com>
10350
10351         PR bootstrap/82553
10352         * optabs.c (expand_memory_blockage): Fix call of
10353         targetm.have_memory_blockage.
10354
10355 2017-10-14  Jakub Jelinek  <jakub@redhat.com>
10356
10357         PR bootstrap/82548
10358         * config.gcc (*-*-solaris2*, i[34567]86-*-cygwin*,
10359         x86_64-*-cygwin*, i[34567]86-*-mingw* | x86_64-*-mingw*): Append
10360         objects to extra_objs instead of overwriting it.
10361
10362 2017-10-14  Uros Bizjak  <ubizjak@gmail.com>
10363
10364         * config/i386/sync.md (FILD_ATOMIC/FIST_ATOMIC FP load peephole2):
10365         Use any_fp_register_operand as operand[3] predicate.  Simplify
10366         equality test for operands[2] and operands[4] memory location.
10367         (LDX_ATOMIC/STX_ATOMIC FP load peephole2): Ditto.
10368         (FILD_ATOMIC/FIST_ATOMIC FP load peephole2 with mem blockage): New.
10369         (LDX_ATOMIC/LDX_ATOMIC FP load peephole2 with mem blockage): Ditto.
10370         (FILD_ATOMIC/FIST_ATOMIC FP store peephole2): Use
10371         any_fp_register_operand as operand[1] predicate.  Simplify
10372         equality test for operands[0] and operands[3] memory location.
10373         (LDX_ATOMIC/STX_ATOMIC FP store peephole2): Ditto.
10374         (FILD_ATOMIC/FIST_ATOMIC FP store peephole2 with mem blockage): New.
10375         (LDX_ATOMIC/LDX_ATOMIC FP storepeephole2 with mem blockage): Ditto.
10376
10377 2017-10-14  Uros Bizjak  <ubizjak@gmail.com>
10378
10379         * target-insns.def: Add memory_blockage.
10380         * optabs.c (expand_memory_blockage): New function.
10381         (expand_asm_memory_barrier): Rename ...
10382         (expand_asm_memory_blockage): ... to this.
10383         (expand_mem_thread_fence): Call expand_memory_blockage
10384         instead of expand_asm_memory_barrier.
10385         (expand_mem_singnal_fence): Ditto.
10386         (expand_atomic_load): Ditto.
10387         (expand_atomic_store): Ditto.
10388         * doc/md.texi (Standard Pattern Names For Generation):
10389         Document memory_blockage instruction pattern.
10390
10391 2017-10-13  Sebastian Perta  <sebastian.perta@renesas.com>
10392
10393         * config/rl78/rl78.c (rl78_emit_libcall): New function.
10394         * config/rl78/rl78-protos.h (rl78_emit_libcall): New function.
10395         * config/rl78/rl78.md: New define_expand "adddi3".
10396
10397 2017-10-13  Jan Hubicka  <hubicka@ucw.cz>
10398
10399         * cfghooks.c (verify_flow_info): Disable check that all probabilities
10400         are set correctly.
10401
10402 2017-10-13  Jeff Law  <law@redhat.com>
10403
10404         * tree-ssa-reassoc.c (reassociate_bb): Clarify code slighly.
10405
10406 2017-10-13  Jakub Jelinek  <jakub@redhat.com>
10407
10408         PR target/82274
10409         * internal-fn.c (expand_mul_overflow): If both operands have
10410         the same highpart of -1 or 0 and the topmost bit of lowpart
10411         is different, overflow is if res <= 0 rather than res < 0.
10412
10413 2017-10-13  Pat Haugen  <pthaugen@us.ibm.com>
10414
10415         * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Remove
10416         TARGET_P9_VECTOR code for unaligned_load case.
10417
10418 2017-10-13  Jan Hubicka  <hubicka@ucw.cz>
10419
10420         * cfghooks.c (verify_flow_info): Check that edge probabilities are set.
10421
10422 2017-10-13  Nathan Sidwell  <nathan@acm.org>
10423
10424         * tree-core.h (tree_contains_struct): Make bool.
10425         * tree.c (tree_contains_struct): Likewise.
10426         * tree.h (MARK_TS_BASE): Remove do ... while (0) idiom.
10427         (MARK_TS_TYPED, MARK_TS_COMMON, MARK_TS_TYPE_COMMON,
10428         MARK_TS_TYPE_WITH_LANG_SPECIFIC, MARK_TS_DECL_MINIMAL,
10429         MARK_TS_DECL_COMMON, MARK_TS_DECL_WRTL, MARK_TS_DECL_WITH_VIS,
10430         MARK_TS_DECL_NON_COMMON): Likewise, use comma operator.
10431
10432 2017-10-13  Richard Biener  <rguenther@suse.de>
10433
10434         * graphite-isl-ast-to-gimple.c
10435         (translate_isl_ast_to_gimple::get_rename_from_scev): Remove unused
10436         parameters and dominance check.
10437         (translate_isl_ast_to_gimple::graphite_copy_stmts_from_block): Adjust.
10438         (translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Likewise.
10439         (translate_isl_ast_to_gimple::graphite_regenerate_ast_isl):
10440         Do not update SSA form here or do intermediate IL verification.
10441         * graphite.c: Include tree-ssa.h and tree-into-ssa.h.
10442         (graphite_initialize): Remove check on the number of loops in
10443         the function and inline into graphite_transform_loops.
10444         (graphite_finalize): Inline into graphite_transform_loops.
10445         (graphite_transform_loops): Perform SSA update and IL verification
10446         here.
10447         * params.def (PARAM_GRAPHITE_MIN_LOOPS_PER_FUNCTION): Remove.
10448
10449 2017-10-13  Richard Biener  <rguenther@suse.de>
10450
10451         * graphite-isl-ast-to-gimple.c (max_mode_int_precision,
10452         graphite_expression_type_precision): Avoid global constructor
10453         by moving ...
10454         (translate_isl_ast_to_gimple::translate_isl_ast_to_gimple): Here.
10455         (translate_isl_ast_to_gimple::graphite_expr_type): Add type member.
10456         (translate_isl_ast_to_gimple::translate_isl_ast_node_for): Use it.
10457         (translate_isl_ast_to_gimple::build_iv_mapping): Likewise.
10458         (translate_isl_ast_to_gimple::graphite_create_new_guard): Likewise.
10459         * graphite-sese-to-poly.c (build_original_schedule): Return nothing.
10460
10461 2017-10-13  H.J. Lu  <hongjiu.lu@intel.com>
10462
10463         PR target/82499
10464         * config/i386/i386.h (ix86_red_zone_size): New.
10465         * config/i386/i386.md (push peephole2s): Replace
10466         "!ix86_using_red_zone ()" with "ix86_red_zone_size == 0".
10467
10468 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
10469             Alan Hayward  <alan.hayward@arm.com>
10470             David Sherwood  <david.sherwood@arm.com>
10471
10472         * combine.c (can_change_dest_mode): Reject changes in
10473         REGMODE_NATURAL_SIZE.
10474
10475 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
10476             Alan Hayward  <alan.hayward@arm.com>
10477             David Sherwood  <david.sherwood@arm.com>
10478
10479         * cfgexpand.c (expand_debug_expr): Use GET_MODE_UNIT_BITSIZE.
10480         (expand_debug_source_expr): Likewise.
10481         * combine.c (combine_simplify_rtx): Likewise.
10482         * cse.c (fold_rtx): Likewise.
10483         * fwprop.c (canonicalize_address): Likewise.
10484         * targhooks.c (default_shift_truncation_mask): Likewise.
10485
10486 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
10487             Alan Hayward  <alan.hayward@arm.com>
10488             David Sherwood  <david.sherwood@arm.com>
10489
10490         * optabs.c (add_equal_note): Use GET_MODE_UNIT_SIZE.
10491         (widened_mode): Likewise.
10492         (expand_unop): Likewise.
10493         * ree.c (transform_ifelse): Likewise.
10494         (merge_def_and_ext): Likewise.
10495         (combine_reaching_defs): Likewise.
10496         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
10497
10498 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
10499             Alan Hayward  <alan.hayward@arm.com>
10500             David Sherwood  <david.sherwood@arm.com>
10501
10502         * caller-save.c (replace_reg_with_saved_mem): Use byte_lowpart_offset.
10503         * combine.c (gen_lowpart_for_combine): Likewise.
10504         * dwarf2out.c (rtl_for_decl_location): Likewise.
10505         * final.c (alter_subreg): Likewise.
10506         * rtlhooks.c (gen_lowpart_general): Likewise.
10507         (gen_lowpart_if_possible): Likewise.
10508
10509 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
10510             Alan Hayward  <alan.hayward@arm.com>
10511             David Sherwood  <david.sherwood@arm.com>
10512
10513         * calls.c (expand_call): Use subreg_lowpart_offset.
10514         * cse.c (cse_insn): Likewise.
10515         * regcprop.c (copy_value): Likewise.
10516         (copyprop_hardreg_forward_1): Likewise.
10517
10518 2017-10-13  Jakub Jelinek  <jakub@redhat.com>
10519
10520         PR target/82524
10521         * config/i386/i386.md (addqi_ext_1, andqi_ext_1,
10522         *andqi_ext_1_cc, *<code>qi_ext_1, *xorqi_ext_1_cc): Change
10523         =Q constraints to +Q and into insn condition add check
10524         that operands[0] and operands[1] are equal.
10525         (*addqi_ext_2, *andqi_ext_2, *<code>qi_ext_2): Change
10526         =Q constraints to +Q and into insn condition add check
10527         that operands[0] is equal to either operands[1] or operands[2].
10528
10529         PR target/82498
10530         * fold-const.c (fold_binary_loc) <bit_rotate>: Code cleanups,
10531         instead of handling MINUS_EXPR twice (once for each argument),
10532         canonicalize operand order and handle just once, use rtype where
10533         possible.  Handle (A << B) | (A >> (-B & (Z - 1))).
10534
10535         PR target/82498
10536         * config/i386/ia32intrin.h (__rold, __rord, __rolq, __rorq): Allow
10537         any values of __C while still being pattern recognizable as a simple
10538         rotate instruction.
10539
10540 2017-10-13  Richard Biener  <rguenther@suse.de>
10541
10542         PR tree-optimization/82451
10543         Revert
10544         2017-10-02  Richard Biener  <rguenther@suse.de>
10545
10546         PR tree-optimization/82355
10547         * graphite-isl-ast-to-gimple.c (build_iv_mapping): Also build
10548         a mapping for the enclosing loop but avoid generating one for
10549         the loop tree root.
10550         (copy_bb_and_scalar_dependences): Remove premature codegen
10551         error on PHIs in blocks duplicated into multiple places.
10552         * graphite-scop-detection.c
10553         (scop_detection::stmt_has_simple_data_refs_p): For a loop not
10554         in the region use it as loop and nest to analyze the DR in.
10555         (try_generate_gimple_bb): Likewise.
10556         * graphite-sese-to-poly.c (extract_affine_chrec): Adjust.
10557         (add_loop_constraints): For blocks in a loop not in the region
10558         create a dimension with a single iteration.
10559         * sese.h (gbb_loop_at_index): Remove assert.
10560
10561         * cfgloop.c (loop_preheader_edge): For the loop tree root
10562         return the single successor of the entry block.
10563         * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl):
10564         Reset the SCEV hashtable and niters.
10565         * graphite-scop-detection.c
10566         (scop_detection::graphite_can_represent_scev): Add SCOP parameter,
10567         assert that we only have POLYNOMIAL_CHREC that vary in loops
10568         contained in the region.
10569         (scop_detection::graphite_can_represent_expr): Adjust.
10570         (scop_detection::stmt_has_simple_data_refs_p): For loops
10571         not in the region set loop to NULL.  The nest is now the
10572         entry edge to the region.
10573         (try_generate_gimple_bb): Likewise.
10574         * sese.c (scalar_evolution_in_region): Adjust for
10575         instantiate_scev change.
10576         * tree-data-ref.h (graphite_find_data_references_in_stmt):
10577         Make nest parameter the edge into the region.
10578         (create_data_ref): Likewise.
10579         * tree-data-ref.c (dr_analyze_indices): Make nest parameter an
10580         entry edge into a region and adjust instantiate_scev calls.
10581         (create_data_ref): Likewise.
10582         (graphite_find_data_references_in_stmt): Likewise.
10583         (find_data_references_in_stmt): Pass the loop preheader edge
10584         from the nest argument.
10585         * tree-scalar-evolution.h (instantiate_scev): Make instantiate_below
10586         parameter the edge into the region.
10587         (instantiate_parameters): Use the loop preheader edge as entry.
10588         * tree-scalar-evolution.c (analyze_scalar_evolution): Handle
10589         NULL loop.
10590         (get_instantiated_value_entry): Make instantiate_below parameter
10591         the edge into the region.
10592         (instantiate_scev_name): Likewise.  Adjust dominance checks,
10593         when we cannot use loop-based instantiation instantiate by
10594         walking use-def chains.
10595         (instantiate_scev_poly): Adjust.
10596         (instantiate_scev_binary): Likewise.
10597         (instantiate_scev_convert): Likewise.
10598         (instantiate_scev_not): Likewise.
10599         (instantiate_array_ref): Remove.
10600         (instantiate_scev_3): Likewise.
10601         (instantiate_scev_2): Likewise.
10602         (instantiate_scev_1): Likewise.
10603         (instantiate_scev_r): Do not blindly handle N-operand trees.
10604         Do not instantiate array-refs.  Handle all constants and invariants.
10605         (instantiate_scev): Make instantiate_below parameter
10606         the edge into the region.
10607         (resolve_mixers): Use the loop preheader edge for the region
10608         parameter to instantiate_scev_r.
10609         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Adjust.
10610
10611 2017-10-13  Richard Biener  <rguenther@suse.de>
10612
10613         PR tree-optimization/82525
10614         * graphite-isl-ast-to-gimple.c
10615         (translate_isl_ast_to_gimple::widest_int_from_isl_expr_int): Split
10616         out from ...
10617         (translate_isl_ast_to_gimple::gcc_expression_from_isl_expr_int): Here.
10618         Fail code generation when we cannot represent the isl integer.
10619         (binary_op_to_tree): Elide modulo operations that are no-ops
10620         in the type we code generate.  Remove now superfluous code
10621         generation errors.
10622
10623 2017-10-13  Richard Biener  <rguenther@suse.de>
10624
10625         * graphite-scop-detection.c (loop_ivs_can_be_represented): Remove.
10626         (scop_detection::harmful_loop_in_region): Remove premature
10627         IV type restriction.
10628         (scop_detection::graphite_can_represent_scev): We can handle
10629         pointer IVs just fine.
10630
10631 2017-10-13  Alan Modra  <amodra@gmail.com>
10632
10633         * doc/extend.texi (Extended Asm <Clobbers>): Rename to
10634         "Clobbers and Scratch Registers".  Add paragraph on
10635         alternative to clobbers for scratch registers and OpenBLAS
10636         example.
10637
10638 2017-10-13  Alan Modra  <amodra@gmail.com>
10639
10640         * doc/extend.texi (Clobbers): Correct vax example.  Delete old
10641         example of a memory input for a string of known length.  Move
10642         commentary out of table.  Add a number of new examples
10643         covering array memory inputs.
10644
10645 2017-10-12  Martin Liska  <mliska@suse.cz>
10646
10647         PR tree-optimization/82493
10648         * sbitmap.c (bitmap_bit_in_range_p): Fix the implementation.
10649         (test_range_functions): New function.
10650         (sbitmap_c_tests): Likewise.
10651         * selftest-run-tests.c (selftest::run_tests): Run new tests.
10652         * selftest.h (sbitmap_c_tests): New function.
10653
10654         * tree-ssa-dse.c (live_bytes_read): Fix thinko.
10655
10656 2017-10-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
10657
10658         * config/rs6000/amo.h: Fix spacing issue.
10659
10660 2017-10-12  Jakub Jelinek  <jakub@redhat.com>
10661
10662         PR target/82498
10663         * config/i386/i386.md (*ashl<mode>3_mask_1,
10664         *<shift_insn><mode>3_mask_1, *<rotate_insn><mode>3_mask_1,
10665         *<btsc><mode>_mask_1, *btr<mode>_mask_1): New define_insn_and_split
10666         patterns.
10667
10668 2017-10-12  Jan Hubicka  <hubicka@ucw.cz>
10669
10670         * profile-count.h (safe_scale_64bit): Fix GCC4.x path.
10671         (profile_probability): Set max_probability
10672         to (uint32_t) 1 << (n_bits - 2) and update accessors to avoid overlfows
10673         in temporaries.
10674         * profile-count.c (profile_probability::differs_from_p): Do not
10675         rely on max_probaiblity == 10000
10676
10677 2017-10-12  Jeff Law  <law@redhat.com>
10678
10679         * tree-ssa-dse.c (valid_ao_ref_for_dse): Reject ao_refs with
10680         negative offsets.
10681
10682 2017-10-12  Martin Sebor  <msebor@redhat.com>
10683
10684         PR other/82301
10685         PR c/82435
10686         * cgraphunit.c (maybe_diag_incompatible_alias): New function.
10687         (handle_alias_pairs): Call it.
10688         * common.opt (-Wattribute-alias): New option.
10689         * doc/extend.texi (ifunc attribute): Discuss C++ specifics.
10690         * doc/invoke.texi (-Wattribute-alias): Document.
10691
10692 2017-10-12  Vladimir Makarov  <vmakarov@redhat.com>
10693
10694         Revert
10695         2017-10-11  Vladimir Makarov  <vmakarov@redhat.com>
10696         PR sanitizer/82353
10697         * lra.c (collect_non_operand_hard_regs): Don't ignore operator
10698         locations.
10699         * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up.
10700         (make_hard_regno_born, make_hard_regno_dead): Update
10701         bb_killed_pseudos and bb_gen_pseudos.
10702
10703 2017-10-12  Jan Hubicka  <hubicka@ucw.cz>
10704
10705         * config/i386/x86-tune-sched.c (ix86_adjust_cost): Fix Zen support.
10706
10707 2017-10-12  Uros Bizjak  <ubizjak@gmail.com>
10708
10709         * config/alpha/alpha.c (alpha_split_conditional_move):
10710         Use std::swap instead of manually swapping.
10711         (alpha_stdarg_optimize_hook): Ditto.
10712         (alpha_canonicalize_comparison): Ditto.
10713
10714 2017-10-12  Bin Cheng  <bin.cheng@arm.com>
10715
10716         * tree-loop-distribution.c (struct builtin_info): New struct.
10717         (struct partition): Refactor fields into struct builtin_info.
10718         (partition_free): Free struct builtin_info.
10719         (build_size_arg_loc, build_addr_arg_loc): Delete.
10720         (generate_memset_builtin, generate_memcpy_builtin): Get memory range
10721         information from struct builtin_info.
10722         (find_single_drs): New function refactored from classify_partition.
10723         Also moved builtin validity checks to this function.
10724         (compute_access_range, alloc_builtin): New functions.
10725         (classify_builtin_st, classify_builtin_ldst): New functions.
10726         (classify_partition): Refactor code into functions find_single_drs,
10727         classify_builtin_st and classify_builtin_ldst.
10728         (distribute_loop): Don't do runtime alias check when distributing
10729         loop nest.
10730         (find_seed_stmts_for_distribution): New function.
10731         (pass_loop_distribution::execute): Refactor code finding seed
10732         stmts into above function.  Support distribution for the innermost
10733         two-level loop nest.  Adjust dump information.
10734
10735 2017-10-12  Bin Cheng  <bin.cheng@arm.com>
10736
10737         * tree-loop-distribution.c: Adjust the general comment.
10738         (NUM_PARTITION_THRESHOLD): New macro.
10739         (ssa_name_has_uses_outside_loop_p): Support loop nest distribution.
10740         (classify_partition): Skip builtin pattern of loop nest's inner loop.
10741         (merge_dep_scc_partitions): New parameter ignore_alias_p and use it
10742         in call to build_partition_graph.
10743         (finalize_partitions): New parameter.  Make loop distribution more
10744         conservative by fusing more partitions.
10745         (distribute_loop): Don't do runtime alias check in case of loop nest
10746         distribution.
10747         (find_seed_stmts_for_distribution): New function.
10748         (prepare_perfect_loop_nest): New function.
10749         (pass_loop_distribution::execute): Refactor code finding seed stmts
10750         and loop nest into above functions.  Support loop nest distribution.
10751         Adjust dump information accordingly.
10752
10753 2017-10-12  Bin Cheng  <bin.cheng@arm.com>
10754
10755         * tree-loop-distribution.c (break_alias_scc_partitions): Add comment
10756         and set PTYPE_SEQUENTIAL for merged partition.
10757
10758 2017-10-12  Richard Biener  <rguenther@suse.de>
10759
10760         PR tree-optimization/69728
10761         Revert
10762         2017-09-19  Richard Biener  <rguenther@suse.de>
10763
10764         PR tree-optimization/69728
10765         * graphite-sese-to-poly.c (schedule_error): New global.
10766         (add_loop_schedule): Handle empty domain by failing the
10767         schedule.
10768         (build_original_schedule): Handle schedule_error.
10769
10770         * graphite-sese-to-poly.c (add_loop_schedule): Handle empty
10771         domain by returning an unchanged schedule.
10772
10773 2017-10-12  Jakub Jelinek  <jakub@redhat.com>
10774
10775         * genrecog.c (validate_pattern): For VEC_SELECT verify that
10776         CONST_INT selectors are 0 to GET_MODE_NUNITS (imode) - 1.
10777
10778 2017-10-12  Aldy Hernandez  <aldyh@redhat.com>
10779
10780         * Makefile.in (TAGS): Merge all the *.def files into one pattern.
10781         Handle params.def.
10782
10783 2017-10-12  Jakub Jelinek  <jakub@redhat.com>
10784
10785         PR c++/82159
10786         * expr.c (store_field): Don't optimize away bitsize == 0 store
10787         from CALL_EXPR with addressable return type.
10788
10789 2017-10-11  Segher Boessenkool  <segher@kernel.crashing.org>
10790
10791         * config/rs6000/rs6000.h (TARGET_ISEL64): Delete.
10792         * config/rs6000/rs6000.md (sel): Delete mode attribute.
10793         (mov<mode>cc, isel_signed_<mode>, isel_unsigned_<mode>,
10794         *isel_reversed_signed_<mode>, *isel_reversed_unsigned_<mode>): Use
10795         TARGET_ISEL instead of TARGET_ISEL<sel>.
10796
10797 2017-10-11  David Edelsohn  <dje.gcc@gmail.com>
10798
10799         * config/rs6000/rs6000.c
10800         (rs6000_xcoff_asm_output_aligned_decl_common): Test for NULL decl.
10801
10802 2017-10-11  Segher Boessenkool  <segher@kernel.crashing.org>
10803
10804         * config/rs6000/predicates.md (zero_constant, all_ones_constant):
10805         Move up in file.
10806         (reg_or_cint_operand): Fix comment.
10807         (reg_or_zero_operand): New predicate.
10808         * config/rs6000/rs6000-protos.h (output_isel): Delete.
10809         * config/rs6000/rs6000.c (output_isel): Delete.
10810         * config/rs6000/rs6000.md (isel_signed_<mode>): Use reg_or_zero_operand
10811         instead of reg_or_cint_operand.  Output instruction directly (not via
10812         output_isel).
10813         (isel_unsigned_<mode>): Ditto.
10814         (*isel_reversed_signed_<mode>): Use reg_or_zero_operand instead of
10815         gpc_reg_operand.  Add an instruction alternative for this.  Output
10816         instruction directly.
10817         (*isel_reversed_unsigned_<mode>): Ditto.
10818
10819 2017-10-11  Uros Bizjak  <ubizjak@gmail.com>
10820
10821         * config/i386/i386.c (ix86_canonicalize_comparison): New function.
10822         (TARGET_CANONICALIZE_COMPARISON): Define.
10823
10824 2017-10-11  Qing Zhao  <qing.zhao@oracle.com>
10825
10826         PR target/81422
10827         * config/aarch64/aarch64.c (aarch64_load_symref_appropriately):
10828         Check whether the dest is REG before adding REG_EQUIV note.
10829
10830 2017-10-11  Vladimir Makarov  <vmakarov@redhat.com>
10831
10832         PR sanitizer/82353
10833         * lra.c (collect_non_operand_hard_regs): Don't ignore operator
10834         locations.
10835         * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up.
10836         (make_hard_regno_born, make_hard_regno_dead): Update
10837         bb_killed_pseudos and bb_gen_pseudos.
10838
10839 2017-10-11  Nathan Sidwell  <nathan@acm.org>
10840
10841         * incpath.h (enum incpath_kind): Name enum, prefix values.
10842         (add_path, add_cpp_dir_path, get_added_cpp_dirs): Use incpath_kind.
10843         * incpath.c (heads, tails): Use INC_MAX.
10844         (add_env_var_paths, add_standard_paths): Use incpath_kind.
10845         (merge_include_chains, split_quote_chain,
10846         register_include_chains): Update incpath_kind names.
10847         (add_cpp_dir_path, add_path, get_added_cpp_dirs): Use incpath_kind.
10848         * config/darwin-c.c (add_system_framework_path): Update incpath_kind
10849         names.
10850         (add_framework_path, darwin_register_objc_includes): Likewise.
10851         * config/vms/vms-c.c (vms_c_register_includes): Likewise.
10852
10853 2017-10-11  Uros Bizjak  <ubizjak@gmail.com>
10854
10855         * config/i386/i386.md (*cmp<X87MODEF:mode>_<SWI24:mode>_i387):
10856         Do not use float_operator operator predicate.
10857         (*cmp<X87MODEF:mode>_<SWI24:mode>_cc_i387): Ditto.
10858         * config/i386/predicates.md (float_operator): Remove predicate.
10859
10860 2017-10-11  Uros Bizjak  <ubizjak@gmail.com>
10861
10862         * config/i386/i386.md (*jcc<mode>_0_i387): Remove insn pattern.
10863         (*jccxf_i387): Ditto.
10864         (*jcc<mode>_i387): Ditto.
10865         (*jccu<mode>_i387): Ditto.
10866         (*jcc<X87MODEF:mode>_<SWI24:mode>_i387): Ditto.
10867         (*jcc_*_i387 splitters): Remove.
10868         * config/i386/i386-protos.h (ix86_split_fp_branch): Remove prototype.
10869         * config/i386/i386.c (ix86_split_fp_branch): Remove.
10870         * config/i386/predicates.md (ix86_swapped_fp_comparison_operator):
10871         Remove predicate.
10872
10873 2017-10-11  Jan Hubicka  <hubicka@ucw.cz>
10874
10875         * profile-count.h (slow_safe_scale_64bit): New function.
10876         (safe_scale_64bit): New inline.
10877         (profile_count::max_safe_multiplier): Remove; use safe_scale_64bit.
10878         * profile-count.c: Include wide-int.h
10879         (slow_safe_scale_64bit): New.
10880
10881 2017-10-11  Nathan Sidwell  <nathan@acm.org>
10882
10883         * tree.h (DECL_ASSEMBLER_NAME_SET_P): Don't check
10884         HAS_DECL_ASSEMBLER_NAME_P.
10885         * gimple-expr.c (gimple_decl_printable_name: Check
10886         HAS_DECL_ASSEMBLER_NAME_P too.
10887         * ipa-utils.h (type_in_anonymous_namespace_p): Check
10888         DECL_ASSEMBLER_NAME_SET_P of TYPE_NAME.
10889         (odr_type_p): No need to assert TYPE_NAME is a TYPE_DECL.
10890         * passes.c (rest_of_decl_compilation): Check
10891         HAS_DECL_ASSEMBLER_NAME_P too.
10892         * recog.c (verify_changes): Likewise.
10893         * tree-pretty-print.c (dump_decl_name): Likewise.
10894         * tree-ssa-structalias.c (alias_get_name): Likewise.  Reimplement.
10895
10896         * tree.h (DECL_ASSEMBLER_NAME_RAW): New.
10897         (SET_DECL_ASSEMBLER_NAME): Use it.
10898         (DECL_ASSEMBLER_NAME_SET_P): Likewise.
10899         (COPY_DECL_ASSEMBLER_NAME): Likewise.
10900         * tree.c (decl_assembler_name): Use DECL_ASSEMBLER_NAME_RAW.
10901
10902 2017-10-11  Jan Hubicka  <hubicka@ucw.cz>
10903
10904         * config.gcc (i386, x86_64): Add extra objects.
10905         * config/i386/i386-protos.h (ix86_rip_relative_addr_p): Declare.
10906         (ix86_min_insn_size): Declare.
10907         (ix86_issue_rate): Declare.
10908         (ix86_adjust_cost): Declare.
10909         (ia32_multipass_dfa_lookahead): Declare.
10910         (ix86_macro_fusion_p): Declare.
10911         (ix86_macro_fusion_pair_p): Declare.
10912         (ix86_bd_has_dispatch): Declare.
10913         (ix86_bd_do_dispatch): Declare.
10914         (ix86_core2i7_init_hooks): Declare.
10915         (ix86_atom_sched_reorder): Declare.
10916         * config/i386/i386.c Move all CPU cost tables to x86-tune-costs.h.
10917         (COSTS_N_BYTES): Move to x86-tune-costs.h.
10918         (DUMMY_STRINGOP_ALGS):Move to x86-tune-costs.h.
10919         (rip_relative_addr_p): Rename to ...
10920         (ix86_rip_relative_addr_p): ... this one; export.
10921         (memory_address_length): Update.
10922         (ix86_issue_rate): Move to x86-tune-sched.c.
10923         (ix86_flags_dependent): Move to x86-tune-sched.c.
10924         (ix86_agi_dependent): Move to x86-tune-sched.c.
10925         (exact_dependency_1): Move to x86-tune-sched.c.
10926         (exact_store_load_dependency): Move to x86-tune-sched.c.
10927         (ix86_adjust_cost): Move to x86-tune-sched.c.
10928         (ia32_multipass_dfa_lookahead): Move to x86-tune-sched.c.
10929         (ix86_macro_fusion_p): Move to x86-tune-sched.c.
10930         (ix86_macro_fusion_pair_p): Move to x86-tune-sched.c.
10931         (do_reorder_for_imul): Move to x86-tune-sched-atom.c.
10932         (swap_top_of_ready_list): Move to x86-tune-sched-atom.c.
10933         (ix86_sched_reorder): Move to x86-tune-sched-atom.c.
10934         (core2i7_first_cycle_multipass_init): Move to x86-tune-sched-core.c.
10935         (core2i7_dfa_post_advance_cycle): Move to x86-tune-sched-core.c.
10936         (min_insn_size): Rename to ...
10937         (ix86_min_insn_size): ... this one; export.
10938         (core2i7_first_cycle_multipass_begin): Move to x86-tune-sched-core.c.
10939         (core2i7_first_cycle_multipass_issue): Move to x86-tune-sched-core.c.
10940         (core2i7_first_cycle_multipass_backtrack): Move to
10941         x86-tune-sched-core.c.
10942         (core2i7_first_cycle_multipass_end): Move to x86-tune-sched-core.c.
10943         (core2i7_first_cycle_multipass_fini): Move to x86-tune-sched-core.c.
10944         (ix86_sched_init_global): Break up logic to ix86_core2i7_init_hooks.
10945         (ix86_avoid_jump_mispredicts): Update.
10946         (TARGET_SCHED_DISPATCH): Move to ix86-tune-sched-bd.c.
10947         (TARGET_SCHED_DISPATCH_DO): Move to ix86-tune-sched-bd.c.
10948         (TARGET_SCHED_REORDER): Move to ix86-tune-sched-bd.c.
10949         (DISPATCH_WINDOW_SIZE): Move to ix86-tune-sched-bd.c.
10950         (MAX_DISPATCH_WINDOWS): Move to ix86-tune-sched-bd.c.
10951         (MAX_INSN): Move to ix86-tune-sched-bd.c.
10952         (MAX_IMM): Move to ix86-tune-sched-bd.c.
10953         (MAX_IMM_SIZE): Move to ix86-tune-sched-bd.c.
10954         (MAX_IMM_32): Move to ix86-tune-sched-bd.c.
10955         (MAX_IMM_64): Move to ix86-tune-sched-bd.c.
10956         (MAX_LOAD): Move to ix86-tune-sched-bd.c.
10957         (MAX_STORE): Move to ix86-tune-sched-bd.c.
10958         (BIG): Move to ix86-tune-sched-bd.c.
10959         (enum dispatch_group): Move to ix86-tune-sched-bd.c.
10960         (enum insn_path): Move to ix86-tune-sched-bd.c.
10961         (get_mem_group): Move to ix86-tune-sched-bd.c.
10962         (is_cmp): Move to ix86-tune-sched-bd.c.
10963         (dispatch_violation): Move to ix86-tune-sched-bd.c.
10964         (is_branch): Move to ix86-tune-sched-bd.c.
10965         (is_prefetch): Move to ix86-tune-sched-bd.c.
10966         (init_window): Move to ix86-tune-sched-bd.c.
10967         (allocate_window): Move to ix86-tune-sched-bd.c.
10968         (init_dispatch_sched): Move to ix86-tune-sched-bd.c.
10969         (is_end_basic_block): Move to ix86-tune-sched-bd.c.
10970         (process_end_window): Move to ix86-tune-sched-bd.c.
10971         (allocate_next_window): Move to ix86-tune-sched-bd.c.
10972         (find_constant): Move to ix86-tune-sched-bd.c.
10973         (get_num_immediates): Move to ix86-tune-sched-bd.c.
10974         (has_immediate): Move to ix86-tune-sched-bd.c.
10975         (get_insn_path): Move to ix86-tune-sched-bd.c.
10976         (get_insn_group): Move to ix86-tune-sched-bd.c.
10977         (count_num_restricted): Move to ix86-tune-sched-bd.c.
10978         (fits_dispatch_window): Move to ix86-tune-sched-bd.c.
10979         (add_insn_window): Move to ix86-tune-sched-bd.c.
10980         (add_to_dispatch_window): Move to ix86-tune-sched-bd.c.
10981         (debug_dispatch_window_file): Move to ix86-tune-sched-bd.c.
10982         (debug_dispatch_window): Move to ix86-tune-sched-bd.c.
10983         (debug_insn_dispatch_info_file): Move to ix86-tune-sched-bd.c.
10984         (debug_ready_dispatch): Move to ix86-tune-sched-bd.c.
10985         (do_dispatch): Move to ix86-tune-sched-bd.c.
10986         (has_dispatch): Move to ix86-tune-sched-bd.c.
10987         * config/i386/t-i386: Add new object files.
10988         * config/i386/x86-tune-costs.h: New file.
10989         * config/i386/x86-tune-sched-atom.c: New file.
10990         * config/i386/x86-tune-sched-bd.c: New file.
10991         * config/i386/x86-tune-sched-core.c: New file.
10992         * config/i386/x86-tune-sched.c: New file.
10993
10994 2017-10-11  Liu Hao  <lh_mouse@126.com>
10995
10996         * pretty-print.c [_WIN32] (colorize_init): Remove.  Use
10997         the generic version below instead.
10998         (should_colorize): Recognize Windows consoles as terminals
10999         for MinGW targets.
11000         * pretty-print.c [__MINGW32__] (write_all): New function.
11001         [__MINGW32__] (find_esc_head): Likewise.
11002         [__MINGW32__] (find_esc_terminator): Likewise.
11003         [__MINGW32__] (eat_esc_sequence): Likewise.
11004         [__MINGW32__] (mingw_ansi_fputs): New function that handles
11005         ANSI escape codes.
11006         (pp_write_text_to_stream): Use mingw_ansi_fputs instead of fputs
11007         for MinGW targets.
11008
11009 2017-10-11  Richard Biener  <rguenther@suse.de>
11010
11011         * tree-ssa-loop-niter.c (infer_loop_bounds_from_pointer_arith):
11012         Properly call analyze_scalar_evolution with the loop of the stmt.
11013
11014 2017-10-11  Richard Biener  <rguenther@suse.de>
11015
11016         * tree.def (POLYNOMIAL_CHREC): Remove CHREC_VARIABLE tree operand.
11017         * tree-core.h (tree_base): Add chrec_var union member.
11018         * tree.h (CHREC_VAR): Remove.
11019         (CHREC_LEFT, CHREC_RIGHT, CHREC_VARIABLE): Adjust.
11020         * tree-chrec.h (build_polynomial_chrec): Adjust.
11021         * tree-chrec.c (reset_evolution_in_loop): Use build_polynomial_chrec.
11022         * tree-pretty-print.c (dump_generic_node): Use CHREC_VARIABLE.
11023
11024 2017-10-11  Marc Glisse  <marc.glisse@inria.fr>
11025
11026         * fold-const.c (fold_binary_loc) [X +- Y CMP X]: Move ...
11027         * match.pd: ... here.
11028         ((T) X == (T) Y): Relax condition.
11029
11030 2017-10-11  Bin Cheng  <bin.cheng@arm.com>
11031
11032         PR tree-optimization/82472
11033         * tree-loop-distribution.c (sort_partitions_by_post_order): Refine
11034         comment.
11035         (break_alias_scc_partitions): Update postorder number.
11036
11037 2017-10-11  Martin Liska  <mliska@suse.cz>
11038
11039         PR sanitizer/82490
11040         * opts.c (parse_no_sanitize_attribute): Do not use error_value
11041         variable.
11042         * opts.h (parse_no_sanitize_attribute): Remove last argument.
11043
11044 2017-10-11  Martin Liska  <mliska@suse.cz>
11045
11046         * print-rtl.c (print_insn): Move declaration of idbuf
11047         to same scope as name.
11048
11049 2017-10-11  Martin Liska  <mliska@suse.cz>
11050
11051         Revert r253637:
11052
11053         PR sanitizer/82484
11054         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
11055         volatile arguments.
11056
11057 2017-10-11  Martin Liska  <mliska@suse.cz>
11058
11059         PR sanitizer/82484
11060         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
11061         volatile arguments.
11062
11063 2017-10-11  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
11064
11065         * config.gcc (default_gnu_indirect_function): Default to yes for
11066         arm*-*-linux* with glibc.
11067
11068 2017-10-11  Richard Biener  <rguenther@suse.de>
11069
11070         * tree-scalar-evolution.c (get_scalar_evolution): Handle
11071         default-defs and types we do not want to analyze.
11072         (interpret_loop_phi): Replace unreachable code with an assert.
11073         (compute_scalar_evolution_in_loop): Remove and inline ...
11074         (analyze_scalar_evolution_1): ... here, replacing condition with
11075         what makes the intent clearer.  Remove handling of cases
11076         get_scalar_evolution now handles.
11077
11078 2017-10-10  Jim Wilson  <wilson@tuliptree.org>
11079
11080         PR rtl-optimization/81434
11081         * haifa-sched.c (prune_ready_list): Init min_cost_group to 0.  Update
11082         comment for main loop.  In sched_group_found if, also add checks for
11083         pass and min_cost_group.
11084
11085 2017-10-10  Segher Boessenkool  <segher@kernel.crashing.org>
11086
11087         * config/rs6000/rs6000.c (TARGET_INSN_COST): New.
11088         (rs6000_insn_cost): New function.
11089         * config/rs6000/rs6000.md (cost): New attribute.
11090
11091 2017-10-10  Jakub Jelinek  <jakub@redhat.com>
11092             H.J. Lu  <hongjiu.lu@intel.com>
11093
11094         PR target/79565
11095         PR target/82483
11096         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Add
11097         OPTION_MASK_ISA_MMX for __builtin_ia32_maskmovq,
11098         __builtin_ia32_vec_ext_v4hi and __builtin_ia32_vec_set_v4hi.
11099         (ix86_expand_builtin): Treat OPTION_MASK_ISA_MMX similarly
11100         to OPTION_MASK_ISA_AVX512VL - builtins that have both
11101         OPTION_MASK_ISA_MMX and some other bit set require both
11102         mmx and the ISAs without the mmx bit.
11103         * config/i386/i386-builtin.def (__builtin_ia32_cvtps2pi,
11104         __builtin_ia32_cvttps2pi, __builtin_ia32_cvtpi2ps,
11105         __builtin_ia32_pavgb, __builtin_ia32_pavgw, __builtin_ia32_pmulhuw,
11106         __builtin_ia32_pmaxub, __builtin_ia32_pmaxsw, __builtin_ia32_pminub,
11107         __builtin_ia32_pminsw, __builtin_ia32_psadbw, __builtin_ia32_pmovmskb,
11108         __builtin_ia32_pshufw, __builtin_ia32_cvtpd2pi,
11109         __builtin_ia32_cvttpd2pi, __builtin_ia32_cvtpi2pd,
11110         __builtin_ia32_pmuludq, __builtin_ia32_pabsb, __builtin_ia32_pabsw,
11111         __builtin_ia32_pabsd, __builtin_ia32_phaddw, __builtin_ia32_phaddd,
11112         __builtin_ia32_phaddsw, __builtin_ia32_phsubw, __builtin_ia32_phsubd,
11113         __builtin_ia32_phsubsw, __builtin_ia32_pmaddubsw,
11114         __builtin_ia32_pmulhrsw, __builtin_ia32_pshufb, __builtin_ia32_psignb,
11115         __builtin_ia32_psignw, __builtin_ia32_psignd, __builtin_ia32_movntq,
11116         __builtin_ia32_paddq, __builtin_ia32_psubq, __builtin_ia32_palignr):
11117         Add OPTION_MASK_ISA_MMX.
11118
11119 2017-10-10  Andreas Tobler  <andreast@gcc.gnu.org>
11120
11121         * config.gcc (armv7*-*-freebsd*): New target.
11122         (armv6*-*-freebsd*): Remove obsolete TARGET_FREEBSD_ARMv6 define.
11123
11124 2017-10-10  Jan Hubicka  <hubicka@ucw.cz>
11125
11126         * x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI,
11127         X86_TUNE_ADJUST_UNROLL, X86_TUNE_ONE_IF_CONV_INSN): Move to right
11128         spot in the file.
11129
11130 2017-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
11131
11132         * wide-int.h (wide_int_ref_storage): Make host_dependent_precision
11133         a template parameter.
11134         (WIDE_INT_REF_FOR): Update accordingly.
11135         * tree.h (wi::int_traits <const_tree>): Delete.
11136         (wi::tree_to_widest_ref, wi::tree_to_offset_ref): New typedefs.
11137         (wi::to_widest, wi::to_offset): Use them.  Expand commentary.
11138         (wi::tree_to_wide_ref): New typedef.
11139         (wi::to_wide): New function.
11140         * calls.c (get_size_range): Use wi::to_wide when operating on
11141         trees as wide_ints.
11142         * cgraph.c (cgraph_node::create_thunk): Likewise.
11143         * config/i386/i386.c (ix86_data_alignment): Likewise.
11144         (ix86_local_alignment): Likewise.
11145         * dbxout.c (stabstr_O): Likewise.
11146         * dwarf2out.c (add_scalar_info, gen_enumeration_type_die): Likewise.
11147         * expr.c (const_vector_from_tree): Likewise.
11148         * fold-const-call.c (host_size_t_cst_p, fold_const_call_1): Likewise.
11149         * fold-const.c (may_negate_without_overflow_p, negate_expr_p)
11150         (fold_negate_expr_1, int_const_binop_1, const_binop)
11151         (fold_convert_const_int_from_real, optimize_bit_field_compare)
11152         (all_ones_mask_p, sign_bit_p, unextend, extract_muldiv_1)
11153         (fold_div_compare, fold_single_bit_test, fold_plusminus_mult_expr)
11154         (pointer_may_wrap_p, expr_not_equal_to, fold_binary_loc)
11155         (fold_ternary_loc, multiple_of_p, fold_negate_const, fold_abs_const)
11156         (fold_not_const, round_up_loc): Likewise.
11157         * gimple-fold.c (gimple_fold_indirect_ref): Likewise.
11158         * gimple-ssa-warn-alloca.c (alloca_call_type_by_arg): Likewise.
11159         (alloca_call_type): Likewise.
11160         * gimple.c (preprocess_case_label_vec_for_gimple): Likewise.
11161         * godump.c (go_output_typedef): Likewise.
11162         * graphite-sese-to-poly.c (tree_int_to_gmp): Likewise.
11163         * internal-fn.c (get_min_precision): Likewise.
11164         * ipa-cp.c (ipcp_store_vr_results): Likewise.
11165         * ipa-polymorphic-call.c
11166         (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Likewise.
11167         * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Likewise.
11168         (ipa_modify_call_arguments): Likewise.
11169         * match.pd: Likewise.
11170         * omp-low.c (scan_omp_1_op, lower_omp_ordered_clauses): Likewise.
11171         * print-tree.c (print_node_brief, print_node): Likewise.
11172         * stmt.c (expand_case): Likewise.
11173         * stor-layout.c (layout_type): Likewise.
11174         * tree-affine.c (tree_to_aff_combination): Likewise.
11175         * tree-cfg.c (group_case_labels_stmt): Likewise.
11176         * tree-data-ref.c (dr_analyze_indices): Likewise.
11177         (prune_runtime_alias_test_list): Likewise.
11178         * tree-dump.c (dequeue_and_dump): Likewise.
11179         * tree-inline.c (remap_gimple_op_r, copy_tree_body_r): Likewise.
11180         * tree-predcom.c (is_inv_store_elimination_chain): Likewise.
11181         * tree-pretty-print.c (dump_generic_node): Likewise.
11182         * tree-scalar-evolution.c (iv_can_overflow_p): Likewise.
11183         (simple_iv_with_niters): Likewise.
11184         * tree-ssa-address.c (addr_for_mem_ref): Likewise.
11185         * tree-ssa-ccp.c (ccp_finalize, evaluate_stmt): Likewise.
11186         * tree-ssa-loop-ivopts.c (constant_multiple_of): Likewise.
11187         * tree-ssa-loop-niter.c (split_to_var_and_offset)
11188         (refine_value_range_using_guard, number_of_iterations_ne_max)
11189         (number_of_iterations_lt_to_ne, number_of_iterations_lt)
11190         (get_cst_init_from_scev, record_nonwrapping_iv)
11191         (scev_var_range_cant_overflow): Likewise.
11192         * tree-ssa-phiopt.c (minmax_replacement): Likewise.
11193         * tree-ssa-pre.c (compute_avail): Likewise.
11194         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Likewise.
11195         (vn_reference_maybe_forwprop_address, valueized_wider_op): Likewise.
11196         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Likewise.
11197         * tree-ssa-uninit.c (is_pred_expr_subset_of): Likewise.
11198         * tree-ssanames.c (set_nonzero_bits, get_nonzero_bits): Likewise.
11199         * tree-switch-conversion.c (collect_switch_conv_info, array_value_type)
11200         (dump_case_nodes, try_switch_expansion): Likewise.
11201         * tree-vect-loop-manip.c (vect_gen_vector_loop_niters): Likewise.
11202         (vect_do_peeling): Likewise.
11203         * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
11204         * tree-vect-stmts.c (vectorizable_load): Likewise.
11205         * tree-vrp.c (compare_values_warnv, vrp_int_const_binop): Likewise.
11206         (zero_nonzero_bits_from_vr, ranges_from_anti_range): Likewise.
11207         (extract_range_from_binary_expr_1, adjust_range_with_scev): Likewise.
11208         (overflow_comparison_p_1, register_edge_assert_for_2): Likewise.
11209         (is_masked_range_test, find_switch_asserts, maybe_set_nonzero_bits)
11210         (vrp_evaluate_conditional_warnv_with_ops, intersect_ranges): Likewise.
11211         (range_fits_type_p, two_valued_val_range_p, vrp_finalize): Likewise.
11212         (evrp_dom_walker::before_dom_children): Likewise.
11213         * tree.c (cache_integer_cst, real_value_from_int_cst, integer_zerop)
11214         (integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2)
11215         (tree_floor_log2, tree_ctz, mem_ref_offset, tree_int_cst_sign_bit)
11216         (tree_int_cst_sgn, get_unwidened, int_fits_type_p): Likewise.
11217         (get_type_static_bounds, num_ending_zeros, drop_tree_overflow)
11218         (get_range_pos_neg): Likewise.
11219         * ubsan.c (ubsan_expand_ptr_ifn): Likewise.
11220         * config/darwin.c (darwin_mergeable_constant_section): Likewise.
11221         * config/aarch64/aarch64.c (aapcs_vfp_sub_candidate): Likewise.
11222         * config/arm/arm.c (aapcs_vfp_sub_candidate): Likewise.
11223         * config/avr/avr.c (avr_fold_builtin): Likewise.
11224         * config/bfin/bfin.c (bfin_local_alignment): Likewise.
11225         * config/msp430/msp430.c (msp430_attr): Likewise.
11226         * config/nds32/nds32.c (nds32_insert_attributes): Likewise.
11227         * config/powerpcspe/powerpcspe-c.c
11228         (altivec_resolve_overloaded_builtin): Likewise.
11229         * config/powerpcspe/powerpcspe.c (rs6000_aggregate_candidate)
11230         (rs6000_expand_ternop_builtin): Likewise.
11231         * config/rs6000/rs6000-c.c
11232         (altivec_resolve_overloaded_builtin): Likewise.
11233         * config/rs6000/rs6000.c (rs6000_aggregate_candidate): Likewise.
11234         (rs6000_expand_ternop_builtin): Likewise.
11235         * config/s390/s390.c (s390_handle_hotpatch_attribute): Likewise.
11236
11237 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
11238
11239         * tree-vect-loop-manip.c (rename_variables_in_bb): Rename PHI nodes
11240         when copying loop nest with only one inner loop.
11241
11242 2017-10-10  Richard Biener  <rguenther@suse.de>
11243
11244         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop): Avoid compacting
11245         blocks if SCEV is active.
11246         * tree-scalar-evolution.c (analyze_scalar_evolution_1): Remove
11247         dead code.
11248         (analyze_scalar_evolution): Handle cached evolutions the obvious way.
11249         (scev_initialize): Assert we are not yet initialized.
11250
11251 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
11252
11253         * tree-loop-distribution.c (generate_loops_for_partition): Remove
11254         inner loop's exit stmt by making it always exit the loop, otherwise
11255         we would generate an infinite empty loop.
11256
11257 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
11258
11259         * tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg): Skip
11260         renaming variables in new preheader if it's deleted.
11261
11262 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
11263
11264         * tree-loop-distribution.c (struct partition): Remove unused field
11265         loops of the structure.
11266         (partition_alloc, partition_free): Ditto.
11267         (build_rdg_partition_for_vertex): Ditto.
11268
11269 2017-10-09  Jeff Law  <law@redhat.com>
11270
11271         * targhooks.c (default_stack_clash_protection_final_dynamic_probe): Fix
11272         return type to match prototype and documentation.
11273
11274 2010-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
11275
11276         * config/rs6000/rs6000.c (processor_costs): Move to ...
11277         * config/rs6000/rs6000.h: ... here.
11278         (rs6000_cost): Declare.
11279
11280 2017-10-09  Eric Botcazou  <ebotcazou@adacore.com>
11281
11282         * except.c (setjmp_fn): New global variable.
11283         (init_eh): Initialize it if DONT_USE_BUILTIN_SETJMP is defined.
11284         (sjlj_emit_function_enter): Call it instead of BUILTIN_SETJMP
11285         if DONT_USE_BUILTIN_SETJMP is defined.
11286
11287 2017-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
11288
11289         * target.def (insn_cost): New hook.
11290         * doc/tm.texi.in (TARGET_INSN_COST): New hook.
11291         * doc/tm.texi: Regenerate.
11292         * rtlanal.c (insn_cost): Use the new hook.
11293
11294 2017-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
11295
11296         * combine.c (combine_validate_cost): Compute the new insn_cost,
11297         not just pattern_cost.
11298         (try_combine): Adjust comment.
11299
11300 2017-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
11301
11302         * cfgrtl.c (rtl_account_profile_record): Replace insn_rtx_cost with
11303         insn_cost.
11304         * combine.c (uid_insn_cost): Adjust comment.
11305         (combine_validate_cost): Adjust comment.  Use pattern_cost instead
11306         of insn_rtx_cost
11307         (combine_instructions): Use insn_cost instead of insn_rtx_cost.
11308         * dse.c (find_shift_sequence): Ditto.
11309         * ifcvt.c (cheap_bb_rtx_cost_p): Ditto.
11310         (bb_valid_for_noce_process_p): Use pattern_cost.
11311         * rtl.h (insn_rtx_cost): Delete.
11312         (pattern_cost): New prototype.
11313         (insn_cost): New prototype.
11314         * rtlanal.c (insn_rtx_cost): Rename to...
11315         (pattern_cost): ... this.
11316         (insn_cost): New.
11317
11318 2017-10-09  Uros Bizjak  <ubizjak@gmail.com>
11319
11320         * config/i386/i386.md (*jcc_2): Remove insn pattern.
11321         (*jcc<mode>_0_r_i387): Ditto.
11322         (*jccxf_r_i387): Ditto.
11323         (*jcc<mode>_r_i387): Ditto.
11324         (*jccu<mode>_r_i387): Ditto.
11325         (*jcc<X87MODEF:mode>_<SWI24:mode>_r_i387): Ditto.
11326         (*jcc): Rename from *jcc_1.
11327
11328 2017-10-09  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
11329
11330         * config/rs6000/rs6000-p8swap.c (rs6000_analyze_swaps): Process
11331         deferred rescans after the lvx/stvx recombination pre-pass.
11332
11333 2017-10-09  Michael Meissner  <meissner@linux.vnet.ibm.com>
11334
11335         * config/rs6000/amo.h: New include file to provide ISA 3.0 atomic
11336         memory operation instruction support.
11337         * config.gcc (powerpc*-*-*): Include amo.h as an extra header.
11338         (rs6000-ibm-aix[789]*): Likewise.
11339         * doc/extend.texi (PowerPC Atomic Memory Operation Functions):
11340         Document new functions.
11341
11342 2017-10-09  Richard Biener  <rguenther@suse.de>
11343
11344         PR tree-optimization/82397
11345         * tree-data-ref.c (data_ref_compare_tree): Make sure to return
11346         equality only for semantically equal trees.
11347
11348 2017-10-09  Richard Biener  <rguenther@suse.de>
11349
11350         PR tree-optimization/82449
11351         * sese.c (scev_analyzable_p): Check whether the SCEV is linear.
11352         * tree-chrec.h (evolution_function_is_constant_p): Adjust to
11353         allow constant addresses.
11354         * tree-chrec.c (scev_is_linear_expression): Constant evolutions
11355         are linear.
11356
11357 2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
11358
11359         * config/s390/s390-builtins.def (vec_nabs, vec_vfi): Fix builtin
11360         flags.
11361
11362 2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
11363
11364         PR target/82463
11365         * config/s390/vecintrin.h (vec_madd, vec_msub): Fix macro
11366         definitions.
11367
11368 2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
11369
11370         PR target/82465
11371         * config/s390/s390-builtins.def (vec_sqrt): Fix builtin flags.
11372
11373 2017-10-09  Jakub Jelinek  <jakub@redhat.com>
11374
11375         PR target/82464
11376         * config/s390/s390-builtins.def (s390_vec_xor_flt_a,
11377         s390_vec_xor_flt_b, s390_vec_xor_flt_c): New.
11378
11379 2017-10-09  Richard Sandiford  <richard.sandiford@linaro.org>
11380
11381         * wide-int.h (WI_BINARY_OPERATOR_RESULT): New macro.
11382         (WI_BINARY_PREDICATE_RESULT): Likewise.
11383         (wi::binary_traits::operator_result): New type.
11384         (wi::binary_traits::predicate_result): Likewise.
11385         (generic_wide_int::operator~, unary generic_wide_int::operator-)
11386         (generic_wide_int::operator==, generic_wide_int::operator!=)
11387         (generic_wide_int::operator&, generic_wide_int::and_not)
11388         (generic_wide_int::operator|, generic_wide_int::or_not)
11389         (generic_wide_int::operator^, generic_wide_int::operator+
11390         (binary generic_wide_int::operator-, generic_wide_int::operator*):
11391         Delete.
11392         (operator~, unary operator-, operator==, operator!=, operator&)
11393         (operator|, operator^, operator+, binary operator-, operator*): New
11394         functions.
11395         * expr.c (get_inner_reference): Use wi::bit_and_not.
11396         * fold-const.c (fold_binary_loc): Likewise.
11397         * ipa-prop.c (ipa_compute_jump_functions_for_edge): Likewise.
11398         * tree-ssa-ccp.c (get_value_from_alignment): Likewise.
11399         (bit_value_binop): Likewise.
11400         * tree-ssa-math-opts.c (find_bswap_or_nop_load): Likewise.
11401         * tree-vrp.c (zero_nonzero_bits_from_vr): Likewise.
11402         (extract_range_from_binary_expr_1): Likewise.
11403         (masked_increment): Likewise.
11404         (simplify_bit_ops_using_ranges): Likewise.
11405
11406 2017-10-09  Martin Jambor  <mjambor@suse.cz>
11407
11408         PR hsa/82416
11409         * hsa-common.h (hsa_op_with_type): New method extend_int_to_32bit.
11410         * hsa-gen.c (hsa_extend_inttype_to_32bit): New function.
11411         (hsa_type_for_scalar_tree_type): Use it.  Always force min32int for
11412         COMPLEX types.
11413         (hsa_fixup_mov_insn_type): New function.
11414         (hsa_op_with_type::get_in_type): Use it.
11415         (hsa_build_append_simple_mov): Likewise.  Allow sub-32bit
11416         immediates in an assert.
11417         (hsa_op_with_type::extend_int_to_32bit): New method.
11418         (gen_hsa_insns_for_bitfield): Fixup instruction and intermediary
11419         types.  Convert to dest type if necessary.
11420         (gen_hsa_insns_for_bitfield_load): Fixup load type if necessary.
11421         (reg_for_gimple_ssa): Pass false as min32int to
11422         hsa_type_for_scalar_tree_type.
11423         (gen_hsa_addr): Fixup type when creating addresable temporary.
11424         (gen_hsa_cmp_insn_from_gimple): Extend operands if necessary.
11425         (gen_hsa_unary_operation): Extend operands and convert to dest type if
11426         necessary.  Call hsa_fixup_mov_insn_type.
11427         (gen_hsa_binary_operation): Changed operand types to hsa_op_with_type,
11428         extend operands and convert to dest type if necessary.
11429         (gen_hsa_insns_for_operation_assignment): Extend operands and convert
11430         to dest type if necessary.
11431         (set_output_in_type): Call hsa_fixup_mov_insn_type.  Just ude dest
11432         if conversion nt necessary and size matches.
11433         (gen_hsa_insns_for_load): Call hsa_fixup_mov_insn_type, convert
11434         to dest type if necessary.
11435         (gen_hsa_insns_for_store): Call hsa_fixup_mov_insn_type.
11436         (gen_hsa_insns_for_switch_stmt): Likewise. Also extend operands if
11437         necessary.
11438         (gen_hsa_clrsb): Likewise.
11439         (gen_hsa_ffs): Likewise.
11440         (gen_hsa_divmod): Extend operands and convert to dest type if
11441         necessary.
11442         (gen_hsa_atomic_for_builtin): Change type of op to hsa_op_with_type.
11443
11444 2017-10-08  Segher Boessenkool  <segher@kernel.crashing.org>
11445
11446         * config/rs6000/rs6000.md (conditional branch): Clean up formatting.
11447         Remove empty default arguments.  Use a brace block as output
11448         statement.
11449         (conditional return): Ditto.
11450         (jump): Ditto.
11451         (indirect_jump): Ditto.  Use b%T0 instead of bctr/blr.
11452         (tablejump, tablejumpsi, tablejumpdi, *tablejump<mode>_internal1):
11453         Ditto.
11454         (group_ending_nop): Ditto.
11455         (doloop_end): Ditto.
11456         (ctr<mode>, ctr<mode>_internal1, ctr<mode>_internal2): Ditto.
11457         (splitters for those): Ditto.
11458
11459 2017-10-08  Segher Boessenkool  <segher@kernel.crashing.org>
11460
11461         * config/rs6000/rs6000-string.c (expand_strncmp_align_check): Invert
11462         a conditional jump (and the compare for it) so that pc_rtx is the
11463         last operand.
11464         * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Adjust
11465         for the deleted and renamed ctr<mode>_internal[234] patterns.
11466         * config/rs6000/rs6000.md: Delete second conditional branch pattern.
11467         Delete second conditional return pattern.
11468         (ctr<mode>_internal2): Delete this second bdnz pattern.
11469         (ctr<mode>_internal3): Rename to ctr<mode>_internal2.
11470         (ctr<mode>_internal4): Delete this second bdz pattern.
11471
11472 2017-10-08  Eric Botcazou  <ebotcazou@adacore.com>
11473
11474         * tree-outof-ssa.h (ssaexpand): Add partitions_for_undefined_values.
11475         (always_initialized_rtx_for_ssa_name_p): New predicate.
11476         * tree-outof-ssa.c (remove_ssa_form): Initialize new field of SA.
11477         (finish_out_of_ssa): Free new field of SA.
11478         * tree-ssa-coalesce.h (get_undefined_value_partitions): Declare.
11479         * tree-ssa-coalesce.c: Include tree-ssa.h.
11480         (get_parm_default_def_partitions): Remove extern keyword.
11481         (get_undefined_value_partitions): New function.
11482         * expr.c (expand_expr_real_1) <expand_decl_rtl>: For a SSA_NAME, do
11483         not set SUBREG_PROMOTED_VAR_P on the sub-register if it may contain
11484         uninitialized bits.
11485         * loop-iv.c (iv_get_reaching_def): Disqualify all subregs.
11486
11487 2017-10-08  Eric Botcazou  <ebotcazou@adacore.com>
11488
11489         * builtins.def (BUILT_IN_SETJMP): Revert latest change.
11490
11491 2017-10-08  Jan Hubicka  <hubicka@ucw.cz>
11492
11493         * config/i386/i386.c (ix86_expand_set_or_movmem): Disable 512bit loops
11494         for targets that preffer 128bit.
11495
11496 2017-10-08  Jan Hubicka  <hubicka@ucw.cz>
11497
11498         * config/i386/i386.c (has_dispatch): Disable for Ryzen.
11499
11500 2017-10-08  Olivier Hainque  <hainque@adacore.com>
11501
11502         * config/arm/arm.c (arm_set_return_address): Use MEM_VOLATILE_P
11503         on the target mem instead of RTX_FRAME_RELATED_P on the insn to
11504         prevent DSE.
11505         (thumb_set_return_address): Likewise.
11506
11507 2017-10-08  Olivier Hainque  <hainque@adacore.com>
11508
11509         * common/config/arm/arm-common.c (arm_except_unwind_info):
11510         Handle DWARF2_UNWIND_INFO.
11511
11512 2017-10-07  Michael Collison <michael.collison@arm.com>
11513
11514         * config/aarch64/aarch64.md (*aarch64_reg_<optab>_minus<mode>3):
11515         New pattern.
11516
11517 2017-10-07  Eric Botcazou  <ebotcazou@adacore.com>
11518
11519         * builtins.def (BUILT_IN_SETJMP): Declare as library builtin instead
11520         of GCC builtin if DONT_USE_BUILTIN_SETJMP is defined.
11521         * except.c (sjlj_emit_function_enter): If DONT_USE_BUILTIN_SETJMP is
11522         defined, force the creation of a new block for a dispatch label.
11523
11524 2017-10-07  Jan Hubicka  <hubicka@ucw.cz>
11525
11526         * invoke.texi (Wsuggest-attribute=cold): Document.
11527         * common.opt (Wsuggest-attribute=cold): New
11528         * ipa-pure-const.c (warn_function_cold): New function.
11529         * predict.c (compute_function_frequency): Use it.
11530         * predict.h (warn_function_cold): Declare.
11531
11532 2017-10-06  Jan Hubicka  <hubicka@ucw.cz>
11533
11534         * tree-switch-conversion.c (do_jump_if_equal, emit_cmp_and_jump_insns):
11535         Update profile.
11536
11537 2017-10-06  Martin Liska  <mliska@suse.cz>
11538
11539         * sanopt.c (struct sanopt_tree_triplet_hash): Remove inline
11540         keyword for member functions.
11541         (struct sanopt_tree_couple): New struct.
11542         (struct sanopt_tree_couple_hash): New function.
11543         (struct sanopt_ctx): Add new hash_map.
11544         (has_dominating_ubsan_ptr_check): New function.
11545         (record_ubsan_ptr_check_stmt): Likewise.
11546         (maybe_optimize_ubsan_ptr_ifn): Likewise.
11547         (sanopt_optimize_walker): Handle IFN_UBSAN_PTR.
11548         (pass_sanopt::execute): Handle also SANITIZE_POINTER_OVERFLOW.
11549
11550 2017-10-06  Sudakshina Das  <sudi.das@arm.com>
11551
11552         PR target/82440
11553         * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Only call
11554         aarch64_simd_valid_immediate on CONST_VECTORs.
11555         (aarch64_reg_or_bic_imm): Likewise.
11556
11557 2017-10-06  Wilco Dijkstra  <wdijkstr@arm.com>
11558
11559         PR rtl-optimization/82396
11560         * haifa-sched.c (ready_sort_real): Disable qsort checking.
11561
11562 2017-10-06  Sebastian Pop  <sebpop@gmail.com>
11563
11564         * graphite-dependences.c (scop_get_reads): Move code to...
11565         (scop_get_must_writes): Move code to...
11566         (scop_get_may_writes): Move code to...
11567         (scop_get_reads_and_writes): ... here.
11568         (scop_get_dependences): Call scop_get_reads_and_writes.
11569
11570 2017-10-06  Jakub Jelinek  <jakub@redhat.com>
11571
11572         PR tree-optimization/82434
11573         * fold-const.h (can_native_encode_type_p,
11574         can_native_encode_string_p): Remove.
11575         * fold-const.c (native_encode_int): Formatting fixes.  If ptr is NULL,
11576         don't encode anything, just return what would be otherwise returned.
11577         (native_encode_fixed, native_encode_complex, native_encode_vector):
11578         Likewise.
11579         (native_encode_string): Likewise.  Inline by hand
11580         can_native_encode_string_p.
11581         (can_native_encode_type_p): Remove.
11582         (can_native_encode_string_p): Remove.
11583         * tree-vect-stmts.c (vectorizable_store): Instead of testing just
11584         STRING_CSTs using can_native_encode_string_p, test all
11585         CONSTANT_CLASS_P values using native_encode_expr with NULL ptr.
11586         * gimple-ssa-store-merging.c (encode_tree_to_bitpos): Remove last
11587         argument from native_encode_expr.
11588         (rhs_valid_for_store_merging_p): Use native_encode_expr with NULL ptr.
11589         (pass_store_merging::execute): Don't unnecessarily look for 3 stmts,
11590         but just 2.
11591
11592 2017-10-06  Richard Biener  <rguenther@suse.de>
11593
11594         PR tree-optimization/82397
11595         * tree-vect-data-refs.c (dr_group_sort_cmp): Do not use
11596         operand_equal_p but rely on data_ref_compare_tree for detecting
11597         equalities.
11598         (vect_analyze_data_ref_accesses): Use data_ref_compare_tree
11599         to match up with dr_group_sort_cmp.
11600
11601 2017-10-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
11602
11603         PR target/82322
11604         * config/s390/s390-builtins.def (s390_vfi): Define new overloaded
11605         builtin.
11606         * config/s390/s390-builtin-types.def: Regenerate.
11607
11608 2017-10-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
11609
11610         PR target/82317
11611         * config/s390/s390-builtin-types.def: Regenerate.
11612         * config/s390/s390-builtins.def (s390_vfmaxdb_4, s390_vfmindb_4):
11613         Change flag from B_VXE to B_VX.
11614         (s390_vec_min_dbl): Remove B_VXE flag.
11615
11616 2017-10-06  Richard Biener  <rguenther@suse.de>
11617
11618         * graphite-isl-ast-to-gimple.c: Include ssa.h and tree-ssa.h.
11619         (translate_isl_ast_to_gimple::translate_pending_phi_nodes,
11620         translate_isl_ast_to_gimple::is_valid_rename,
11621         translate_isl_ast_to_gimple::get_rename,
11622         translate_isl_ast_to_gimple::get_def_bb_for_const,
11623         translate_isl_ast_to_gimple::get_new_name,
11624         translate_isl_ast_to_gimple::collect_all_ssa_names,
11625         translate_isl_ast_to_gimple::copy_loop_phi_args,
11626         translate_isl_ast_to_gimple::collect_all_ssa_names,
11627         translate_isl_ast_to_gimple::copy_loop_phi_args,
11628         translate_isl_ast_to_gimple::copy_loop_phi_nodes,
11629         translate_isl_ast_to_gimple::add_close_phis_to_merge_points,
11630         translate_isl_ast_to_gimple::add_close_phis_to_outer_loops,
11631         translate_isl_ast_to_gimple::copy_loop_close_phi_args,
11632         translate_isl_ast_to_gimple::copy_loop_close_phi_nodes,
11633         translate_isl_ast_to_gimple::copy_cond_phi_args,
11634         translate_isl_ast_to_gimple::copy_cond_phi_nodes,
11635         translate_isl_ast_to_gimple::edge_for_new_close_phis,
11636         translate_isl_ast_to_gimple::add_phi_arg_for_new_expr,
11637         translate_isl_ast_to_gimple::rename_uses,
11638         translate_isl_ast_to_gimple::rename_all_uses): Remove.
11639         (translate_isl_ast_to_gimple::get_rename_from_scev): Simplify.
11640         (set_rename_for_each_def): Likewise.
11641         (graphite_copy_stmts_from_block): Handle debug stmt resetting
11642         here.  Handle rewriting SCEV analyzable uses here.
11643         (copy_bb_and_scalar_dependences): Generate code for PHI
11644         copy-in/outs.
11645         (graphite_regenerate_ast_isl): Adjust.
11646         * graphite-scop-detection.c (trivially_empty_bb_p): Move to sese.[ch].
11647         (add_write, add_read): New functions.
11648         (build_cross_bb_scalars_def): Use it and simplify.
11649         (build_cross_bb_scalars_use): Likewise.
11650         (graphite_find_cross_bb_scalar_vars): Inline into...
11651         (try_generate_gimple_bb): ...here.  Add dependences for PHIs,
11652         simulating out-of-SSA.  Compute liveout and add dependencies.
11653         (build_scops): Force an empty entry block.
11654         * sese.h (sese_info_t::liveout, sese_info_t::debug_liveout): New
11655         members.
11656         (sese_build_liveouts): Declare.
11657         (sese_trivially_empty_bb_p): Likewise.
11658         * sese.c (sese_build_liveouts_bb): Properly handle PHIs,
11659         compute liveout and debug_liveout.
11660         (sese_bad_liveouts_use): Remove.
11661         (sese_reset_debug_liveouts_bb): Likewise.
11662         (sese_reset_debug_liveouts): Rewrite in terms of debug_liveout.
11663         (sese_build_liveouts): Build liveout and debug_liveout and store
11664         it in region.
11665         (new_sese_info): Adjust.
11666         (free_sese_info): Likewise.
11667         (sese_insert_phis_for_liveouts): Reset debug stmts from here,
11668         do not build liveout here.
11669         (move_sese_in_condition): Adjust region entry.
11670         (scev_analyzable_p): Match up with chrec_apply requirements.
11671         (sese_trivially_empty_bb_p): New.
11672         * tree-into-ssa.c (get_reaching_def): Properly support generating
11673         default-defs for incremental rewrite of anonymous names.
11674
11675 2017-10-06  Richard Biener  <rguenther@suse.de>
11676
11677         * graphite-sese-to-poly.c (extract_affine): For casts increasing
11678         precision do not perform modulo reduction.
11679
11680 2017-10-06  Richard Biener  <rguenther@suse.de>
11681
11682         PR tree-optimization/82436
11683         * tree-vect-slp.c (vect_supported_load_permutation_p): More
11684         conservatively choose the vectorization factor when checking
11685         whether we can perform the required load permutation.
11686         (vect_transform_slp_perm_load): Assert when we may not fail.
11687
11688 2017-10-05  Segher Boessenkool  <segher@kernel.crashing.org>
11689
11690         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Correct error
11691         message for incompatible -msdata=* and -mcall-* options.
11692
11693 2017-10-05  Jan Hubicka <hubicka@ucw.cz>
11694
11695         * config/i386/i386.c (ia32_multipass_dfa_lookahead): Default to issue
11696         rate for post-reload scheduling.
11697
11698 2017-10-05  Tamar Christina  <tamar.christina@arm.com>
11699
11700         * doc/sourcebuild.texi (vect_sizes_16B_8B, vect_sizes_32B_16B): New.
11701
11702 2017-10-05  Jan Hubicka <hubicka@ucw.cz>
11703
11704         * config/i386/i386.c (znver1_cost): Set branch_cost to 3 (instead of 2)
11705         to improve monte carlo in scimark.
11706
11707 2017-10-05  Jan Hubicka <hubicka@ucw.cz>
11708
11709         * config/i386/i386.c (ix86_size_cost, i386_cost, i486_cost,
11710         pentium_cost, lakemont_cost, pentiumpro_cost, geode_cost, k6_cost,
11711         athlon_cost, k8_cost, amdfam10_cost, btver1_cost, btver2_cost,
11712         pentium4_cost, nocona_cost): Set reassociation width to 1.
11713         (bdver1_cost, bdver2_cost, bdver3_cost, bdver4_cost): Set reassociation
11714         width to 2 for fp operations and 1 otherwise.
11715         (znver1_cost): Set scalar reassoc width to 4 and vector to 3 and 6
11716         for int and fp.
11717         (atom_cost): Set reassociation width to 2.
11718         (slm_cost, generic_cost): Set fp reassociation width
11719         to 2 and 1 otherwise.
11720         (intel_cost): Set fp reassociation width to 4 and 1 otherwise.
11721         (core_cost): Set fp reassociation width to 4 and vector to 2.
11722         (ix86_reassociation_width): Rewrite using cost table; special case
11723         plus/minus on Zen; honor X86_TUNE_SSE_SPLIT_REGS
11724         and TARGET_AVX128_OPTIMAL.
11725         * config/i386/i386.h (processor_costs): Add
11726         reassoc_int, reassoc_fp, reassoc_vec_int, reassoc_vec_fp.
11727         (TARGET_VECTOR_PARALLEL_EXECUTION, TARGET_REASSOC_INT_TO_PARALLEL,
11728         TARGET_REASSOC_FP_TO_PARALLEL): Remove.
11729         * x86-tune.def (X86_TUNE_REASSOC_INT_TO_PARALLEL): Remove.
11730         (X86_TUNE_REASSOC_FP_TO_PARALLEL): Remove.
11731         (X86_TUNE_VECTOR_PARALLEL_EXECUTION):  Remove.
11732
11733 2017-10-05  Nathan Sidwell  <nathan@acm.org>
11734
11735         * doc/invoke.texi (Wparentheses): Document C++ MVP behaviour.
11736
11737 2017-10-05  Tamar Christina  <tamar.christina@arm.com>
11738
11739         * config/arm/arm.c (arm_test_fpu_data): New.
11740         (arm_run_selftests): Call arm_test_fpu_data.
11741
11742 2017-10-04  Nathan Sidwell  <nathan@acm.org>
11743
11744         * toplev.c (toplev::main): Remove excess parens on pretty_printer
11745         decl.
11746         * caller-save.c (insert_save): Remove excess parens on TO_SAVE parm.
11747
11748 2017-10-04  Sudakshina Das  <sudi.das@arm.com>
11749
11750         * config/aarch64/aarch64-protos.h (enum simd_immediate_check): New
11751         check type for aarch64_simd_valid_immediate.
11752         (aarch64_output_simd_mov_immediate): Update prototype.
11753         (aarch64_simd_valid_immediate): Update prototype.
11754         * config/aarch64/aarch64-simd.md (orr<mode>3): modified pattern to add
11755         support for ORR-immediate.
11756         (and<mode>3): modified pattern to add support for BIC-immediate.
11757         * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Function
11758         now checks for valid immediate for BIC and ORR based on new enum
11759         argument.
11760         (aarch64_output_simd_mov_immediate): Function now used to output
11761         BIC/ORR imm as well based on new enum argument.
11762         * config/aarch64/constraints.md (Do): New vector immediate constraint.
11763         (Db) : Likewise.
11764         * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): New predicate.
11765         (aarch64_reg_or_bic_imm): Likewise.
11766
11767 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
11768
11769         * config/s390/vx-builtins.md ("vec_mergeh<mode>")
11770         ("vec_mergel<mode>"): Change mode iterator to V_128_NOSINGLE.
11771
11772 2017-10-04  Wilco Dijkstra  <wdijkstr@arm.com>
11773
11774         Revert r253399:
11775
11776         PR rtl-optimization/82396
11777         * haifa-sched.c (autopref_multipass_init): Simplify
11778         initialization.
11779         (autopref_rank_data): Simplify sort order.
11780         * sched-int.h (autopref_multipass_data_): Remove
11781         multi_mem_insn_p, min_offset and max_offset.
11782
11783 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
11784
11785         * doc/sourcebuild.texi: Document vect_peeling_profitable.
11786
11787 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
11788
11789         * doc/sourcebuild.texi: Document vect_intdouble_cvt and
11790         vect_doubleint_cvt.
11791
11792 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
11793
11794         * doc/sourcebuild.texi: Document vect_long_mult.
11795
11796 2017-10-04  Richard Sandiford  <richard.sandiford@linaro.org>
11797
11798         PR tree-optimization/82413
11799         * fold-const.c (build_range_check): Use widest_int when comparing
11800         the maximum ETYPE value with HIGH.
11801
11802 2017-10-04  Wilco Dijkstra  <wdijkstr@arm.com>
11803
11804         PR rtl-optimization/82396
11805         * haifa-sched.c (autopref_multipass_init): Simplify
11806         initialization.
11807         (autopref_rank_data): Simplify sort order.
11808         * sched-int.h (autopref_multipass_data_): Remove
11809         multi_mem_insn_p, min_offset and max_offset.
11810
11811 2017-10-04  Jakub Jelinek  <jakub@redhat.com>
11812
11813         PR tree-optimization/82381
11814         * tree-ssa-reassoc.c (sort_by_operand_rank): Check for different
11815         oeN->rank first.  Return 1 or -1 if one op is SSA_NAME and the other
11816         is not.
11817
11818         PR tree-optimization/82374
11819         * omp-low.c (create_omp_child_function): Copy DECL_ATTRIBUTES,
11820         DECL_FUNCTION_SPECIFIC_OPTIMIZATION,
11821         DECL_FUNCTION_SPECIFIC_TARGET and DECL_FUNCTION_VERSIONED from
11822         current_function_decl to the new decl.
11823
11824 2017-10-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
11825
11826         * config/rs6000/rs6000-builtin.def (BU_FLOAT128_2_HW): Define new
11827         helper macro for IEEE float128 hardware built-in functions.
11828         (SQRTF128_ODD): Add built-in functions with the round-to-odd
11829         semantics.
11830         (TRUNCF128_ODD): Likewise.
11831         (ADDF128_ODD): Likewise.
11832         (SUBF128_ODD): Likewise.
11833         (MULF128_ODD): Likewise.
11834         (DIVF128_ODD): Likewise.
11835         (FMAF128_ODD): Likewise.
11836         * config/rs6000/rs6000.md (UNSPEC_ROUND_TO_ODD): Rename to
11837         UNSPEC_TRUNC_ROUND_TO_ODD.
11838         (UNSPEC_TRUNC_ROUND_TO_ODD): Likewise.
11839         (UNSPEC_ADD_ROUND_TO_ODD): New unspec codes for the IEEE 128-bit
11840         floating point round to odd instructions.
11841         (UNSPEC_SUB_ROUND_TO_ODD): Likewise.
11842         (UNSPEC_MUL_ROUND_TO_ODD): Likewise.
11843         (UNSPEC_DIV_ROUND_TO_ODD): Likewise.
11844         (UNSPEC_FMA_ROUND_TO_ODD): Likewise.
11845         (UNSPEC_SQRT_ROUND_TO_ODD): Likewise.
11846         (trunc<mode>sf2_hw): Change the truncate with round to odd
11847         expansion to use UNSPEC_TRUNC_ROUND_TO_ODD.
11848         (add<mode>3_odd): Add insns for IEEE 128-bit floating point round
11849         to odd hardware instructions.
11850         (sub<mode>3_odd): Likewise.
11851         (mul<mode>3_odd): Likewise.
11852         (div<mode>3_odd): Likewise.
11853         (sqrt<mode>2_odd): Likewise.
11854         (fma<mode>4_odd): Likewise.
11855         (fms<mode>4_odd): Likewise.
11856         (nfma<mode>4_odd): Likewise.
11857         (nfms<mode>4_odd): Likewise.
11858         (trunc<mode>df2_odd): Change the truncate with round to odd
11859         expansion to use UNSPEC_TRUNC_ROUND_TO_ODD.  Add a generator
11860         function.
11861         * doc/extend.texi (PowerPC built-in functions): Update documentation
11862         for existing IEEE float128-bit built-in functions.  Add built-in
11863         functions that generate the IEEE 128-bit floating point round to
11864         odd instructions.
11865
11866 2017-10-03  Segher Boessenkool  <segher@kernel.crashing.org>
11867
11868         PR rtl-optimization/77729
11869         * simplify-rtx.c (simplify_binary_operation_1): Delete the (X&C1)|C2
11870         to (X&(C1&~C2))|C2 transformations.
11871
11872 2017-10-03  Martin Jambor  <mjambor@suse.cz>
11873
11874         PR tree-optimization/82363
11875         * tree-sra.c (propagate_subaccesses_across_link): In unrecoverable
11876         mismatch, mark lacc written regardless of racc.
11877
11878 2017-10-03  Jakub Jelinek  <jakub@redhat.com>
11879
11880         PR tree-optimization/82381
11881         * tree-ssa-reassoc.c (sort_by_operand_rank): Don't check
11882         stmt_to_insert nor wheather SSA_NAMEs are default defs.
11883         Return 1 or -1 if one of bba and bbb is NULL. If bb_rank is equal,
11884         fallthrough into reassoc_stmt_dominates_stmt_p.
11885
11886         PR target/82386
11887         * combine.c (combine_instructions): Don't combine in unreachable
11888         basic blocks.
11889
11890 2017-10-02  Peter Bergner  <bergner@vnet.ibm.com>
11891
11892         PR target/80210
11893         * config/rs6000/rs6000.c (rs6000_option_override_internal): Rewrite
11894         function to not use the have_cpu variable.  Do not set cpu_index,
11895         rs6000_cpu_index or rs6000_tune_index if we end up using TARGET_DEFAULT
11896         or the default cpu.
11897         (rs6000_valid_attribute_p): Remove duplicate initializations of
11898         old_optimize and func_optimize.
11899         (rs6000_pragma_target_parse): Call rs6000_activate_target_options ().
11900         (rs6000_activate_target_options): Make global.
11901         * config/rs6000/rs6000-protos.h (rs6000_activate_target_options): Add
11902         prototype.
11903
11904 2017-10-02  Jakub Jelinek  <jakub@redhat.com>
11905
11906         * tree-dfa.c (get_ref_base_and_extent): Set *pmax_size to -1
11907         if *poffset + *pmax_size overflows in HOST_WIDE_INT.
11908         Set *poffset to 0 and *psize and *pmax_size to -1 if
11909         *poffset + *psize overflows in HOST_WIDE_INT.
11910
11911         PR tree-optimization/82387
11912         PR tree-optimization/82388
11913         PR tree-optimization/82389
11914         * tree-ssa-dse.c (dse_classify_store): Test byte_tracking_enabled
11915         instead of live_bytes non-NULL.
11916
11917 2017-10-02  Georg-Johann Lay  <avr@gjlay.de>
11918
11919         PR target/41076
11920         * confg/avr/avr.md (*iorhi3.ashift8-ext.zerox): Add "r,r,0"
11921         alternative.
11922
11923 2017-10-02  Richard Biener  <rguenther@suse.de>
11924
11925         * graphite-isl-ast-to-gimple.c (set_codegen_error): With
11926         -fchecking and --param graphite-allow-codegen-errors=0 ICE.
11927         * params.def (PARAM_GRAPHITE_ALLOW_CODEGEN_ERRORS): New param.
11928
11929 2017-10-02  Richard Sandiford  <richard.sandiford@linaro.org>
11930
11931         * tree.h (wi::int_traits <const_tree>::decompose): Assert that the
11932         requested precision matches the type's.
11933         * calls.c (alloc_max_size): Calculate the new candidate size as
11934         a widest_int and use wi::to_widest when comparing it with the
11935         current candidate size.
11936         * gimple-ssa-warn-alloca.c (pass_walloca::execute): Compare with
11937         zero rather than integer_zero_node.
11938         * match.pd: Check for a no-op conversion before using wi::add
11939         rather than after.  Use tree_to_uhwi when summing small shift
11940         counts into an unsigned int.
11941
11942 2017-10-02  Richard Sandiford  <richard.sandiford@linaro.org>
11943             Alan Hayward  <alan.hayward@arm.com>
11944             David Sherwood  <david.sherwood@arm.com>
11945
11946         PR target/71307
11947         * config/aarch64/aarch64.h (POINTER_AND_FP_REGS): New reg class.
11948         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
11949         * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
11950         POINTER_AND_FP_REGS.
11951
11952 2017-10-02  Richard Biener  <rguenther@suse.de>
11953
11954         PR tree-optimization/82355
11955         * graphite-isl-ast-to-gimple.c (build_iv_mapping): Also build
11956         a mapping for the enclosing loop but avoid generating one for
11957         the loop tree root.
11958         (copy_bb_and_scalar_dependences): Remove premature codegen
11959         error on PHIs in blocks duplicated into multiple places.
11960         * graphite-scop-detection.c
11961         (scop_detection::stmt_has_simple_data_refs_p): For a loop not
11962         in the region use it as loop and nest to analyze the DR in.
11963         (try_generate_gimple_bb): Likewise.
11964         * graphite-sese-to-poly.c (extract_affine_chrec): Adjust.
11965         (add_loop_constraints): For blocks in a loop not in the region
11966         create a dimension with a single iteration.
11967         * sese.h (gbb_loop_at_index): Remove assert.
11968
11969 2017-10-01  Kevin Buettner  <kevinb@redhat.com>
11970
11971         * omp-expand.c (adjust_context_scope): New function.
11972         (expand_parallel_call): Call adjust_context_scope.
11973
11974 2017-10-01  Jeff Law  <law@redhat.com>
11975
11976         * tree-ssa-dom.c (optimize_stmt): Make this a method within the
11977         dom_opt_dom_walker class with direct access to private members.
11978         Add comments.  Call test_for_singularity.
11979         (dom_opt_dom_walker::before_dom_children): Corresponding changes.
11980         (dom_opt_dom_walker::after_dom_children): Do not lazily initialize
11981         m_dummy_cond anymore.
11982         (class dom_opt_dom_walker): Initialize m_dummy_cond member in the
11983         class ctor.
11984         (pass_dominator:execute): Build the dummy_cond here and pass it
11985         to the dom_opt_dom_walker ctor.
11986         (test_for_singularity): New function.
11987
11988 2017-09-30  Krister Walfridsson  <krister.walfridsson@gmail.com>
11989             Maya Rashish  <coypu@sdf.org>
11990
11991         * config.gcc (*-*-netbsd*): New variable nbsd_tm_file containing
11992         netbsd.h, netbsd-stdint.h, and netbsd-elf.h.
11993         (alpha*-*-netbsd*) Use nbsd_tm_file.
11994         (arm*-*-netbsdelf*) Likewise.
11995         (i[34567]86-*-netbsdelf*) Likewise.
11996         (x86_64-*-netbsd*) Likewise.
11997         (mips*-*-netbsd*) Likewise.
11998         (powerpc-*-netbsd*) Likewise.
11999         (sh*-*-netbsd*) Likewise.
12000         (sparc-*-netbsdelf*) Likewise.
12001         (sparc64-*-netbsd*) Likewise.
12002         (m68k*-*-netbsdelf*) Use nbsd_tm_file and add CHAR_FAST8/SHORT_FAST16
12003         to tm_defines.
12004         (vax-*-netbsdelf*) Likewise.
12005         * config/netbsd-stdint.h (INT_FAST8_TYPE): Check CHAR_FAST8.
12006         (UINT_FAST8_TYPE) Likewise.
12007         (INT_FAST16_TYPE) Check CHAR_FAST16.
12008         (UINT_FAST16_TYPE) Likewise.
12009
12010 2017-09-30  Jakub Jelinek  <jakub@redhat.com>
12011
12012         PR target/82361
12013         * config/i386/i386.md
12014         (TARGET_USE_8BIT_IDIV zext divmodsi4 splitter): New define_split.
12015         (divmodsi4_zext_1, divmodsi4_zext_2, *divmodsi4_zext_1,
12016         *divmodsi4_zext_2): New define_insn_and_split.
12017         (*divmodsi4_noext_zext_1, *divmodsi4_noext_zext_2): New define_insn.
12018         (TARGET_USE_8BIT_IDIV zext udivmodsi4 splitter): New define_split.
12019         (udivmodsi4_zext_1, udivmodsi4_zext_2, *udivmodsi4_zext_1,
12020         *udivmodsi4_zext_2, *udivmodsi4_pow2_zext_1, *udivmodsi4_pow2_zext_2):
12021         New define_insn_and_split.
12022         (*udivmodsi4_noext_zext_1, *udivmodsi4_noext_zext_2): New define_insn.
12023         * config/i386/i386.c (ix86_split_idivmod): Handle operands[0] or
12024         operands[1] having DImode when mode is SImode.
12025
12026         * config/i386/i386.c (ix86_split_idivmod): Use mode instead of
12027         always SImode for DIV and MOD in REG_EQUAL notes.
12028
12029 2017-09-29  Yury Gribov  <tetra2005@gmail.com>
12030
12031         PR middle-end/82319
12032         * match.pd: Fix handling of NaNs in pattern.
12033
12034 2017-09-29  Jeff Law  <law@redhat.com>
12035
12036         * sbitmap.c (bitmap_bit_in_range_p): New function.
12037         * sbitmap.h (bitmap_bit_in_range_p): Prototype.
12038         * tree-ssa-dse.c (live_bytes_read): New function.
12039         (dse_classify_store): Ignore reads of dead bytes.
12040
12041         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Fix
12042         typos and whitespace errors.
12043         * config/i386/predicates.md (address_no_seg_operand): Likewise.
12044         * config/s390/s390.c (s390_emit_prologue): Likewise.
12045
12046 2017-09-29  Vladimir Makarov  <vmakarov@redhat.com>
12047
12048         PR target/81481
12049         * ira-costs.c (scan_one_insn): Don't take into account PIC equiv
12050         with a symbol for LRA.
12051
12052 2017-09-29  Vladimir Makarov  <vmakarov@redhat.com>
12053
12054         PR rtl-optimization/82338
12055         * lra-constraints.c (inherit_in_ebb): Check usage_insns check.
12056
12057 2017-09-29  Alexander Monakov  <amonakov@ispras.ru>
12058
12059         * genmodes.c (calc_wider_mode): Suppress qsort macro.
12060         * system.h [CHECKING_P] (qsort): Redirect to qsort_chk.
12061         (qsort_chk): Declare.
12062         * vec.c [CHECKING_P] (qsort_chk_error): New static function.
12063         (qsort_chk): New function.
12064
12065 2017-09-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
12066
12067         PR tree-optimization/82337
12068         * gimple-ssa-strength-reduction.c (find_phi_def): Don't record a
12069         phi definition if the PHI result appears in an abnormal PHI.
12070         (find_basis_for_base_expr): Don't record a basis if the LHS of the
12071         basis appears in an abnormal PHI.
12072
12073 2017-09-29  Richard Biener  <rguenther@suse.de>
12074
12075         * graphite-isl-ast-to-gimple.c
12076         (translate_isl_ast_to_gimple::set_codegen_error): New function.
12077         (binary_op_to_tree): Use it.
12078         (get_rename_from_scev): Likewise.
12079         (copy_loop_phi_nodes): Likewise.
12080         (copy_bb_and_scalar_dependences): Likewise.
12081         (translate_pending_phi_nodes): Likewise.
12082
12083 2017-09-29  Jakub Jelinek  <jakub@redhat.com>
12084
12085         PR target/82339
12086         * config/i386/i386.md (*movdi_internal peephole2): New -Os peephole
12087         for movabsq $(i32 << shift), r64.
12088
12089 2017-09-28  Uros Bizjak  <ubizjak@gmail.com>
12090
12091         * config/i386/i386.c (ix86_print_operand_address_as): Do not check
12092         index when encoding %esp as %rsp to avoid 0x67 prefix.
12093
12094 2017-09-28  Sergey Shalnov  <Sergey.Shalnov@intel.com>
12095
12096         * config/i386/i386.md (*movsf_internal, *movdf_internal):
12097         Return 256-bit AVX modes for TARGET_PREFER_AVX256.
12098
12099 2017-09-28  Thomas Preud'homme  <thomas.preudhomme@arm.com>
12100
12101         * config/arm/arm.c (arm_option_override): Forbid ARMv8-M Security
12102         Extensions with more than 16 double VFP registers.
12103         (cmse_nonsecure_entry_clear_before_return): Remove second entry of
12104         to_clear_mask and all code related to it.  Replace the remaining
12105         entry by a sbitmap and adapt code accordingly.
12106
12107 2017-09-28  Henry Linjamäki  <henry.linjamaki@parmance.com>
12108
12109         * brig-builtins.def: Change pure attributes to const.
12110
12111 2017-09-28  Joseph Myers  <joseph@codesourcery.com>
12112
12113         * config.gcc (default_gnu_indirect_function): Default to yes for
12114         sparc*-*-linux* with glibc.
12115
12116 2017-09-28  Joseph Myers  <joseph@codesourcery.com>
12117
12118         * config/aarch64/aarch64.c (aarch64_elf_asm_constructor)
12119         (aarch64_elf_asm_destructor): Pass SECTION_NOTYPE to get_section
12120         when creating .init_array and .fini_array sections with priority
12121         specified.
12122
12123 2017-09-27  Christophe Lyon  <christophe.lyon@linaro.org>
12124
12125         PR target/71727
12126         * config/aarch64/aarch64.c
12127         (aarch64_builtin_support_vector_misalignment): Always return false
12128         when misalignment is unknown.
12129
12130 2017-09-27  Kelvin Nilsen  <kelvin@gcc.gnu.org>
12131
12132         * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Revise
12133         this function to return false if the definition used by the swap
12134         instruction is artificial, or if the memory address from which the
12135         constant value is loaded is not represented by a base address held
12136         in a register or if the base address register is a frame or stack
12137         pointer.  Additionally, return false if the base address of the
12138         loaded constant is a SYMBOL_REF but is not considered to be a
12139         constant.
12140         (replace_swapped_load_constant): New function.
12141         (rs6000_analyze_swaps): Add a new pass to replace a swap of a
12142         loaded constant vector with a load of a swapped constant vector.
12143
12144 2017-09-27  Carl Love  <cel@us.ibm.com>
12145
12146         * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
12147         (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
12148         * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
12149         fctiw instruction.
12150
12151 2017-09-27  Alexander Monakov  <amonakov@ispras.ru>
12152
12153         * haifa-sched.c (autopref_rank_for_schedule): Order 'irrelevant' insns
12154         first, always call autopref_rank_data otherwise.
12155
12156 2017-09-27  Richard Biener  <rguenther@suse.de>
12157
12158         * graphite-scop-detection.c (find_scop_parameters): Move
12159         loop bound handling ...
12160         (gather_bbs::before_dom_children): ... here, avoiding the need
12161         to build scop_info->loop_nest.
12162         (record_loop_in_sese): Remove.
12163         * sese.h (sese_info_t::loop_nest): Remove.
12164         * sese.c (new_sese_info): Do not allocate loop_nest.
12165         (free_sese_info): Do not free loop_nest.
12166
12167 2017-09-27  Jakub Jelinek  <jakub@redhat.com>
12168
12169         PR c++/82159
12170         * gimplify.c (gimplify_modify_expr): Don't optimize away zero sized
12171         lhs from calls if the lhs has addressable type.
12172
12173 2017-09-27  Richard Biener  <rguenther@suse.de>
12174
12175         * graphite.h (scop::max_alias_set): New member.
12176         * graphite-scop-detection.c: Remove references to non-existing
12177         --param in comments.
12178         (build_alias_sets): Record the maximum alias set used for drs.
12179         (build_scops): Support zero as unlimited for
12180         --param graphite-max-arrays-per-scop.
12181         * graphite-sese-to-poly.c (add_scalar_version_numbers): Remove
12182         and inline into ...
12183         (build_poly_sr_1): ... here.  Compute alias set based on the
12184         maximum alias set used for drs rather than
12185         PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP
12186
12187 2017-09-27  Richard Biener  <rguenther@suse.de>
12188
12189         * graphite-optimize-isl.c (get_schedule_for_node_st): Allow
12190         --param loop-block-tile-size=0 to disable tiling.
12191
12192 2017-09-27  Richard Biener  <rguenther@suse.de>
12193
12194         * doc/invoke.texi (graphite-max-bbs-per-function): Remove.
12195         (graphite-max-nb-scop-params): Document special value zero.
12196         * domwalk.h (dom_walker::STOP): New symbolical constant.
12197         (dom_walker::dom_walker): Add optional parameter for bb to
12198         RPO mapping.
12199         (dom_walker::~dom_walker): Declare.
12200         (dom_walker::before_dom_children): Document STOP return value.
12201         (dom_walker::m_user_bb_to_rpo): New member.
12202         (dom_walker::m_bb_to_rpo): Likewise.
12203         * domwalk.c (dom_walker::dom_walker): Compute bb to RPO
12204         mapping here if not provided by the user.
12205         (dom_walker::~dom_walker): Free bb to RPO mapping if not
12206         provided by the user.
12207         (dom_walker::STOP): Define.
12208         (dom_walker::walk): Do not compute bb to RPO mapping here.
12209         Support STOP return value from before_dom_children to stop
12210         walking.
12211         * graphite-optimize-isl.c (optimize_isl): If the schedule
12212         is the same still generate code if -fgraphite-identity
12213         or -floop-parallelize-all are given.
12214         * graphite-scop-detection.c: Include cfganal.h.
12215         (gather_bbs::gather_bbs): Get and pass through bb to RPO
12216         mapping.
12217         (gather_bbs::before_dom_children): Return STOP for BBs
12218         not in the region.
12219         (build_scops): Compute bb to RPO mapping and pass it to
12220         the domwalk.  Treat --param graphite-max-nb-scop-params=0
12221         as not limiting the number of params.
12222         * graphite.c (graphite_initialize): Remove limit on the
12223         number of basic-blocks in a function.
12224         * params.def (PARAM_GRAPHITE_MAX_BBS_PER_FUNCTION): Remove.
12225         (PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS): Adjust to documented
12226         default value of 10.
12227
12228 2017-09-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
12229
12230         * config/rs6000/vsx.md (peephole for optimizing move SF to GPR):
12231         Adjust code to eliminate needing to do the shift right 32-bits
12232         operation after XSCVDPSPN.
12233
12234 2017-09-26  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
12235
12236         * match.pd ((X / Y) == 0 -> X < Y): New pattern.
12237         ((X / Y) != 0 -> X >= Y): Likewise.
12238
12239 2017-09-26  Carl Love  <cel@us.ibm.com>
12240
12241         * config/rs6000/rs6000-c.c (P9V_BUILTIN_VEC_XL_LEN_R,
12242         P9V_BUILTIN_VEC_XST_LEN_R): Add support for builtins
12243         vector unsigned char vec_xl_len_r (unsigned char *, size_t);
12244         void vec_xst_len_r (vector unsigned char, unsigned char *, size_t);
12245         * config/rs6000/altivec.h (vec_xl_len_r, vec_xst_len_r): Add defines.
12246         * config/rs6000/rs6000-builtin.def (XL_LEN_R, XST_LEN_R): Add
12247         definitions and overloading.
12248         * config/rs6000/rs6000.c (altivec_expand_builtin): Add case
12249         statement for P9V_BUILTIN_XST_LEN_R.
12250         (altivec_init_builtins): Add def_builtin for P9V_BUILTIN_STXVLL.
12251         * config/rs6000/vsx.md (lxvll, stxvll, xl_len_r, xst_len_r): Add
12252         define_expand and define_insn for the instructions and builtins.
12253         * doc/extend.texi: Update the built-in documentation file for the new
12254         built-in functions.
12255         * config/rs6000/altivec.md (altivec_lvsl_reg, altivec_lvsr_reg): Add
12256         define_insn for the instructions
12257
12258 2017-09-26  Krister Walfridsson  <krister.walfridsson@gmail.com>
12259
12260         PR target/39570
12261         * gcc/config/netbsd-protos.h: New file.
12262         * gcc/config/netbsd.c: New file.
12263         * gcc/config/netbsd.h (SUBTARGET_INIT_BUILTINS): Define.
12264         * gcc/config/t-netbsd: New file.
12265         * gcc/config.gcc (tm_p_file): Add netbsd-protos.h.
12266         (tmake_file) Add t-netbsd.
12267         (extra_objs) Add netbsd.o.
12268
12269 2017-09-26  Janus Weil  <janus@gcc.gnu.org>
12270
12271         PR fortran/82143
12272         PR fortran/82324
12273         * doc/sourcebuild.texi: Document fortran_real_10 and fortran_real_16.
12274
12275 2017-09-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
12276
12277         * config/rs6000/rs6000.md (extendsi<mode>2): Add a splitter to do
12278         sign extension from a vector register to a GPR by doing a 32-bit
12279         direct move and then an EXTSW.
12280         (extendsi<mode>2 splitter): Likewise.
12281         (movsi_from_sf): Adjust code to eliminate doing a 32-bit shift
12282         right or vector extract after doing XSCVDPSPN.  Use
12283         zero_extendsidi2 instead of p8_mfvsrd_4_disf to move the value to
12284         the GPRs.
12285         (movdi_from_sf_zero_ext): Likewise.
12286         (reload_gpr_from_vsxsf): Likewise.
12287         (p8_mfvsrd_4_disf): Delete, no longer used.
12288         (movsi_from_df): Optimize converting a DFmode to a SFmode, and
12289         then needing to move the SFmode to a GPR to use the XSCVDPSP
12290         instruction instead of FRSP and XSCVDPSPN.
12291         * config/rs6000/vsx.md (vsx_xscvspdp_scalar2): Move insn so that
12292         it is adjacent to the other XSCVSPDP insns.
12293         (vsx_xscvdpsp_scalar): Use "ww" constraint instead of "f" to allow
12294         SFmode to be in traditional Altivec registers.
12295         (vsx_xscvdpspn): Eliminate useless alternative constraint.
12296         (vsx_xscvspdpn): Likewise.
12297         (vsx_xscvspdpn_scalar): Likewise.
12298
12299 2017-09-26  Martin Jambor  <mjambor@suse.cz>
12300
12301         * tree-sra.c (compare_access_positions): Put integral types first,
12302         stabilize sorting of integral types, remove conditions putting
12303         non-full-precision integers last.
12304         (sort_and_splice_var_accesses): Disable scalarization if a
12305         non-integert would be represented by a non-full-precision integer.
12306
12307 2017-09-26  Joseph Myers  <joseph@codesourcery.com>
12308
12309         * config/microblaze/linux.h (TARGET_ASM_FILE_END): Likewise.
12310         * config/pa/pa.h (NEED_INDICATE_EXEC_STACK): Likewise.
12311         * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Likewise.
12312         * config/pa/pa.c (pa_hpux_file_end): Rename to pa_file_end.
12313         Define unconditionally, with [ASM_OUTPUT_EXTERNAL_REAL]
12314         conditionals inside the function instead of around it.  Call
12315         file_end_indicate_exec_stack if NEED_INDICATE_EXEC_STACK.
12316         (TARGET_ASM_FILE_END): Define unconditionally to pa_file_end.
12317
12318 2017-09-26  Richard Biener  <rguenther@suse.de>
12319
12320         * graphite-scop-detection.c (scop_detection::build_scop_depth): Rewrite,
12321         fold in ...
12322         (scop_detection::build_scop_breadth): ... this.  Removed.
12323         (scop_detection::loop_is_valid_in_scop): Fold into single caller.
12324         (scop_detection::harmful_stmt_in_bb): Likewise.
12325         (scop_detection::graphite_can_represent_stmt): Likewise.
12326         (scop_detection::loop_body_is_valid_scop): Likewise.  Remove recursion.
12327         (scop_detection::can_represent_loop): Remove recursion, fold in ...
12328         (scop_detection::can_represent_loop_1): ... this.  Removed.
12329         (scop_detection::harmful_loop_in_region): Simplify after inlining
12330         the above and remove more quadraticness.
12331         (build_scops): Adjust.
12332         * tree-data-ref.c (loop_nest_has_data_refs): Remove pointless
12333         quadraticness.
12334
12335 2017-09-26  Jakub Jelinek  <jakub@redhat.com>
12336
12337         PR target/82267
12338         * config/i386/i386.c (ix86_print_operand_address_as): Only test
12339         REGNO (base) == SP_REG if base is a REG.
12340
12341         PR middle-end/35691
12342         * tree-ssa-reassoc.c (update_range_test): Dump r->exp each time
12343         if it is different SSA_NAME.
12344         (optimize_range_tests_cmp_bitwise): New function.
12345         (optimize_range_tests): Call it.
12346
12347 2017-09-26  Richard Biener  <rguenther@suse.de>
12348
12349         PR tree-optimization/82321
12350         * graphite.c (canonicalize_loop_closed_ssa): Properly check
12351         for the def being inside the loop.
12352
12353 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12354
12355         * config/s390/vx-builtins.md ("vmslg"): Add missing operand in
12356         assembler output.
12357         * config/s390/s390-builtins.def: Fix constraint on op4.
12358
12359 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12360
12361         * config/s390/s390.c (s390_expand_vec_compare): Use the new mode
12362         independent expanders.
12363         * config/s390/vector.md ("vec_cmpuneq", "vec_cmpltgt")
12364         ("vec_ordered", "vec_unordered"): New expanders.
12365
12366 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12367
12368         * config/s390/s390.c (s390_preferred_simd_mode): Return V4SFmode
12369         for SFmode.
12370
12371 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12372
12373         * config/s390/vector.md ("vec_unpacks_low_v16qi"): Rename to
12374         vec_unpacks_lo_v16qi.
12375         ("vec_unpacku_low_v16qi"): Rename to vec_unpacku_lo_v16qi.
12376
12377 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12378
12379         * config/s390/vector.md ("vec_unpacks_lo_v4sf")
12380         ("vec_unpacks_hi_v4sf", "vec_unpacks_lo_v2df")
12381         ("vec_unpacks_hi_v2df", "vec_pack_trunc_v2df"): New expanders.
12382
12383 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12384
12385         * config/s390/predicates.md ("const_shift_by_byte_operand"): New
12386         predicate.
12387         * config/s390/vector.md ("*vec_srb<mode>"): Change modes to V_128
12388         and V16QI.
12389         ("*vec_slb<mode>"): New insn pattern.
12390         ("vec_shr_<mode>"): New expander.
12391         * config/s390/vx-builtins.md ("vec_slb<mode>"): Turn into expander
12392         and force the shift count operand to V16QImode.
12393         ("vec_srb<mode>"): Set shift count mode to V16QI.
12394
12395 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12396
12397         * config/s390/vector.md ("vec_widen_umult_lo_<mode>")
12398         ("vec_widen_umult_hi_<mode>", "vec_widen_smult_lo_<mode>")
12399         ("vec_widen_smult_hi_<mode>"): New expander definitions.
12400
12401 2017-09-26  Richard Earnshaw  <rearnsha@arm.com>
12402
12403         PR target/82175
12404         * config/arm/arm.h (DRIVER_SELF_SPECS): Separate sub-rules with commas.
12405
12406 2017-09-26  Richard Biener  <rguenther@suse.de>
12407
12408         PR tree-optimization/82320
12409         * tree-ssa-sccvn.c (set_ssa_val_to): Changing undef to undef
12410         isn't a change.
12411
12412 2017-09-25  Jeff Law  <law@redhat.com>
12413
12414         * config/rs6000/rs6000-protos.h (output_probe_stack_range): Update
12415         prototype for new argument.
12416         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack_1): New function,
12417         mostly extracted from rs6000_emit_allocate_stack.
12418         (rs6000_emit_probe_stack_range_stack_clash): New function.
12419         (rs6000_emit_allocate_stack): Call
12420         rs6000_emit_probe_stack_range_stack_clash as needed.
12421         (rs6000_emit_probe_stack_range): Add additional argument
12422         to call to gen_probe_stack_range{si,di}.
12423         (output_probe_stack_range): New.
12424         (output_probe_stack_range_1): Renamed from output_probe_stack_range.
12425         (output_probe_stack_range_stack_clash): New.
12426         (rs6000_emit_prologue): Emit notes into dump file as requested.
12427         * rs6000.md (allocate_stack): Handle -fstack-clash-protection.
12428         (probe_stack_range<P:mode>): Operand 0 is now early-clobbered.
12429         Add additional operand and pass it to output_probe_stack_range.
12430
12431 2017-09-25  Bin Cheng  <bin.cheng@arm.com>
12432
12433         PR tree-optimization/82163
12434         * tree-ssa-loop-manip.h (verify_loop_closed_ssa): New parameter.
12435         (checking_verify_loop_closed_ssa): New parameter.
12436         * tree-ssa-loop-manip.c (check_loop_closed_ssa_use): Delete.
12437         (check_loop_closed_ssa_stmt): Delete.
12438         (check_loop_closed_ssa_def, check_loop_closed_ssa_bb): New functions.
12439         (verify_loop_closed_ssa): Check loop closed ssa form for LOOP.
12440         (tree_transform_and_unroll_loop): Check loop closed ssa form only for
12441         changed loops.
12442
12443 2017-09-25  Pekka Jaaskelainen <pekka@parmance.com>
12444
12445         * brig-builtins.def: Treat HSAIL barrier builtins as
12446         setjmp/longjump style functions.
12447
12448 2017-09-25  Richard Sandiford  <richard.sandiford@linaro.org>
12449
12450         * target.def (constant_alignment): New hook.
12451         * defaults.h (CONSTANT_ALIGNMENT): Delete.
12452         * doc/tm.texi.in (CONSTANT_ALIGNMENT): Replace with...
12453         (TARGET_CONSTANT_ALIGNMENT): ...this new hook.
12454         * doc/tm.texi: Regenerate.
12455         * targhooks.h (default_constant_alignment): Declare.
12456         (constant_alignment_word_strings): Likewise.
12457         * targhooks.c (default_constant_alignment): New function.
12458         (constant_alignment_word_strings): Likewise.
12459         * builtins.c (get_object_alignment_2): Use targetm.constant_alignment
12460         instead of CONSTANT_ALIGNMENT.
12461         * varasm.c (align_variable, get_variable_align, build_constant_desc)
12462         (force_const_mem): Likewise.
12463         * config/aarch64/aarch64.h (CONSTANT_ALIGNMENT): Delete.
12464         * config/aarch64/aarch64.c (aarch64_constant_alignment): New function.
12465         (aarch64_classify_address): Call it instead of CONSTANT_ALIGNMENT.
12466         (TARGET_CONSTANT_ALIGNMENT): Redefine.
12467         * config/alpha/alpha.h (CONSTANT_ALIGNMENT): Delete commented-out
12468         definition.
12469         * config/arc/arc.h (CONSTANT_ALIGNMENT): Delete.
12470         * config/arc/arc.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
12471         constant_alignment_word_strings.
12472         * config/arm/arm.h (CONSTANT_ALIGNMENT_FACTOR): Delete.
12473         (CONSTANT_ALIGNMENT): Likewise.
12474         * config/arm/arm.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
12475         (arm_constant_alignment): New function.
12476         * config/bfin/bfin.h (CONSTANT_ALIGNMENT): Delete.
12477         * config/bfin/bfin.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
12478         constant_alignment_word_strings.
12479         * config/cr16/cr16.h (CONSTANT_ALIGNMENT): Delete.
12480         * config/cr16/cr16.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
12481         constant_alignment_word_strings.
12482         * config/cris/cris.h (CONSTANT_ALIGNMENT): Delete.
12483         * config/cris/cris.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
12484         (cris_constant_alignment): New function.
12485         * config/epiphany/epiphany.h (CONSTANT_ALIGNMENT): Delete.
12486         * config/epiphany/epiphany.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
12487         (epiphany_constant_alignment): New function.
12488         * config/fr30/fr30.h (CONSTANT_ALIGNMENT): Delete.
12489         * config/fr30/fr30.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
12490         constant_alignment_word_strings.
12491         * config/frv/frv.h (CONSTANT_ALIGNMENT): Delete.
12492         * config/frv/frv.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
12493         constant_alignment_word_strings.
12494         * config/ft32/ft32.h (CONSTANT_ALIGNMENT): Delete.
12495         * config/ft32/ft32.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
12496         constant_alignment_word_strings.
12497         * config/i386/i386.h (CONSTANT_ALIGNMENT): Delete.
12498         * config/i386/i386-protos.h (ix86_constant_alignment): Delete.
12499         * config/i386/i386.c (ix86_constant_alignment): Make static.
12500         Use the same interface as the target hook.
12501         (TARGET_CONSTANT_ALIGNMENT): Redefine.
12502         * config/ia64/ia64.h (CONSTANT_ALIGNMENT): Delete.
12503         * config/ia64/ia64.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
12504         constant_alignment_word_strings.
12505         * config/iq2000/iq2000.h (CONSTANT_ALIGNMENT): Delete.
12506         * config/iq2000/iq2000.c (iq2000_constant_alignment): New function.
12507         (TARGET_CONSTANT_ALIGNMENT): Redefine.
12508         * config/lm32/lm32.h (CONSTANT_ALIGNMENT): Delete.
12509         * config/lm32/lm32.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
12510         constant_alignment_word_strings.
12511         * config/m32r/m32r.h (CONSTANT_ALIGNMENT): Delete.
12512         * config/m32r/m32r.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
12513         constant_alignment_word_strings.
12514         * config/mcore/mcore.h (CONSTANT_ALIGNMENT): Delete.
12515         * config/mcore/mcore.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
12516         constant_alignment_word_strings.
12517         * config/microblaze/microblaze.h (CONSTANT_ALIGNMENT): Delete.
12518         * config/microblaze/microblaze.c (microblaze_constant_alignment):
12519         New function.
12520         (TARGET_CONSTANT_ALIGNMENT): Redefine.
12521         * config/mips/mips.h (CONSTANT_ALIGNMENT): Delete.
12522         * config/mips/mips.c (mips_constant_alignment): New function.
12523         (TARGET_CONSTANT_ALIGNMENT): Redefine.
12524         * config/mmix/mmix.h (CONSTANT_ALIGNMENT): Delete.
12525         * config/mmix/mmix-protos.h (mmix_constant_alignment): Delete.
12526         * config/mmix/mmix.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
12527         (mmix_constant_alignment): Make static.  Use the same interface
12528         as the target hook.
12529         * config/moxie/moxie.h (CONSTANT_ALIGNMENT): Delete.
12530         * config/moxie/moxie.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
12531         constant_alignment_word_strings.
12532         * config/nios2/nios2.h (CONSTANT_ALIGNMENT): Delete.
12533         * config/nios2/nios2.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
12534         constant_alignment_word_strings.
12535         * config/pa/pa.h (CONSTANT_ALIGNMENT): Delete.
12536         * config/pa/pa.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
12537         constant_alignment_word_strings.
12538         * config/powerpcspe/powerpcspe.h (CONSTANT_ALIGNMENT): Delete.
12539         * config/powerpcspe/powerpcspe.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
12540         (rs6000_constant_alignment): New function.
12541         * config/riscv/riscv.h (CONSTANT_ALIGNMENT): Delete.
12542         * config/riscv/riscv.c (riscv_constant_alignment): New function.
12543         (TARGET_CONSTANT_ALIGNMENT): Redefine.
12544         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Delete.
12545         * config/rs6000/rs6000.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
12546         (rs6000_constant_alignment): New function.
12547         * config/s390/s390.h (CONSTANT_ALIGNMENT): Delete.
12548         * config/s390/s390.c (s390_constant_alignment): New function.
12549         (TARGET_CONSTANT_ALIGNMENT): Redefine.
12550         * config/sh/sh.h (CONSTANT_ALIGNMENT): Delete.
12551         * config/sh/sh.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
12552         constant_alignment_word_strings.
12553         * config/sparc/sparc.h (CONSTANT_ALIGNMENT): Delete.
12554         * config/sparc/sparc.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
12555         (sparc_constant_alignment): New function.
12556         * config/spu/spu.h (CONSTANT_ALIGNMENT): Delete.
12557         * config/spu/spu.c (spu_constant_alignment): New function.
12558         (TARGET_CONSTANT_ALIGNMENT): Redefine.
12559         * config/stormy16/stormy16.h (CONSTANT_ALIGNMENT): Delete.
12560         * config/stormy16/stormy16.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
12561         constant_alignment_word_strings.
12562         * config/tilegx/tilegx.h (CONSTANT_ALIGNMENT): Delete.
12563         * config/tilegx/tilegx.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
12564         constant_alignment_word_strings.
12565         * config/tilepro/tilepro.h (CONSTANT_ALIGNMENT): Delete.
12566         * config/tilepro/tilepro.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
12567         constant_alignment_word_strings.
12568         * config/visium/visium.h (CONSTANT_ALIGNMENT): Delete.
12569         * config/visium/visium.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
12570         (visium_constant_alignment): New function.
12571         * config/xtensa/xtensa.h (CONSTANT_ALIGNMENT): Delete.
12572         * config/xtensa/xtensa.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
12573         (xtensa_constant_alignment): New function.
12574         * system.h (CONSTANT_ALIGNMENT): Poison.
12575
12576 2017-09-25  Will Schmidt  <will_schmidt@vnet.ibm.com>
12577
12578         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
12579         for early folding of vector stores (ALTIVEC_BUILTIN_ST_*).
12580         (rs6000_builtin_valid_without_lhs): New helper function.
12581         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
12582         Remove obsoleted code for handling ALTIVEC_BUILTIN_VEC_ST.
12583
12584 2017-09-25  Richard Sandiford  <richard.sandiford@linaro.org>
12585
12586         * target.h (vec_perm_indices): Use unsigned short rather than
12587         unsigned char.
12588         (auto_vec_perm_indices): Likewise.
12589         * config/aarch64/aarch64.c (aarch64_vectorize_vec_perm_const_ok):
12590         Use unsigned int rather than unsigned char.
12591         * config/arm/arm.c (arm_vectorize_vec_perm_const_ok): Likewise.
12592
12593 2017-09-25  Richard Biener  <rguenther@suse.de>
12594
12595         * cfgloop.h (sort_sibling_loops): Declare.
12596         * cfgloop.c (sort_sibling_loops_cmp): New helper.
12597         (sort_sibling_loops): New function sorting the sibling loop list
12598         in RPO order.
12599         * graphite.c (graphite_transform_loops): Sort sibling loops.
12600
12601 2017-09-25  Richard Sandiford  <richard.sandifird@linaro.org>
12602
12603         * target.def (vec_perm_const_ok): Change sel parameter to
12604         vec_perm_indices.
12605         * optabs-query.c (can_vec_perm_p): Update accordingly.
12606         * doc/tm.texi: Regenerate.
12607         * config/aarch64/aarch64.c (expand_vec_perm_d): Change perm to
12608         auto_vec_perm_indices and remove separate nelt field.
12609         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
12610         (aarch64_evpc_ext, aarch64_evpc_rev, aarch64_evpc_dup)
12611         (aarch64_evpc_tbl, aarch64_expand_vec_perm_const_1)
12612         (aarch64_expand_vec_perm_const): Update accordingly.
12613         (aarch64_vectorize_vec_perm_const_ok): Likewise.  Change sel
12614         to vec_perm_indices.
12615         * config/arm/arm.c (expand_vec_perm_d): Change perm to
12616         auto_vec_perm_indices and remove separate nelt field.
12617         (arm_evpc_neon_vuzp, arm_evpc_neon_vzip, arm_evpc_neon_vrev)
12618         (arm_evpc_neon_vtrn, arm_evpc_neon_vext, arm_evpc_neon_vtbl)
12619         (arm_expand_vec_perm_const_1, arm_expand_vec_perm_const): Update
12620         accordingly.
12621         (arm_vectorize_vec_perm_const_ok): Likewise.  Change sel
12622         to vec_perm_indices.
12623         * config/i386/i386.c (ix86_vectorize_vec_perm_const_ok): Change
12624         sel to vec_perm_indices.
12625         * config/ia64/ia64.c (ia64_vectorize_vec_perm_const_ok): Likewise.
12626         * config/mips/mips.c (mips_vectorize_vec_perm_const_ok): Likewise.
12627         * config/powerpcspe/powerpcspe.c (rs6000_vectorize_vec_perm_const_ok):
12628         Likewise.
12629         * config/rs6000/rs6000.c (rs6000_vectorize_vec_perm_const_ok):
12630         Likewise.
12631
12632 2017-09-25  Pierre-Marie de Rodat  <derodat@adacore.com>
12633
12634         PR debug/82155
12635         * dwarf2out.c (dwarf2out_early_global_decl): Call dwarf2out_decl
12636         on the FUNCTION_DECL function context if it has a DIE that is a
12637         declaration.
12638
12639 2017-09-25  Richard Biener  <rguenther@suse.de>
12640
12641         PR tree-optimization/82285
12642         * tree-vect-patterns.c (vect_recog_bool_pattern): Also handle
12643         enumeral types.
12644
12645 2017-09-25  Tom de Vries  <tom@codesourcery.com>
12646
12647         PR target/80035
12648         PR target/81069
12649         * config/nvptx/nvptx.c (nvptx_output_call_insn): Add exit after call to
12650         noreturn function.
12651
12652 2017-09-25  Richard Biener  <rguenther@suse.de>
12653
12654         * graphite-optimize-isl.c (optimize_isl): Fail and dump if
12655         ISL errors other than isl_error_quota happen.  Dump if the
12656         schedule is the same.
12657         * graphite-sese-to-poly.c (build_poly_scop): Fail on ISL
12658         errors instead of aborting inside ISL.
12659
12660 2017-09-25  Iain Sandoe  <iain@codesourcery.com>
12661
12662         PR target/80556
12663         * config/i386/darwin.h (REAL_LIB_SPEC): New; put libSystem ahead
12664         of libgcc_eh for m64.
12665         * config/i386/darwin64.h: Likewise.
12666
12667 2017-09-25  Richard Biener  <rguenther@suse.de>
12668
12669         PR middle-end/82144
12670         * dwarf2out.c (gen_enumeration_type_die): Do not add alignment
12671         attribute for incomplete types nor twice for complete ones.
12672
12673 2017-09-24  Uros Bizjak  <ubizjak@gmail.com>
12674
12675         PR target/82267
12676         * config/i386/i386.c (ix86_print_operand_address_as): Encode
12677         %esp as %rsp to avoid 0x67 prefix if there is no index or base
12678         register.
12679
12680 2017-09-23  Uros Bizjak  <ubizjak@gmail.com>
12681
12682         PR bootstrap/82306
12683         * config/i386/i386.opt (mprefer-avx256): Use
12684         ix86_target_flags variable.
12685         * config/i386/i386.c (ix86_target_string): Move
12686         -mprefer-avx256 to flag2_opts.
12687
12688 2017-09-22  Jakub Jelinek  <jakub@redhat.com>
12689
12690         PR middle-end/35691
12691         * match.pd: Simplify x == -1 & y == -1 into (x & y) == -1
12692         and x != -1 | y != -1 into (x & y) != -1.
12693
12694 2017-09-22  Steve Ellcey  <sellcey@cavium.com>
12695
12696         * config.gcc: Add new case statement to set
12697         default_gnu_indirect_function.  Remove it from x86_64-*-linux*,
12698         i[34567]86-*, powerpc*-*-linux*spe*, powerpc*-*-linux*, s390-*-linux*,
12699         s390x-*-linux* case statements.   Added aarch64 to the list of
12700         supported architectures.
12701
12702 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
12703
12704         PR tree-optimization/82289
12705         * tree-vect-data-refs.c (vect_get_peeling_costs_all_drs): Check
12706         STMT_VINFO_RELEVANT_P.
12707
12708 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
12709             Alan Hayward  <alan.hayward@arm.com>
12710             David Sherwood  <david.sherwood@arm.com>
12711
12712         * tree-vrp.c (extract_range_from_multiplicative_op_1): Assert
12713         for VR_RANGE only; don't allow VR_ANTI_RANGE.
12714         (extract_range_from_binary_expr_1): Don't call
12715         extract_range_from_multiplicative_op_1 if !range_int_cst_p.
12716
12717 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
12718             Alan Hayward  <alan.hayward@arm.com>
12719             David Sherwood  <david.sherwood@arm.com>
12720
12721         * target.def (preferred_vector_alignment): New hook.
12722         * doc/tm.texi.in (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New
12723         hook.
12724         * doc/tm.texi: Regenerate.
12725         * targhooks.h (default_preferred_vector_alignment): Declare.
12726         * targhooks.c (default_preferred_vector_alignment): New function.
12727         * tree-vectorizer.h (dataref_aux): Add a target_alignment field.
12728         Expand commentary.
12729         (DR_TARGET_ALIGNMENT): New macro.
12730         (aligned_access_p): Update commentary.
12731         (vect_known_alignment_in_bytes): New function.
12732         * tree-vect-data-refs.c (vect_calculate_required_alignment): New
12733         function.
12734         (vect_compute_data_ref_alignment): Set DR_TARGET_ALIGNMENT.
12735         Calculate the misalignment based on the target alignment rather than
12736         the vector size.
12737         (vect_update_misalignment_for_peel): Use DR_TARGET_ALIGMENT
12738         rather than TYPE_ALIGN / BITS_PER_UNIT to update the misalignment.
12739         (vect_enhance_data_refs_alignment): Mask the byte misalignment with
12740         the target alignment, rather than masking the element misalignment
12741         with the number of elements in a vector.  Also use the target
12742         alignment when calculating the maximum number of peels.
12743         (vect_find_same_alignment_drs): Use vect_calculate_required_alignment
12744         instead of TYPE_ALIGN_UNIT.
12745         (vect_duplicate_ssa_name_ptr_info): Remove stmt_info parameter.
12746         Measure DR_MISALIGNMENT relative to DR_TARGET_ALIGNMENT.
12747         (vect_create_addr_base_for_vector_ref): Update call accordingly.
12748         (vect_create_data_ref_ptr): Likewise.
12749         (vect_setup_realignment): Realign by ANDing with
12750         -DR_TARGET_MISALIGNMENT.
12751         * tree-vect-loop-manip.c (vect_gen_prolog_loop_niters): Calculate
12752         the number of peels based on DR_TARGET_ALIGNMENT.
12753         * tree-vect-stmts.c (get_group_load_store_type): Compare the gap
12754         with the guaranteed alignment boundary when deciding whether
12755         overrun is OK.
12756         (vectorizable_mask_load_store): Interpret DR_MISALIGNMENT
12757         relative to DR_TARGET_ALIGNMENT instead of TYPE_ALIGN_UNIT.
12758         (ensure_base_align): Remove stmt_info parameter.  Get the
12759         target base alignment from DR_TARGET_ALIGNMENT.
12760         (vectorizable_store): Update call accordingly.   Interpret
12761         DR_MISALIGNMENT relative to DR_TARGET_ALIGNMENT instead of
12762         TYPE_ALIGN_UNIT.
12763         (vectorizable_load): Likewise.
12764
12765 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
12766             Alan Hayward  <alan.hayward@arm.com>
12767             David Sherwood  <david.sherwood@arm.com>
12768
12769         * tree-vectorizer.h (vect_get_scalar_dr_size): New function.
12770         * tree-vect-data-refs.c (vect_update_misalignment_for_peel): Use it.
12771         (vect_enhance_data_refs_alignment): Likewise.
12772
12773 2017-09-22  Richard Earnshaw  <richard.earnshaw@arm.com>
12774
12775         * config/arm/parsecpu.awk (fatal): Note that we've encountered an
12776         error.  Only quit immediately if parsing is complete.
12777         (BEGIN): Initialize fatal_err and parse_done.
12778         (begin fpu, end fpu): Check number of arguments.
12779         (begin arch, end arch): Likewise.
12780         (begin cpu, end cpu): Likewise.
12781         (cname, tune for, tune flags, architecture, fpu, option): Likewise.
12782         (optalias): Likewise.
12783
12784 2017-09-22  Richard Earnshaw  <richard.earnshaw@arm.com>
12785
12786         * config.gcc (arm*-*-*): Don't add arm-isa.h to tm_p_file.
12787         * config/arm/arm-isa.h: Delete.  Move definitions to ...
12788         * arm-cpus.in: ... here.  Use new feature and fgroup values.
12789         * config/arm/arm.c (arm_option_override): Use lower case for feature
12790         bit names.
12791         * config/arm/arm.h (TARGET_HARD_FLOAT): Likewise.
12792         (TARGET_VFP3, TARGET_VFP5, TARGET_FMA): Likewise.
12793         * config/arm/parsecpu.awk (END): Add new command 'isa'.
12794         (isa_pfx): Delete.
12795         (print_isa_bits_for): New function.
12796         (gen_isa): New function.
12797         (gen_comm_data): Use print_isa_bits_for.
12798         (define feature): New keyword.
12799         (define fgroup): New keyword.
12800         * config/arm/t-arm (TM_H): Remove.
12801         (GTM_H): Add arm-isa.h.
12802         (arm-isa.h): Add rule to generate file.
12803         * common/config/arm/arm-common.c: (arm_canon_arch_option): Use lower
12804         case for feature bit names.
12805
12806 2017-09-22  Richard Biener  <rguenther@suse.de>
12807
12808         * graphite-isl-ast-to-gimple.c (graphite_verify): Inline into
12809         single caller.
12810         (graphite_regenerate_ast_isl): Do not reset SCEV.  Move debug
12811         print of no dependency loops ...
12812         * graphite.c (graphite_transform_loops): ... here.
12813         (canonicalize_loop_closed_ssa_form): Work from inner to outer
12814         loops.
12815         (same_close_phi_node, remove_duplicate_close_phi,
12816         make_close_phi_nodes_unique, defined_in_loop_p): Fold into ...
12817         (canonicalize_loop_closed_ssa): ... here and simplify.
12818         * graphite-optimize-isl.c: Include tree-vectorizer.h.
12819         (optimize_isl): Use dump_printf_loc to tell when we stopped
12820         optimizing because of an ISL timeout.
12821
12822 2017-09-22  Richard Biener  <rguenther@suse.de>
12823
12824         PR tree-optimization/82291
12825         * tree-if-conv.c (predicate_mem_writes): Make sure to
12826         remove writes in blocks predicated with false.
12827
12828 2017-09-22  Richard Biener  <rguenther@suse.de>
12829
12830         * sese.c: Include cfganal.h.
12831         (if_region_set_false_region): Remove.
12832         (create_if_region_on_edge): Likewise.
12833         (move_sese_in_condition): Re-implement without destroying
12834         dominators.
12835
12836 2017-09-22  Richard Biener  <rguenther@suse.de>
12837
12838         * graphite-isl-ast-to-gimple.c (translate_pending_phi_nodes):
12839         Verify both BBs contain loop PHI nodes before dispatching to
12840         copy_loop_phi_args.
12841         (graphite_regenerate_ast_isl): Do not recompute dominators,
12842         do not verify three times.  Restructure for clarity.
12843         * graphite-scop-detection.c (same_close_phi_node,
12844         remove_duplicate_close_phi, make_close_phi_nodes_unique,
12845         defined_in_loop_p, canonicalize_loop_closed_ssa,
12846         canonicalize_loop_closed_ssa_form): Simplify, remove excess
12847         checking and SSA rewrite, move to ...
12848         * graphite.c: ... here.  Include ssa.h and tree-ssa-loop-manip.h.
12849         (graphite_initialize): Do not pass in ctx, do not reset the
12850         SCEV cache, compute only dominators.
12851         (graphite_transform_loops): Allocate ISL ctx after
12852         graphite_initialize.  Call canonicalize_loop_closed_ssa_form.
12853         Maintain post-dominators only around build_scops.
12854         * sese.c (if_region_set_false_region): Make static.  Free
12855         and recompute dominators.
12856         (move_sese_in_condition): Assert we don't get called with
12857         post-dominators computed.
12858         * sese.h (if_region_set_false_region): Remove.
12859
12860 2017-09-22  Sergey Shalnov  <sergey.shalnov@intel.com>
12861
12862         * config/i386/sse.md ("mov<mode>_internal"): Use <sseinsnmode>
12863         mode attribute for TARGET_AVX512VL.
12864
12865 2017-09-21  Sergey Shalnov  <sergey.shalnov@intel.com>
12866
12867         * config/i386/i386.opt (mprefer-avx256): New option.
12868         * config/i386/i386.c (ix86_target_string): Add -mprefer-avx256
12869         to flag_opts.
12870         (ix86_preferred_simd_mode): Return 256-bit AVX modes
12871         for TARGET_PREFER_AVX256.
12872         * doc/invoke.texi (x86 Options): Document -mprefer-avx256.
12873
12874 2017-09-21  Jeff Law  <law@redhat.com>
12875
12876         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash):
12877         Fix dump output if the only stack space is for pushed registers.
12878
12879 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
12880
12881         * config/spu/spu.c (spu_sched_adjust_cost): Update after renaming
12882         of insn_cost.
12883
12884 2017-09-21  Martin Sebor  <msebor@redhat.com>
12885
12886         PR c/81882
12887         * doc/extend.texi (attribute ifunc): Avoid relying on ill-formed
12888         code (in C++) or code that triggers warnings.
12889
12890 2017-09-21  Eric Botcazou  <ebotcazou@adacore.com>
12891
12892         * stor-layout.c (bit_from_pos): Do not distribute the conversion.
12893
12894 2017-09-21  Segher Boessenkool  <segher@kernel.crashing.org>
12895
12896         * haifa-sched.c: Rename insn_cost to insn_sched_cost.
12897         * sched-rgn.c: Ditto.
12898         * sel-sched-ir.c: Ditto.
12899
12900 2017-09-21  Alexander Monakov  <amonakov@ispras.ru>
12901
12902         * toplev.h (set_random_seed): Adjust return type.
12903         * toplev.c (init_local_tick): Move eager initialization of random_seed
12904         to get_random_seed.  Adjust comment.
12905         (init_random_seed): Inline to get_random_seed, delete.
12906         (get_random_seed): Initialize random_seed lazily.
12907         (set_random_seed): Do not return previous value.
12908         (print_switch_value): Do not call get_random_seed.
12909
12910 2017-09-21  Evgeny Kudryashov  <kudryashov@ispras.ru>
12911
12912         * cgraph.c (delete_function_version): New, broken out from...
12913         (cgraph_node::delete_function_version): ...here.  Rename to
12914         cgraph_node::delete_function_version_by_decl.  Update all uses.
12915         (cgraph_node::remove): Call delete_function_version.
12916
12917 2017-09-21  Jakub Jelinek  <jakub@redhat.com>
12918
12919         PR sanitizer/81715
12920         * tree-inline.c (expand_call_inline): Emit clobber stmts for
12921         VAR_DECLs to which addressable non-volatile parameters are mapped
12922         and for id->retvar after the return value assignment.  Clear
12923         id->retval and id->retbnd after inlining.
12924
12925 2017-09-21  Richard Biener  <rguenther@suse.de>
12926
12927         PR tree-optimization/82276
12928         PR tree-optimization/82244
12929         * tree-vrp.c (build_assert_expr_for): Set
12930         SSA_NAME_OCCURS_IN_ABNORMAL_PHI if the variable we assert on
12931         has it set.
12932         (remove_range_assertions): Revert earlier change.
12933
12934 2017-09-21  Wilco Dijkstra  <wdijkstr@arm.com>
12935
12936         PR target/71951
12937         * config/aarch64/aarch64.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
12938
12939 2017-09-21  Richard Biener  <rguenther@suse.de>
12940
12941         * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl):
12942         Restore valid IL after code generation errors.
12943         * graphite.c (graphite_transform_loops): Diagnose code
12944         generation issues as MSG_MISSED_OPTIMIZATION and continue
12945         with processing SCOPs.
12946
12947 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
12948             Alan Hayward  <alan.hayward@arm.com>
12949             David Sherwood  <david.sherwood@arm.com>
12950
12951         * calls.c (compute_argument_addresses): Use simplify_gen_binary
12952         rather than choosing between plus_constant and gen_rtx_<CODE>.
12953         * expr.c (emit_push_insn): Likewise.
12954         (expand_expr_real_2): Likewise.
12955
12956 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
12957             Alan Hayward  <alan.hayward@arm.com>
12958             David Sherwood  <david.sherwood@arm.com>
12959
12960         * loop-unroll.c (split_iv): Call copy_rtx on the step.
12961
12962 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
12963             Alan Hayward  <alan.hayward@arm.com>
12964             David Sherwood  <david.sherwood@arm.com>
12965
12966         * tree.c (find_atomic_core_type): Check tree_fits_uhwi_p before
12967         calling tree_to_uhwi.
12968
12969 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
12970             Alan Hayward  <alan.hayward@arm.com>
12971             David Sherwood  <david.sherwood@arm.com>
12972
12973         * tree-ssa-ccp.c (get_value_for_expr): Use a positive test for
12974         INTEGER_CST rather than a negative test for ADDR_EXPR.
12975
12976 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
12977             Alan Hayward  <alan.hayward@arm.com>
12978             David Sherwood  <david.sherwood@arm.com>
12979
12980         * tree-vrp.c (extract_range_from_binary_expr_1): Check
12981         int_cst_rangeN before calling value_range_constant_singleton (&vrN).
12982
12983 2017-09-21  Richard Biener  <rguenther@suse.de>
12984
12985         PR tree-optimization/71351
12986         * graphite-isl-ast-to-gimple.c (translate_isl_ast_to_gimple::
12987         graphite_create_new_loop_guard): Remove, fold remaining parts
12988         into caller ...
12989         (translate_isl_ast_node_for): ... here and simplify.
12990
12991 2017-09-21  Jakub Jelinek  <jakub@redhat.com>
12992
12993         PR target/82260
12994         * config/i386/i386.md (*movqi_internal): Replace (=q,q) alternative
12995         with (=Q,Q), (=R,R) and (=r,r) alternatives, only enable the
12996         latter two for 64-bit, renumber alternatives, for -Os imov (=q,n)
12997         alternative always use QI mode, for -Os imov (=R,R) alternative
12998         always use SI mode, for imov (=Q,Q) or (=r,r) alternatives
12999         ignore -Os.
13000
13001 2017-09-20  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13002             Jeff Law  <law@redhat.com>
13003
13004         * config/s390/s390.c (MIN_UNROLL_PROBES): Define.
13005         (allocate_stack_space): New function, partially extracted from
13006         s390_emit_prologue.
13007         (s390_emit_prologue): Track offset to most recent stack probe.
13008         Code to allocate space moved into allocate_stack_space.
13009         Dump actions when no stack is allocated.
13010         (s390_prologue_plus_offset): New function.
13011         (s390_emit_stack_probe): Likewise.
13012
13013 2017-09-20  Alexandre Oliva  <aoliva@redhat.com>
13014
13015         * common.opt (Wa, Wl, Wp, g, gz=): Add
13016         RejectNegative.
13017         (gno-column-info): Remove.
13018         (gcolumn-info): Drop RejectNegative.
13019         (gno-): New prefix.
13020         (gno-record-gcc-switches): Remove.
13021         (grecord-gcc-switches): Drop RejectNegative.
13022         (gno-split-dwarf): Remove.
13023         (gsplit-dwarf): Drop RejectNegative.
13024         (gno-strict-dwarf): Remove.
13025         (gstrict-dwarf): Drop RejectNegative.
13026         * config/darwin.opt (gfull, gused): Add RejectNegative.
13027         * dwarf2out.c (gen_producer_string): Drop
13028         gno-record-gcc-switches handler.
13029         * optc-gen.awk: Add g to prefixes with negative forms.
13030         * opts-common.c (remapping_prefix_p): New.
13031         (find_opt): Check it.
13032         (generate_canonical_option): Test g prefix.
13033         (option_map): Add -gno- mapping.
13034         (add_misspelling_candidates): Check remapping_prefix_p.
13035
13036 2017-09-20  Jeff Law  <law@redhat.com>
13037
13038         * config/powerpcspe/powerpcspe.c (rs6000_expand_prologue): Fix
13039         thinko in stack clash protection support.
13040
13041         * explow.c (compute_stack_clash_protection_loop_data): Use
13042         CONST_INT_P instead of explicit test.  Verify object is a
13043         CONST_INT_P before looking at INTVAL.
13044         (anti_adjust_stack_and_probe_stack_clash): Use CONST_INT_P
13045         instead of explicit test.
13046
13047 2017-09-20  Segher Boessenkool  <segher@kernel.crashing.org>
13048
13049         PR target/77687
13050         * config/rs6000/rs6000.md (stack_restore_tie): Store to a scratch
13051         address instead of to r1 and r11.
13052
13053 2017-09-20  Sebastian Peryt  <sebastian.peryt@intel.com>
13054
13055         * config.gcc: Support "knm".
13056         * config/i386/driver-i386.c (host_detect_local_cpu): Detect "knm".
13057         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
13058         PROCESSOR_KNM.
13059         * config/i386/i386.c (m_KNM): Define.
13060         (processor_target_table): Add "knm".
13061         (PTA_KNM): Define.
13062         (ix86_option_override_internal): Add "knm".
13063         (ix86_issue_rate): Add PROCESSOR_KNM.
13064         (ix86_adjust_cost): Ditto.
13065         (ia32_multipass_dfa_lookahead): Ditto.
13066         (get_builtin_code_for_version): Handle PROCESSOR_KNM.
13067         (fold_builtin_cpu): Add M_INTEL_KNM.
13068         * config/i386/i386.h (processor_costs): Define TARGET_KNM.
13069         (processor_type): Add PROCESSOR_KNM.
13070         * config/i386/x86-tune.def: Add m_KNM.
13071         * doc/invoke.texi: Add knm as x86 -march=/-mtune= CPU type.
13072
13073 2017-09-20  Richard Biener  <rguenther@suse.de>
13074
13075         PR tree-optimization/80213
13076         * graphite-scop-detection.c (trivially_empty_bb_p): Labels
13077         are allowed in empty BBs as well.
13078         (canonicalize_loop_closed_ssa): Also look for other complex
13079         edges.
13080         (scop_detection::get_sese): Include the loop-closed PHI block
13081         in loop SESEs.
13082         (scop_detection::merge_sese): Remove code adding extra blocks.
13083         (scop_detection::region_has_one_loop): Adjust for get_sese changes.
13084         (build_scops): Assert the final returned scop is invalid.
13085
13086 2017-09-20  Richard Biener  <rguenther@suse.de>
13087
13088         PR tree-optimization/82264
13089         * tree-ssa-sccvn.c (vn_phi_eq): Use safe_dyn_cast to check
13090         for GIMPLE_CONDs.
13091         (vn_phi_lookup): Likewise.
13092         (vn_phi_insert): Likewise.
13093
13094 2017-09-20  Jakub Jelinek  <jakub@redhat.com>
13095
13096         * dwarf2out.c (tree_add_const_value_attribute): For INTEGER_CST
13097         that fits into uhwi or shwi, add DW_AT_const_value regardless
13098         of early_dwarf without going through RTL, using add_AT_unsigned
13099         or add_AT_int.
13100
13101         * dwarf2out.c (DEBUG_LTO_DWO_INFO_SECTION): Reorder defines.
13102         (DEBUG_LTO_ABBREV_SECTION): Likewise.
13103         (DEBUG_LTO_MACINFO_SECTION): Likewise.
13104         (DEBUG_MACRO_SECTION): Likewise.
13105         (DEBUG_LTO_MACRO_SECTION): Likewise.
13106         (DEBUG_STR_DWO_SECTION): Likewise.
13107         (DEBUG_LTO_STR_DWO_SECTION): Likewise.
13108         (DEBUG_LTO_LINE_SECTION): Drop .dwo suffix from the name.
13109         (DEBUG_LTO_DWO_LINE_SECTION): Define.
13110         (DEBUG_LTO_LINE_STR_SECTION): Define.
13111         (init_sections_and_labels): Initialize debug_line_str_section
13112         variable.  Initialize debug_loc_section for -gdwarf-5 to
13113         DEBUG_LOCLISTS_SECTION.  Formatting fixes.
13114
13115 2017-09-20  Richard Biener  <rguenther@suse.de>
13116
13117         * graphite-sese-to-poly.c (extract_affine): Properly handle
13118         POINTER_PLUS_EXPR, BIT_NOT_EXPR and conversion to signed.
13119
13120 2017-09-20  Richard Biener  <rguenther@suse.de>
13121
13122         PR tree-optimization/81373
13123         * graphite-scop-detection.c (build_cross_bb_scalars_def):
13124         Force SESE live-out defs to be handled even if they are
13125         scev_analyzable_p.
13126
13127 2017-09-19  Jeff Law  <law@redhat.com>
13128
13129         * combine-stack-adj.c (combine_stack_adjustments_for_block): Do
13130         nothing for stack adjustments with REG_STACK_CHECK.
13131         * sched-deps.c (parse_add_or_inc): Reject insns with
13132         REG_STACK_CHECK from dependency breaking.
13133         * config/i386/i386.c (pro_epilogue_adjust_stack): Return insn.
13134         (ix86_adjust_satck_and_probe_stack_clash): Add REG_STACK_NOTEs.
13135         * reg-notes.def (STACK_CHECK): New note.
13136
13137         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): New.
13138         (ix86_expand_prologue): Dump stack clash info as needed.
13139         Call ix86_adjust_stack_and_probe_stack_clash as needed.
13140
13141         * function.c (dump_stack_clash_frame_info): New function.
13142         * function.h (dump_stack_clash_frame_info): Prototype.
13143         (enum stack_clash_probes): New enum.
13144
13145         * config/alpha/alpha.c (alpha_expand_prologue): Also check
13146         flag_stack_clash_protection.
13147         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Likewise.
13148         (arm_expand_prologue, thumb1_expand_prologue): Likewise.
13149         (arm_frame_pointer_required): Likewise.
13150         * config/ia64/ia64.c (ia64_compute_frame_size): Likewise.
13151         (ia64_expand_prologue): Likewise.
13152         * config/mips/mips.c (mips_expand_prologue): Likewise.
13153         * config/powerpcspe/powerpcspe.c (rs6000_expand_prologue): Likewise.
13154         * config/sparc/sparc.c (sparc_expand_prologue): Likewise.
13155         (sparc_flat_expand_prologue): Likewise.
13156         * config/spu/spu.c (spu_expand_prologue): Likewise.
13157
13158         * explow.c: Include "params.h".
13159         (anti_adjust_stack_and_probe_stack_clash): New function.
13160         (get_stack_check_protect): Likewise.
13161         (compute_stack_clash_protection_loop_data): Likewise.
13162         (emit_stack_clash_protection_loop_start): Likewise.
13163         (emit_stack_clash_protection_loop_end): Likewise.
13164         (allocate_dynamic_stack_space): Use get_stack_check_protect.
13165         Use anti_adjust_stack_and_probe_stack_clash.
13166         * explow.h (compute_stack_clash_protection_loop_data): Prototype.
13167         (emit_stack_clash_protection_loop_start): Likewise.
13168         (emit_stack_clash_protection_loop_end): Likewise.
13169         * rtl.h (get_stack_check_protect): Prototype.
13170         * target.def (stack_clash_protection_final_dynamic_probe): New hook.
13171         * targhooks.c (default_stack_clash_protection_final_dynamic_probe): New.
13172         * targhooks.h (default_stack_clash_protection_final_dynamic_probe):
13173         Prototype.
13174         * doc/tm.texi.in (TARGET_STACK_CLASH_PROTECTION_FINAL_DYNAMIC_PROBE):
13175         Add @hook.
13176         * doc/tm.texi: Rebuilt.
13177         * config/aarch64/aarch64.c (aarch64_expand_prologue): Use
13178         get_stack_check_protect.
13179         * config/alpha/alpha.c (alpha_expand_prologue): Likewise.
13180         * config/arm/arm.c (arm_expand_prologue): Likewise.
13181         (arm_frame_pointer_required): Likewise.
13182         * config/i386/i386.c (ix86_expand_prologue): Likewise.
13183         * config/ia64/ia64.c (ia64_expand_prologue): Likewise.
13184         * config/mips/mips.c (mips_expand_prologue): Likewise.
13185         * config/powerpcspe/powerpcspe.c (rs6000_emit_prologue): Likewise.
13186         * config/rs6000/rs6000.c (rs6000_emit_prologue): Likewise.
13187         * config/sparc/sparc.c (sparc_expand_prologue): Likewise.
13188         (sparc_flat_expand_prologue): Likewise.
13189
13190         * common.opt (-fstack-clash-protection): New option.
13191         * flag-types.h (enum stack_check_type): Note difference between
13192         -fstack-check= and -fstack-clash-protection.
13193         * params.def (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE): New PARAM.
13194         (PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL): Likewise.
13195         * toplev.c (process_options): Issue warnings/errors for cases
13196         not handled with -fstack-clash-protection.
13197         * doc/invoke.texi (-fstack-clash-protection): Document new option.
13198         (-fstack-check): Note additional problem with -fstack-check=generic.
13199         Note that -fstack-check is primarily for Ada and refer users
13200         to -fstack-clash-protection for stack-clash-protection.
13201         Document new params for stack clash protection.
13202
13203 2017-09-19  Uros Bizjak  <ubizjak@gmail.com>
13204
13205         * config/i386/i386.c (ix86_split_long_move): Do not handle
13206         address used for LEA in a special way.
13207
13208 2017-09-19  Segher Boessenkool  <segher@kernel.crashing.org>
13209
13210         * simplify-rtx.c (simplify_binary_operation_1): Fix typo in comment.
13211
13212 2017-09-19  Martin Sebor  <msebor@redhat.com>
13213
13214         PR c/81854
13215         * cgraphunit.c (handle_alias_pairs): Reject aliases between functions
13216         of incompatible types.
13217
13218 2017-09-19  Will Schmidt  <will_schmidt@vnet.ibm.com>
13219
13220         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
13221         for early folding of vector loads (ALTIVEC_BUILTIN_LVX_*).
13222         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
13223         Remove obsoleted code for handling ALTIVEC_BUILTIN_VEC_LD.
13224
13225 2017-09-19  Richard Biener  <rguenther@suse.de>
13226
13227         PR tree-optimization/82244
13228         * tree-vrp.c (remove_range_assertions): Do not propagate
13229         a constant to abnormals but replace the assert with a copy.
13230
13231 2017-09-19  Alexander Monakov  <amonakov@ispras.ru>
13232
13233         PR rtl-optimization/57878
13234         PR rtl-optimization/68988
13235         * lra-assigns.c (reload_pseudo_compare_func): Remove fragmentation
13236         avoidance test involving non_reload_pseudos.  Move frequency test
13237         below the general fragmentation avoidance test.
13238
13239 2017-09-19  Richard Biener  <rguenther@suse.de>
13240
13241         PR tree-optimization/69728
13242         * graphite-sese-to-poly.c (schedule_error): New global.
13243         (add_loop_schedule): Handle empty domain by failing the
13244         schedule.
13245         (build_original_schedule): Handle schedule_error.
13246
13247 2017-09-19  Richard Biener  <rguenther@suse.de>
13248
13249         * graphite-scop-detection.c (scop_detection::can_represent_loop):
13250         Do not iterate to sibling loops but only to siblings of inner
13251         loops.
13252
13253 2017-09-18  Andreas Schwab  <schwab@linux-m68k.org>
13254
13255         PR target/81613
13256         * config/m68k/m68k.md (moveq feeding equality comparison): Check
13257         that the registers are different.
13258
13259 2017-09-18  Uros Bizjak  <ubizjak@gmail.com>
13260
13261         * config/i386/i386.c (fold_builtin_cpu): Add M_AMDFAM17H
13262         to processor_model and "amdfam17h" to arch_names_table.
13263         * doc/extend.texi (__builtin_cpu_is): Document amdfam17h CPU name.
13264
13265 2017-09-18  Jakub Jelinek  <jakub@redhat.com>
13266
13267         PR c/82234
13268         * doc/extend.texi: Add @findex entry for __builtin_shuffle.
13269
13270 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
13271             Alan Hayward  <alan.hayward@arm.com>
13272             David Sherwood  <david.sherwood@arm.com>
13273
13274         * tree-vectorizer.h (vect_slp_analyze_operations): Replace parameters
13275         with a vec_info *.
13276         * tree-vect-loop.c (vect_analyze_loop_operations): Update call
13277         accordingly.
13278         * tree-vect-slp.c (vect_slp_analyze_node_operations): Add vec_info *
13279         parameter.  Set SLP_TREE_NUMBER_OF_VEC_STMTS here rather than in
13280         vect_schedule_slp_instance.
13281         (vect_slp_analyze_operations): Replace parameters with a vec_info *.
13282         Update call to vect_slp_analyze_node_operations.  Simplify return
13283         value.
13284         (vect_slp_analyze_bb_1): Update call accordingly.
13285         (vect_schedule_slp_instance): Remove vectorization_factor parameter.
13286         Don't calculate SLP_TREE_NUMBER_OF_VEC_STMTS here.
13287         (vect_schedule_slp): Update call accordingly.
13288
13289 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
13290             Alan Hayward  <alan.hayward@arm.com>
13291             David Sherwood  <david.sherwood@arm.com>
13292
13293         * tree-vect-data-refs.c (vect_get_smallest_scalar_type): Cope
13294         with types that aren't in fact scalar.
13295
13296 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
13297
13298         * tree-vect-slp.c (vect_record_max_nunits): New function,
13299         split out from...
13300         (vect_build_slp_tree_1): ...here.
13301         (vect_build_slp_tree_2): Call it for phis too.
13302
13303 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
13304
13305         * tree-vect-stmts.c (vectorizable_mask_load_store): Pass mask_vectype
13306         to vect_get_vec_def_for_operand when getting the mask operand.
13307
13308 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
13309             Alan Hayward  <alan.hayward@arm.com>
13310             David Sherwood  <david.sherwood@arm.com>
13311
13312         * tree-vect-loop.c (vectorizable_live_operation): Fix type of
13313         bitstart.
13314
13315 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
13316             Alan Hayward  <alan.hayward@arm.com>
13317             David Sherwood  <david.sherwood@arm.com>
13318
13319         * tree-vect-loop.c (vectorizable_live_operation): Fix element size
13320         calculation for vector booleans.
13321
13322 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
13323             Alan Hayward  <alan.hayward@arm.com>
13324             David Sherwood  <david.sherwood@arm.com>
13325
13326         * tree-vect-stmts.c (can_vectorize_live_stmts): New function,
13327         split out from...
13328         (vect_transform_stmt): ...here.
13329         (vect_analyze_stmt): Use it instead of calling
13330         vectorizable_live_operation directly.
13331
13332 2017-09-18  Cesar Philippidis  <cesar@codesourcery.com>
13333
13334         * omp-offload.c (oacc_xform_loop): Enable SIMD vectorization on
13335         non-SIMT targets in acc vector loops.
13336
13337 2017-09-18  Claudiu Zissulescu  <claziss@synopsys.com>
13338
13339         * configure.ac: Add arc and check if assembler supports gdwarf2.
13340         * configure: Regenerate.
13341
13342 2017-09-18  Richard Biener  <rguenther@suse.de>
13343
13344         PR tree-optimization/82220
13345         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Exclude
13346         epilogue niters from the min_profitable_iters compute.
13347
13348 2017-09-18  Jakub Jelinek  <jakub@redhat.com>
13349
13350         PR target/82145
13351         * config/i386/i386.c (ix86_init_large_pic_reg): Revert 2017-09-01
13352         changes.  Turn CODE_LABEL into NOTE_INSN_DELETED_LABEL immediately.
13353         (ix86_init_pic_reg): Revert 2017-09-01 changes.
13354
13355 2017-09-18  Eric Botcazou  <ebotcazou@adacore.com>
13356
13357         PR target/81361
13358         * dwarf2cfi.c (add_cfis_to_fde): Do not generate DW_CFA_set_loc after
13359         switching to a new text section.
13360
13361 2017-09-18  Richard Biener  <rguenther@suse.de>
13362
13363         * graphite-scop-detection.c (scop_detection::stmt_has_simple_data_ref):
13364         Simplify.
13365         (build_alias_set): Reject aliases with no access function.
13366
13367 2017-09-18  Richard Biener  <rguenther@suse.de>
13368
13369         PR tree-optimization/79622
13370         * graphite-scop-detection.c (build_cross_bb_scalars_def): Properly
13371         handle PHIs.
13372         (build_cross_bb_scalars_use): Likewise.
13373
13374 2017-09-18  Pierre-Marie de Rodat  <derodat@adacore.com>
13375
13376         * cgraph.h (cgraph_thunk_info): Fix a typo in a comment.
13377
13378 2017-09-18  Alan Modra  <amodra@gmail.com>
13379
13380         PR target/81996
13381         * gcc/config/rs6000/rs6000.c (rs6000_return_addr): Use
13382         stack_pointer_rtx for count 0.  Update comments.  Break up
13383         large rtl expression.
13384
13385 2017-09-17  Daniel Santos  <daniel.santos@pobox.com>
13386
13387         * config/i386/i386.c (xlogue_layout::STUB_NAME_MAX_LEN):
13388         Increase to 20 bytes.
13389         (xlogue_layout::s_stub_names): Add an additional size-2 diminsion.
13390         (xlogue_layout::get_stub_name): Modify to select the appropairate sse
13391         or avx version of the stub.
13392
13393 2017-09-17  H.J. Lu  <hongjiu.lu@intel.com>
13394
13395         PR target/82166
13396         * config/i386/i386.c (ix86_finalize_stack_frame_flags): Properly
13397         compute the minimum stack alignment.  Also update preferred stack
13398         boundary for leaf functions.
13399
13400 2017-09-16  Richard Sandiford  <richard.sandiford@linaro.org>
13401
13402         PR tree-optimization/82228
13403         * tree-vect-loop.c (vectorizable_live_operation): Move initialization
13404         of ncopies.
13405
13406 2017-09-16  Chung-Ju Wu  <jasonwucj@gmail.com>
13407
13408         * common/config/nds32/nds32-common.c
13409         (nds32_option_optimization_table): Refine formatting.
13410         (nds32_option_optimization_table): Use -fsched-pressure and
13411         -fomit-frame-pointer for specific optimization level.
13412
13413 2017-09-16  Chung-Ju Wu  <jasonwucj@gmail.com>
13414
13415         * config/nds32/nds32.c: Refine formatting and comments.
13416         * config/nds32/nds32.h: Likewise.
13417         * config/nds32/nds32.md: Likewise.
13418         * config/nds32/nds32-cost.c: Likewise.
13419         * config/nds32/nds32-isr.c: Likewise.
13420         * config/nds32/nds32-md-auxiliary.c: Likewise.
13421         * config/nds32/nds32-multiple.md: Likewise.
13422         * config/nds32/nds32-predicates.c: Likewise.
13423
13424 2017-09-15  Andrew Sutton  <andrew.n.sutton@gmail.com>
13425             Jakub Jelinek  <jakub@redhat.com>
13426
13427         Add support for -std=c++2a.
13428         * doc/cpp.texi (__cplusplus): Document value for -std=c++2a
13429         or -std=gnu+2a.
13430         * doc/invoke.texi: Document -std=c++2a and -std=gnu++2a.
13431
13432 2017-09-15  Steve Ellcey  <sellcey@cavium.com>
13433
13434         PR target/82066
13435         * doc/extend.texi (Common Function Attributes): Add 
13436         references to ARM, AArch64, and S/390 specific attributes.
13437         (Function Specific Option Pragmas): Add AArch64 and S/390
13438         to list of back ends that support the target pragma.
13439
13440 2017-09-15  Nathan Sidwell  <nathan@acm.org>
13441
13442         * doc/standards.texi: Fix C++17 description.  Update URLs for
13443         C++11 & 14.
13444
13445 2017-09-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>
13446
13447         * common.opt (Wcast-align=strict): New warning option.
13448         * doc/invoke.texi: Document -Wcast-align=strict. 
13449
13450 2017-09-15  Pierre-Marie de Rodat  <derodat@adacore.com>
13451
13452         * cgraph.h (cgraph_thunk_info): Add comments.
13453         * cgraph.c (cgraph_node::create_thunk): Adjust comment, make
13454         assert for VIRTUAL_* arguments stricter.
13455
13456 2017-09-15  Jackson Woodruff  <jackson.woodruff@arm.com>
13457
13458         PR tree-optimization/71026
13459         * match.pd: Move RDIV patterns from fold-const.c
13460         * fold-const.c (distribute_real_division): Removed.
13461         (fold_binary_loc): Remove calls to distribute_real_divison.
13462
13463 2017-09-15  Jakub Jelinek  <jakub@redhat.com>
13464
13465         * doc/invoke.texi: Document -std=c++17 and -std=gnu++17 and document
13466         c++1z and gnu++1z as deprecated.  Change other references to
13467         -std=c++1z to -std=c++17 and -std=gnu++1z to -std=gnu++17.
13468         Change -Wc++1z-compat to -Wc++17-compat.
13469         * doc/cpp.texi: Document -std=c++17 defines __cplusplus 201703L.
13470         * dwarf2out.c (highest_c_language): Handle C++17.
13471         (gen_compile_unit_die): Likewise.
13472
13473 2017-09-15  Jakub Jelinek  <jakub@redhat.com>
13474
13475         PR rtl-optimization/82192
13476         * combine.c (make_extraction): Don't look through non-paradoxical
13477         SUBREGs or TRUNCATE if pos + len is or might be bigger than
13478         inner's mode.
13479
13480 2017-09-15  Richard Sandiford  <richard.sandiford@linaro.org>
13481             Alan Hayward  <alan.hayward@arm.com>
13482             David Sherwood  <david.sherwood@arm.com>
13483
13484         * target.def (function_arg_offset): New hook.
13485         * targhooks.h (default_function_arg_offset): Declare.
13486         * targhooks.c (default_function_arg_offset): New function.
13487         * function.c (locate_and_pad_parm): Use
13488         targetm.calls.function_arg_offset instead of FUNCTION_ARG_OFFSET.
13489         * doc/tm.texi.in (FUNCTION_ARG_OFFSET): Replace with...
13490         (TARGET_FUNCTION_ARG_OFFSET): ...this.
13491         * doc/tm.texi: Regenerate.
13492         * config/spu/spu.h (FUNCTION_ARG_OFFSET): Delete.
13493         * config/spu/spu.c (spu_function_arg_offset): New function.
13494         (TARGET_FUNCTION_ARG_OFFSET): Redefine.
13495         * system.h (FUNCTION_ARG_OFFSET): Poison.
13496
13497 2017-09-15  Richard Sandiford  <richard.sandiford@linaro.org>
13498             Alan Hayard  <alan.hayward@arm.com>
13499             David Sherwood  <david.sherwood@arm.com>
13500
13501         * target.def (truly_noop_truncation): New hook.
13502         (mode_rep_extended): Refer to TARGET_TRULY_NOOP_TRUNCATION rather
13503         than TRULY_NOOP_TRUNCATION.
13504         * hooks.h (hook_bool_uint_uint_true): Declare.
13505         * hooks.c (hook_bool_uint_uint_true): New function.
13506         * doc/tm.texi.in (TRULY_NOOP_TRUNCATION): Replace with...
13507         (TARGET_TRULY_NOOP_TRUNCATION): ...this.
13508         * doc/tm.texi: Regenerate.
13509         * combine.c (make_extraction): Refer to TARGET_TRULY_NOOP_TRUNCATION
13510         rather than TRULY_NOOP_TRUNCATION in comments.
13511         (simplify_comparison): Likewise.
13512         (record_truncated_value): Likewise.
13513         * expmed.c (extract_bit_field_1): Likewise.
13514         (extract_split_bit_field): Likewise.
13515         * convert.c (convert_to_integer_1): Use targetm.truly_noop_truncation
13516         instead of TRULY_NOOP_TRUNCATION.
13517         * function.c (assign_parm_setup_block): Likewise.
13518         * machmode.h (TRULY_NOOP_TRUNCATION_MODES_P): Likewise.
13519         * rtlhooks.c: Include target.h.
13520         * config/aarch64/aarch64.h (TRULY_NOOP_TRUNCATION): Delete.
13521         * config/alpha/alpha.h (TRULY_NOOP_TRUNCATION): Delete.
13522         * config/arc/arc.h (TRULY_NOOP_TRUNCATION): Delete.
13523         * config/arm/arm.h (TRULY_NOOP_TRUNCATION): Delete.
13524         * config/avr/avr.h (TRULY_NOOP_TRUNCATION): Delete.
13525         * config/bfin/bfin.h (TRULY_NOOP_TRUNCATION): Delete.
13526         * config/c6x/c6x.h (TRULY_NOOP_TRUNCATION): Delete.
13527         * config/cr16/cr16.h (TRULY_NOOP_TRUNCATION): Delete.
13528         * config/cris/cris.h (TRULY_NOOP_TRUNCATION): Delete.
13529         * config/epiphany/epiphany.h (TRULY_NOOP_TRUNCATION): Delete.
13530         * config/fr30/fr30.h (TRULY_NOOP_TRUNCATION): Delete.
13531         * config/frv/frv.h (TRULY_NOOP_TRUNCATION): Delete.
13532         * config/ft32/ft32.h (TRULY_NOOP_TRUNCATION): Delete.
13533         * config/h8300/h8300.h (TRULY_NOOP_TRUNCATION): Delete.
13534         * config/i386/i386.h (TRULY_NOOP_TRUNCATION): Delete.
13535         * config/ia64/ia64.h (TRULY_NOOP_TRUNCATION): Delete.
13536         * config/iq2000/iq2000.h (TRULY_NOOP_TRUNCATION): Delete.
13537         * config/lm32/lm32.h (TRULY_NOOP_TRUNCATION): Delete.
13538         * config/m32c/m32c.h (TRULY_NOOP_TRUNCATION): Delete.
13539         * config/m32r/m32r.h (TRULY_NOOP_TRUNCATION): Delete.
13540         * config/m68k/m68k.h (TRULY_NOOP_TRUNCATION): Delete.
13541         * config/mcore/mcore.h (TRULY_NOOP_TRUNCATION): Delete.
13542         * config/microblaze/microblaze.h (TRULY_NOOP_TRUNCATION): Delete.
13543         * config/mips/mips.h (TRULY_NOOP_TRUNCATION): Delete.
13544         * config/mips/mips.c (mips_truly_noop_truncation): New function.
13545         (TARGET_TRULY_NOOP_TRUNCATION): Redefine.
13546         * config/mips/mips.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
13547         rather than TRULY_NOOP_TRUNCATION in comments.
13548         * config/mmix/mmix.h (TRULY_NOOP_TRUNCATION): Delete.
13549         * config/mn10300/mn10300.h (TRULY_NOOP_TRUNCATION): Delete.
13550         * config/moxie/moxie.h (TRULY_NOOP_TRUNCATION): Delete.
13551         * config/msp430/msp430.h (TRULY_NOOP_TRUNCATION): Delete.
13552         * config/nds32/nds32.h (TRULY_NOOP_TRUNCATION): Delete.
13553         * config/nios2/nios2.h (TRULY_NOOP_TRUNCATION): Delete.
13554         * config/nvptx/nvptx.h (TRULY_NOOP_TRUNCATION): Delete.
13555         * config/pa/pa.h (TRULY_NOOP_TRUNCATION): Delete.
13556         * config/pdp11/pdp11.h (TRULY_NOOP_TRUNCATION): Delete.
13557         * config/powerpcspe/powerpcspe.h (TRULY_NOOP_TRUNCATION): Delete.
13558         * config/riscv/riscv.h (TRULY_NOOP_TRUNCATION): Delete.
13559         * config/riscv/riscv.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
13560         rather than TRULY_NOOP_TRUNCATION in comments.
13561         * config/rl78/rl78.h (TRULY_NOOP_TRUNCATION): Delete.
13562         * config/rs6000/rs6000.h (TRULY_NOOP_TRUNCATION): Delete.
13563         * config/rx/rx.h (TRULY_NOOP_TRUNCATION): Delete.
13564         * config/s390/s390.h (TRULY_NOOP_TRUNCATION): Delete.
13565         * config/sh/sh.h (MAYBE_BASE_REGISTER_RTX_P): Remove
13566         TRULY_NOOP_TRUNCATION condition.
13567         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
13568         (TRULY_NOOP_TRUNCATION): Delete.
13569         * config/sparc/sparc.h (TRULY_NOOP_TRUNCATION): Delete.
13570         * config/spu/spu.h (TRULY_NOOP_TRUNCATION): Delete.
13571         * config/spu/spu.c (spu_truly_noop_truncation): New function.
13572         (TARGET_TRULY_NOOP_TRUNCATION): Redefine.
13573         * config/stormy16/stormy16.h (TRULY_NOOP_TRUNCATION): Delete.
13574         * config/tilegx/tilegx.h (TRULY_NOOP_TRUNCATION): Delete.
13575         * config/tilegx/tilegx.c (tilegx_truly_noop_truncation): New fuction.
13576         (TARGET_TRULY_NOOP_TRUNCATION): Redefine.
13577         * config/tilegx/tilegx.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
13578         rather than TRULY_NOOP_TRUNCATION in comments.
13579         * config/tilepro/tilepro.h (TRULY_NOOP_TRUNCATION): Delete.
13580         * config/v850/v850.h (TRULY_NOOP_TRUNCATION): Delete.
13581         * config/vax/vax.h (TRULY_NOOP_TRUNCATION): Delete.
13582         * config/visium/visium.h (TRULY_NOOP_TRUNCATION): Delete.
13583         * config/xtensa/xtensa.h (TRULY_NOOP_TRUNCATION): Delete.
13584         * system.h (TRULY_NOOP_TRUNCATION): Poison.
13585
13586 2017-09-15  Christophe Lyon  <christophe.lyon@linaro.org>
13587
13588         PR target/67591
13589         * config/arm/arm.md (*cmp_and): Add enabled_for_depr_it attribute.
13590         (*cmp_ior): Likewise.
13591         (*ior_scc_scc): Add alternative for enabled_for_depr_it attribute.
13592         (*ior_scc_scc_cmp): Likewise.
13593         (*and_scc_scc): Likewise.
13594         (*and_scc_scc_cmp): Likewise.
13595
13596 2017-09-15  Richard Sandiford  <richard.sandiford@linaro.org>
13597             Alan Hayard  <alan.hayward@arm.com>
13598             David Sherwood  <david.sherwood@arm.com>
13599
13600         * target.def (can_change_mode_class): New hook.
13601         (mode_rep_extended): Refer to it instead of CANNOT_CHANGE_MODE_CLASS.
13602         (hard_regno_nregs): Likewise.
13603         * hooks.h (hook_bool_mode_mode_reg_class_t_true): Declare.
13604         * hooks.c (hook_bool_mode_mode_reg_class_t_true): New function.
13605         * doc/tm.texi.in (CANNOT_CHANGE_MODE_CLASS): Replace with...
13606         (TARGET_CAN_CHANGE_MODE_CLASS): ...this.
13607         (LOAD_EXTEND_OP): Update accordingly.
13608         * doc/tm.texi: Regenerate.
13609         * doc/rtl.texi: Refer to TARGET_CAN_CHANGE_MODE_CLASS instead of
13610         CANNOT_CHANGE_MODE_CLASS.
13611         * hard-reg-set.h (REG_CANNOT_CHANGE_MODE_P): Replace with...
13612         (REG_CAN_CHANGE_MODE_P): ...this new macro.
13613         * combine.c (simplify_set): Update accordingly.
13614         * emit-rtl.c (validate_subreg): Likewise.
13615         * recog.c (general_operand): Likewise.
13616         * regcprop.c (mode_change_ok): Likewise.
13617         * reload1.c (choose_reload_regs): Likewise.
13618         (inherit_piecemeal_p): Likewise.
13619         * rtlanal.c (simplify_subreg_regno): Likewise.
13620         * postreload.c (reload_cse_simplify_set): Use REG_CAN_CHANGE_MODE_P
13621         instead of CANNOT_CHANGE_MODE_CLASS.
13622         (reload_cse_simplify_operands): Likewise.
13623         * reload.c (push_reload): Use targetm.can_change_mode_class
13624         instead of CANNOT_CHANGE_MODE_CLASS.
13625         (push_reload): Likewise.  Also use REG_CAN_CHANGE_MODE_P instead of
13626         REG_CANNOT_CHANGE_MODE_P.
13627         * config/alpha/alpha.h (CANNOT_CHANGE_MODE_CLASS): Delete.
13628         * config/alpha/alpha.c (alpha_can_change_mode_class): New function.
13629         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
13630         * config/arm/arm.h (CANNOT_CHANGE_MODE_CLASS): Delete.
13631         * config/arm/arm.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
13632         (arm_can_change_mode_class): New function.
13633         * config/arm/neon.md: Refer to TARGET_CAN_CHANGE_MODE_CLASS rather
13634         than CANNOT_CHANGE_MODE_CLASS in comments.
13635         * config/i386/i386.h (CANNOT_CHANGE_MODE_CLASS): Delete.
13636         * config/i386/i386-protos.h (ix86_cannot_change_mode_class): Delete.
13637         * config/i386/i386.c (ix86_cannot_change_mode_class): Replace with...
13638         (ix86_can_change_mode_class): ...this new function, inverting the
13639         sense of the return value.
13640         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
13641         * config/ia64/ia64.h (CANNOT_CHANGE_MODE_CLASS): Delete.
13642         * config/ia64/ia64.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
13643         (ia64_can_change_mode_class): New function.
13644         * config/m32c/m32c.h (CANNOT_CHANGE_MODE_CLASS): Delete.
13645         * config/m32c/m32c-protos.h (m32c_cannot_change_mode_class): Delete.
13646         * config/m32c/m32c.c (m32c_cannot_change_mode_class): Replace with...
13647         (m32c_can_change_mode_class): ...this new function, inverting the
13648         sense of the return value.
13649         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
13650         * config/mips/mips.h (CANNOT_CHANGE_MODE_CLASS): Delete.
13651         * config/mips/mips-protos.h (mips_cannot_change_mode_class): Delete.
13652         * config/mips/mips.c (mips_cannot_change_mode_class): Replace with...
13653         (mips_can_change_mode_class): ...this new function, inverting the
13654         sense of the return value.
13655         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
13656         * config/msp430/msp430.h (CANNOT_CHANGE_MODE_CLASS): Delete.
13657         * config/msp430/msp430.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
13658         (msp430_can_change_mode_class): New function.
13659         * config/nvptx/nvptx.h (CANNOT_CHANGE_MODE_CLASS): Delete.
13660         * config/nvptx/nvptx.c (nvptx_can_change_mode_class): New function.
13661         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
13662         * config/pa/pa32-regs.h (CANNOT_CHANGE_MODE_CLASS): Delete.
13663         * config/pa/pa64-regs.h (CANNOT_CHANGE_MODE_CLASS): Delete.
13664         * config/pa/pa-protos.h (pa_cannot_change_mode_class): Delete.
13665         * config/pa/pa.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
13666         (pa_cannot_change_mode_class): Replace with...
13667         (pa_can_change_mode_class): ...this new function, inverting the
13668         sense of the return value.
13669         (pa_modes_tieable_p): Refer to TARGET_CAN_CHANGE_MODE_CLASS rather
13670         than CANNOT_CHANGE_MODE_CLASS in comments.
13671         * config/pdp11/pdp11.h (CANNOT_CHANGE_MODE_CLASS): Delete.
13672         * config/pdp11/pdp11-protos.h (pdp11_cannot_change_mode_class): Delete.
13673         * config/pdp11/pdp11.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
13674         (pdp11_cannot_change_mode_class): Replace with...
13675         (pdp11_can_change_mode_class): ...this new function, inverting the
13676         sense of the return value.
13677         * config/powerpcspe/powerpcspe.h (CANNOT_CHANGE_MODE_CLASS): Delete.
13678         * config/powerpcspe/powerpcspe-protos.h
13679         (rs6000_cannot_change_mode_class_ptr): Delete.
13680         * config/powerpcspe/powerpcspe.c
13681         (rs6000_cannot_change_mode_class_ptr): Delete.
13682         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
13683         (rs6000_option_override_internal): Assign to
13684         targetm.can_change_mode_class instead of
13685         rs6000_cannot_change_mode_class_ptr.
13686         (rs6000_cannot_change_mode_class): Replace with...
13687         (rs6000_can_change_mode_class): ...this new function, inverting the
13688         sense of the return value.
13689         (rs6000_debug_cannot_change_mode_class): Replace with...
13690         (rs6000_debug_can_change_mode_class): ...this new function.
13691         * config/riscv/riscv.h (CANNOT_CHANGE_MODE_CLASS): Delete.
13692         * config/riscv/riscv.c (riscv_can_change_mode_class): New function.
13693         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
13694         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Delete.
13695         * config/rs6000/rs6000-protos.h (rs6000_cannot_change_mode_class_ptr):
13696         Delete.
13697         * config/rs6000/rs6000.c (rs6000_cannot_change_mode_class_ptr): Delete.
13698         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
13699         (rs6000_option_override_internal): Assign to
13700         targetm.can_change_mode_class instead of
13701         rs6000_cannot_change_mode_class_ptr.
13702         (rs6000_cannot_change_mode_class): Replace with...
13703         (rs6000_can_change_mode_class): ...this new function, inverting the
13704         sense of the return value.
13705         (rs6000_debug_cannot_change_mode_class): Replace with...
13706         (rs6000_debug_can_change_mode_class): ...this new function.
13707         * config/s390/s390.h (CANNOT_CHANGE_MODE_CLASS): Delete.
13708         * config/s390/s390-protos.h (s390_cannot_change_mode_class): Delete.
13709         * config/s390/s390.c (s390_cannot_change_mode_class): Replace with...
13710         (s390_can_change_mode_class): ...this new function, inverting the
13711         sense of the return value.
13712         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
13713         * config/sh/sh.h (CANNOT_CHANGE_MODE_CLASS): Delete.
13714         * config/sh/sh-protos.h (sh_cannot_change_mode_class): Delete.
13715         * config/sh/sh.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
13716         (sh_cannot_change_mode_class): Replace with...
13717         (sh_can_change_mode_class): ...this new function, inverting the
13718         sense of the return value.
13719         * config/sparc/sparc.h (CANNOT_CHANGE_MODE_CLASS): Delete.
13720         * config/sparc/sparc.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
13721         (sparc_can_change_mode_class): New function.
13722         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Delete.
13723         * config/spu/spu.c (spu_can_change_mode_class): New function.
13724         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
13725         * config/visium/visium.h (CANNOT_CHANGE_MODE_CLASS): Delete.
13726         * config/visium/visium.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
13727         (visium_can_change_mode_class): New function.
13728         * system.h (CANNOT_CHANGE_MODE_CLASS): Poison.
13729
13730 2017-09-15  Richard Biener  <rguenther@suse.de>
13731
13732         PR tree-optimization/82217
13733         * tree-ssa-sccvn.c (visit_phi): Properly handle all VN_TOP
13734         but not undefined case.
13735
13736 2017-09-15  Jakub Jelinek  <jakub@redhat.com>
13737
13738         PR target/82145
13739         * postreload.c (reload_cse_simplify_operands): Skip
13740         NOTE_INSN_DELETED_LABEL similarly to skipping CODE_LABEL.
13741
13742 2017-09-15  Richard Biener  <rguenther@suse.de>
13743
13744         PR tree-optimization/68823
13745         * graphite-scop-detection.c (build_alias_set): If we have a
13746         possible dependence check whether we can handle them by just
13747         looking at the DRs DR_ACCESS_FNs.
13748         (build_scops): If build_alias_set fails, fail the SCOP.
13749
13750 2017-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
13751
13752         * config/rs6000/rs6000-builtin.def (BU_FLOAT128_1_HW): New macros
13753         to support float128 built-in functions that require the ISA 3.0
13754         hardware.
13755         (BU_FLOAT128_3_HW): Likewise.
13756         (SQRTF128): Add support for the IEEE 128-bit square root and fma
13757         built-in functions.
13758         (FMAF128): Likewise.
13759         (FMAQ): Likewise.
13760         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add
13761         support for built-in functions that need the ISA 3.0 IEEE 128-bit
13762         floating point instructions.
13763         (rs6000_invalid_builtin): Likewise.
13764         (rs6000_builtin_mask_names): Likewise.
13765         * config/rs6000/rs6000.h (MASK_FLOAT128_HW): Likewise.
13766         (RS6000_BTM_FLOAT128_HW): Likewise.
13767         (RS6000_BTM_COMMON): Likewise.
13768         * config/rs6000/rs6000.md (fma<mode>4_hw): Add a generator
13769         function.
13770         * doc/extend.texi (RS/6000 built-in functions): Document the
13771         IEEE 128-bit floating point square root and fused multiply-add
13772         built-in functions.
13773
13774 2017-09-14  Pat Haugen  <pthaugen@us.ibm.com>
13775
13776         * config/rs6000/rs6000.c (rs6000_set_up_by_prologue): Make sure the TOC
13777         reg (r2) isn't in the set of registers defined in the prologue.
13778
13779 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
13780             Alan Hayward  <alan.hayward@arm.com>
13781             David Sherwood  <david.sherwood@arm.com>
13782
13783         * tree-vectorizer.h (_loop_vec_info): Add max_vectorization_factor.
13784         (LOOP_VINFO_MAX_VECT_FACTOR): New macro.
13785         (LOOP_VINFO_ORIG_VECT_FACTOR): Replace with...
13786         (LOOP_VINFO_ORIG_MAX_VECT_FACTOR): ...this new macro.
13787         * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Update
13788         accordingly.
13789         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
13790         max_vectorization_factor.
13791         (vect_analyze_loop_2): Set LOOP_VINFO_MAX_VECT_FACTOR.
13792
13793 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
13794             Alan Hayward  <alan.hayward@arm.com>
13795             David Sherwood  <david.sherwood@arm.com>
13796
13797         * tree-vectorizer.h (vect_min_worthwhile_factor): Delete.
13798         (vect_worthwhile_without_simd_p): Declare.
13799         * tree-vect-loop.c (vect_worthwhile_without_simd_p): New function.
13800         (vectorizable_reduction): Use it.
13801         * tree-vect-stmts.c (vectorizable_shift): Likewise.
13802         (vectorizable_operation): Likewise.
13803
13804 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
13805             Alan Hayward  <alan.hayward@arm.com>
13806             David Sherwood  <david.sherwood@arm.com>
13807
13808         * tree-vectorizer.h (vect_get_num_copies): New function.
13809         * tree-vect-data-refs.c (vect_get_data_access_cost): Use it.
13810         * tree-vect-loop.c (vectorizable_reduction): Likewise.
13811         (vectorizable_induction): Likewise.
13812         (vectorizable_live_operation): Likewise.
13813         * tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
13814         (vectorizable_bswap): Likewise.
13815         (vectorizable_call): Likewise.
13816         (vectorizable_conversion): Likewise.
13817         (vectorizable_assignment): Likewise.
13818         (vectorizable_shift): Likewise.
13819         (vectorizable_operation): Likewise.
13820         (vectorizable_store): Likewise.
13821         (vectorizable_load): Likewise.
13822         (vectorizable_condition): Likewise.
13823         (vectorizable_comparison): Likewise.
13824         (vect_analyze_stmt): Pass the slp node to vectorizable_live_operation.
13825
13826 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
13827             Alan Hayward  <alan.hayward@arm.com>
13828             David Sherwood  <david.sherwood@arm.com>
13829
13830         * tree-vect-loop.c (vectorizable_induction): Use gimple_build instead
13831         of vect_init_vector.
13832
13833 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
13834             Alan Hayward  <alan.hayward@arm.com>
13835             David Sherwood  <david.sherwood@arm.com>
13836
13837         * gimple-fold.h (gimple_build_vector_from_val): Declare, and provide
13838         an inline wrapper that provides a location.
13839         (gimple_build_vector): Likewise.
13840         * gimple-fold.c (gimple_build_vector_from_val): New function.
13841         (gimple_build_vector): Likewise.
13842         * tree-vect-loop.c (get_initial_def_for_reduction): Use the new
13843         functions to build the initial value.  Always return a gimple value.
13844         (get_initial_defs_for_reduction): Likewise.  Only compute
13845         neutral_vec once.
13846         (vect_create_epilog_for_reduction): Don't call force_gimple_operand or
13847         vect_init_vector on the results from get_initial_def(s)_for_reduction.
13848         (vectorizable_induction): Use gimple_build_vector rather than
13849         vect_init_vector.
13850
13851 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
13852             Alan Hayward  <alan.hayward@arm.com>
13853             David Sherwood  <david.sherwood@arm.com>
13854
13855         * target.h (vec_perm_indices): New typedef.
13856         (auto_vec_perm_indices): Likewise.
13857         * optabs-query.h: Include target.h
13858         (can_vec_perm_p): Take a vec_perm_indices *.
13859         * optabs-query.c (can_vec_perm_p): Likewise.
13860         (can_mult_highpart_p): Update accordingly.  Use auto_vec_perm_indices.
13861         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
13862         * tree-vect-generic.c (lower_vec_perm): Likewise.
13863         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
13864         (vect_grouped_load_supported): Likewise.
13865         (vect_shift_permute_load_chain): Likewise.
13866         (vect_permute_store_chain): Use auto_vec_perm_indices.
13867         (vect_permute_load_chain): Likewise.
13868         * fold-const.c (fold_vec_perm): Take vec_perm_indices.
13869         (fold_ternary_loc): Update accordingly.  Use auto_vec_perm_indices.
13870         Update uses of can_vec_perm_p.
13871         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Replace the
13872         mode with a number of elements.  Take a vec_perm_indices *.
13873         (vect_create_epilog_for_reduction): Update accordingly.
13874         Use auto_vec_perm_indices.
13875         (have_whole_vector_shift): Likewise.  Update call to can_vec_perm_p.
13876         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
13877         (vect_transform_slp_perm_load): Likewise.
13878         (vect_schedule_slp_instance): Use auto_vec_perm_indices.
13879         * tree-vectorizer.h (vect_gen_perm_mask_any): Take a vec_perm_indices.
13880         (vect_gen_perm_mask_checked): Likewise.
13881         * tree-vect-stmts.c (vect_gen_perm_mask_any): Take a vec_perm_indices.
13882         (vect_gen_perm_mask_checked): Likewise.
13883         (vectorizable_mask_load_store): Use auto_vec_perm_indices.
13884         (vectorizable_store): Likewise.
13885         (vectorizable_load): Likewise.
13886         (perm_mask_for_reverse): Likewise.  Update call to can_vec_perm_p.
13887         (vectorizable_bswap): Likewise.
13888
13889 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
13890             Alan Hayward  <alan.hayward@arm.com>
13891             David Sherwood  <david.sherwood@arm.com>
13892
13893         * tree.h (build_vector): Take a vec<tree> instead of a tree *.
13894         * tree.c (build_vector): Likewise.
13895         (build_vector_from_ctor): Update accordingly.
13896         (build_vector_from_val): Likewise.
13897         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise.
13898         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
13899         * tree-vect-generic.c (add_rshift): Likewise.
13900         (expand_vector_divmod): Likewise.
13901         (optimize_vector_constructor): Likewise.
13902         * tree-vect-slp.c (vect_get_constant_vectors): Likewise.
13903         (vect_transform_slp_perm_load): Likewise.
13904         (vect_schedule_slp_instance): Likewise.
13905         * tree-vect-stmts.c (vectorizable_bswap): Likewise.
13906         (vectorizable_call): Likewise.
13907         (vect_gen_perm_mask_any): Likewise.  Add elements in order.
13908         * expmed.c (make_tree): Likewise.
13909         * fold-const.c (fold_negate_expr_1): Use auto_vec<tree> when building
13910         a vector passed to build_vector.
13911         (fold_convert_const): Likewise.
13912         (exact_inverse): Likewise.
13913         (fold_ternary_loc): Likewise.
13914         (fold_relational_const): Likewise.
13915         (const_binop): Likewise.  Use VECTOR_CST_ELT directly when operating
13916         on VECTOR_CSTs, rather than going through vec_cst_ctor_to_array.
13917         (const_unop): Likewise.  Store the reduction accumulator in a
13918         variable rather than an array.
13919         (vec_cst_ctor_to_array): Take the number of elements as a parameter.
13920         (fold_vec_perm): Update calls accordingly.  Use auto_vec<tree> for
13921         the new vector, rather than constructing it after the input arrays.
13922         (native_interpret_vector): Use auto_vec<tree> when building
13923         a vector passed to build_vector.  Add elements in order.
13924         * tree-vect-loop.c (get_initial_defs_for_reduction): Use
13925         auto_vec<tree> when building a vector passed to build_vector.
13926         (vect_create_epilog_for_reduction): Likewise.
13927         (vectorizable_induction): Likewise.
13928         (get_initial_def_for_reduction): Likewise.  Fix indentation of
13929         case statements.
13930         * config/sparc/sparc.c (sparc_handle_vis_mul8x16): Change n_elts
13931         to a vec<tree> *.
13932         (sparc_fold_builtin): Use auto_vec<tree> when building a vector
13933         passed to build_vector.
13934
13935 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
13936             Alan Hayward  <alan.hayward@arm.com>
13937             David Sherwood  <david.sherwood@arm.com>
13938
13939         * tree-core.h (tree_base::u): Add an "nelts" field.
13940         (tree_vector): Use VECTOR_CST_NELTS as the length.
13941         * tree.c (tree_size): Likewise.
13942         (make_vector): Initialize VECTOR_CST_NELTS.
13943         * tree.h (VECTOR_CST_NELTS): Use the u.nelts field.
13944         * cfgexpand.c (expand_debug_expr): Use VECTOR_CST_NELTS instead of
13945         TYPE_VECTOR_SUBPARTS.
13946         * expr.c (const_vector_mask_from_tree): Consistently use "units"
13947         as the number of units, setting it from VECTOR_CST_NELTS.
13948         (const_vector_from_tree): Likewise.
13949         * fold-const.c (negate_expr_p): Use VECTOR_CST_NELTS instead of
13950         TYPE_VECTOR_SUBPARTS for the number of elements in a VECTOR_CST.
13951         (fold_negate_expr_1): Likewise.
13952         (fold_convert_const): Likewise.
13953         (const_binop): Likewise.  Differentiate the number of output and
13954         input elements.
13955         (const_unop): Likewise.
13956         (fold_ternary_loc): Use VECTOR_CST_NELTS for the number of elements
13957         in a VECTOR_CST, asserting that it is the same as TYPE_VECTOR_SUBPARTS
13958         in cases that did the opposite.
13959
13960 2017-09-14  Richard Biener  <rguenther@suse.de>
13961
13962         * tree-ssa-sccvn.c (visit_phi): Merge undefined values similar
13963         to VN_TOP.
13964
13965 2017-09-14  Eric Botcazou  <ebotcazou@adacore.com>
13966
13967         * dwarf2out.c (dwarf2out_source_line): Remove superfluous test.
13968
13969 2017-09-14  Jakub Jelinek  <jakub@redhat.com>
13970
13971         PR target/81325
13972         * cfgbuild.c (find_bb_boundaries): Ignore debug insns in decisions
13973         if and where to split a bb, except for splitting before debug insn
13974         sequences followed by non-label real insn.  Delete debug insns
13975         in between basic blocks.
13976
13977         * combine.c (make_compound_operation_int): Formatting fixes.
13978
13979         * config/alpha/elf.h (LINK_EH_SPEC): Add -static-pie support.
13980         * config/alpha/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
13981         * config/netbsd.h (LINK_EH_SPEC): Likewise.
13982         * config/sol2.h (LINK_EH_SPEC): Likewise.
13983         * config/arm/uclinux-elf.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
13984         * config/s390/linux.h (LINK_SPEC): Likewise.
13985         * config/freebsd.h (LINK_EH_SPEC): Likewise.
13986         * config/openbsd.h (LINK_EH_SPEC): Likewise.
13987         * config/lm32/uclinux-elf.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
13988         * config/aarch64/aarch64-linux.h (LINUX_TARGET_LINK_SPEC): Likewise.
13989         * config/powerpcspe/sysv4.h (LINK_EH_SPEC): Likewise.
13990         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
13991         * config/i386/gnu-user64.h (GNU_USER_TARGET_LINK_SPEC): Fix a typo.
13992         * config/i386/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): Formatting fix.
13993
13994 2017-09-13  Jakub Jelinek  <jakub@redhat.com>
13995
13996         * config/rs6000/sysv4.h (STARTFILE_LINUX_SPEC): Add -static-pie
13997         support.
13998         (ENDFILE_LINUX_SPEC): Likewise.
13999         (LINK_EH_SPEC): Likewise.
14000         * config/rs6000/linux64.h (LINK_SHLIB_SPEC): Likewise.
14001         (LINK_OS_LINUX_SPEC32): Likewise.
14002         (LINK_OS_LINUX_SPEC64): Likewise.
14003         * config/rs6000/linux.h (LINK_SHLIB_SPEC): Likewise.
14004         (LINK_OS_LINUX_SPEC): Likewise.
14005
14006 2017-09-13  Martin Liska  <mliska@suse.cz>
14007
14008         PR middle-end/82154
14009         * stmt.c (expand_sjlj_dispatch_table): Use CASE_LOW when
14010         CASE_HIGH is NULL_TREE.
14011
14012 2017-09-13  Richard Sandiford  <richard.sandiford@linaro.org>
14013             Alan Hayward  <alan.hayward@arm.com>
14014             David Sherwood  <david.sherwood@arm.com>
14015
14016         * target.def (secondary_memory_needed): New hook.
14017         (secondary_reload): Refer to TARGET_SECONDARY_MEMORY_NEEDED
14018         instead of SECONDARY_MEMORY_NEEDED.
14019         (secondary_memory_needed_mode): Likewise.
14020         * hooks.h (hook_bool_mode_reg_class_t_reg_class_t_false): Declare.
14021         * hooks.c (hook_bool_mode_reg_class_t_reg_class_t_false): New function.
14022         * doc/tm.texi.in (SECONDARY_MEMORY_NEEDED): Replace with...
14023         (TARGET_SECONDARY_MEMORY_NEEDED): ...this.
14024         (SECONDARY_MEMORY_NEEDED_RTX): Update reference accordingly.
14025         * doc/tm.texi: Regenerate.
14026         * config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED): Delete.
14027         * config/alpha/alpha.c (alpha_secondary_memory_needed): New function.
14028         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14029         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED): Delete.
14030         * config/i386/i386-protos.h (ix86_secondary_memory_needed): Delete.
14031         * config/i386/i386.c (inline_secondary_memory_needed): Put the
14032         mode argument first and change the reg_class arguments to reg_class_t.
14033         (ix86_secondary_memory_needed): Likewise.  Remove the strict parameter.
14034         Make static.  Update the call to inline_secondary_memory_needed.
14035         (ix86_register_move_cost): Update the call to
14036         inline_secondary_memory_needed.
14037         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14038         * config/ia64/ia64.h (SECONDARY_MEMORY_NEEDED): Delete commented-out
14039         definition.
14040         * config/ia64/ia64.c (spill_xfmode_rfmode_operand): Refer to
14041         TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED
14042         in comment.
14043         * config/mips/mips.h (SECONDARY_MEMORY_NEEDED): Delete.
14044         * config/mips/mips-protos.h (mips_secondary_memory_needed): Delete.
14045         * config/mips/mips.c (mips_secondary_memory_needed): Make static
14046         and match hook interface.  Add comment from mips.h.
14047         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14048         * config/mmix/mmix.md (truncdfsf2): Refer to
14049         TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED
14050         in comment.
14051         * config/pa/pa-64.h (SECONDARY_MEMORY_NEEDED): Rename to...
14052         (PA_SECONDARY_MEMORY_NEEDED): ...this, and put the mode argument first.
14053         * config/pa/pa.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14054         (pa_secondary_memory_needed): New function.
14055         * config/pdp11/pdp11.h (SECONDARY_MEMORY_NEEDED): Delete.
14056         * config/pdp11/pdp11-protos.h (pdp11_secondary_memory_needed): Delete.
14057         * config/pdp11/pdp11.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14058         (pdp11_secondary_memory_needed): Make static and match hook interface.
14059         * config/powerpcspe/powerpcspe.h (SECONDARY_MEMORY_NEEDED): Delete.
14060         * config/powerpcspe/powerpcspe-protos.h
14061         (rs6000_secondary_memory_needed_ptr): Delete.
14062         * config/powerpcspe/powerpcspe.c (rs6000_secondary_memory_needed_ptr):
14063         Delete.
14064         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14065         (rs6000_option_override_internal): Assign to
14066         targetm.secondary_memory_needed rather than
14067         rs6000_secondary_memory_needed_ptr.
14068         (rs6000_secondary_memory_needed): Match hook interface.
14069         (rs6000_debug_secondary_memory_needed): Likewise.
14070         * config/riscv/riscv.h (SECONDARY_MEMORY_NEEDED): Delete.
14071         * config/riscv/riscv.c (riscv_secondary_memory_needed): New function.
14072         (riscv_register_move_cost): Use it instead of SECONDARY_MEMORY_NEEDED.
14073         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14074         * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED): Delete.
14075         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_ptr):
14076         Delete.
14077         * config/rs6000/rs6000.c (rs6000_secondary_memory_needed_ptr): Delete.
14078         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14079         (rs6000_option_override_internal): Assign to
14080         targetm.secondary_memory_needed rather than
14081         rs6000_secondary_memory_needed_ptr.
14082         (rs6000_secondary_memory_needed): Match hook interface.
14083         (rs6000_debug_secondary_memory_needed): Likewise.
14084         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Delete.
14085         * config/s390/s390.c (s390_secondary_memory_needed): New function.
14086         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14087         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED): Delete.
14088         * config/sparc/sparc.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
14089         (sparc_secondary_memory_needed): New function.
14090         * lra-constraints.c (check_and_process_move): Refer to
14091         TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED
14092         in comment.
14093         (curr_insn_transform): Likewise.
14094         (process_alt_operands): Use targetm.secondary_memory_needed
14095         instead of TARGET_SECONDARY_MEMORY_NEEDED.
14096         (check_secondary_memory_needed_p): Likewise.
14097         (choose_split_class): Likewise.
14098         * reload.c: Unconditionally include code that was previously
14099         conditional on SECONDARY_MEMORY_NEEDED.
14100         (push_secondary_reload): Use targetm.secondary_memory_needed
14101         instead of TARGET_SECONDARY_MEMORY_NEEDED.
14102         (push_reload): Likewise.
14103         * reload1.c: Unconditionally include code that was previously
14104         conditional on SECONDARY_MEMORY_NEEDED.
14105         (choose_reload_regs): Use targetm.secondary_memory_needed
14106         instead of TARGET_SECONDARY_MEMORY_NEEDED.
14107         (gen_reload): Likewise.
14108         * system.h (SECONDARY_MEMORY_NEEDED): Poison.
14109
14110 2017-09-13  Richard Sandiford  <richard.sandiford@linaro.org>
14111             Alan Hayward  <alan.hayward@arm.com>
14112             David Sherwood  <david.sherwood@arm.com>
14113
14114         * target.def (secondary_memory_needed_mode): New hook:
14115         * targhooks.c (default_secondary_memory_needed_mode): Declare.
14116         * targhooks.h (default_secondary_memory_needed_mode): New function.
14117         * doc/tm.texi.in (SECONDARY_MEMORY_NEEDED_MODE): Replace with...
14118         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): ...this.
14119         * doc/tm.texi: Regenerate.
14120         * lra-constraints.c (check_and_process_move): Use
14121         targetm.secondary_memory_needed_mode instead of
14122         TARGET_SECONDARY_MEMORY_NEEDED_MODE.
14123         (curr_insn_transform): Likewise.
14124         * reload.c (get_secondary_mem): Likewise.
14125         * config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
14126         * config/alpha/alpha.c (alpha_secondary_memory_needed_mode): New
14127         function.
14128         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
14129         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
14130         * config/i386/i386.c (ix86_secondary_memory_needed_mode): New function.
14131         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
14132         * config/powerpcspe/powerpcspe.h (SECONDARY_MEMORY_NEEDED_MODE):
14133         Delete.
14134         * config/powerpcspe/powerpcspe-protos.h
14135         (rs6000_secondary_memory_needed_mode): Delete.
14136         * config/powerpcspe/powerpcspe.c
14137         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
14138         (rs6000_secondary_memory_needed_mode): Make static.
14139         * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
14140         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_mode):
14141         Delete.
14142         * config/rs6000/rs6000.c (TARGET_SECONDARY_MEMORY_NEEDED_MODE):
14143         Redefine.
14144         (rs6000_secondary_memory_needed_mode): Make static.
14145         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
14146         * config/s390/s390.c (s390_secondary_memory_needed_mode): New function.
14147         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
14148         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
14149         * config/sparc/sparc.c (TARGET_SECONDARY_MEMORY_NEEDED_MODE):
14150         Redefine.
14151         (sparc_secondary_memory_needed_mode): New function.
14152         * system.h (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Poison.
14153
14154 2017-09-13  Jackson Woodruff  <jackson.woodruff@arm.com>
14155
14156         * config/aarch64/constraints.md (Umq): New constraint.
14157         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>):
14158         Change to use Umq.
14159         (mov<mode>): Update condition.
14160
14161 2017-09-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
14162
14163         * gimple-ssa-store-merging.c (sort_by_bitpos): Compare store order
14164         when bitposition is the same.
14165
14166 2017-09-13  Richard Biener  <rguenther@suse.de>
14167
14168         * dwarf2out.c (output_die_symbol): Remove.
14169         (output_die): Do not output a DIEs symbol.
14170
14171 2017-09-13  Richard Biener  <rguenther@suse.de>
14172
14173         PR middle-end/82128
14174         * gimple-fold.c (gimple_fold_call): Update SSA name in-place to
14175         default-def to avoid breaking iterator update with the weird
14176         interaction with cgraph_update_edges_for_call_stmt_node.
14177
14178 2017-09-13  Richard Biener  <rguenther@suse.de>
14179
14180         * tree-cfg.c (verify_gimple_assign_binary): Add verification
14181         for WIDEN_SUM_EXPR, VEC_WIDEN_MULT_{HI,LO,EVEN,ODD}_EXPR,
14182         VEC_PACK_{TRUNC,SAT,FIX_TRUNC}_EXPR.
14183         (verify_gimple_assign_ternary): Add verification for DOT_PROD_EXPR.
14184
14185 2017-09-13  Kugan Vivekanandarajah  <kuganv@linaro.org>
14186
14187         * config/aarch64/aarch64.c (aarch64_override_options_after_change_1):
14188         Disable pc relative literal load irrespective of
14189         TARGET_FIX_ERR_A53_84341 for default.
14190
14191 2017-09-12  Eric Botcazou  <ebotcazou@adacore.com>
14192
14193         * config/sparc/sparc.c (output_return): Output the source location of
14194         the insn in the delay slot, if any.
14195         (output_sibcall): Likewise.
14196
14197 2017-09-12  H.J. Lu  <hongjiu.lu@intel.com>
14198
14199         PR driver/81498
14200         * common.opt (-static-pie): New alias.
14201         (shared): Negate static-pie.
14202         (-no-pie): Update help text.
14203         (-pie): Likewise.
14204         (static-pie): New option.
14205         * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Add
14206         -static-pie support.
14207         (GNU_USER_TARGET_ENDFILE_SPEC): Likewise.
14208         (LINK_EH_SPEC): Likewise.
14209         (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
14210         * config/i386/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): Likewise.
14211         * config/i386/gnu-user64.h (GNU_USER_TARGET_LINK_SPEC): Likewise.
14212         * gcc.c (LINK_COMMAND_SPEC): Likewise.
14213         (init_gcc_specs): Likewise.
14214         (init_spec): Likewise.
14215         (display_help): Update help message for -pie.
14216         * doc/invoke.texi: Update -pie, -no-pie and -static.  Document
14217         -static-pie.
14218
14219 2017-09-12  Wilco Dijkstra  <wdijkstr@arm.com>
14220
14221         * config/aarch64/aarch64.md (movsi_aarch64): Remove all '*'.
14222         (movdi_aarch64): Likewise.
14223         (movti_aarch64): Likewise.
14224
14225 2017-09-12 Simon Wright <simon@pushface.org>
14226
14227         PR target/80204
14228         * config/darwin-driver.c (darwin_find_version_from_kernel): Eliminate
14229         calculation of the minor version, always output as 0.
14230
14231 2017-09-12  Jakub Jelinek  <jakub@redhat.com>
14232
14233         PR target/82112
14234         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): For
14235         ALTIVEC_BUILTIN_VEC_LD if arg1 has array type call default_conversion
14236         on it early, rather than manual conversion late.  For
14237         ALTIVEC_BUILTIN_VEC_ST if arg2 has array type call default_conversion
14238         instead of performing manual conversion.
14239
14240 2017-09-12  Carl Love  <cel@us.ibm.com>
14241
14242         * config/rs6000/altivec.md (vec_widen_umult_even_v4si,
14243         vec_widen_smult_even_v4si): Add define expands for vmuleuw, vmulesw,
14244         vmulouw, vmulosw.
14245         * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
14246         VMULOSW): Add definitions.
14247         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
14248         ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
14249         ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
14250         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
14251         builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
14252
14253 2017-09-12  James Greenhalgh  <james.greenhalgh@arm.com>
14254
14255         * config/aarch64/aarch64.md (movdi_aarch64): Set load/store
14256         types correctly.
14257         (movti_aarch64): Likewise.
14258         (movdf_aarch64): Likewise.
14259         (movtf_aarch64): Likewise.
14260         (load_pairdi): Likewise.
14261         (store_pairdi): Likewise.
14262         (load_pairdf): Likewise.
14263         (store_pairdf): Likewise.
14264         (loadwb_pair<GPI:mode>_<P:mode>): Likewise.
14265         (storewb_pair<GPI:mode>_<P:mode>): Likewise.
14266         (ldr_got_small_<mode>): Likewise.
14267         (ldr_got_small_28k_<mode>): Likewise.
14268         (ldr_got_tiny): Likewise.
14269         * config/aarch64/iterators.md (ldst_sz): New.
14270         (ldpstp_sz): Likewise.
14271         * config/aarch64/thunderx.md (thunderx_storepair): Split store_8
14272         to store_16.
14273         (thunderx_load): Split load_8 to load_16.
14274         * config/aarch64/thunderx2t99.md (thunderx2t99_loadpair): Split
14275         load_8 to load_16.
14276         (thunderx2t99_storepair_basic): Split store_8 to store_16.
14277         * config/arm/xgene1.md (xgene1_load_pair): Split load_8 to load_16.
14278         (xgene1_store_pair): Split store_8 to store_16.
14279         * config/aarch64/falkor.md (falkor_ld_3_ld): Split load_8 to load_16.
14280         (falkor_st_0_st_sd): Split store_8 to store_16.
14281
14282 2017-09-12  James Greenhalgh  <james.greenhalgh@arm.com>
14283
14284         * config/arm/types.md (type): Rename load1/2/3/4 to load_4/8/12/16
14285         and store1/2/3/4 to store_4/8/12/16.
14286         * config/aarch64/aarch64.md: Update for rename.
14287         * config/arm/arm.md: Likewise.: Likewise.
14288         * config/arm/arm.c: Likewise.
14289         * config/arm/thumb1.md: Likewise.
14290         * config/arm/thumb2.md: Likewise.
14291         * config/arm/vfp.md: Likewise.
14292         * config/arm/arm-generic.md: Likewise.
14293         * config/arm/arm1020e.md: Likewise.
14294         * config/arm/arm1026ejs.md: Likewise.
14295         * config/arm/arm1136jfs.md: Likewise.
14296         * config/arm/arm926ejs.md: Likewise.
14297         * config/arm/cortex-a15.md: Likewise.
14298         * config/arm/cortex-a17.md: Likewise.
14299         * config/arm/cortex-a5.md: Likewise.
14300         * config/arm/cortex-a53.md: Likewise.
14301         * config/arm/cortex-a57.md: Likewise.
14302         * config/arm/cortex-a7.md: Likewise.
14303         * config/arm/cortex-a8.md: Likewise.
14304         * config/arm/cortex-a9.md: Likewise.
14305         * config/arm/cortex-m4.md: Likewise.
14306         * config/arm/cortex-m7.md: Likewise.
14307         * config/arm/cortex-r4.md: Likewise.
14308         * config/arm/exynos-m1.md: Likewise.
14309         * config/arm/fa526.md: Likewise.
14310         * config/arm/fa606te.md: Likewise.
14311         * config/arm/fa626te.md: Likewise.
14312         * config/arm/fa726te.md: Likewise.
14313         * config/arm/fmp626.md: Likewise.
14314         * config/arm/iwmmxt.md: Likewise.
14315         * config/arm/ldmstm.md: Likewise.
14316         * config/arm/marvell-pj4.md: Likewise.
14317         * config/arm/xgene1.md: Likewise.
14318         * config/aarch64/thunderx.md: Likewise.
14319         * config/aarch64/thunderx2t99.md: Likewise.
14320         * config/aarch64/falkor.md: Likewise.
14321
14322 2017-09-12  Martin Liska  <mliska@suse.cz>
14323
14324         * attribs.c (private_lookup_attribute): New function.
14325         * attribs.h (private_lookup_attribute): Declared here.
14326         (lookup_attribute): Called from this place.
14327
14328 2017-09-12  Richard Biener  <rguenther@suse.de>
14329
14330         PR tree-optimization/82157
14331         * tree-ssa-pre.c (remove_dead_inserted_code): Do not remove
14332         stmts with side-effects.
14333
14334 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
14335             Alan Hayward  <alan.hayward@arm.com>
14336             David Sherwood <david.sherwood@arm.com>
14337
14338         * target.def (hard_regno_nregs): New hook.
14339         (class_max_nregs): Refer to it instead of HARD_REGNO_NREGS.
14340         * targhooks.h (default_hard_regno_nregs): Declare.
14341         * targhooks.c (default_hard_regno_nregs): New function.
14342         * doc/tm.texi.in (HARD_REGNO_NREGS): Replace with...
14343         (TARGET_HARD_REGNO_NREGS): ...this hook.
14344         (HARD_REGNO_NREGS_HAS_PADDING): Update accordingly.
14345         (CLASS_MAX_NREGS): Likewise.
14346         * doc/tm.texi: Regenerate.
14347         * reginfo.c (init_reg_modes_target): Use targetm.hard_regno_nregs
14348         instead of HARD_REGNO_NREGS.
14349         * rtl.h (REG_NREGS): Refer to TARGET_HARD_REGNO_NREGS rather than
14350         HARD_REGNO_NREGS in the comment.
14351         * config/aarch64/aarch64.h (HARD_REGNO_NREGS): Delete.
14352         * config/aarch64/aarch64-protos.h (aarch64_hard_regno_nregs): Delete.
14353         * config/aarch64/aarch64.c (aarch64_hard_regno_nregs): Make static.
14354         Return an unsigned int.
14355         (TARGET_HARD_REGNO_NREGS): Redefine.
14356         * config/alpha/alpha.h (HARD_REGNO_NREGS): Delete.
14357         * config/arc/arc.h (HARD_REGNO_NREGS): Delete.
14358         * config/arc/arc.c (TARGET_HARD_REGNO_NREGS): Redefine.
14359         (arc_hard_regno_nregs): New function.
14360         * config/arm/arm.h (HARD_REGNO_NREGS): Delete.
14361         * config/arm/arm.c (TARGET_HARD_REGNO_NREGS): Redefine.
14362         (arm_hard_regno_nregs): New function.
14363         * config/avr/avr.h (HARD_REGNO_NREGS): Delete.
14364         * config/bfin/bfin.h (HARD_REGNO_NREGS): Delete.
14365         * config/bfin/bfin.c (bfin_hard_regno_nregs): New function.
14366         (TARGET_HARD_REGNO_NREGS): Redefine.
14367         * config/c6x/c6x.h (HARD_REGNO_NREGS): Delete.
14368         * config/cr16/cr16.h (LONG_REG_P): Use targetm.hard_regno_nregs.
14369         (HARD_REGNO_NREGS): Delete.
14370         * config/cr16/cr16.c (TARGET_HARD_REGNO_NREGS): Redefine.
14371         (cr16_hard_regno_nregs): New function.
14372         (cr16_memory_move_cost): Use it instead of HARD_REGNO_NREGS.
14373         * config/cris/cris.h (HARD_REGNO_NREGS): Delete.
14374         * config/cris/cris.c (TARGET_HARD_REGNO_NREGS): Redefine.
14375         (cris_hard_regno_nregs): New function.
14376         * config/epiphany/epiphany.h (HARD_REGNO_NREGS): Delete.
14377         * config/fr30/fr30.h (HARD_REGNO_NREGS): Delete.
14378         (CLASS_MAX_NREGS): Use targetm.hard_regno_nregs.
14379         * config/frv/frv.h (HARD_REGNO_NREGS): Delete.
14380         (CLASS_MAX_NREGS): Remove outdated copy of documentation.
14381         * config/frv/frv-protos.h (frv_hard_regno_nregs): Delete.
14382         * config/frv/frv.c (TARGET_HARD_REGNO_NREGS): Redefine.
14383         (frv_hard_regno_nregs): Make static.  Take and return an
14384         unsigned int.
14385         (frv_class_max_nregs): Remove outdated copy of documentation.
14386         * config/ft32/ft32.h (HARD_REGNO_NREGS): Delete.
14387         * config/h8300/h8300.h (HARD_REGNO_NREGS): Delete.
14388         * config/h8300/h8300-protos.h (h8300_hard_regno_nregs): Delete.
14389         * config/h8300/h8300.c (h8300_hard_regno_nregs): Delete.
14390         * config/i386/i386.h (HARD_REGNO_NREGS): Delete.
14391         * config/i386/i386.c (ix86_hard_regno_nregs): New function.
14392         (TARGET_HARD_REGNO_NREGS): Redefine.
14393         * config/ia64/ia64.h (HARD_REGNO_NREGS): Delete.
14394         (CLASS_MAX_NREGS): Update comment.
14395         * config/ia64/ia64.c (TARGET_HARD_REGNO_NREGS): Redefine.
14396         (ia64_hard_regno_nregs): New function.
14397         * config/iq2000/iq2000.h (HARD_REGNO_NREGS): Delete.
14398         * config/lm32/lm32.h (HARD_REGNO_NREGS): Delete.
14399         * config/m32c/m32c.h (HARD_REGNO_NREGS): Delete.
14400         * config/m32c/m32c-protos.h (m32c_hard_regno_nregs): Delete.
14401         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Take and return
14402         an unsigned int.
14403         (m32c_hard_regno_nregs): Likewise.  Make static.
14404         (TARGET_HARD_REGNO_NREGS): Redefine.
14405         * config/m32r/m32r.h (HARD_REGNO_NREGS): Delete.
14406         * config/m68k/m68k.h (HARD_REGNO_NREGS): Delete.
14407         * config/m68k/m68k.c (TARGET_HARD_REGNO_NREGS): Redefine.
14408         (m68k_hard_regno_nregs): New function.
14409         * config/mcore/mcore.h (HARD_REGNO_NREGS): Delete.
14410         * config/microblaze/microblaze.h (HARD_REGNO_NREGS): Delete.
14411         * config/mips/mips.h (HARD_REGNO_NREGS): Delete.
14412         * config/mips/mips-protos.h (mips_hard_regno_nregs): Delete.
14413         * config/mips/mips.c (mips_hard_regno_nregs): Make static.
14414         Take and return an unsigned int.
14415         (TARGET_HARD_REGNO_NREGS): Redefine.
14416         * config/mmix/mmix.h (HARD_REGNO_NREGS): Delete.
14417         (CLASS_MAX_NREGS): Use targetm.hard_regno_nregs.
14418         * config/mn10300/mn10300.h (HARD_REGNO_NREGS): Delete.
14419         * config/moxie/moxie.h (HARD_REGNO_NREGS): Delete.
14420         * config/msp430/msp430.h (HARD_REGNO_NREGS): Delete.
14421         * config/msp430/msp430-protos.h (msp430_hard_regno_nregs): Delete.
14422         * config/msp430/msp430.c (TARGET_HARD_REGNO_NREGS): Redefine.
14423         (msp430_hard_regno_nregs): Make static.  Take and return an
14424         unsigned int.
14425         * config/nds32/nds32.h (HARD_REGNO_NREGS): Delete.
14426         * config/nds32/nds32-protos.h (nds32_hard_regno_nregs): Delete.
14427         * config/nds32/nds32.c (nds32_hard_regno_nregs): Delete.
14428         (nds32_hard_regno_mode_ok): Use targetm.hard_regno_nregs.
14429         * config/nios2/nios2.h (HARD_REGNO_NREGS): Delete.
14430         * config/nvptx/nvptx.h (HARD_REGNO_NREGS): Delete.
14431         * config/nvptx/nvptx.c (nvptx_hard_regno_nregs): New function.
14432         (TARGET_HARD_REGNO_NREGS): Redefine.
14433         * config/pa/pa32-regs.h (HARD_REGNO_NREGS): Rename to...
14434         (PA_HARD_REGNO_NREGS): ...this.
14435         * config/pa/pa64-regs.h (HARD_REGNO_NREGS): Rename to...
14436         (PA_HARD_REGNO_NREGS): ...this.
14437         * config/pa/pa.c (TARGET_HARD_REGNO_NREGS): Redefine.
14438         (pa_hard_regno_nregs): New function.
14439         * config/pdp11/pdp11.h (HARD_REGNO_NREGS): Delete.
14440         * config/pdp11/pdp11.c (TARGET_HARD_REGNO_NREGS): Redefine.
14441         (pdp11_hard_regno_nregs): New function.
14442         * config/powerpcspe/powerpcspe.h (HARD_REGNO_NREGS): Delete.
14443         * config/powerpcspe/powerpcspe.c (TARGET_HARD_REGNO_NREGS): Redefine.
14444         (rs6000_hard_regno_nregs_hook): New function.
14445         * config/riscv/riscv.h (HARD_REGNO_NREGS): Delete.
14446         * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): Delete.
14447         * config/riscv/riscv.c (riscv_hard_regno_nregs): Make static.
14448         Take and return an unsigned int.  Move earlier in file.
14449         (TARGET_HARD_REGNO_NREGS): Redefine.
14450         * config/rl78/rl78.h (HARD_REGNO_NREGS): Delete.
14451         * config/rl78/rl78-protos.h (rl78_hard_regno_nregs): Delete.
14452         * config/rl78/rl78.c (TARGET_HARD_REGNO_NREGS): Reefine.
14453         (rl78_hard_regno_nregs): Make static.  Take and return an
14454         unsigned int.
14455         * config/rs6000/rs6000.h (HARD_REGNO_NREGS): Delete.
14456         * config/rs6000/rs6000.c (TARGET_HARD_REGNO_NREGS): Redefine.
14457         (rs6000_hard_regno_nregs_hook): New function.
14458         * config/rx/rx.h (HARD_REGNO_NREGS): Delete.
14459         * config/rx/rx.c (rx_hard_regno_nregs): New function.
14460         (TARGET_HARD_REGNO_NREGS): Redefine.
14461         * config/s390/s390.h (HARD_REGNO_NREGS): Delete.
14462         * config/s390/s390.c (REGNO_PAIR_OK): Use s390_hard_regno_nregs
14463         instead of HARD_REGNO_NREGS.
14464         (s390_hard_regno_nregs): New function.
14465         (s390_hard_regno_mode_ok): Add comment from s390.h.
14466         (TARGET_HARD_REGNO_NREGS): Redefine.
14467         * config/sh/sh.h (HARD_REGNO_NREGS): Delete.
14468         * config/sh/sh.c (TARGET_HARD_REGNO_NREGS): Redefine.
14469         (sh_hard_regno_nregs): New function.
14470         (sh_pass_in_reg_p): Use it.
14471         * config/sparc/sparc.h (HARD_REGNO_NREGS): Delete.
14472         * config/sparc/sparc.c (TARGET_HARD_REGNO_NREGS): Redefine.
14473         (sparc_hard_regno_nregs): New function.
14474         * config/spu/spu.h (HARD_REGNO_NREGS): Delete.
14475         * config/spu/spu.c (spu_hard_regno_nregs): New function.
14476         (spu_function_arg_advance): Use it, supplying a valid register number.
14477         (TARGET_HARD_REGNO_NREGS): Redefine.
14478         * config/stormy16/stormy16.h (HARD_REGNO_NREGS): Delete.
14479         * config/tilegx/tilegx.h (HARD_REGNO_NREGS): Delete.
14480         * config/tilepro/tilepro.h (HARD_REGNO_NREGS): Delete.
14481         * config/v850/v850.h (HARD_REGNO_NREGS): Delete.
14482         * config/vax/vax.h (HARD_REGNO_NREGS): Delete.
14483         * config/visium/visium.h (HARD_REGNO_NREGS): Delete.
14484         (CLASS_MAX_NREGS): Remove copy of old documentation.
14485         * config/visium/visium.c (TARGET_HARD_REGNO_NREGS): Redefine.
14486         (visium_hard_regno_nregs): New function.
14487         (visium_hard_regno_mode_ok): Use it instead of HARD_REGNO_NREGS.
14488         * config/xtensa/xtensa.h (HARD_REGNO_NREGS): Delete.
14489         * config/xtensa/xtensa.c (TARGET_HARD_REGNO_NREGS): Redefine.
14490         xtensa_hard_regno_nregs): New function.
14491         * system.h (HARD_REGNO_NREGS): Poison.
14492
14493 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
14494
14495         * config/arm/arm.h (THUMB_SECONDARY_INPUT_RELOAD_CLASS): Use
14496         hard_regno_nregs instead of HARD_REGNO_NREGS.
14497         (THUMB_SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
14498         * config/c6x/c6x.c (c6x_expand_prologue): Likewise.
14499         (c6x_expand_epilogue): Likewise.
14500         * config/frv/frv.c (frv_alloc_temp_reg): Likewise.
14501         (frv_read_iacc_argument): Likewise.
14502         * config/sh/sh.c: Include regs.h.
14503         (sh_print_operand): Use hard_regno_nregs instead of HARD_REGNO_NREGS.
14504         (regs_used): Likewise.
14505         (output_stack_adjust): Likewise.
14506         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Likewise.
14507         * expmed.c: Include regs.h.
14508         (store_bit_field_1): Use hard_regno_nregs instead of HARD_REGNO_NREGS.
14509         * ree.c: Include regs.h.
14510         (combine_reaching_defs): Use hard_regno_nregs instead of
14511         HARD_REGNO_NREGS.
14512         (add_removable_extension): Likewise.
14513
14514 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
14515
14516         * regs.h (hard_regno_nregs): Turn into a function.
14517         (end_hard_regno): Update accordingly.
14518         * caller-save.c (setup_save_areas): Likewise.
14519         (save_call_clobbered_regs): Likewise.
14520         (replace_reg_with_saved_mem): Likewise.
14521         (insert_restore): Likewise.
14522         (insert_save): Likewise.
14523         * combine.c (can_change_dest_mode): Likewise.
14524         (move_deaths): Likewise.
14525         (distribute_notes): Likewise.
14526         * config/mips/mips.c (mips_hard_regno_call_part_clobbered): Likewise.
14527         * config/powerpcspe/powerpcspe.c (rs6000_cannot_change_mode_class)
14528         (rs6000_split_multireg_move): Likewise.
14529         (rs6000_register_move_cost): Likewise.
14530         (rs6000_memory_move_cost): Likewise.
14531         * config/rs6000/rs6000.c (rs6000_cannot_change_mode_class): Likewise.
14532         (rs6000_split_multireg_move): Likewise.
14533         (rs6000_register_move_cost): Likewise.
14534         (rs6000_memory_move_cost): Likewise.
14535         * cselib.c (cselib_reset_table): Likewise.
14536         (cselib_lookup_1): Likewise.
14537         * emit-rtl.c (set_mode_and_regno): Likewise.
14538         * function.c (aggregate_value_p): Likewise.
14539         * ira-color.c (setup_profitable_hard_regs): Likewise.
14540         (check_hard_reg_p): Likewise.
14541         (calculate_saved_nregs): Likewise.
14542         (assign_hard_reg): Likewise.
14543         (improve_allocation): Likewise.
14544         (calculate_spill_cost): Likewise.
14545         * ira-emit.c (modify_move_list): Likewise.
14546         * ira-int.h (ira_hard_reg_set_intersection_p): Likewise.
14547         (ira_hard_reg_in_set_p): Likewise.
14548         * ira.c (setup_reg_mode_hard_regset): Likewise.
14549         (clarify_prohibited_class_mode_regs): Likewise.
14550         (check_allocation): Likewise.
14551         * lra-assigns.c (find_hard_regno_for_1): Likewise.
14552         (lra_setup_reg_renumber): Likewise.
14553         (setup_try_hard_regno_pseudos): Likewise.
14554         (spill_for): Likewise.
14555         (assign_hard_regno): Likewise.
14556         (setup_live_pseudos_and_spill_after_risky_transforms): Likewise.
14557         * lra-constraints.c (in_class_p): Likewise.
14558         (lra_constraint_offset): Likewise.
14559         (simplify_operand_subreg): Likewise.
14560         (lra_constraints): Likewise.
14561         (split_reg): Likewise.
14562         (split_if_necessary): Likewise.
14563         (invariant_p): Likewise.
14564         (inherit_in_ebb): Likewise.
14565         * lra-lives.c (process_bb_lives): Likewise.
14566         * lra-remat.c (reg_overlap_for_remat_p): Likewise.
14567         (get_hard_regs): Likewise.
14568         (do_remat): Likewise.
14569         * lra-spills.c (assign_spill_hard_regs): Likewise.
14570         * mode-switching.c (create_pre_exit): Likewise.
14571         * postreload.c (reload_combine_recognize_pattern): Likewise.
14572         * recog.c (peep2_find_free_register): Likewise.
14573         * regcprop.c (kill_value_regno): Likewise.
14574         (set_value_regno): Likewise.
14575         (copy_value): Likewise.
14576         (maybe_mode_change): Likewise.
14577         (find_oldest_value_reg): Likewise.
14578         (copyprop_hardreg_forward_1): Likewise.
14579         * regrename.c (check_new_reg_p): Likewise.
14580         (regrename_do_replace): Likewise.
14581         * reload.c (push_reload): Likewise.
14582         (combine_reloads): Likewise.
14583         (find_dummy_reload): Likewise.
14584         (operands_match_p): Likewise.
14585         (find_reloads): Likewise.
14586         (find_equiv_reg): Likewise.
14587         (reload_adjust_reg_for_mode): Likewise.
14588         * reload1.c (count_pseudo): Likewise.
14589         (count_spilled_pseudo): Likewise.
14590         (find_reg): Likewise.
14591         (clear_reload_reg_in_use): Likewise.
14592         (free_for_value_p): Likewise.
14593         (allocate_reload_reg): Likewise.
14594         (choose_reload_regs): Likewise.
14595         (reload_adjust_reg_for_temp): Likewise.
14596         (emit_reload_insns): Likewise.
14597         (delete_output_reload): Likewise.
14598         * rtlanal.c (subreg_get_info): Likewise.
14599         * sched-deps.c (sched_analyze_reg): Likewise.
14600         * sel-sched.c (init_regs_for_mode): Likewise.
14601         (mark_unavailable_hard_regs): Likewise.
14602         (choose_best_reg_1): Likewise.
14603         (verify_target_availability): Likewise.
14604         * valtrack.c (dead_debug_insert_temp): Likewise.
14605         * var-tracking.c (track_loc_p): Likewise.
14606         (emit_note_insn_var_location): Likewise.
14607         * varasm.c (make_decl_rtl): Likewise.
14608         * reginfo.c (choose_hard_reg_mode): Likewise.
14609         (init_reg_modes_target): Refer directly to
14610         this_target_regs->x_hard_regno_nregs.
14611
14612 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
14613
14614         * ira-costs.c (record_operand_costs): Use in_hard_reg_set_p
14615         instead of hard_regno_nregs.
14616
14617 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
14618
14619         * config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Use
14620         end_hard_regno instead of hard_regno_nregs.
14621         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
14622         * config/sparc/sparc.h (ASM_DECLARE_REGISTER_GLOBAL): Likewise.
14623         * config/visium/visium.c (visium_hard_regno_mode_ok): Likewise.
14624         * ira-color.c (improve_allocation): Likewise.
14625         * lra-assigns.c (find_hard_regno_for_1): Likewise.
14626         * lra-lives.c (mark_regno_live): Likewise.
14627         (mark_regno_dead): Likewise.
14628         * lra-remat.c (operand_to_remat): Likewise.
14629         * lra.c (collect_non_operand_hard_regs): Likewise.
14630         * postreload.c (reload_combine_note_store): Likewise.
14631         (move2add_valid_value_p): Likewise.
14632         * reload.c (regno_clobbered_p): Likewise.
14633
14634 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
14635
14636         * config/frv/frv.c (FOR_EACH_REGNO): Use END_REGNO instead of
14637         hard_regno_nregs.
14638         * config/v850/v850.c (v850_reorg): Likewise.
14639         * reload.c (refers_to_regno_for_reload_p): Likewise.
14640         (find_equiv_reg): Likewise.
14641         * reload1.c (reload_reg_reaches_end_p): Likewise.
14642
14643 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
14644
14645         * caller-save.c (add_used_regs): Use REG_NREGS instead of
14646         hard_regno_nregs.
14647         * config/aarch64/aarch64.c (aarch64_split_combinev16qi): Likewise.
14648         * config/arm/arm.c (output_move_neon): Likewise.
14649         (arm_attr_length_move_neon): Likewise.
14650         (neon_split_vcombine): Likewise.
14651         * config/c6x/c6x.c (c6x_mark_reg_read): Likewise.
14652         (c6x_mark_reg_written): Likewise.
14653         (c6x_dwarf_register_span): Likewise.
14654         * config/i386/i386.c (ix86_save_reg): Likewise.
14655         * config/ia64/ia64.c (mark_reg_gr_used_mask): Likewise.
14656         (rws_access_reg): Likewise.
14657         * config/s390/s390.c (s390_call_saved_register_used): Likewise.
14658         * mode-switching.c (create_pre_exit): Likewise.
14659         * ree.c (combine_reaching_defs): Likewise.
14660         (add_removable_extension): Likewise.
14661         * regcprop.c (find_oldest_value_reg): Likewise.
14662         (copyprop_hardreg_forward_1): Likewise.
14663         * reload.c (reload_inner_reg_of_subreg): Likewise.
14664         (push_reload): Likewise.
14665         (combine_reloads): Likewise.
14666         (find_dummy_reload): Likewise.
14667         (reload_adjust_reg_for_mode): Likewise.
14668         * reload1.c (find_reload_regs): Likewise.
14669         (forget_old_reloads_1): Likewise.
14670         (reload_reg_free_for_value_p): Likewise.
14671         (reload_adjust_reg_for_temp): Likewise.
14672         (emit_reload_insns): Likewise.
14673         (delete_output_reload): Likewise.
14674         * sel-sched.c (choose_best_reg_1): Likewise.
14675         (choose_best_pseudo_reg): Likewise.
14676
14677 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
14678             Alan Hayward  <alan.hayward@arm.com>
14679             David Sherwood <david.sherwood@arm.com>
14680
14681         * defaults.h (SLOW_UNALIGNED_ACCESS): Delete.
14682         * target.def (slow_unaligned_access): New hook.
14683         * targhooks.h (default_slow_unaligned_access): Declare.
14684         * targhooks.c (default_slow_unaligned_access): New function.
14685         * doc/tm.texi.in (SLOW_UNALIGNED_ACCESS): Replace with...
14686         (TARGET_SLOW_UNALIGNED_ACCESS): ...this.
14687         * doc/tm.texi: Regenerate.
14688         * config/alpha/alpha.h (SLOW_UNALIGNED_ACCESS): Delete.
14689         * config/arm/arm.h (SLOW_UNALIGNED_ACCESS): Delete.
14690         * config/i386/i386.h (SLOW_UNALIGNED_ACCESS): Delete commented-out
14691         definition.
14692         * config/powerpcspe/powerpcspe.h (SLOW_UNALIGNED_ACCESS): Delete.
14693         * config/powerpcspe/powerpcspe.c (TARGET_SLOW_UNALIGNED_ACCESS):
14694         Redefine.
14695         (rs6000_slow_unaligned_access): New function.
14696         (rs6000_emit_move): Use it instead of SLOW_UNALIGNED_ACCESS.
14697         (expand_block_compare): Likewise.
14698         (expand_strn_compare): Likewise.
14699         (rs6000_rtx_costs): Likewise.
14700         * config/riscv/riscv.h (SLOW_UNALIGNED_ACCESS): Delete.
14701         (riscv_slow_unaligned_access): Likewise.
14702         * config/riscv/riscv.c (riscv_slow_unaligned_access): Rename to...
14703         (riscv_slow_unaligned_access_p): ...this and make static.
14704         (riscv_option_override): Update accordingly.
14705         (riscv_slow_unaligned_access): New function.
14706         (TARGET_SLOW_UNALIGNED_ACCESS): Redefine.
14707         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Delete.
14708         * config/rs6000/rs6000.c (TARGET_SLOW_UNALIGNED_ACCESS): Redefine.
14709         (rs6000_slow_unaligned_access): New function.
14710         (rs6000_emit_move): Use it instead of SLOW_UNALIGNED_ACCESS.
14711         (rs6000_rtx_costs): Likewise.
14712         * config/rs6000/rs6000-string.c (expand_block_compare)
14713         (expand_strn_compare): Use targetm.slow_unaligned_access instead
14714         of SLOW_UNALIGNED_ACCESS.
14715         * config/tilegx/tilegx.h (SLOW_UNALIGNED_ACCESS): Delete.
14716         * config/tilepro/tilepro.h (SLOW_UNALIGNED_ACCESS): Delete.
14717         * calls.c (expand_call): Use targetm.slow_unaligned_access instead
14718         of SLOW_UNALIGNED_ACCESS.
14719         * expmed.c (simple_mem_bitfield_p): Likewise.
14720         * expr.c (alignment_for_piecewise_move): Likewise.
14721         (emit_group_load_1): Likewise.
14722         (emit_group_store): Likewise.
14723         (copy_blkmode_from_reg): Likewise.
14724         (emit_push_insn): Likewise.
14725         (expand_assignment): Likewise.
14726         (store_field): Likewise.
14727         (expand_expr_real_1): Likewise.
14728         * gimple-fold.c (gimple_fold_builtin_memory_op): Likewise.
14729         * lra-constraints.c (simplify_operand_subreg): Likewise.
14730         * stor-layout.c (bit_field_mode_iterator::next_mode): Likewise.
14731         * gimple-ssa-store-merging.c: Likewise in block comment at start
14732         of file.
14733         * tree-ssa-strlen.c: Include target.h.
14734         (handle_builtin_memcmp): Use targetm.slow_unaligned_access instead
14735         of SLOW_UNALIGNED_ACCESS.
14736         * system.h (SLOW_UNALIGNED_ACCESS): Poison.
14737
14738 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
14739
14740         PR rtl-optimization/82185
14741         * expmed.c (emit_store_flag_int): Only test tem if it has been
14742         initialized.
14743
14744 2017-09-12  Richard Biener  <rguenther@suse.de>
14745
14746         PR middle-end/82149
14747         * match.pd ((FTYPE) N CMP CST): Fix typo.
14748
14749 2017-09-12  Simon Atanasyan  <simon.atanasyan@imgtec.com>
14750
14751         * config/mips/mips.c (mips_attribute_table): Add 'short_call'
14752         attribute.
14753         (mips_near_type_p): Add 'short_call' attribute as a synonym
14754         for 'near'.
14755         * doc/extend.texi (short_call): Document new function attribute.
14756
14757 2017-09-12  Jakub Jelinek  <jakub@redhat.com>
14758
14759         PR target/82112
14760         * c-common.c (sync_resolve_size): Instead of c_dialect_cxx ()
14761         assertion check that in the condition.
14762         (get_atomic_generic_size): Likewise.  Before testing if parameter
14763         has pointer type, if it has array type, call for C++
14764         default_conversion to perform array-to-pointer conversion.
14765
14766 2017-09-12  Richard Biener  <rguenther@suse.de>
14767
14768         * tree-vect-generic.c (expand_vector_operations_1): Do nothing
14769         for operations we cannot scalarize.
14770
14771 2017-09-12  Aldy Hernandez  <aldyh@redhat.com>
14772
14773         * tree-ssa-threadbackward.c (fsm_find_thread_path): Make GC
14774         vectors heap vectors.  Clean up comments.
14775         Make visited_bbs a reference.
14776         (profitable_jump_thread_path): Make GC
14777         vectors heap vectors.  Clean up comments.
14778         Misc cleanups.
14779         (convert_and_register_jump_thread_path): Make GC vectors heap
14780         vectors.
14781         (check_subpath_and_update_thread_path): Same.  Clean up comments.
14782         Make visited_bbs a reference.
14783         (handle_phi): Abstract common code to to
14784         register_jump_thread_path_if_profitable.
14785         Rename VAR_BB to DEF_BB.
14786         Update comments.
14787         Make GC vectors heap vectors.
14788         Make visited_bbs a reference.
14789         (handle_assignment): Same.
14790         (register_jump_thread_path_if_profitable): New.
14791         (fsm_find_control_statement_thread_paths): Rename VAR_BB to
14792         DEF_BB.
14793         Make GC vectors heap vectors.  Clean up comments.
14794         Make visited_bbs a reference.
14795         (find_jump_threads_backwards): Make visited_bbs live in the stack.
14796         * tree-ssa-threadupdate.c (delete_jump_thread_path): Fix typo in
14797         comment.
14798
14799 2017-09-11  Max Filippov  <jcmvbkbc@gmail.com>
14800
14801         PR target/82181
14802         * config/xtensa/xtensa.c (xtensa_mem_offset): Check that both
14803         words of E_DImode object are reachable by xtensa_uimm8x4 access.
14804
14805 2017-09-11  Vidya Praveen  <vidyapraveen@arm.com>
14806
14807         Revert r251800 and r251799.
14808
14809 2017-09-11  Martin Jambor  <mjambor@suse.cz>
14810
14811         PR hsa/82119
14812         * hsa-gen.c (gen_hsa_phi_from_gimple_phi): Process ADDR_EXPRs in
14813         arguments in advance.
14814         * hsa-regalloc.c (naive_process_phi): New parameter predecessors,
14815         use it to find predecessor edges.
14816         (naive_outof_ssa): Collect vector of predecessors.
14817
14818 2017-09-08  Jason Merrill  <jason@redhat.com>
14819
14820         PR c++/70029 - ICE with ref-qualifier and -flto
14821         * langhooks.h (struct lang_hooks_for_types): Add
14822         copy_lang_qualifiers.
14823         * attribs.c (build_type_attribute_qual_variant): Use it.
14824         * langhooks-def.h (LANG_HOOKS_COPY_LANG_QUALIFIERS): Default to
14825         NULL.
14826         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Use it.
14827         * tree.c (verify_type): Re-enable TYPE_CANONICAL main variant check.
14828
14829 2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>
14830
14831         PR target/81988
14832         * config/sparc/sparc.md (mulsi3): Rename into *mulsi3_sp32.
14833         (*mulsi3_sp64): New instruction.
14834         (mulsi3): New expander.
14835
14836 2017-09-08  Uros Bizjak  <ubizjak@gmail.com>
14837
14838         * config/alpha/alpha.c (alpha_print_operand) <case 'S'>: Remove.
14839
14840 2017-09-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
14841
14842         * sancov.c: Include memmodel.h.
14843
14844 2017-09-07  Eric Botcazou  <ebotcazou@adacore.com>
14845
14846         PR target/80897
14847         * config/sparc/sparc.c (sparc_emit_set_symbolic_const64): Deal with too
14848         large offsets.
14849
14850 2017-09-07  Carl Love  <cel@us.ibm.com>
14851
14852         * config/rs6000/vsx.md (define_insn "*stxvl"): Add missing argument to
14853         the sldi instruction.
14854
14855 2017-09-07  David Edelsohn  <dje.gcc@gmail.com>
14856
14857         * sancov.c: Include tm_p.h.
14858
14859 2017-09-07  Jakub Jelinek  <jakub@redhat.com>
14860
14861         PR target/81979
14862         * output.h (switch_to_other_text_partition): New declaration.
14863         * varasm.c (switch_to_other_text_partition): New function.
14864         * config/rs6000/rs6000.c (uses_TOC): Return 2 if
14865         NOTE_INSN_SWITCH_TEXT_SECTIONS is seen before finding load_toc_* insn.
14866         (rs6000_elf_declare_function_name): If uses_TOC returned 2, switch
14867         to the other text partition before emitting LCL label and switch back
14868         after emitting the word after it.
14869
14870 2017-09-07  Richard Biener  <rguenther@suse.de>
14871
14872         * passes.def (pass_split_crit_edges): Remove instance before PRE.
14873         * tree-ssa-pre.c (pass_pre::execute): Instead manually split
14874         critical edges here, after loop init.
14875         (pass_data_pre): Remove PROP_no_crit_edges flags.
14876         * tree-ssa-sccvn.c (vn_reference_lookup_3): Use vn_valueize
14877         for valueization of call args to avoid leaking VN_TOP.
14878         (visit_use): Assert we do not visit default defs.
14879         (init_scc_vn): Use build_decl for VN_TOP to make name nicer.
14880         Use error_mark_node to more easily detect leaking VN_TOP.
14881         All default-defs are varying, not VN_TOP.  Mark them visited.
14882         (run_scc_vn): Make code match comment.
14883
14884 2017-09-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
14885
14886         * config/rs6000/rs6000-cpus.def (OTHER_VSX_VECTOR_MASKS): Delete
14887         OPTION_MASK_FLOAT128_KEYWORD.
14888         (POWERPC_MASKS): Likewise.
14889         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Delete
14890         support for the -mfloat128-type option, and make -mfloat128
14891         default on PowerPC Linux systems.  Define or undefine
14892         __FLOAT128__ and  __FLOAT128_HARDWARE__ for the current options.
14893         Define __float128 to be __ieee128 if IEEE 128-bit support is
14894         enabled, or undefine it.
14895         (rs6000_cpu_cpp_builtins): Delete defining __FLOAT128__ here.
14896         Delete defining __FLOAT128_TYPE__.
14897         * config/rs6000/rs6000.opt (x_TARGET_FLOAT128_TYPE): Delete the
14898         -mfloat128-type option and make -mfloat128 default on PowerPC
14899         Linux systems.
14900         (TARGET_FLOAT128_TYPE): Likewise.
14901         (-mfloat128-type): Likewise.
14902         * config/rs6000/rs6000.c (rs6000_option_override_internal):
14903         Delete the -mfloat128-type option and make -mfloat128 default on
14904         PowerPC Linux systems.  Always use __ieee128 to be the keyword for
14905         the IEEE 128-bit type, and map __float128 to __ieee128 if IEEE
14906         128-bit floating point is enabled.  Change tests from using
14907         -mfloat128-type to -mfloat128.
14908         (rs6000_mangle_type): Use the correct mangling for the __float128
14909         type even if normal long double is restricted to 64-bits.
14910         (floatn_mode): Enable the _Float128 type by default on VSX Linux
14911         systems.
14912         * config/rs6000/rs6000.h (MASK_FLOAT128_TYPE): Delete.
14913         (MASK_FLOAT128_KEYWORD): Define new shortcut macro.
14914         (RS6000BTM_FLOAT128): Define in terms of -mfloat128, not
14915         -mfloat128-type.
14916         * doc/invoke.texi (RS/6000 and PowerPC Options): Update
14917         documentation for -mfloat128.
14918
14919 2017-09-06  Olivier Hainque  <hainque@adacore.com>
14920
14921         * config.gcc (powerpc-wrs-vxworksspe): Now match as vxworks*spe.
14922
14923 2017-09-06  Wish Wu  <wishwu007@gmail.com>
14924             Jakub Jelinek  <jakub@redhat.com>
14925
14926         * asan.c (initialize_sanitizer_builtins): Add
14927         BT_FN_VOID_UINT8_UINT8, BT_FN_VOID_UINT16_UINT16,
14928         BT_FN_VOID_UINT32_UINT32, BT_FN_VOID_UINT64_UINT64,
14929         BT_FN_VOID_FLOAT_FLOAT, BT_FN_VOID_DOUBLE_DOUBLE and
14930         BT_FN_VOID_UINT64_PTR variables.
14931         * builtin-types.def (BT_FN_VOID_UINT8_UINT8): New fn type.
14932         (BT_FN_VOID_UINT16_UINT16): Likewise.
14933         (BT_FN_VOID_UINT32_UINT32): Likewise.
14934         (BT_FN_VOID_FLOAT_FLOAT): Likewise.
14935         (BT_FN_VOID_DOUBLE_DOUBLE): Likewise.
14936         (BT_FN_VOID_UINT64_PTR): Likewise.
14937         * common.opt (flag_sanitize_coverage): New variable.
14938         (fsanitize-coverage=trace-pc): Remove.
14939         (fsanitize-coverage=): Add.
14940         * flag-types.h (enum sanitize_coverage_code): New enum.
14941         * fold-const.c (fold_range_test): Disable non-short-circuit
14942         optimization if flag_sanitize_coverage.
14943         (fold_truth_andor): Likewise.
14944         * tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise.
14945         * opts.c (COVERAGE_SANITIZER_OPT): Define.
14946         (coverage_sanitizer_opts): New array.
14947         (get_closest_sanitizer_option): Add OPTS argument, handle also
14948         OPT_fsanitize_coverage_.
14949         (parse_sanitizer_options): Adjusted to also handle
14950         OPT_fsanitize_coverage_.
14951         (common_handle_option): Add OPT_fsanitize_coverage_.
14952         * sancov.c (instrument_comparison, instrument_switch): New function.
14953         (sancov_pass): Add trace-cmp support.
14954         * sanitizer.def (BUILT_IN_SANITIZER_COV_TRACE_CMP1,
14955         BUILT_IN_SANITIZER_COV_TRACE_CMP2, BUILT_IN_SANITIZER_COV_TRACE_CMP4,
14956         BUILT_IN_SANITIZER_COV_TRACE_CMP8,
14957         BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP1,
14958         BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP2,
14959         BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP4,
14960         BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP8,
14961         BUILT_IN_SANITIZER_COV_TRACE_CMPF, BUILT_IN_SANITIZER_COV_TRACE_CMPD,
14962         BUILT_IN_SANITIZER_COV_TRACE_SWITCH): New builtins.
14963         * doc/invoke.texi: Document -fsanitize-coverage=trace-cmp.
14964
14965 2017-09-06  Richard Earnshaw  <rearnsha@arm.com>
14966
14967         * config/arm/parsecpu.awk (fatal): Note that we've encountered an
14968         error.  Only quit immediately if parsing is complete.
14969         (BEGIN): Initialize fatal_err and parse_done.
14970         (begin fpu, end fpu): Check number of arguments.
14971         (begin arch, end arch): Likewise.
14972         (begin cpu, end cpu): Likewise.
14973         (cname, tune for, tune flags, architecture, fpu, option): Likewise.
14974         (optalias): Likewise.
14975
14976 2017-09-06  Richard Earnshaw  <rearnsha@arm.com>
14977
14978         * config.gcc (arm*-*-*): Don't add arm-isa.h to tm_p_file.
14979         * config/arm/arm-isa.h: Delete.  Move definitions to ...
14980         * arm-cpus.in: ... here.  Use new feature and fgroup values.
14981         * config/arm/arm.c (arm_option_override): Use lower case for feature
14982         bit names.
14983         * config/arm/arm.h (TARGET_HARD_FLOAT): Likewise.
14984         (TARGET_VFP3, TARGET_VFP5, TARGET_FMA): Likewise.
14985         * config/arm/parsecpu.awk (END): Add new command 'isa'.
14986         (isa_pfx): Delete.
14987         (print_isa_bits_for): New function.
14988         (gen_isa): New function.
14989         (gen_comm_data): Use print_isa_bits_for.
14990         (define feature): New keyword.
14991         (define fgroup): New keyword.
14992         * config/arm/t-arm (OPTIONS_H_EXTRA): Add arm-isa.h
14993         (arm-isa.h): Add rule to generate file.
14994         * common/config/arm/arm-common.c: (arm_canon_arch_option): Use lower
14995         case for feature bit names.
14996
14997 2017-09-06  Richard Biener  <rguenther@suse.de>
14998
14999         * tree-ssa-pre.c (NECESSARY): Remove.
15000         (create_expression_by_pieces): Do not touch pass-local flags.
15001         (insert_into_preds_of_block): Likewise.
15002         (do_pre_regular_insertion): Likewise.
15003         (eliminate_insert): Likewise.
15004         (eliminate_dom_walker::before_dom_children): Likewise.
15005         (fini_eliminate): Do not look at inserted_exprs.
15006         (mark_operand_necessary): Remove.
15007         (remove_dead_inserted_code): Replace with simple work-list
15008         algorithm based on inserted_exprs and SSA uses.
15009         (pass_pre::execute): Re-order fini_eliminate and
15010         remove_dead_inserted_code.
15011
15012 2017-09-06  Olivier Hainque  <hainque@adacore.com>
15013
15014         * config/powerpcspe/vxworks.h (VXCPU_FOR_8548): Correct definition
15015         for VxWorks 7.  Adjust surrounding comments.
15016
15017 2017-09-06  Richard Biener  <rguenther@suse.de>
15018
15019         * gimple-ssa-strength-reduction.c
15020         (find_candidates_dom_walker::before_dom_children): Also allow
15021         pointer types.
15022
15023 2017-09-06  Richard Biener  <rguenther@suse.de>
15024
15025         PR tree-optimization/82108
15026         * tree-vect-stmts.c (vectorizable_load): Fix pointer adjustment
15027         for gap in the non-permutation SLP case.
15028
15029 2017-09-06  Martin Jambor  <mjambor@suse.cz>
15030
15031         PR tree-optimization/82078
15032         * tree-sra.c (sort_and_splice_var_accesses): Move call to
15033         add_access_to_work_queue...
15034         (build_accesses_from_assign): ...here.
15035         (propagate_all_subaccesses): Make sure racc is the group
15036         representative, if there is one.
15037
15038 2017-09-06  Jakub Jelinek  <jakub@redhat.com>
15039
15040         PR middle-end/82095
15041         * varasm.c (categorize_decl_for_section): Use SECCAT_TBSS for TLS vars with
15042         NULL DECL_INITIAL.
15043
15044 2017-09-06  Richard Biener  <rguenther@suse.de>
15045
15046         * gimple-ssa-strength-reduction.c
15047         (find_candidates_dom_walker::before_doom_children): Use a
15048         type and not a mode check.
15049
15050 2017-09-06  Bernd Edlinger  <bernd.edlinger@hotmail.de>
15051
15052         PR target/77308
15053         * config/arm/predicates.md (arm_general_adddi_operand): Create new
15054         non-vfp predicate.
15055         * config/arm/arm.md (*arm_adddi3, *arm_subdi3): Use new predicates.
15056
15057 2017-09-05  Jeff Law  <law@redhat.com>
15058
15059         PR tree-optimization/64910
15060         * tree-ssa-reassoc.c (reassociate_bb): Restrict last change to
15061         cases where we have 3 or more operands.
15062
15063 2017-09-05  Jakub Jelinek  <jakub@redhat.com>
15064
15065         PR middle-end/81768
15066         * omp-low.c (lower_omp_for): Recompute tree invariant if
15067         gimple_omp_for_initial/final is ADDR_EXPR.
15068
15069         PR middle-end/81768
15070         * omp-expand.c (expand_omp_simd): Force second operands of COND_EXPR
15071         into gimple val before gimplification fo the COND_EXPR.
15072
15073 2017-09-05  Aldy Hernandez  <aldyh@redhat.com>
15074
15075         * tree-ssa-threadupdate.c (duplicate_thread_path): Remove unused
15076         REGION_COPY argument.
15077         (thread_through_all_blocks): Remove unused argument to
15078         duplicate_thread_path.
15079
15080 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15081             Alan Hayward  <alan.hayward@arm.com>
15082             David Sherwood  <david.sherwood@arm.com>
15083
15084         * config/aarch64/aarch64-protos.h (aarch64_gen_adjusted_ldpstp):
15085         Take a scalar_mode rather than a machine_mode.
15086         (aarch64_operands_adjust_ok_for_ldpstp): Likewise.
15087         * config/aarch64/aarch64.c (aarch64_simd_container_mode): Likewise.
15088         (aarch64_operands_adjust_ok_for_ldpstp): Likewise.
15089         (aarch64_gen_adjusted_ldpstp): Likewise.
15090         (aarch64_expand_vector_init): Use scalar_mode instead of machine_mode.
15091
15092 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15093             Alan Hayward  <alan.hayward@arm.com>
15094             David Sherwood  <david.sherwood@arm.com>
15095
15096         * config/aarch64/aarch64-protos.h (aarch64_is_extend_from_extract):
15097         Take a scalar_int_mode instead of a machine_mode.
15098         (aarch64_mask_and_shift_for_ubfiz_p): Likewise.
15099         (aarch64_output_scalar_simd_mov_immediate): Likewise.
15100         (aarch64_simd_scalar_immediate_valid_for_move): Likewise.
15101         (aarch64_simd_attr_length_rglist): Delete.
15102         * config/aarch64/aarch64.c (aarch64_is_extend_from_extract): Take
15103         a scalar_int_mode instead of a machine_mode.
15104         (aarch64_add_offset): Likewise.
15105         (aarch64_internal_mov_immediate): Likewise
15106         (aarch64_add_constant_internal): Likewise.
15107         (aarch64_add_constant): Likewise.
15108         (aarch64_movw_imm): Likewise.
15109         (aarch64_rtx_arith_op_extract_p): Likewise.
15110         (aarch64_mask_and_shift_for_ubfiz_p): Likewise.
15111         (aarch64_simd_scalar_immediate_valid_for_move): Likewise.
15112         Remove assert that the mode isn't a vector.
15113         (aarch64_output_scalar_simd_mov_immediate): Likewise.
15114         (aarch64_expand_mov_immediate): Update calls after above changes.
15115         (aarch64_output_casesi): Use as_a <scalar_int_mode>.
15116         (aarch64_and_bitmask_imm): Check for scalar integer modes.
15117         (aarch64_move_imm): Likewise.
15118         (aarch64_can_const_movi_rtx_p): Likewise.
15119         (aarch64_strip_extend): Likewise.
15120         (aarch64_extr_rtx_p): Likewise.
15121         (aarch64_rtx_costs): Likewise, using wode_mode as the mode of
15122         a CONST_INT when the mode parameter is VOIDmode.
15123         (aarch64_float_const_rtx_p): Use scalar_int_mode for a temporary.
15124
15125 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15126
15127         * machmode.h (bitwise_mode_for_mode): Return opt_mode.
15128         * stor-layout.c (bitwise_mode_for_mode): Likewise.
15129         (bitwise_type_for_mode): Update accordingly.
15130
15131 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15132
15133         * stor-layout.h (mode_for_size_tree): Return an opt_mode.
15134         * stor-layout.c (mode_for_size_tree): Likewise.
15135         (mode_for_array): Update accordingly.
15136         (layout_decl): Likewise.
15137         (compute_record_mode): Likewise.  Only set the mode once.
15138
15139 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15140
15141         * target.def (get_mask_mode): Change return type to opt_mode.
15142         Expand commentary.
15143         * doc/tm.texi: Regenerate.
15144         * targhooks.h (default_get_mask_mode): Return an opt_mode.
15145         * targhooks.c (default_get_mask_mode): Likewise.
15146         * config/i386/i386.c (ix86_get_mask_mode): Likewise.
15147         * optabs-query.c (can_vec_mask_load_store_p): Update use of
15148         targetm.get_mask_mode.
15149         * tree.c (build_truth_vector_type): Likewise.
15150
15151 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15152
15153         * machmode.h (mode_for_vector): Return an opt_mode.
15154         * stor-layout.c (mode_for_vector): Likewise.
15155         (mode_for_int_vector): Update accordingly.
15156         (layout_type): Likewise.
15157         * config/i386/i386.c (emit_memmov): Likewise.
15158         (ix86_expand_set_or_movmem): Likewise.
15159         (ix86_expand_vector_init): Likewise.
15160         (ix86_get_mask_mode): Likewise.
15161         * config/powerpcspe/powerpcspe.c (rs6000_expand_vec_perm_const_1):
15162         Likewise.
15163         * config/rs6000/rs6000.c (rs6000_expand_vec_perm_const_1): Likewise.
15164         * expmed.c (extract_bit_field_1): Likewise.
15165         * expr.c (expand_expr_real_2): Likewise.
15166         * optabs-query.c (can_vec_perm_p): Likewise.
15167         (can_vec_mask_load_store_p): Likewise.
15168         * optabs.c (expand_vec_perm): Likewise.
15169         * targhooks.c (default_get_mask_mode): Likewise.
15170         * tree-vect-stmts.c (vectorizable_store): Likewise.
15171         (vectorizable_load): Likewise.
15172         (get_vectype_for_scalar_type_and_size): Likewise.
15173
15174 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15175
15176         * machmode.h (mode_for_int_vector): New function.
15177         * stor-layout.c (mode_for_int_vector): Likewise.
15178         * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Use it.
15179         * config/powerpcspe/powerpcspe.c (rs6000_do_expand_vec_perm): Likewise.
15180         * config/rs6000/rs6000.c (rs6000_do_expand_vec_perm): Likewise.
15181         * config/s390/s390.c (s390_expand_vec_compare_cc): Likewise.
15182         (s390_expand_vcond): Likewise.
15183
15184 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15185
15186         * machmode.h (opt_machine_mode): New type.
15187         (opt_mode<T>): Allow construction from anything that can be
15188         converted to a T.
15189         (is_a, as_a, dyn_cast): Add overloads for opt_mode.
15190         (mode_for_size): Return an opt_machine_mode.
15191         * stor-layout.c (mode_for_size): Likewise.
15192         (mode_for_size_tree): Update call accordingly.
15193         (bitwise_mode_for_mode): Likewise.
15194         (make_fract_type): Likewise.
15195         (make_accum_type): Likewise.
15196         * caller-save.c (replace_reg_with_saved_mem): Update call
15197         accordingly.
15198         * config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
15199         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
15200         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
15201         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
15202         * expmed.c (extract_bit_field_1): Likewise.
15203         * reload.c (get_secondary_mem): Likewise.
15204         * varasm.c (assemble_integer): Likewise.
15205         * lower-subreg.c (simplify_subreg_concatn): Likewise.  Move
15206         early-out.
15207
15208 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15209
15210         * machmode.h (decimal_float_mode_for_size): New function.
15211         * real.h (REAL_VALUE_TO_TARGET_LONG_DOUBLE): Use float_mode_for_size.
15212         (REAL_VALUE_TO_TARGET_DOUBLE): Likewise.
15213         (REAL_VALUE_TO_TARGET_SINGLE): Likewise.
15214         (REAL_VALUE_TO_TARGET_DECIMAL128): Use decimal_float_mode_for_size.
15215         (REAL_VALUE_TO_TARGET_DECIMAL64): Likewise.
15216         (REAL_VALUE_TO_TARGET_DECIMAL32): Likewise.
15217
15218 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15219
15220         * builtins.c (expand_builtin_powi): Use int_mode_for_size.
15221         (get_builtin_sync_mode): Likewise.
15222         (expand_ifn_atomic_compare_exchange): Likewise.
15223         (expand_builtin_atomic_clear): Likewise.
15224         (expand_builtin_atomic_test_and_set): Likewise.
15225         (fold_builtin_atomic_always_lock_free): Likewise.
15226         * calls.c (compute_argument_addresses): Likewise.
15227         (emit_library_call_value_1): Likewise.
15228         (store_one_arg): Likewise.
15229         * combine.c (combine_instructions): Likewise.
15230         * config/aarch64/aarch64.c (aarch64_function_value): Likewise.
15231         * config/arm/arm.c (arm_function_value): Likewise.
15232         (aapcs_allocate_return_reg): Likewise.
15233         * config/c6x/c6x.c (c6x_expand_movmem): Likewise.
15234         * config/i386/i386.c (construct_container): Likewise.
15235         (ix86_gimplify_va_arg): Likewise.
15236         (ix86_expand_sse_cmp): Likewise.
15237         (emit_memmov): Likewise.
15238         (emit_memset): Likewise.
15239         (expand_small_movmem_or_setmem): Likewise.
15240         (ix86_expand_pextr): Likewise.
15241         (ix86_expand_pinsr): Likewise.
15242         * config/lm32/lm32.c (lm32_block_move_inline): Likewise.
15243         * config/microblaze/microblaze.c (microblaze_block_move_straight):
15244         Likewise.
15245         * config/mips/mips.c (mips_function_value_1) Likewise.
15246         (mips_block_move_straight): Likewise.
15247         (mips_expand_ins_as_unaligned_store): Likewise.
15248         * config/powerpcspe/powerpcspe.c
15249         (rs6000_darwin64_record_arg_advance_flush): Likewise.
15250         (rs6000_darwin64_record_arg_flush): Likewise.
15251         * config/rs6000/rs6000.c
15252         (rs6000_darwin64_record_arg_advance_flush): Likewise.
15253         (rs6000_darwin64_record_arg_flush): Likewise.
15254         * config/sparc/sparc.c (sparc_function_arg_1): Likewise.
15255         (sparc_function_value_1): Likewise.
15256         * config/spu/spu.c (adjust_operand): Likewise.
15257         (spu_emit_branch_or_set): Likewise.
15258         (arith_immediate_p): Likewise.
15259         * emit-rtl.c (gen_lowpart_common): Likewise.
15260         * expr.c (expand_expr_real_1): Likewise.
15261         * function.c (assign_parm_setup_block): Likewise.
15262         * gimple-ssa-store-merging.c (encode_tree_to_bitpos): Likewise.
15263         * reload1.c (alter_reg): Likewise.
15264         * stor-layout.c (mode_for_vector): Likewise.
15265         (layout_type): Likewise.
15266
15267 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
15268
15269         * config/spu/spu.c (exp2_immediate_p): Use int_mode_for_mode.
15270         (spu_convert_move): Likewise.
15271         * lower-subreg.c (resolve_simple_move): Likewise.
15272
15273 2017-09-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
15274
15275         PR target/81833
15276         * config/rs6000/altivec.md (altivec_vsum2sws): Convert from a
15277         define_insn to a define_expand.
15278         (altivec_vsum2sws_direct): New define_insn.
15279         (altivec_vsumsws): Convert from a define_insn to a define_expand.
15280
15281 2017-09-05  Wilco Dijkstra  <wdijkstr@arm.com>
15282
15283         * config/arm/arm.c (arm_option_params_internal): Improve setting of
15284         max_insns_skipped.
15285
15286 2017-09-05  H.J. Lu  <hongjiu.lu@intel.com>
15287
15288         PR target/59501
15289         PR target/81624
15290         PR target/81769
15291         * config/i386/i386.c (ix86_finalize_stack_frame_flags): Don't
15292         realign stack if stack alignment needed is less than incoming
15293         stack boundary.
15294
15295 2017-09-05  Marek Polacek  <polacek@redhat.com>
15296
15297         PR sanitizer/82072
15298         * convert.c (convert_to_integer_1) <case NEGATE_EXPR>: Move the ubsan
15299         check earlier.
15300
15301 2017-09-05  Wilco Dijkstra  <wdijkstr@arm.com>
15302
15303         * explow.c (get_dynamic_stack_size): Improve dynamic alignment.
15304
15305 2017-09-05  Richard Biener  <rguenther@suse.de>
15306
15307         PR tree-optimization/82084
15308         * fold-const.c (can_native_encode_string_p): Handle wide characters.
15309
15310 2017-09-05  Richard Biener  <rguenther@suse.de>
15311
15312         PR tree-optimization/82102
15313         * tree-ssa-pre.c (fini_eliminate): Check if lhs is NULL.
15314
15315 2017-09-05  Martin Liska  <mliska@suse.cz>
15316
15317         PR tree-optimization/82032
15318         * tree-cfg.c (generate_range_test): New function.
15319         * tree-cfg.h (generate_range_test): Declared here.
15320         * tree-cfgcleanup.c (convert_single_case_switch): New function.
15321         (cleanup_control_expr_graph): Use it.
15322         * tree-switch-conversion.c (try_switch_expansion): Remove
15323         assert.
15324         (emit_case_nodes): Use generate_range_test.
15325
15326 2017-09-04  Uros Bizjak  <ubizjak@gmail.com>
15327
15328         PR target/82098
15329         * config/i386/i386.md (*<btsc><mode>_mask): Add
15330         TARGET_USE_BT to insn constraint.
15331         (*btr<mode>_mask): Ditto.
15332
15333 2017-09-04  Wilco Dijkstra  <wdijkstr@arm.com>
15334
15335         * config/arm/arm.c (arm_legitimate_index_p): Add comment.
15336         (thumb2_legitimate_index_p): Use correct range for DI/DF mode.
15337
15338 2017-09-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>
15339
15340         PR target/77308
15341         * config/arm/arm.md (*arm_adddi3, *arm_subdi3): Split early except for
15342         TARGET_NEON and TARGET_IWMMXT.
15343         (anddi3, iordi3, xordi3, one_cmpldi2): Split while expanding except for
15344         TARGET_NEON and TARGET_IWMMXT.
15345         (*one_cmpldi2_insn): Moved the body of one_cmpldi2 here.
15346
15347 2017-09-04  Uros Bizjak  <ubizjak@gmail.com>
15348
15349         * config/i386/i386-protos.h (ix86_tls_address_pattern_p) New prototype.
15350         (ix86_rewrite_tls_address): Ditto.
15351         * config/i386/i386.c (ix86_tls_address_pattern_p) New function.
15352         (ix86_rewrite_tls_address_1): Ditto.
15353         (ix86_rewrite_tls_address): Ditto.
15354         * config/i386/predicates.md (tls_address_pattern): New predicate.
15355         * config/i386/i386.md (TLS address splitter): New splitter.
15356
15357 2017-09-04  Richard Biener  <rguenther@suse.de>
15358
15359         PR tree-optimization/82084
15360         * fold-const.h (can_native_encode_string_p): Declare.
15361         * fold-const.c (can_native_encode_string_p): Factor out from ...
15362         (native_encode_string): ... here.
15363         * tree-vect-stmts.c (vectorizable_store): Call it to avoid
15364         vectorizing stores from constants we later cannot handle.
15365
15366 2017-09-04  Marek Polacek  <polacek@redhat.com>
15367
15368         PR c/81783
15369         * doc/invoke.texi: Update -Wtautological-compare documentation.
15370
15371 2017-09-04  Jeff Law  <law@redhat.com>
15372
15373         PR tree-optimization/64910
15374         * tree-ssa-reassoc.c (reassociate_bb): For bitwise binary ops,
15375         swap the first and last operand if the last is a constant.
15376
15377 2017-09-04  Marek Polacek  <polacek@redhat.com>
15378
15379         PR sanitizer/82072
15380         * convert.c (do_narrow): When sanitizing signed integer overflows,
15381         bail out for signed types.
15382         (convert_to_integer_1) <case NEGATE_EXPR>: Likewise.
15383
15384 2017-09-04  Richard Biener  <rguenther@suse.de>
15385
15386         PR tree-optimization/82060
15387         * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
15388         Move devirtualization after stmt folding and before EH/AB/noreturn
15389         cleanup to get the stmt refs canonicalized.  Use a bool instead
15390         of gimple_modified_p since that doesn't work for NOPs.  Schedule
15391         NOPs generated by folding for removal.
15392
15393 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
15394             Alan Hayward  <alan.hayward@arm.com>
15395             David Sherwood  <david.sherwood@arm.com>
15396
15397         * coretypes.h (pad_direction): New enum.
15398         * defaults.h (DEFAULT_FUNCTION_ARG_PADDING): Delete.
15399         (FUNCTION_ARG_PADDING): Likewise.
15400         * target.def (function_arg_padding): New hook.
15401         * targhooks.h (default_function_arg_padding): Declare.
15402         * targhooks.c (default_function_arg_padding): New function.
15403         * doc/tm.texi.in (FUNCTION_ARG_PADDING): Replace with...
15404         (TARGET_FUNCTION_ARG_PADDING): ...this.
15405         * doc/tm.texi: Regenerate.
15406         * calls.c (store_unaligned_arguments_into_pseudos): Use pad_direction
15407         instead of direction.
15408         (compute_argument_addresses): Likewise.
15409         (load_register_parameters): Likewise.
15410         (emit_library_call_value_1): Likewise.
15411         (store_one_arg): Use targetm.calls.function_arg_padding instead
15412         of FUNCTION_ARG_PADDING.
15413         (must_pass_in_stack_var_size_or_pad): Likewise.
15414         * expr.c (emit_group_load_1): Use pad_direction instead of direction.
15415         (emit_group_store): Likewise.
15416         (emit_single_push_insn_1): Use targetm.calls.function_arg_padding
15417         instead of FUNCTION_ARG_PADDING.
15418         (emit_push_insn): Likewise, and propagate enum change throughout
15419         function.
15420         * function.h (direction): Delete.
15421         (locate_and_pad_arg_data::where_pad): Use pad_direction instead
15422         of direction.
15423         * function.c (assign_parm_find_stack_rtl): Likewise.
15424         (assign_parm_setup_block_p): Likewise.
15425         (assign_parm_setup_block): Likewise.
15426         (gimplify_parameters): Likewise.
15427         (locate_and_pad_parm): Use targetm.calls.function_arg_padding
15428         instead of FUNCTION_ARG_PADDING, and propagate enum change throughout
15429         function.
15430         * config/aarch64/aarch64.h (FUNCTION_ARG_PADDING): Delete.
15431         (BLOCK_REG_PADDING): Use pad_direction instead of direction.
15432         * config/aarch64/aarch64-protos.h (aarch64_pad_arg_upward): Delete.
15433         * config/aarch64/aarch64.c (aarch64_pad_arg_upward): Replace with...
15434         (aarch64_function_arg_padding): ...this new function.
15435         (aarch64_gimplify_va_arg_expr): Use pad_direction instead of direction.
15436         (TARGET_FUNCTION_ARG_PADDING): Redefine.
15437         * config/arm/arm.h (FUNCTION_ARG_PADDING): Delete.
15438         (BLOCK_REG_PADDING): Use pad_direction instead of direction.
15439         * config/arm/arm-protos.h (arm_pad_arg_upward): Delete.
15440         * config/arm/arm.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
15441         (arm_pad_arg_upward): Replace with...
15442         (arm_function_arg_padding): ...this new function.
15443         * config/c6x/c6x.h (BLOCK_REG_PADDING): Use pad_direction instead
15444         of direction.
15445         * config/ia64/hpux.h (FUNCTION_ARG_PADDING): Delete.
15446         * config/ia64/ia64-protos.h (ia64_hpux_function_arg_padding): Delete.
15447         * config/ia64/ia64.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
15448         (ia64_hpux_function_arg_padding): Replace with...
15449         (ia64_function_arg_padding): ...this new function.  Use pad_direction
15450         instead of direction.  Check for TARGET_HPUX.
15451         * config/iq2000/iq2000.h (FUNCTION_ARG_PADDING): Delete.
15452         * config/iq2000/iq2000.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
15453         (iq2000_function_arg_padding): New function.
15454         * config/mips/mips-protos.h (mips_pad_arg_upward): Delete.
15455         * config/mips/mips.c (mips_pad_arg_upward): Replace with...
15456         (mips_function_arg_padding): ...this new function.
15457         (mips_pad_reg_upward): Update accordingly.
15458         (TARGET_FUNCTION_ARG_PADDING): Redefine.
15459         * config/mips/mips.h (PAD_VARARGS_DOWN): Use
15460         targetm.calls.function_arg_padding.
15461         (FUNCTION_ARG_PADDING): Delete.
15462         (BLOCK_REG_PADDING): Use pad_direction instead of direction.
15463         * config/nios2/nios2.h (FUNCTION_ARG_PADDING): Delete.
15464         (PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding.
15465         * config/nios2/nios2-protos.h (nios2_function_arg_padding): Delete.
15466         (nios2_block_reg_padding): Return pad_direction instead of direction.
15467         * config/nios2/nios2.c (nios2_block_reg_padding): Return pad_direction
15468         instead of direction.
15469         (nios2_function_arg_padding): Likewise.  Make static.
15470         (TARGET_FUNCTION_ARG_PADDING): Redefine.
15471         * config/pa/pa.h (FUNCTION_ARG_PADDING): Delete.
15472         (BLOCK_REG_PADDING): Use targetm.calls.function_arg_padding.
15473         * config/pa/pa-protos.h (pa_function_arg_padding): Delete.
15474         * config/pa/pa.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
15475         (pa_function_arg_padding): Make static.  Return pad_direction instead
15476         of direction.
15477         * config/powerpcspe/powerpcspe.h (FUNCTION_ARG_PADDING): Delete.
15478         (PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding.
15479         * config/powerpcspe/aix.h (BLOCK_REG_PADDING): Use pad_direction
15480         instead of direction.  Use targetm.calls.function_arg_padding.
15481         * config/powerpcspe/darwin.h (BLOCK_REG_PADDING): Likewise.
15482         * config/powerpcspe/freebsd64.h (BLOCK_REG_PADDING): Likewise.
15483         * config/powerpcspe/linux64.h (BLOCK_REG_PADDING): Likewise.
15484         * config/powerpcspe/powerpcspe-protos.h (function_arg_padding): Delete.
15485         * config/powerpcspe/powerpcspe.c (TARGET_FUNCTION_ARG_PADDING):
15486         Redefine.
15487         (function_arg_padding): Rename to...
15488         (rs6000_function_arg_padding): ...this.  Make static.  Return
15489         pad_direction instead of direction.
15490         (rs6000_return_in_msb): Use rs6000_function_arg_padding.
15491         * config/rs6000/rs6000.h (FUNCTION_ARG_PADDING): Delete.
15492         (PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding.
15493         * config/rs6000/aix.h (BLOCK_REG_PADDING): Use pad_direction
15494         instead of direction.  Use targetm.calls.function_arg_padding.
15495         * config/rs6000/darwin.h (BLOCK_REG_PADDING): Likewise.
15496         * config/rs6000/freebsd64.h (BLOCK_REG_PADDING): Likewise.
15497         * config/rs6000/linux64.h (BLOCK_REG_PADDING): Likewise.
15498         * config/rs6000/rs6000-protos.h (function_arg_padding): Delete.
15499         * config/rs6000/rs6000.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
15500         (function_arg_padding): Rename to...
15501         (rs6000_function_arg_padding): ...this.  Make static.  Return
15502         pad_direction instead of direction.
15503         (rs6000_return_in_msb): Use rs6000_function_arg_padding.
15504         * config/s390/s390.h (FUNCTION_ARG_PADDING): Delete.
15505         * config/s390/s390.c (s390_function_arg_padding): New function.
15506         (TARGET_FUNCTION_ARG_PADDING): Redefine.
15507         * config/sparc/sparc.h (FUNCTION_ARG_PADDING): Delete.
15508         * config/sparc/sparc-protos.h (function_arg_padding): Delete.
15509         * config/sparc/sparc.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
15510         (function_arg_padding): Rename to...
15511         (sparc_function_arg_padding): ...this.  Make static.  Return
15512         pad_direction instead of direction.
15513         * config/spu/spu.h (FUNCTION_ARG_PADDING): Delete.
15514         * config/spu/spu.c (spu_function_arg_padding): New function.
15515         (TARGET_FUNCTION_ARG_PADDING): Redefine.
15516         * system.h (FUNCTION_ARG_PADDING): Poison.
15517
15518 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
15519             Alan Hayward  <alan.hayward@arm.com>
15520             David Sherwood  <david.sherwood@arm.com>
15521
15522         * target.def (modes_tieable_p): New hook.
15523         * doc/tm.texi (MODES_TIEABLE_P): Replace with...
15524         (TARGET_MODES_TIEABLE_P): ...this.
15525         * doc/tm.texi.in: Regenerate.
15526         * hooks.h (hook_bool_mode_mode_true): Declare.
15527         * hooks.c (hook_bool_mode_mode_true): New function.
15528         * combine.c (subst): Use targetm.modes_tieable_p instead of
15529         MODES_TIEABLE_P.
15530         * dse.c (find_shift_sequence): Likewise.
15531         * expmed.c (extract_low_bits): Likewise.
15532         * lower-subreg.c: Include target.h.
15533         (find_decomposable_subregs): Use targetm.modes_tieable_p instead of
15534         MODES_TIEABLE_P.
15535         * rtlanal.c (rtx_cost): Likewise.
15536         * config/aarch64/aarch64.h (MODES_TIEABLE_P): Delete.
15537         * config/aarch64/aarch64-protos.h (aarch64_modes_tieable_p): Delete.
15538         * config/aarch64/aarch64.c (aarch64_modes_tieable_p): Make static.
15539         (TARGET_MODES_TIEABLE_P): Redefine.
15540         * config/alpha/alpha.h (MODES_TIEABLE_P): Delete.
15541         * config/alpha/alpha.c (alpha_modes_tieable_p): New function.
15542         (TARGET_MODES_TIEABLE_P): Redefine.
15543         * config/arc/arc.h (MODES_TIEABLE_P): Delete.
15544         * config/arc/arc.c (TARGET_MODES_TIEABLE_P): Redefine.
15545         (arc_modes_tieable_p): New function.
15546         * config/arm/arm.h (MODES_TIEABLE_P): Delete.
15547         * config/arm/arm-protos.h (arm_modes_tieable_p): Delete.
15548         * config/arm/arm.c (TARGET_MODES_TIEABLE_P): Redefine.
15549         (arm_modes_tieable_p): Make static.
15550         * config/avr/avr.h (MODES_TIEABLE_P): Delete.
15551         * config/bfin/bfin.h (MODES_TIEABLE_P): Delete.
15552         * config/bfin/bfin.c (bfin_modes_tieable_p): New function.
15553         (TARGET_MODES_TIEABLE_P): Redefine.
15554         * config/c6x/c6x.h (MODES_TIEABLE_P): Delete.
15555         * config/c6x/c6x.c (c6x_modes_tieable_p): New function.
15556         (TARGET_MODES_TIEABLE_P): Redefine.
15557         * config/cr16/cr16.h (MODES_TIEABLE_P): Delete.
15558         * config/cr16/cr16.c (TARGET_MODES_TIEABLE_P): Redefine.
15559         (cr16_modes_tieable_p): New function.
15560         * config/cris/cris.h (MODES_TIEABLE_P): Delete.
15561         * config/epiphany/epiphany.h (MODES_TIEABLE_P): Delete.
15562         * config/fr30/fr30.h (MODES_TIEABLE_P): Delete.
15563         (TRULY_NOOP_TRUNCATION): Update comment.
15564         * config/frv/frv.h (MODES_TIEABLE_P): Delete.
15565         (TRULY_NOOP_TRUNCATION): Update comment.
15566         * config/frv/frv.c (TARGET_MODES_TIEABLE_P): Redefine.
15567         (frv_modes_tieable_p): New function.
15568         * config/ft32/ft32.h (MODES_TIEABLE_P): Delete.
15569         * config/h8300/h8300.h (MODES_TIEABLE_P): Delete.
15570         * config/h8300/h8300.c (h8300_modes_tieable_p): New function.
15571         (TARGET_MODES_TIEABLE_P): Redefine.
15572         * config/i386/i386.h (MODES_TIEABLE_P): Delete.
15573         * config/i386/i386-protos.h (ix86_modes_tieable_p): Delete.
15574         * config/i386/i386.c (ix86_modes_tieable_p): Make static.
15575         (TARGET_MODES_TIEABLE_P): Redefine.
15576         * config/ia64/ia64.h (MODES_TIEABLE_P): Delete.
15577         * config/ia64/ia64.c (TARGET_MODES_TIEABLE_P): Redefine.
15578         (ia64_modes_tieable_p): New function.
15579         * config/iq2000/iq2000.h (MODES_TIEABLE_P): Delete.
15580         * config/iq2000/iq2000.c (TARGET_MODES_TIEABLE_P): Redefine.
15581         (iq2000_modes_tieable_p): New function.
15582         * config/lm32/lm32.h (MODES_TIEABLE_P): Delete.
15583         * config/lm32/lm32.c (TARGET_MODES_TIEABLE_P): Redefine.
15584         (lm32_modes_tieable_p): New function.
15585         * config/m32c/m32c.h (MODES_TIEABLE_P): Delete.
15586         * config/m32c/m32c-protos.h (m32c_modes_tieable_p): Delete.
15587         * config/m32c/m32c.c (m32c_modes_tieable_p): Make static.
15588         (TARGET_MODES_TIEABLE_P): Redefine.
15589         * config/m32r/m32r.h (MODES_TIEABLE_P): Delete.
15590         * config/m32r/m32r.c (TARGET_MODES_TIEABLE_P): Redefine.
15591         (m32r_modes_tieable_p): New function.
15592         * config/m68k/m68k.h (MODES_TIEABLE_P): Delete.
15593         * config/m68k/m68k.c (TARGET_MODES_TIEABLE_P): Redefine.
15594         (m68k_modes_tieable_p): New function.
15595         * config/mcore/mcore.h (MODES_TIEABLE_P): Delete.
15596         * config/mcore/mcore.c (TARGET_MODES_TIEABLE_P): Redefine.
15597         (mcore_modes_tieable_p): New function.
15598         * config/microblaze/microblaze.h (MODES_TIEABLE_P): Delete.
15599         * config/microblaze/microblaze.c (microblaze_modes_tieable_p): New
15600         function.
15601         (TARGET_MODES_TIEABLE_P): Redefine.
15602         * config/mips/mips.h (MODES_TIEABLE_P): Delete.
15603         * config/mips/mips-protos.h (mips_modes_tieable_p): Delete.
15604         * config/mips/mips.c (mips_modes_tieable_p): Make static.
15605         (TARGET_MODES_TIEABLE_P): Redefine.
15606         * config/mmix/mmix.h (MODES_TIEABLE_P): Delete.
15607         * config/mn10300/mn10300.h (MODES_TIEABLE_P): Delete.
15608         * config/mn10300/mn10300-protos.h (mn10300_modes_tieable): Delete.
15609         * config/mn10300/mn10300.c (mn10300_modes_tieable): Rename to...
15610         (mn10300_modes_tieable_p): ...this and make static.
15611         (TARGET_MODES_TIEABLE_P): Redefine.
15612         * config/moxie/moxie.h (MODES_TIEABLE_P): Delete.
15613         * config/msp430/msp430.h (MODES_TIEABLE_P): Delete.
15614         * config/msp430/msp430-protos.h (msp430_modes_tieable_p): Delete.
15615         * config/msp430/msp430.c (TARGET_MODES_TIEABLE_P): Redefine.
15616         (msp430_modes_tieable_p): Make static.
15617         * config/nds32/nds32.h (MODES_TIEABLE_P): Delete.
15618         * config/nds32/nds32.c (nds32_modes_tieable_p): New function.
15619         (TARGET_MODES_TIEABLE_P): Redefine.
15620         * config/nios2/nios2.h (MODES_TIEABLE_P): Delete.
15621         * config/nvptx/nvptx.h (MODES_TIEABLE_P): Delete.
15622         * config/nvptx/nvptx.c (nvptx_modes_tieable_p): New function.
15623         (TARGET_MODES_TIEABLE_P): Redefine.
15624         * config/pa/pa.h (MODES_TIEABLE_P): Delete.
15625         * config/pa/pa-protos.h (pa_modes_tieable_p): Delete.
15626         * config/pa/pa.c (pa_modes_tieable_p): Make static.
15627         (TARGET_MODES_TIEABLE_P): Redefine.
15628         * config/pdp11/pdp11.h (MODES_TIEABLE_P): Delete.
15629         * config/pdp11/pdp11.c (TARGET_MODES_TIEABLE_P): Redefine.
15630         (pdp11_modes_tieable_p): New function.
15631         * config/powerpcspe/powerpcspe.h (MODES_TIEABLE_P): Delete.
15632         * config/powerpcspe/powerpcspe.c (TARGET_MODES_TIEABLE_P): Redefine.
15633         (rs6000_modes_tieable_p): New function.
15634         (rs6000_debug_reg_global): Use it instead of MODES_TIEABLE_P.
15635         * config/powerpcspe/powerpcspe.md: Update comment.
15636         * config/riscv/riscv.h (MODES_TIEABLE_P): Delete.
15637         * config/riscv/riscv.c (riscv_modes_tieable_p): New function.
15638         (TARGET_MODES_TIEABLE_P): Redefine.
15639         * config/rl78/rl78.h (MODES_TIEABLE_P): Delete.
15640         * config/rl78/rl78.c (TARGET_MODES_TIEABLE_P): Redefine.
15641         (rl78_modes_tieable_p): New function.
15642         * config/rs6000/rs6000.h (MODES_TIEABLE_P): Delete.
15643         * config/rs6000/rs6000.c (TARGET_MODES_TIEABLE_P): Redefine.
15644         (rs6000_modes_tieable_p): New function.
15645         (rs6000_debug_reg_global): Use it instead of MODES_TIEABLE_P.
15646         * config/rs6000/rs6000.md: Update comment.
15647         * config/rx/rx.h (MODES_TIEABLE_P): Delete.
15648         * config/rx/rx.c (rx_modes_tieable_p): New function.
15649         (TARGET_MODES_TIEABLE_P): Redefine.
15650         * config/s390/s390.h (MODES_TIEABLE_P): Delete.
15651         * config/s390/s390.c (s390_modes_tieable_p): New function.
15652         (TARGET_MODES_TIEABLE_P): Redefine.
15653         * config/sh/sh.h (MODES_TIEABLE_P): Delete.
15654         * config/sh/sh.c (TARGET_MODES_TIEABLE_P): Redefine.
15655         (sh_modes_tieable_p): New function.
15656         * config/sparc/sparc.h (MODES_TIEABLE_P): Delete.
15657         * config/sparc/sparc-protos.h (sparc_modes_tieable_p): Delete.
15658         * config/sparc/sparc.c (TARGET_MODES_TIEABLE_P): Redefine.
15659         (sparc_modes_tieable_p): Make static.
15660         * config/spu/spu.h (MODES_TIEABLE_P): Delete.
15661         * config/spu/spu.c (spu_modes_tieable_p): New function.
15662         (TARGET_MODES_TIEABLE_P): Redefine.
15663         * config/stormy16/stormy16.h (MODES_TIEABLE_P): Delete.
15664         * config/stormy16/stormy16.c (xstormy16_modes_tieable_p): New function.
15665         (TARGET_MODES_TIEABLE_P): Redefine.
15666         * config/tilegx/tilegx.h (MODES_TIEABLE_P): Delete.
15667         * config/tilepro/tilepro.h (MODES_TIEABLE_P): Delete.
15668         * config/v850/v850.h (MODES_TIEABLE_P): Delete.
15669         * config/v850/v850.c (v850_modes_tieable_p): New function.
15670         (TARGET_MODES_TIEABLE_P): Redefine.
15671         * config/vax/vax.h (MODES_TIEABLE_P): Delete.
15672         * config/visium/visium.h (MODES_TIEABLE_P): Delete.
15673         * config/visium/visium.c (TARGET_MODES_TIEABLE_P): Redefine.
15674         (visium_modes_tieable_p): New function.
15675         * config/xtensa/xtensa.h (MODES_TIEABLE_P): Delete.
15676         * config/xtensa/xtensa.c (TARGET_MODES_TIEABLE_P): Redefine.
15677         (xtensa_modes_tieable_p): New function.
15678         * system.h (MODES_TIEABLE_P): Poison.
15679
15680 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
15681             Alan Hayward  <alan.hayward@arm.com>
15682             David Sherwood  <david.sherwood@arm.com>
15683
15684         * target.def (hard_regno_mode_ok): New hook.
15685         * doc/tm.texi (HARD_REGNO_MODE_OK): Replace with...
15686         (TARGET_HARD_REGNO_MODE_OK): ...this.
15687         * doc/tm.texi.in: Regenerate.
15688         * hooks.h (hook_bool_uint_mode_true): Declare.
15689         * hooks.c (hook_bool_uint_mode_true): New function.
15690         * doc/md.texi: Refer to targetm.hard_regno_mode_ok instead of
15691         HARD_REGNO_MODE_OK.
15692         * genpreds.c (write_insn_preds_c): Add an include of target.h.
15693         * alias.c (init_alias_target): Use targetm.hard_regno_mode_ok
15694         instead of HARD_REGNO_MODE_OK.
15695         * caller-save.c: Include target.h.
15696         (reg_save_code): Use targetm.hard_regno_mode_ok instead of
15697         HARD_REGNO_MODE_OK.
15698         * combine.c (can_combine_p): Likewise.
15699         (combinable_i3pat): Likewise.
15700         (can_change_dest_mode): Likewise.
15701         * expr.c (init_expr_target): Likewise.
15702         (convert_move): Likewise.
15703         (convert_modes): Likewise.
15704         * ira.c (setup_prohibited_class_mode_regs): Likewise.
15705         (setup_prohibited_mode_move_regs): Likewise.
15706         * ira.h (target_ira): Likewise.
15707         * lra-assigns.c (find_hard_regno_for_1): Likewise.
15708         * lra-constraints.c (process_alt_operands): Likewise.
15709         (split_reg): Likewise.
15710         * recog.c (peep2_find_free_register): Likewise.
15711         * ree.c (combine_reaching_defs): Likewise.
15712         * regcprop.c (maybe_mode_change): Likewise.
15713         * reginfo.c (init_reg_sets_1): Likewise.
15714         (choose_hard_reg_mode): Likewise.
15715         (simplifiable_subregs): Likewise.
15716         * regrename.c (check_new_reg_p): Likewise.
15717         * reload.c (find_valid_class): Likewise.
15718         (find_valid_class_1): Likewise.
15719         (reload_inner_reg_of_subreg): Likewise.
15720         (push_reload): Likewise.
15721         (combine_reloads): Likewise.
15722         (find_dummy_reload): Likewise.
15723         (find_reloads): Likewise.
15724         * reload1.c (find_reg): Likewise.
15725         (set_reload_reg): Likewise.
15726         (allocate_reload_reg): Likewise.
15727         (choose_reload_regs): Likewise.
15728         (reload_adjust_reg_for_temp): Likewise.
15729         * rtlanal.c (subreg_size_offset_from_lsb): Likewise.
15730         (simplify_subreg_regno): Likewise.
15731         * sel-sched.c (init_regs_for_mode): Likewise.
15732         * varasm.c (make_decl_rtl): Likewise.
15733         * config/aarch64/aarch64.h (HARD_REGNO_MODE_OK): Delete.
15734         (MODES_TIEABLE_P): Use targetm.hard_regno_mode_ok instead of
15735         HARD_REGNO_MODE_OK.
15736         * config/aarch64/aarch64-protos.h (aarch64_hard_regno_mode_ok): Delete.
15737         * config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Make static.
15738         (TARGET_HARD_REGNO_MODE_OK): Redefine.
15739         * config/alpha/alpha.h (HARD_REGNO_MODE_OK): Delete.
15740         * config/alpha/alpha.c (alpha_hard_regno_mode_ok): New function.
15741         (TARGET_HARD_REGNO_MODE_OK): Redefine.
15742         * config/arc/arc.h (arc_hard_regno_mode_ok): Delete.
15743         (arc_mode_class): Delete.
15744         (HARD_REGNO_MODE_OK): Delete.
15745         * config/arc/arc.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
15746         (arc_hard_regno_mode_ok): Rename old array to...
15747         (arc_hard_regno_mode_ok_modes): ...this.
15748         (arc_conditional_register_usage): Update accordingly.
15749         (arc_mode_class): Make static.
15750         (arc_hard_regno_mode_ok): New function.
15751         * config/arm/arm.h (HARD_REGNO_MODE_OK): Delete.
15752         * config/arm/arm-protos.h (arm_hard_regno_mode_ok): Delete.
15753         * config/arm/arm.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
15754         (arm_hard_regno_mode_ok): Make static.
15755         * config/arm/arm.md (movdi): Use targetm.hard_regno_mode_ok instead of
15756         HARD_REGNO_MODE_OK.
15757         * config/avr/avr-protos.h (avr_hard_regno_mode_ok): Delete.
15758         * config/avr/avr.h (HARD_REGNO_MODE_OK): Delete.
15759         * config/avr/avr.c (avr_hard_regno_mode_ok): Make static and
15760         return a bool.
15761         (TARGET_HARD_REGNO_MODE_OK): Redefine.
15762         * config/bfin/bfin-protos.h (hard_regno_mode_ok): Delete.
15763         * config/bfin/bfin.h (HARD_REGNO_MODE_OK): Delete.
15764         * config/bfin/bfin.c (hard_regno_mode_ok): Rename to...
15765         (bfin_hard_regno_mode_ok): ...this.  Make static and return a bool.
15766         (TARGET_HARD_REGNO_MODE_OK): Redefine.
15767         * config/bfin/predicates.md (valid_reg_operand): Use
15768         targetm.hard_regno_mode_ok instead of HARD_REGNO_MODE_OK.
15769         * config/c6x/c6x.h (HARD_REGNO_MODE_OK): Delete.
15770         * config/c6x/c6x.c (c6x_hard_regno_mode_ok): New function.
15771         (TARGET_HARD_REGNO_MODE_OK): Redefine.
15772         * config/cr16/cr16.h (HARD_REGNO_MODE_OK): Delete.
15773         * config/cr16/cr16-protos.h (cr16_hard_regno_mode_ok): Delete.
15774         * config/cr16/cr16.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
15775         (cr16_hard_regno_mode_ok): Make static and return a bool.
15776         * config/cris/cris.h (HARD_REGNO_MODE_OK): Delete.
15777         * config/cris/cris.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
15778         (cris_hard_regno_mode_ok): New function.
15779         * config/epiphany/epiphany.h (epiphany_hard_regno_mode_ok): Delete.
15780         (epiphany_mode_class): Delete.
15781         (HARD_REGNO_MODE_OK): Delete.
15782         * config/epiphany/epiphany-protos.h (hard_regno_mode_ok): Delete.
15783         * config/epiphany/epiphany.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
15784         (hard_regno_mode_ok): Rename to...
15785         (epiphany_hard_regno_mode_ok): ...this.  Make static and return a bool.
15786         * config/fr30/fr30.h (HARD_REGNO_MODE_OK): Delete.
15787         * config/fr30/fr30.md: Refer to targetm.hard_regno_mode_ok instead of
15788         HARD_REGNO_MODE_OK.
15789         * config/frv/frv.h (HARD_REGNO_MODE_OK): Delete.
15790         * config/frv/frv-protos.h (frv_hard_regno_mode_ok): Delete.
15791         * config/frv/frv.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
15792         (frv_hard_regno_mode_ok): Make static and return a bool.
15793         * config/frv/frv.md: Refer to targetm.hard_regno_mode_ok instead of
15794         HARD_REGNO_MODE_OK.
15795         * config/ft32/ft32.h (HARD_REGNO_MODE_OK): Delete.
15796         * config/h8300/h8300.h (HARD_REGNO_MODE_OK): Delete.
15797         * config/h8300/h8300-protos.h (h8300_hard_regno_mode_ok): Delete.
15798         * config/h8300/h8300.c (h8300_hard_regno_mode_ok): Make static
15799         and return a bool.
15800         (TARGET_HARD_REGNO_MODE_OK): Redefine.
15801         * config/i386/i386.h (HARD_REGNO_MODE_OK): Delete.
15802         * config/i386/i386-protos.h (ix86_hard_regno_mode_ok): Delete.
15803         * config/i386/i386.c (ix86_hard_regno_mode_ok): Make static and
15804         return a bool.
15805         (TARGET_HARD_REGNO_MODE_OK): Redefine.
15806         * config/ia64/ia64.h (HARD_REGNO_MODE_OK): Delete.
15807         * config/ia64/ia64.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
15808         (ia64_hard_regno_mode_ok): New function.
15809         * config/iq2000/iq2000.h (HARD_REGNO_MODE_OK): Delete.
15810         * config/iq2000/iq2000.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
15811         (iq2000_hard_regno_mode_ok): New function.
15812         * config/lm32/lm32.h (HARD_REGNO_MODE_OK): Delete.
15813         * config/lm32/lm32.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
15814         (lm32_hard_regno_mode_ok): New function.
15815         * config/m32c/m32c.h (HARD_REGNO_MODE_OK): Delete.
15816         * config/m32c/m32c-protos.h (m32c_hard_regno_ok): Delete.
15817         * config/m32c/m32c.c (class_can_hold_mode): Use m32c_hard_regno_mode_ok
15818         instead of HARD_REGNO_MODE_OK.
15819         (m32c_hard_regno_ok): Rename to...
15820         (m32c_hard_regno_mode_ok): ...this.  Make static and return a bool.
15821         (m32c_cannot_change_mode_class): Update accordingly.
15822         (TARGET_HARD_REGNO_MODE_OK): Redefine.
15823         * config/m32r/m32r.h (m32r_hard_regno_mode_ok): Delete.
15824         (m32r_mode_class): Delete.
15825         (HARD_REGNO_MODE_OK): Delete.
15826         * config/m32r/m32r.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
15827         (m32r_hard_regno_mode_ok): Rename to...
15828         (m32r_hard_regno_modes): ...this.
15829         (m32r_mode_class): Make static.
15830         (m32r_hard_regno_mode_ok): New function.
15831         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Delete.
15832         * config/m68k/m68k-protos.h (m68k_regno_mode_ok): Delete.
15833         * config/m68k/m68k.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
15834         (m68k_hard_regno_mode_ok): Make static.
15835         * config/mcore/mcore.h (HARD_REGNO_MODE_OK): Delete.
15836         * config/mcore/mcore.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
15837         (mcore_hard_regno_mode_ok): New function.
15838         * config/microblaze/microblaze.h (microblaze_hard_regno_mode_ok)
15839         (HARD_REGNO_MODE_OK): Delete.
15840         * config/microblaze/microblaze.c (microblaze_hard_regno_mode_ok):
15841         Rename to...
15842         (microblaze_hard_regno_mode_ok_p): ...this and make static.
15843         (microblaze_hard_regno_mode_ok): New function.
15844         (TARGET_HARD_REGNO_MODE_OK): Redefine.
15845         * config/mips/mips.h (HARD_REGNO_MODE_OK): Delete.
15846         (mips_hard_regno_mode_ok): Delete.
15847         * config/mips/mips.c (mips_hard_regno_mode_ok): Rename to...
15848         (mips_hard_regno_mode_ok_p): ...this and make static.
15849         (mips_hard_regno_mode_ok_p): Rename to...
15850         (mips_hard_regno_mode_ok_uncached): ...this.
15851         (mips_hard_regno_mode_ok): New function.
15852         (mips_class_max_nregs): Use mips_hard_regno_mode_ok instead
15853         of HARD_REGNO_MODE_OK.
15854         (mips_option_override): Update after above name changes.
15855         (TARGET_HARD_REGNO_MODE_OK): Redefine.
15856         * config/mmix/mmix.h (HARD_REGNO_MODE_OK): Delete.
15857         * config/mn10300/mn10300.h (HARD_REGNO_MODE_OK): Delete.
15858         * config/mn10300/mn10300-protos.h (mn10300_hard_regno_mode_ok): Delete.
15859         * config/mn10300/mn10300.c (mn10300_hard_regno_mode_ok): Make static.
15860         (TARGET_HARD_REGNO_MODE_OK): Redefine.
15861         * config/moxie/moxie.h (HARD_REGNO_MODE_OK): Delete.
15862         * config/msp430/msp430.h (HARD_REGNO_MODE_OK): Delete.
15863         * config/msp430/msp430-protos.h (msp430_hard_regno_mode_ok): Delete.
15864         * config/msp430/msp430.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
15865         (msp430_hard_regno_mode_ok): Make static and return a bool.
15866         * config/nds32/nds32.h (HARD_REGNO_MODE_OK): Delete.
15867         * config/nds32/nds32-protos.h (nds32_hard_regno_mode_ok): Delete.
15868         * config/nds32/nds32.c (nds32_hard_regno_mode_ok): Make static
15869         and return a bool.
15870         (TARGET_HARD_REGNO_MODE_OK): Redefine.
15871         * config/nios2/nios2.h (HARD_REGNO_MODE_OK): Delete.
15872         * config/nvptx/nvptx.h (HARD_REGNO_MODE_OK): Delete.
15873         * config/pa/pa.h (MODES_TIEABLE_P): Update commentary.
15874         * config/pa/pa32-regs.h (HARD_REGNO_MODE_OK): Rename to...
15875         (PA_HARD_REGNO_MODE_OK): ...this
15876         * config/pa/pa64-regs.h (HARD_REGNO_MODE_OK): Rename to...
15877         (PA_HARD_REGNO_MODE_OK): ...this.
15878         * config/pa/pa.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
15879         (pa_hard_regno_mode_ok): New function.
15880         * config/pdp11/pdp11.h (HARD_REGNO_MODE_OK): Delete.
15881         * config/pdp11/pdp11.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
15882         (pdp11_hard_regno_mode_ok): New function.
15883         * config/powerpcspe/powerpcspe.h (HARD_REGNO_MODE_OK): Delete.
15884         * config/powerpcspe/powerpcspe-protos.h (rs6000_hard_regno_mode_ok_p):
15885         Delete.
15886         * config/powerpcspe/powerpcspe.c (rs6000_hard_regno_mode_ok_p):
15887         Make static.
15888         (TARGET_HARD_REGNO_MODE_OK): Redefine.
15889         (rs6000_hard_regno_mode_ok): Rename to...
15890         (rs6000_hard_regno_mode_ok_uncached): ...this.
15891         (rs6000_init_hard_regno_mode_ok): Update accordingly.
15892         (rs6000_hard_regno_mode_ok): New function.
15893         * config/riscv/riscv.h (HARD_REGNO_MODE_OK): Delete.
15894         * config/riscv/riscv-protos.h (riscv_hard_regno_mode_ok_p): Delete.
15895         * config/riscv/riscv.c (riscv_hard_regno_mode_ok_p): Rename to...
15896         (riscv_hard_regno_mode_ok): ...this and make static.
15897         (TARGET_HARD_REGNO_MODE_OK): Redefine.
15898         * config/rl78/rl78.h (HARD_REGNO_MODE_OK): Delete.
15899         * config/rl78/rl78-protos.h (rl78_hard_regno_mode_ok): Delete.
15900         * config/rl78/rl78.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
15901         (rl78_hard_regno_mode_ok): Make static and return bool.
15902         * config/rs6000/rs6000.h (HARD_REGNO_MODE_OK): Delete.
15903         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_mode_ok_p):
15904         Delete.
15905         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok_p): Make static.
15906         (TARGET_HARD_REGNO_MODE_OK): Redefine.
15907         (rs6000_hard_regno_mode_ok): Rename to...
15908         (rs6000_hard_regno_mode_ok_uncached): ...this.
15909         (rs6000_init_hard_regno_mode_ok): Update accordingly.
15910         (rs6000_hard_regno_mode_ok): New function.
15911         * config/rx/rx.h (HARD_REGNO_MODE_OK): Delete.
15912         * config/rx/rx.c (rx_hard_regno_mode_ok): New function.
15913         (TARGET_HARD_REGNO_MODE_OK): Redefine.
15914         * config/s390/s390.h (HARD_REGNO_MODE_OK): Delete.
15915         * config/s390/s390-protos.h (s390_hard_regno_mode_ok): Delete.
15916         * config/s390/s390.c (s390_hard_regno_mode_ok): Make static.
15917         (TARGET_HARD_REGNO_MODE_OK): Redefine.
15918         * config/sh/sh.h (HARD_REGNO_MODE_OK): Delete.
15919         * config/sh/sh-protos.h (sh_hard_regno_mode_ok): Delete.
15920         * config/sh/sh.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
15921         (sh_hard_regno_mode_ok): Make static.
15922         * config/sparc/constraints.md: Refer to targetm.hard_regno_mode_ok
15923         instead of HARD_REGNO_MODE_OK.
15924         * config/sparc/sparc.h (hard_regno_mode_classes): Delete.
15925         (sparc_mode_class): Delete.
15926         (HARD_REGNO_MODE_OK): Delete.
15927         * config/sparc/sparc.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
15928         (hard_regno_mode_classes): Make static.
15929         (sparc_mode_class): Likewise.
15930         (sparc_hard_regno_mode_ok): New function.
15931         * config/spu/spu.h (HARD_REGNO_MODE_OK): Delete.
15932         * config/stormy16/stormy16.h (HARD_REGNO_MODE_OK): Delete.
15933         * config/stormy16/stormy16.c (xstormy16_hard_regno_mode_ok): New
15934         function.
15935         (TARGET_HARD_REGNO_MODE_OK): Redefine.
15936         * config/tilegx/tilegx.h (HARD_REGNO_MODE_OK): Delete.
15937         * config/tilepro/tilepro.h (HARD_REGNO_MODE_OK): Delete.
15938         * config/v850/v850.h (HARD_REGNO_MODE_OK): Delete.
15939         * config/v850/v850.c (v850_hard_regno_mode_ok): New function.
15940         (TARGET_HARD_REGNO_MODE_OK): Redefine.
15941         * config/vax/vax.h (HARD_REGNO_MODE_OK): Delete.
15942         * config/visium/visium.h (HARD_REGNO_MODE_OK): Delete.
15943         * config/visium/visium.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
15944         (visium_hard_regno_mode_ok): New function.
15945         * config/visium/visium.md: Refer to targetm.hard_regno_mode_ok
15946         instead of HARD_REGNO_MODE_OK.
15947         * config/xtensa/xtensa.h (xtensa_hard_regno_mode_ok): Delete.
15948         (HARD_REGNO_MODE_OK): Delete.
15949         * config/xtensa/xtensa.c (xtensa_hard_regno_mode_ok): Rename to...
15950         (xtensa_hard_regno_mode_ok_p): ...this and make static.
15951         (xtensa_option_override): Update accordingly.
15952         (TARGET_HARD_REGNO_MODE_OK): Redefine.
15953         (xtensa_hard_regno_mode_ok): New function.
15954         * system.h (HARD_REGNO_MODE_OK): Poison.
15955
15956 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
15957             Alan Hayward  <alan.hayward@arm.com>
15958             David Sherwood  <david.sherwood@arm.com>
15959
15960         * target.def (hard_regno_call_part_clobbered): New hook.
15961         * doc/tm.texi.in (HARD_REGNO_CALL_PART_CLOBBERED): Replace with...
15962         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): ...this hook.
15963         * doc/tm.texi: Regenerate.
15964         * hooks.h (hook_bool_uint_mode_false): Declare.
15965         * hooks.c (hook_bool_uint_mode_false): New function.
15966         * regs.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
15967         * cselib.c (cselib_process_insn): Use
15968         targetm.hard_regno_call_part_clobbered instead of
15969         HARD_REGNO_CALL_PART_CLOBBERED.
15970         * ira-conflicts.c (ira_build_conflicts): Likewise.
15971         * ira-costs.c (ira_tune_allocno_costs): Likewise.
15972         * lra-constraints.c (need_for_call_save_p): Likewise.
15973         * lra-lives.c: Include target.h.
15974         (check_pseudos_live_through_calls): Use
15975         targetm.hard_regno_call_part_clobbered instead of
15976         HARD_REGNO_CALL_PART_CLOBBERED.
15977         * regcprop.c: Include target.h.
15978         (copyprop_hardreg_forward_1): Use
15979         targetm.hard_regno_call_part_clobbered instead of
15980         HARD_REGNO_CALL_PART_CLOBBERED.
15981         * reginfo.c (choose_hard_reg_mode): Likewise.
15982         * regrename.c (check_new_reg_p): Likewise.
15983         * reload.c (find_equiv_reg): Likewise.
15984         * reload1.c (emit_reload_insns): Likewise.
15985         * sched-deps.c (deps_analyze_insn): Likewise.
15986         * sel-sched.c (init_regs_for_mode): Likewise.
15987         (mark_unavailable_hard_regs): Likewise.
15988         * targhooks.c (default_dwarf_frame_reg_mode): Likewise.
15989         * config/aarch64/aarch64.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
15990         * config/aarch64/aarch64.c (aarch64_hard_regno_call_part_clobbered):
15991         New function.
15992         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
15993         * config/avr/avr.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
15994         * config/avr/avr-protos.h (avr_hard_regno_call_part_clobbered):
15995         Delete.
15996         * config/avr/avr.c (avr_hard_regno_call_part_clobbered): Make static
15997         and return a bool.
15998         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
15999         * config/i386/i386.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
16000         * config/i386/i386.c (ix86_hard_regno_call_part_clobbered): New
16001         function.
16002         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
16003         * config/mips/mips.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
16004         * config/mips/mips.c (mips_hard_regno_call_part_clobbered): New
16005         function.
16006         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
16007         * config/powerpcspe/powerpcspe.h (HARD_REGNO_CALL_PART_CLOBBERED):
16008         Delete.
16009         * config/powerpcspe/powerpcspe.c
16010         (rs6000_hard_regno_call_part_clobbered): New function.
16011         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
16012         * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
16013         * config/rs6000/rs6000.c (rs6000_hard_regno_call_part_clobbered):
16014         New function.
16015         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
16016         * config/s390/s390.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
16017         * config/s390/s390.c (s390_hard_regno_call_part_clobbered): New
16018         function.
16019         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
16020         * config/sh/sh.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
16021         * system.h (HARD_REGNO_CALL_PART_CLOBBERED): Poison.
16022
16023 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
16024             Alan Hayward  <alan.hayward@arm.com>
16025             David Sherwood  <david.sherwood@arm.com>
16026
16027         * rtl.h (subreg_memory_offset): Declare.
16028         * emit-rtl.c (subreg_memory_offset): New function.
16029         * expmed.c (store_bit_field_1): Use it.
16030         * expr.c (undefined_operand_subword_p): Likewise.
16031         * simplify-rtx.c (simplify_subreg): Likewise.
16032
16033 2017-09-04  Alexander Monakov  <amonakov@ispras.ru>
16034
16035         PR rtl-optimization/57448
16036         PR target/67458
16037         PR target/81316
16038         * optabs.c (expand_atomic_load): Place compiler memory barriers if
16039         using atomic_load pattern.
16040         (expand_atomic_store): Likewise.
16041
16042 2017-09-04  Jakub Jelinek  <jakub@redhat.com>
16043
16044         PR sanitizer/81981
16045         * gimple-fold.c (gimple_fold_call): Optimize away useless UBSAN_PTR
16046         and UBSAN_BOUNDS internal calls.  Clean up IFN_UBSAN_OBJECT_SIZE
16047         handling.  Use replace_call_with_value with NULL instead of
16048         gsi_replace, unlink_stmt_vdef and release_defs.
16049
16050         * gdbhooks.py (OptMachineModePrinter.to_string): Use 8 spaces
16051         instead of tab.
16052
16053         * lra-remat.c (reg_overlap_for_remat_p): Fix a pasto.
16054
16055 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
16056
16057         PR bootstrap/82045
16058         * rtl.h (emit_library_call_value_1): Declare.
16059         (emit_library_call): Replace declaration with a series of overloads.
16060         Remove the parameter count argument.
16061         (emit_library_call_value): Likewise.
16062         * calls.c (emit_library_call_value_1): Make global.  Replace varargs
16063         with an "rtx_mode_t *".
16064         (emit_library_call_value): Delete.
16065         (emit_library_call): Likewise.
16066         * asan.c (asan_emit_stack_protection): Update calls accordingly.
16067         (asan_emit_allocas_unpoison): Likewise.
16068         * builtins.c (expand_builtin_powi): Likewise.
16069         (expand_asan_emit_allocas_unpoison): Likewise.
16070         * cfgexpand.c (expand_main_function): Likewise.
16071         * config/aarch64/aarch64.c (aarch64_trampoline_init): Likewise.
16072         * config/aarch64/aarch64.h (PROFILE_HOOK): Likewise.
16073         * config/alpha/alpha.c (alpha_trampoline_init): Likewise.
16074         * config/arm/arm.c (arm_trampoline_init): Likewise.
16075         (arm_call_tls_get_addr): Likewise.
16076         (arm_expand_divmod_libfunc): Likewise.
16077         * config/bfin/bfin.md (umulsi3_highpart): Likewise.
16078         (smulsi3_highpart): Likewise.
16079         * config/c6x/c6x.c (c6x_initialize_trampoline): Likewise.
16080         (c6x_expand_compare): Likewise.
16081         (c6x_expand_movmem): Likewise.
16082         * config/frv/frv.c (frv_trampoline_init): Likewise.
16083         * config/i386/i386.c (ix86_trampoline_init): Likewise.
16084         (ix86_expand_divmod_libfunc): Likewise.
16085         * config/ia64/ia64.c (ia64_expand_tls_address): Likewise.
16086         (ia64_expand_compare): Likewise.
16087         (ia64_profile_hook): Likewise.
16088         * config/ia64/ia64.md (save_stack_nonlocal): Likewise.
16089         (nonlocal_goto): Likewise.
16090         (restore_stack_nonlocal): Likewise.
16091         * config/m32r/m32r.c (block_move_call): Likewise.
16092         (m32r_trampoline_init): Likewise.
16093         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Likewise.
16094         * config/m68k/m68k.c (m68k_call_tls_get_addr): Likewise.
16095         (m68k_call_m68k_read_tp): Likewise.
16096         * config/microblaze/microblaze.c (microblaze_call_tls_get_addr)
16097         (microblaze_expand_divide): Likewise.
16098         * config/mips/mips.h (mips_args): Likewise.
16099         * config/mips/sdemtk.h (mips_sync_icache): Likewise.
16100         (MIPS_ICACHE_SYNC): Likewise.
16101         * config/nios2/nios2.c (nios2_emit_expensive_div): Likewise.
16102         (nios2_trampoline_init): Likewise.
16103         * config/pa/pa.c (hppa_tls_call): Likewise.
16104         (pa_trampoline_init): Likewise.
16105         * config/pa/pa.md (canonicalize_funcptr_for_compare): Likewise.
16106         * config/powerpcspe/powerpcspe.c (rs6000_legitimize_tls_address)
16107         (expand_strn_compare): Likewise.
16108         (rs6000_generate_compare): Likewise.
16109         (rs6000_expand_float128_convert): Likewise.
16110         (output_profile_hook): Likewise.
16111         (rs6000_trampoline_init): Likewise.
16112         * config/powerpcspe/powerpcspe.md (neg<mode>2): Likewise.
16113         * config/riscv/riscv.h (PROFILE_HOOK): Likewise.
16114         * config/rs6000/rs6000-string.c (expand_strn_compare): Likewise.
16115         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Likewise.
16116         (rs6000_generate_compare): Likewise.
16117         (rs6000_expand_float128_convert): Likewise.
16118         (output_profile_hook): Likewise.
16119         (rs6000_trampoline_init): Likewise.
16120         * config/rs6000/rs6000.md (neg<mode>2): Likewise.
16121         * config/sh/sh.c (sh_trampoline_init): Likewise.
16122         * config/sparc/sparc.c (emit_soft_tfmode_libcall): Likewise.
16123         (sparc_emit_float_lib_cmp): Likewise.
16124         (sparc32_initialize_trampoline): Likewise.
16125         (sparc64_initialize_trampoline): Likewise.
16126         (sparc_profile_hook): Likewise.
16127         * config/spu/spu.c (ea_load_store): Likewise.
16128         * config/spu/spu.md (floatunssidf2): Likewise.
16129         * config/tilegx/tilegx.c (tilegx_trampoline_init): Likewise.
16130         * config/tilepro/tilepro.c (tilepro_trampoline_init): Likewise.
16131         * config/visium/visium.c (expand_block_move_4): Likewise.
16132         (expand_block_move_2): Likewise.
16133         (expand_block_move_1): Likewise.
16134         (expand_block_set_4): Likewise.
16135         (expand_block_set_2): Likewise.
16136         (expand_block_set_1): Likewise.
16137         (visium_trampoline_init): Likewise.
16138         (visium_profile_hook): Likewise.
16139         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Likewise.
16140         (xtensa_setup_frame_addresses): Likewise.
16141         (xtensa_trampoline_init): Likewise.
16142         * except.c (sjlj_emit_function_enter): Likewise.
16143         (sjlj_emit_function_exit): Likewise.
16144         * explow.c (allocate_dynamic_stack_space): Likewise.
16145         (probe_stack_range): Likewise.
16146         * expr.c (convert_mode_scalar): Likewise.
16147         * optabs.c (expand_binop): Likewise.
16148         (expand_twoval_binop_libfunc): Likewise.
16149         (expand_unop): Likewise.
16150         (prepare_cmp_insn): Likewise.
16151         (prepare_float_lib_cmp): Likewise.
16152         (expand_float): Likewise.
16153         (expand_fix): Likewise.
16154         (expand_fixed_convert): Likewise.
16155         (maybe_emit_sync_lock_test_and_set): Likewise.
16156         (expand_atomic_compare_and_swap): Likewise.
16157         (expand_mem_thread_fence): Likewise.
16158         (expand_atomic_fetch_op): Likewise.
16159
16160 2017-09-03  Gerald Pfeifer  <gerald@pfeifer.com>
16161
16162         * doc/generic.texi (OpenACC): Adjust URL.
16163         * doc/invoke.texi (C Dialect Options): Ditto.
16164
16165 2017-09-03  Uros Bizjak  <ubizjak@gmail.com>
16166
16167         * config/i386/i386.md (*bt<mode>): Use nonimmediate_operand
16168         predicate for operand 1.  Add (m,<S>) constraint.
16169         (*jcc_bt<mode>): Use nonimmediate_operand predicate for operand 1.
16170         Prevent memory operand 1 with register operand 2.
16171
16172 2017-09-01  Segher Boessenkool  <segher@kernel.crashing.org>
16173
16174         PR rtl-optimization/82024
16175         * combine.c (try_combine): If the combination result is a PARALLEL,
16176         and we only need to retain the SET in there that would be placed
16177         at I2, check that we can place that at I3 instead, before doing so.
16178
16179 2017-09-01  Jakub Jelinek  <jakub@redhat.com>
16180
16181         PR target/81766
16182         * config/i386/i386.c (ix86_init_large_pic_reg): Return label
16183         instead of void.
16184         (ix86_init_pic_reg): Remember label from ix86_init_large_pic_reg,
16185         if non-NULL and preceded by NOTE_INSN_BASIC_BLOCK, swap the note
16186         and label.
16187
16188 2017-09-01  Joerg Sonnenberger  <joerg@bec.de>
16189             Jeff Law  <law@redhat.com>
16190
16191         * varasm.c (bss_initializer_p): Do not put constants into .bss
16192         (categorize_decl_for_section): Handle bss_initializer_p returning
16193         false when DECL_INITIAL is NULL.
16194
16195 2017-09-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
16196
16197         PR target/82012
16198         * config/s390/s390.c (s390_can_inline_p): New function.
16199
16200 2017-09-01  Jeff Law  <law@redhat.com>
16201
16202         PR tree-optimization/82052
16203         * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr):
16204         Always initialize the returned slot after a hash table miss
16205         when INSERT is true.
16206
16207 2017-09-01  Alexander Monakov  <amonakov@ispras.ru>
16208
16209         * config/s390/s390.md (mem_signal_fence): Remove.
16210         * doc/md.texi (mem_signal_fence): Remove.
16211         * optabs.c (expand_mem_signal_fence): Remove uses of mem_signal_fence.
16212         Update comments.
16213         * target-insns.def (mem_signal_fence): Remove.
16214
16215 2017-09-01  Jakub Jelinek  <jakub@redhat.com>
16216
16217         PR sanitizer/81902
16218         * doc/invoke.texi: Document -fsanitize=pointer-overflow.
16219
16220         PR sanitizer/81923
16221         * asan.c (create_odr_indicator): Strip name encoding from assembler
16222         name before appending it after __odr_asan_.
16223
16224 2017-09-01  Martin Liska  <mliska@suse.cz>
16225
16226         PR tree-optimization/82059
16227         * gimple-ssa-isolate-paths.c (isolate_path): Add profile and
16228         frequency only when an edge is redirected.
16229
16230 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
16231
16232         * config/arc/arc-c.c (__ARC_LPC_WIDTH__): Add builtin define.
16233         * config/arc/arc.c (ARC_MAX_LOOP_LENGTH): Define.
16234         (arc_conditional_register_usage): Remove ARC600 lp_count
16235         exception.
16236         (arc_file_start): Emit Tag_ARC_CPU_variation.
16237         (arc_can_use_doloop_p): New conditions to use ZOLs.
16238         (hwloop_fail): New function.
16239         (hwloop_optimize): Likewise.
16240         (hwloop_pattern_reg): Likewise.
16241         (arc_doloop_hooks): New struct, to be used with reorg_loops.
16242         (arc_reorg_loops): New function, calls reorg_loops.
16243         (arc_reorg): Call arc_reorg_loops.  Remove old ZOL handling.
16244         (arc600_corereg_hazard): Remove ZOL checking, case handled by
16245         hwloop_optimize.
16246         (arc_loop_hazard): Remove function, functionality moved into
16247         hwloop_optimize.
16248         (arc_hazard): Remove arc_loop_hazard call.
16249         (arc_adjust_insn_length): Remove ZOL handling, functionality moved
16250         into hwloop_optimize.
16251         (arc_label_align): Remove ZOL handling.
16252         * config/arc/arc.h (LOOP_ALIGN): Changed to 0.
16253         * config/arc/arc.md (doloop_begin): Remove pattern.
16254         (doloop_begin_i): Likewise.
16255         (doloop_end_i): Likewise.
16256         (doloop_fallback): Likewise.
16257         (doloop_fallback_m): Likewise.
16258         (doloop_end): Reimplement expand.
16259         (arc_lp): New pattern for LP instruction.
16260         (loop_end): New pattern.
16261         (loop_fail): Likewise.
16262         (decrement_and_branch_until_zero): Likewise.
16263         * config/arc/arc.opt (mlpc-width): New option.
16264         * doc/invoke.texi (mlpc-width): Document option.
16265
16266 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
16267
16268         * config/arc/arc.c (arc_ifcvt): Remove use of merge_blocks call.
16269         (arc_ccfsm_advance): Fix checking for delay slots.
16270         (arc_reorg): Add rtl dump after each call to arc_ifcvt.
16271
16272 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
16273
16274         * config/arc/arc.md (movqi_insn): Add stores to save constant long
16275         immediates.
16276         (movhi_insn): Update store instruction constraint which are saving
16277         6-bit short immediates.
16278         (movsi_insn): Consider also short scaled load operations.
16279         (zero_extendhisi2_i): Use Usd constraint instead of T.
16280         (extendhisi2_i): Add q constraint.
16281         (arc_clzsi2): Add type and length attributes.
16282         (arc_ctzsi2): Likewise.
16283         * config/arc/constraints.md (Usc): Update constraint, the
16284         assembler can parse two relocations for a single instruction.
16285
16286 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
16287
16288         * config/arc/arc.c (arc_use_anchors_for_symbol_p): New function.
16289         (TARGET_USE_ANCHORS_FOR_SYMBOL_P): Define.
16290
16291 2017-08-31  Olivier Hainque  <hainque@adacore.com>
16292
16293         * config.gcc (powerpc-wrs-vxworks|vxworksae|vxworksmils): Now
16294         match as powerpc-wrs-vxworks*.
16295
16296 2017-08-31  James Greenhalgh  <james.greenhalgh@arm.com>
16297
16298         * config/aarch64/aarch64-simd.md (aarch64_mla_elt_merge<mode>): Fix
16299         register constraint for by-element operand.
16300         (aarch64_mls_elt_merge<mode>): Likewise.
16301
16302 2017-08-31  Claudiu Zissulescu  <claziss@synopsys.com>
16303
16304         * config/arc/arc.c (arc_can_follow_jump): Check for short
16305         branches.
16306
16307 2017-08-31  Claudiu Zissulescu  <claziss@synopsys.com>
16308
16309         * config.gcc: Use g.opt for arc.
16310         * config/arc/arc.c (LEGITIMATE_SCALED_ADDRESS_P): Deleted,
16311         functionality moved to ...
16312         (legitimate_scaled_address_p): New function, ...here.
16313         (LEGITIMATE_SMALL_DATA_OFFSET_P): New define.
16314         (LEGITIMATE_SMALL_DATA_ADDRESS_P): Use the above define.
16315         (legitimate_offset_address_p): Delete TARGET_NO_SDATA_SET
16316         condition.
16317         (arc_override_options): Handle G option.
16318         (arc_output_pic_addr_const): Correct function definition.
16319         (arc_legitimate_address_p): Use legitimate_scaled_address_p.
16320         (arc_decl_anon_ns_mem_p): Delete.
16321         (arc_in_small_data_p): Overhaul this function to take into
16322         consideration the value given via G option.
16323         (arc_rewrite_small_data_1): Renamed and corrected old
16324         arc_rewrite_small_data function.
16325         (arc_rewrite_small_data): New function.
16326         (small_data_pattern): Don't use pic_offset_table_rtx.
16327         * config/arc/arc.h (CC1_SPEC): Recognize G option.
16328         * config/arc/simdext.md (movmisalignv2hi): Use
16329         prepare_move_operands function.
16330         (mov*): Likewise.
16331         (movmisalign*): Likewise.
16332         * doc/invoke.texi (ARC options): Document -G option.
16333
16334 2017-08-31  Claudiu Zissulescu  <claziss@synopsys.com>
16335
16336         * config/arc/arc-protos.h (compact_sda_memory_operand): Update
16337         prototype.
16338         * config/arc/arc.c (arc_print_operand): Output scalled address for
16339         sdata whenever is possible.
16340         (arc_in_small_data_p): Allow sdata for 64bit datum when double
16341         load/stores are available.
16342         (compact_sda_memory_operand): Check for the alignment required by
16343         code density instructions.
16344         * config/arc/arc.md (movsi_insn): Use newly introduced Us0
16345         constraint.
16346         * config/arc/constraints.md (Usd): Update constraint.
16347         (Us0): New constraint.
16348         (Usc): Update constraint.
16349
16350 2017-08-31  Richard Biener  <rguenther@suse.de>
16351
16352         PR middle-end/82054
16353         * dwarf2out.c (dwarf2out_early_global_decl): Process each
16354         function only once.
16355
16356 2017-08-31  Tamar Christina  <tamar.christina@arm.com>
16357
16358         * config/aarch64/aarch64-builtins.c (aarch64_init_simd_builtins):
16359         Resize type_signature.
16360
16361 2017-08-31  Richard Sandiford  <richard.sandiford@linaro.org>
16362             Alan Hayward  <alan.hayward@arm.com>
16363             David Sherwood  <david.sherwood@arm.com>
16364
16365         * config/aarch64/aarch64.c (aarch64_base_register_rtx_p): Only allow
16366         subregs whose inner modes can be stored in GPRs.
16367         (aarch64_classify_index): Likewise.
16368
16369 2017-08-31  Richard Sandiford  <richard.sandiford@linaro.org>
16370             Alan Hayward  <alan.hayward@arm.com>
16371             David Sherwood  <david.sherwood@arm.com>
16372
16373         * config/aarch64/iterators.md (V_cmp_result): Rename to...
16374         (V_INT_EQUIV): ...this.
16375         (v_cmp_result): Rename to...
16376         (v_int_equiv): ...this.
16377         * config/aarch64/aarch64.md (xorsign<mode>3): Update accordingly.
16378         * config/aarch64/aarch64-simd.md (xorsign<mode>3): Likewise.
16379         (copysign<mode>3): Likewise.
16380         (aarch64_simd_bsl<mode>_internal): Likewise.
16381         (aarch64_simd_bsl<mode>): Likewise.
16382         (vec_cmp<mode><mode>): Likewise.
16383         (vcond<mode><mode>): Likewise.
16384         (vcond<v_cmp_mixed><mode>): Likewise.
16385         (vcondu<mode><v_cmp_mixed>): Likewise.
16386         (aarch64_cm<optab><mode>): Likewise.
16387         (aarch64_cmtst<mode>): Likewise.
16388         (aarch64_fac<optab><mode>): Likewise.
16389         (vec_perm_const<mode>): Likewise.
16390         (vcond_mask_<mode><v_cmp_result>): Rename to...
16391         (vcond_mask_<mode><v_int_equiv>): ...this.
16392         (vec_cmp<mode><v_cmp_result>): Rename to...
16393         (vec_cmp<mode><v_int_equiv>): ...this.
16394
16395 2017-08-31  Richard Sandiford  <richard.sandiford@linaro.org>
16396             Alan Hayward  <alan.hayward@arm.com>
16397             David Sherwood  <david.sherwood@arm.com>
16398
16399         * config/aarch64/aarch64-modes.def: Remove 32-, 48- and 64-byte
16400         vector modes.
16401         * config/aarch64/iterators.md (VRL2, VRL3, VRL4): Delete.
16402         * config/aarch64/aarch64.md (UNSPEC_LD2_DREG, UNSPEC_LD3_DREG)
16403         (UNSPEC_LD4_DREG): New unspecs.
16404         * config/aarch64/aarch64-simd.md (aarch64_ld2<mode>_dreg_le)
16405         (aarch64_ld2<mode>_dreg_be): Replace with...
16406         (aarch64_ld2<mode>_dreg): ...this pattern and use the new DREG
16407         unspec.
16408         (aarch64_ld3<mode>_dreg_le)
16409         (aarch64_ld3<mode>_dreg_be): Replace with...
16410         (aarch64_ld3<mode>_dreg): ...this pattern and use the new DREG
16411         unspec.
16412         (aarch64_ld4<mode>_dreg_le)
16413         (aarch64_ld4<mode>_dreg_be): Replace with...
16414         (aarch64_ld4<mode>_dreg): ...this pattern and use the new DREG
16415         unspec.
16416
16417 2017-08-30  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
16418
16419         PR tree-optimization/81987
16420         * gimple-ssa-strength-reduction.c (insert_initializers): Don't
16421         insert an initializer in a location not dominated by the stride
16422         definition.
16423
16424 2017-08-30  Eric Botcazou  <ebotcazou@adacore.com>
16425
16426         * tree-eh.c (lower_try_finally_switch): Set the location of the finally
16427         on the entire header of the finally block in the fallthru case.
16428
16429 2017-08-30  Eric Botcazou  <ebotcazou@adacore.com>
16430
16431         * varasm.c (decode_addr_const): Deal with INDIRECT_REF <INTEGER_CST>.
16432
16433 2017-08-30  Pat Haugen  <pthaugen@us.ibm.com>
16434
16435         * config/rs6000/rs6000.c (rs6000_emit_prologue_move_from_cr): Rename from
16436         rs6000_emit_move_from_cr and call renamed function.
16437         (rs6000_emit_prologue): Call renamed functions.
16438         * config/rs6000/rs6000.md (prologue_movesi_from_cr): Rename from
16439         movesi_from_cr, remove volatile CRs.
16440
16441 2017-08-30  Jon Beniston  <jon@beniston.com>
16442             Richard Biener  <rguenther@suse.de>
16443
16444         * tree-vect-patterns.c (vect_pattern_recog_1): Use VECTOR_TYPE_P instead
16445         of VECTOR_MODE_P check.
16446         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Allow single
16447         element vector types.
16448
16449 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16450
16451         * df.h (df_read_modify_subreg_p): Remove in favor of...
16452         * rtl.h (read_modify_subreg_p): ...this new function.  Take a
16453         const_rtx instead of an rtx.
16454         * cprop.c (local_cprop_find_used_regs): Update accordingly.
16455         * df-problems.c (df_word_lr_mark_ref): Likewise.
16456         * ira-lives.c (mark_pseudo_reg_live): Likewise.
16457         (mark_pseudo_reg_dead): Likewise.
16458         (mark_ref_dead): Likewise.
16459         * reginfo.c (init_subregs_of_mode): Likewise.
16460         * sched-deps.c (sched_analyze_1): Likewise.
16461         * df-scan.c (df_def_record_1): Likewise.
16462         (df_uses_record): Likewise.
16463         (df_read_modify_subreg_p): Remove in favor of...
16464         * rtlanal.c (read_modify_subreg_p): ...this new function.  Take a
16465         const_rtx instead of an rtx.
16466
16467 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16468             Alan Hayward  <alan.hayward@arm.com>
16469             David Sherwood  <david.sherwood@arm.com>
16470
16471         * rtl.h (partial_subreg_p): New function.
16472         * caller-save.c (save_call_clobbered_regs): Use it.
16473         * calls.c (expand_call): Likewise.
16474         * combine.c (combinable_i3pat): Likewise.
16475         (simplify_set): Likewise.
16476         (make_extraction): Likewise.
16477         (make_compound_operation_int): Likewise.
16478         (gen_lowpart_or_truncate): Likewise.
16479         (force_to_mode): Likewise.
16480         (make_field_assignment): Likewise.
16481         (reg_truncated_to_mode): Likewise.
16482         (record_truncated_value): Likewise.
16483         (move_deaths): Likewise.
16484         * cse.c (record_jump_cond): Likewise.
16485         (cse_insn): Likewise.
16486         * cselib.c (cselib_lookup_1): Likewise.
16487         * expmed.c (extract_bit_field_using_extv): Likewise.
16488         * function.c (assign_parm_setup_reg): Likewise.
16489         * ifcvt.c (noce_convert_multiple_sets): Likewise.
16490         * ira-build.c (create_insn_allocnos): Likewise.
16491         * lra-coalesce.c (merge_pseudos): Likewise.
16492         * lra-constraints.c (match_reload): Likewise.
16493         (simplify_operand_subreg): Likewise.
16494         (curr_insn_transform): Likewise.
16495         * lra-lives.c (process_bb_lives): Likewise.
16496         * lra.c (new_insn_reg): Likewise.
16497         (lra_substitute_pseudo): Likewise.
16498         * regcprop.c (mode_change_ok): Likewise.
16499         (maybe_mode_change): Likewise.
16500         (copyprop_hardreg_forward_1): Likewise.
16501         * reload.c (push_reload): Likewise.
16502         (find_reloads): Likewise.
16503         (find_reloads_subreg_address): Likewise.
16504         * reload1.c (alter_reg): Likewise.
16505         (eliminate_regs_1): Likewise.
16506         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
16507
16508 2017-08-30  David Edelsohn  <dje.gcc@gmail.com>
16509
16510         * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Revert
16511         back to if statements, including unpack.
16512
16513 2017-08-30  Martin Liska  <mliska@suse.cz>
16514
16515         PR inline-asm/82001
16516         * ipa-icf-gimple.c (func_checker::compare_tree_list_operand):
16517         Rename to ...
16518         (func_checker::compare_asm_inputs_outputs): ... this function.
16519         (func_checker::compare_gimple_asm): Use the function to compare
16520         also ASM constrains.
16521         * ipa-icf-gimple.h: Rename the function.
16522
16523 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16524             Alan Hayward  <alan.hayward@arm.com>
16525             David Sherwood  <david.sherwood@arm.com>
16526
16527         * coretypes.h (complex_mode): New type.
16528         * gdbhooks.py (build_pretty_printer): Handle it.
16529         * machmode.h (complex_mode): New class.
16530         (complex_mode::includes_p): New function.
16531         (is_complex_int_mode): Likewise.
16532         (is_complex_float_mode): Likewise.
16533         * genmodes.c (get_mode_class): Handle complex mode classes.
16534         * function.c (expand_function_end): Use is_complex_int_mode.
16535
16536 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16537             Alan Hayward  <alan.hayward@arm.com>
16538             David Sherwood  <david.sherwood@arm.com>
16539
16540         * coretypes.h (scalar_mode_pod): New typedef.
16541         * gdbhooks.py (build_pretty_printer): Handle it.
16542         * machmode.h (gt_ggc_mx, gt_pch_nx): New functions.
16543         * fixed-value.h (fixed_value::mode): Change type to scalar_mode_pod.
16544         * fold-const.c (fold_convert_const_int_from_fixed): Use scalar_mode.
16545         * tree-streamer-in.c (unpack_ts_fixed_cst_value_fields): Use
16546         as_a <scalar_mode>.
16547
16548 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16549             Alan Hayward  <alan.hayward@arm.com>
16550             David Sherwood  <david.sherwood@arm.com>
16551
16552         * machmode.h (mode_for_vector): Take a scalar_mode instead
16553         of a machine_mode.
16554         * stor-layout.c (mode_for_vector): Likewise.
16555         * explow.c (promote_mode): Use as_a <scalar_mode>.
16556         * sdbout.c (sdbout_parms): Use is_a <scalar_mode>.
16557
16558 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16559             Alan Hayward  <alan.hayward@arm.com>
16560             David Sherwood  <david.sherwood@arm.com>
16561
16562         * target.def (preferred_simd_mode): Take a scalar_mode
16563         instead of a machine_mode.
16564         * targhooks.h (default_preferred_simd_mode): Likewise.
16565         * targhooks.c (default_preferred_simd_mode): Likewise.
16566         * config/arc/arc.c (arc_preferred_simd_mode): Likewise.
16567         * config/arm/arm.c (arm_preferred_simd_mode): Likewise.
16568         * config/c6x/c6x.c (c6x_preferred_simd_mode): Likewise.
16569         * config/epiphany/epiphany.c (epiphany_preferred_simd_mode): Likewise.
16570         * config/i386/i386.c (ix86_preferred_simd_mode): Likewise.
16571         * config/mips/mips.c (mips_preferred_simd_mode): Likewise.
16572         * config/nvptx/nvptx.c (nvptx_preferred_simd_mode): Likewise.
16573         * config/powerpcspe/powerpcspe.c (rs6000_preferred_simd_mode):
16574         Likewise.
16575         * config/rs6000/rs6000.c (rs6000_preferred_simd_mode): Likewise.
16576         * config/s390/s390.c (s390_preferred_simd_mode): Likewise.
16577         * config/sparc/sparc.c (sparc_preferred_simd_mode): Likewise.
16578         * config/aarch64/aarch64.c (aarch64_preferred_simd_mode): Likewise.
16579         (aarch64_simd_scalar_immediate_valid_for_move): Update accordingly.
16580         * doc/tm.texi: Regenerate.
16581         * optabs-query.c (can_vec_mask_load_store_p): Return false for
16582         non-scalar modes.
16583
16584 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16585             Alan Hayward  <alan.hayward@arm.com>
16586             David Sherwood  <david.sherwood@arm.com>
16587
16588         * target.def (scalar_mode_supported_p): Take a scalar_mode
16589         instead of a machine_mode.
16590         * targhooks.h (default_scalar_mode_supported_p): Likewise.
16591         * targhooks.c (default_scalar_mode_supported_p): Likewise.
16592         * config/aarch64/aarch64.c (aarch64_scalar_mode_supported_p): Likewise.
16593         * config/alpha/alpha.c (alpha_scalar_mode_supported_p): Likewise.
16594         * config/arm/arm.c (arm_scalar_mode_supported_p): Likewise.
16595         * config/avr/avr.c (avr_scalar_mode_supported_p): Likewise.
16596         * config/c6x/c6x.c (c6x_scalar_mode_supported_p): Likewise.
16597         * config/i386/i386.c (ix86_scalar_mode_supported_p): Likewise.
16598         * config/ia64/ia64.c (ia64_scalar_mode_supported_p): Likewise.
16599         * config/mips/mips.c (mips_scalar_mode_supported_p): Likewise.
16600         * config/msp430/msp430.c (msp430_scalar_mode_supported_p): Likewise.
16601         * config/pa/pa.c (pa_scalar_mode_supported_p): Likewise.
16602         * config/pdp11/pdp11.c (pdp11_scalar_mode_supported_p): Likewise.
16603         * config/powerpcspe/powerpcspe.c (rs6000_scalar_mode_supported_p):
16604         Likewise.
16605         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Likewise.
16606         * config/s390/s390.c (s390_scalar_mode_supported_p): Likewise.
16607         * config/spu/spu.c (spu_scalar_mode_supported_p): Likewise.
16608         * config/tilegx/tilegx.c (tilegx_scalar_mode_supported_p): Likewise.
16609         * config/tilepro/tilepro.c (tilepro_scalar_mode_supported_p):
16610         Likewise.
16611         * doc/tm.texi: Regenerate.
16612
16613 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16614             Alan Hayward  <alan.hayward@arm.com>
16615             David Sherwood  <david.sherwood@arm.com>
16616
16617         * coretypes.h (opt_scalar_mode): New typedef.
16618         * gdbhooks.py (build_pretty_printers): Handle it.
16619         * machmode.h (mode_iterator::get_2xwider): Add overload for
16620         opt_mode<T>.
16621         * emit-rtl.c (init_emit_once): Use opt_scalar_mode when iterating
16622         over scalar modes.
16623         * expr.c (convert_mode_scalar): Likewise.
16624         * omp-low.c (omp_clause_aligned_alignment): Likewise.
16625         * optabs.c (expand_float): Likewise.
16626         (expand_fix): Likewise.
16627         * tree-vect-stmts.c (vectorizable_conversion): Likewise.
16628
16629 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16630             Alan Hayward  <alan.hayward@arm.com>
16631             David Sherwood  <david.sherwood@arm.com>
16632
16633         * optabs.c (expand_float): Explicitly check for scalars before
16634         using a branching expansion.
16635         (expand_fix): Likewise.
16636
16637 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16638             Alan Hayward  <alan.hayward@arm.com>
16639             David Sherwood  <david.sherwood@arm.com>
16640
16641         * expr.c (convert_mode): Split scalar handling out into...
16642         (convert_mode_scalar): ...this new function.  Treat the modes
16643         as scalar_modes.
16644
16645 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16646             Alan Hayward  <alan.hayward@arm.com>
16647             David Sherwood  <david.sherwood@arm.com>
16648
16649         * omp-expand.c (expand_omp_atomic): Use is_int_mode, is_float_mode
16650         and scalar_mode.
16651         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Likewise.
16652
16653 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16654             Alan Hayward  <alan.hayward@arm.com>
16655             David Sherwood  <david.sherwood@arm.com>
16656
16657         * fixed-value.h (fixed_from_double_int): Take a scalar_mode
16658         rather than a machine_mode.
16659         (fixed_from_string): Likewise.
16660         (fixed_convert): Likewise.
16661         (fixed_convert_from_int): Likewise.
16662         (fixed_convert_from_real): Likewise.
16663         (real_convert_from_fixed): Likewise.
16664         * fixed-value.c (fixed_from_double_int): Likewise.
16665         (fixed_from_string): Likewise.
16666         (fixed_convert): Likewise.
16667         (fixed_convert_from_int): Likewise.
16668         (fixed_convert_from_real): Likewise.
16669         (real_convert_from_fixed): Likewise.
16670         * config/avr/avr.c (avr_out_round): Use as_a <scalar_mode>.
16671
16672 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16673             Alan Hayward  <alan.hayward@arm.com>
16674             David Sherwood  <david.sherwood@arm.com>
16675
16676         * emit-rtl.c (immed_double_const): Use is_a <scalar_mode> instead
16677         of separate mode class checks.  Do not allow vector modes here.
16678         (immed_wide_int_const): Use as_a <scalar_mode>.
16679         * explow.c (trunc_int_for_mode): Likewise.
16680         * rtl.h (wi::int_traits<rtx_mode_t>::get_precision): Likewise.
16681         (wi::shwi): Likewise.
16682         (wi::min_value): Likewise.
16683         (wi::max_value): Likewise.
16684         * dwarf2out.c (loc_descriptor): Likewise.
16685         * simplify-rtx.c (simplify_immed_subreg): Fix rtx_mode_t argument
16686         for CONST_WIDE_INT.
16687
16688 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16689             Alan Hayward  <alan.hayward@arm.com>
16690             David Sherwood  <david.sherwood@arm.com>
16691
16692         * tree.h (SCALAR_TYPE_MODE): New macro.
16693         * expr.c (expand_expr_addr_expr_1): Use it.
16694         (expand_expr_real_2): Likewise.
16695         * fold-const.c (fold_convert_const_fixed_from_fixed): Likeise.
16696         (fold_convert_const_fixed_from_int): Likewise.
16697         (fold_convert_const_fixed_from_real): Likewise.
16698         (native_encode_fixed): Likewise
16699         (native_encode_complex): Likewise
16700         (native_encode_vector): Likewise.
16701         (native_interpret_fixed): Likewise.
16702         (native_interpret_real): Likewise.
16703         (native_interpret_complex): Likewise.
16704         (native_interpret_vector): Likewise.
16705         * omp-simd-clone.c (simd_clone_adjust_return_type): Likewise.
16706         (simd_clone_adjust_argument_types): Likewise.
16707         (simd_clone_init_simd_arrays): Likewise.
16708         (simd_clone_adjust): Likewise.
16709         * stor-layout.c (layout_type): Likewise.
16710         * tree.c (build_minus_one_cst): Likewise.
16711         * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
16712         * tree-inline.c (estimate_move_cost): Likewise.
16713         * tree-ssa-math-opts.c (convert_plusminus_to_widen): Likewise.
16714         * tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise.
16715         (vectorizable_reduction): Likewise.
16716         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Likewise.
16717         (vect_recog_mixed_size_cond_pattern): Likewise.
16718         (check_bool_pattern): Likewise.
16719         (adjust_bool_pattern): Likewise.
16720         (search_type_for_mask_1): Likewise.
16721         * tree-vect-slp.c (vect_schedule_slp_instance): Likewise.
16722         * tree-vect-stmts.c (vectorizable_conversion): Likewise.
16723         (vectorizable_load): Likewise.
16724         (vectorizable_store): Likewise.
16725         * ubsan.c (ubsan_encode_value): Likewise.
16726         * varasm.c (output_constant): Likewise.
16727
16728 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16729             Alan Hayward  <alan.hayward@arm.com>
16730             David Sherwood  <david.sherwood@arm.com>
16731
16732         * coretypes.h (scalar_mode): New class.
16733         * machmode.h (scalar_mode): Likewise.
16734         (scalar_mode::includes_p): New function.
16735         (mode_to_inner): Return a scalar_mode rather than a machine_mode.
16736         * gdbhooks.py (build_pretty_printers): Handle scalar_mode.
16737         * genmodes.c (get_mode_class): Handle remaining scalar modes.
16738         * cfgexpand.c (expand_debug_expr): Use scalar_mode.
16739         * expmed.c (store_bit_field_1): Likewise.
16740         (extract_bit_field_1): Likewise.
16741         * expr.c (write_complex_part): Likewise.
16742         (read_complex_part): Likewise.
16743         (emit_move_complex_push): Likewise.
16744         (expand_expr_real_2): Likewise.
16745         * function.c (assign_parm_setup_reg): Likewise.
16746         (assign_parms_unsplit_complex): Likewise.
16747         * optabs.c (expand_binop): Likewise.
16748         * rtlanal.c (subreg_get_info): Likewise.
16749         * simplify-rtx.c (simplify_immed_subreg): Likewise.
16750         * varasm.c (output_constant_pool_2): Likewise.
16751
16752 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16753             Alan Hayward  <alan.hayward@arm.com>
16754             David Sherwood  <david.sherwood@arm.com>
16755
16756         * expmed.c (extract_high_half): Use scalar_int_mode and remove
16757         assertion.
16758         (expmed_mult_highpart_optab): Likewise.
16759         (expmed_mult_highpart): Likewise.
16760
16761 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16762             Alan Hayward  <alan.hayward@arm.com>
16763             David Sherwood  <david.sherwood@arm.com>
16764
16765         * builtins.h (builtin_strncpy_read_str): Take a scalar_int_mode
16766         instead of a machine_mode.
16767         (builtin_memset_read_str): Likewise.
16768         * builtins.c (c_readstr): Likewise.
16769         (builtin_memcpy_read_str): Likewise.
16770         (builtin_strncpy_read_str): Likewise.
16771         (builtin_memset_read_str): Likewise.
16772         (builtin_memset_gen_str): Likewise.
16773         (expand_builtin_signbit): Use scalar_int_mode for local variables.
16774         * cfgexpand.c (convert_debug_memory_address): Take a scalar_int_mode
16775         instead of a machine_mode.
16776         * combine.c (simplify_if_then_else): Use scalar_int_mode for local
16777         variables.
16778         (make_extraction): Likewise.
16779         (try_widen_shift_mode): Take and return scalar_int_modes instead
16780         of machine_modes.
16781         * config/aarch64/aarch64.c (aarch64_libgcc_cmp_return_mode): Return
16782         a scalar_int_mode instead of a machine_mode.
16783         * config/avr/avr.c (avr_addr_space_address_mode): Likewise.
16784         (avr_addr_space_pointer_mode): Likewise.
16785         * config/cr16/cr16.c (cr16_unwind_word_mode): Likewise.
16786         * config/msp430/msp430.c (msp430_addr_space_pointer_mode): Likewise.
16787         (msp430_unwind_word_mode): Likewise.
16788         * config/spu/spu.c (spu_unwind_word_mode): Likewise.
16789         (spu_addr_space_pointer_mode): Likewise.
16790         (spu_addr_space_address_mode): Likewise.
16791         (spu_libgcc_cmp_return_mode): Likewise.
16792         (spu_libgcc_shift_count_mode): Likewise.
16793         * config/rl78/rl78.c (rl78_addr_space_address_mode): Likewise.
16794         (rl78_addr_space_pointer_mode): Likewise.
16795         (fl78_unwind_word_mode): Likewise.
16796         (rl78_valid_pointer_mode): Take a scalar_int_mode instead of a
16797         machine_mode.
16798         * config/alpha/alpha.c (vms_valid_pointer_mode): Likewise.
16799         * config/ia64/ia64.c (ia64_vms_valid_pointer_mode): Likewise.
16800         * config/mips/mips.c (mips_mode_rep_extended): Likewise.
16801         (mips_valid_pointer_mode): Likewise.
16802         * config/tilegx/tilegx.c (tilegx_mode_rep_extended): Likewise.
16803         * config/ft32/ft32.c (ft32_valid_pointer_mode): Likewise.
16804         (ft32_addr_space_pointer_mode): Return a scalar_int_mode instead
16805         of a machine_mode.
16806         (ft32_addr_space_address_mode): Likewise.
16807         * config/m32c/m32c.c (m32c_valid_pointer_mode): Take a
16808         scalar_int_mode instead of a machine_mode.
16809         (m32c_addr_space_pointer_mode): Return a scalar_int_mode instead
16810         of a machine_mode.
16811         (m32c_addr_space_address_mode): Likewise.
16812         * config/powerpcspe/powerpcspe.c (rs6000_abi_word_mode): Likewise.
16813         (rs6000_eh_return_filter_mode): Likewise.
16814         * config/rs6000/rs6000.c (rs6000_abi_word_mode): Likewise.
16815         (rs6000_eh_return_filter_mode): Likewise.
16816         * config/s390/s390.c (s390_libgcc_cmp_return_mode): Likewise.
16817         (s390_libgcc_shift_count_mode): Likewise.
16818         (s390_unwind_word_mode): Likewise.
16819         (s390_valid_pointer_mode): Take a scalar_int_mode rather than a
16820         machine_mode.
16821         * target.def (mode_rep_extended): Likewise.
16822         (valid_pointer_mode): Likewise.
16823         (addr_space.valid_pointer_mode): Likewise.
16824         (eh_return_filter_mode): Return a scalar_int_mode rather than
16825         a machine_mode.
16826         (libgcc_cmp_return_mode): Likewise.
16827         (libgcc_shift_count_mode): Likewise.
16828         (unwind_word_mode): Likewise.
16829         (addr_space.pointer_mode): Likewise.
16830         (addr_space.address_mode): Likewise.
16831         * doc/tm.texi: Regenerate.
16832         * dojump.c (prefer_and_bit_test): Take a scalar_int_mode rather than
16833         a machine_mode.
16834         (do_jump): Use scalar_int_mode for local variables.
16835         * dwarf2cfi.c (init_return_column_size): Take a scalar_int_mode
16836         rather than a machine_mode.
16837         * dwarf2out.c (convert_descriptor_to_mode): Likewise.
16838         (scompare_loc_descriptor_wide): Likewise.
16839         (scompare_loc_descriptor_narrow): Likewise.
16840         * emit-rtl.c (adjust_address_1): Use scalar_int_mode for local
16841         variables.
16842         * except.c (sjlj_emit_dispatch_table): Likewise.
16843         (expand_builtin_eh_copy_values): Likewise.
16844         * explow.c (convert_memory_address_addr_space_1): Likewise.
16845         Take a scalar_int_mode rather than a machine_mode.
16846         (convert_memory_address_addr_space): Take a scalar_int_mode rather
16847         than a machine_mode.
16848         (memory_address_addr_space): Use scalar_int_mode for local variables.
16849         * expmed.h (expand_mult_highpart_adjust): Take a scalar_int_mode
16850         rather than a machine_mode.
16851         * expmed.c (mask_rtx): Likewise.
16852         (init_expmed_one_conv): Likewise.
16853         (expand_mult_highpart_adjust): Likewise.
16854         (extract_high_half): Likewise.
16855         (expmed_mult_highpart_optab): Likewise.
16856         (expmed_mult_highpart): Likewise.
16857         (expand_smod_pow2): Likewise.
16858         (expand_sdiv_pow2): Likewise.
16859         (emit_store_flag_int): Likewise.
16860         (adjust_bit_field_mem_for_reg): Use scalar_int_mode for local
16861         variables.
16862         (extract_low_bits): Likewise.
16863         * expr.h (by_pieces_constfn): Take a scalar_int_mode rather than
16864         a machine_mode.
16865         * expr.c (pieces_addr::adjust):  Likewise.
16866         (can_store_by_pieces): Likewise.
16867         (store_by_pieces): Likewise.
16868         (clear_by_pieces_1): Likewise.
16869         (expand_expr_addr_expr_1): Likewise.
16870         (expand_expr_addr_expr): Use scalar_int_mode for local variables.
16871         (expand_expr_real_1): Likewise.
16872         (try_casesi): Likewise.
16873         * final.c (shorten_branches): Likewise.
16874         * fold-const.c (fold_convert_const_int_from_fixed): Change the
16875         type of "mode" to machine_mode.
16876         * internal-fn.c (expand_arith_overflow_result_store): Take a
16877         scalar_int_mode rather than a machine_mode.
16878         (expand_mul_overflow): Use scalar_int_mode for local variables.
16879         * loop-doloop.c (doloop_modify): Likewise.
16880         (doloop_optimize): Likewise.
16881         * optabs.c (expand_subword_shift): Take a scalar_int_mode rather
16882         than a machine_mode.
16883         (expand_doubleword_shift_condmove): Likewise.
16884         (expand_doubleword_shift): Likewise.
16885         (expand_doubleword_clz): Likewise.
16886         (expand_doubleword_popcount): Likewise.
16887         (expand_doubleword_parity): Likewise.
16888         (expand_absneg_bit): Use scalar_int_mode for local variables.
16889         (prepare_float_lib_cmp): Likewise.
16890         * rtl.h (convert_memory_address_addr_space_1): Take a scalar_int_mode
16891         rather than a machine_mode.
16892         (convert_memory_address_addr_space): Likewise.
16893         (get_mode_bounds): Likewise.
16894         (get_address_mode): Return a scalar_int_mode rather than a
16895         machine_mode.
16896         * rtlanal.c (get_address_mode): Likewise.
16897         * stor-layout.c (get_mode_bounds): Take a scalar_int_mode rather
16898         than a machine_mode.
16899         * targhooks.c (default_mode_rep_extended): Likewise.
16900         (default_valid_pointer_mode): Likewise.
16901         (default_addr_space_valid_pointer_mode): Likewise.
16902         (default_eh_return_filter_mode): Return a scalar_int_mode rather
16903         than a machine_mode.
16904         (default_libgcc_cmp_return_mode): Likewise.
16905         (default_libgcc_shift_count_mode): Likewise.
16906         (default_unwind_word_mode): Likewise.
16907         (default_addr_space_pointer_mode): Likewise.
16908         (default_addr_space_address_mode): Likewise.
16909         * targhooks.h (default_eh_return_filter_mode): Likewise.
16910         (default_libgcc_cmp_return_mode): Likewise.
16911         (default_libgcc_shift_count_mode): Likewise.
16912         (default_unwind_word_mode): Likewise.
16913         (default_addr_space_pointer_mode): Likewise.
16914         (default_addr_space_address_mode): Likewise.
16915         (default_mode_rep_extended): Take a scalar_int_mode rather than
16916         a machine_mode.
16917         (default_valid_pointer_mode): Likewise.
16918         (default_addr_space_valid_pointer_mode): Likewise.
16919         * tree-ssa-address.c (addr_for_mem_ref): Use scalar_int_mode for
16920         local variables.
16921         * tree-ssa-loop-ivopts.c (get_shiftadd_cost): Take a scalar_int_mode
16922         rather than a machine_mode.
16923         * tree-switch-conversion.c (array_value_type): Use scalar_int_mode
16924         for local variables.
16925         * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
16926         * var-tracking.c (use_narrower_mode): Take a scalar_int_mode rather
16927         than a machine_mode.
16928
16929 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16930             Alan Hayward  <alan.hayward@arm.com>
16931             David Sherwood  <david.sherwood@arm.com>
16932
16933         * dojump.c (do_jump_by_parts_greater_rtx): Change the type of
16934         the mode argument to scalar_int_mode.
16935         (do_jump_by_parts_zero_rtx): Likewise.
16936         (do_jump_by_parts_equality_rtx): Likewise.
16937         (do_jump_by_parts_greater): Take a mode argument.
16938         (do_jump_by_parts_equality): Likewise.
16939         (do_jump_1): Update calls accordingly.
16940
16941 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16942             Alan Hayward  <alan.hayward@arm.com>
16943             David Sherwood  <david.sherwood@arm.com>
16944
16945         * is-a.h (safe_dyn_cast): New function.
16946         * rtl.h (rtx_jump_table_data::get_data_mode): New function.
16947         (jump_table_for_label): Likewise.
16948         * final.c (final_addr_vec_align): Take an rtx_jump_table_data *
16949         instead of an rtx_insn *.
16950         (shorten_branches): Use dyn_cast instead of LABEL_P and
16951         JUMP_TABLE_DATA_P.  Use jump_table_for_label and
16952         rtx_jump_table_data::get_data_mode.
16953         (final_scan_insn): Likewise.
16954
16955 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16956             Alan Hayward  <alan.hayward@arm.com>
16957             David Sherwood  <david.sherwood@arm.com>
16958
16959         * combine.c (try_combine): Use is_a <scalar_int_mode> when
16960         trying to combine a full-register integer set with a subreg
16961         integer set.
16962
16963 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16964             Alan Hayward  <alan.hayward@arm.com>
16965             David Sherwood  <david.sherwood@arm.com>
16966
16967         * expr.c (expand_expr_addr_expr): Add a new_tmode local variable
16968         that is always either address_mode or pointer_mode.
16969
16970 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16971             Alan Hayward  <alan.hayward@arm.com>
16972             David Sherwood  <david.sherwood@arm.com>
16973
16974         * expr.c (expand_expr_real_2): Use word_mode instead of innermode
16975         when the two are known to be equal.
16976
16977 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16978             Alan Hayward  <alan.hayward@arm.com>
16979             David Sherwood  <david.sherwood@arm.com>
16980
16981         * simplify-rtx.c (simplify_const_unary_operation): Use
16982         is_a <scalar_int_mode> instead of checking for a nonzero
16983         precision.  Forcibly convert op_mode to a scalar_int_mode
16984         in that case.  More clearly differentiate the operand and
16985         result modes and use the former when deciding what the value
16986         of a count-bits operation should be.  Use is_int_mode instead
16987         of checking for a MODE_INT.  Remove redundant check for whether
16988         this mode has a zero precision.
16989
16990 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
16991             Alan Hayward  <alan.hayward@arm.com>
16992             David Sherwood  <david.sherwood@arm.com>
16993
16994         * optabs.c (widen_leading): Change the type of the mode argument
16995         to scalar_int_mode.  Use opt_scalar_int_mode for the mode iterator.
16996         (widen_bswap): Likewise.
16997         (expand_parity): Likewise.
16998         (expand_ctz): Change the type of the mode argument to scalar_int_mode.
16999         (expand_ffs): Likewise.
17000         (epand_unop): Check for scalar integer modes before calling the
17001         above routines.
17002
17003 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17004             Alan Hayward  <alan.hayward@arm.com>
17005             David Sherwood  <david.sherwood@arm.com>
17006
17007         * expr.c (const_scalar_mask_from_tree): Add a mode argument.
17008         Expand commentary.
17009         (expand_expr_real_1): Update call accordingly.
17010
17011 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17012             Alan Hayward  <alan.hayward@arm.com>
17013             David Sherwood  <david.sherwood@arm.com>
17014
17015         * expmed.c (store_bit_field_using_insv): Add op0_mode and
17016         value_mode arguments.  Use scalar_int_mode internally.
17017         (store_bit_field_1): Rename the new integer mode from imode
17018         to op0_mode and use it instead of GET_MODE (op0).  Update calls
17019         to store_split_bit_field, store_bit_field_using_insv and
17020         store_fixed_bit_field.
17021         (store_fixed_bit_field): Add op0_mode and value_mode arguments.
17022         Use scalar_int_mode internally.  Use a bit count rather than a mode
17023         when calculating the largest bit size for get_best_mode.
17024         Update calls to store_split_bit_field and store_fixed_bit_field_1.
17025         (store_fixed_bit_field_1): Add mode and value_mode arguments.
17026         Remove assertion that OP0 has a scalar integer mode.
17027         (store_split_bit_field): Add op0_mode and value_mode arguments.
17028         Update calls to extract_fixed_bit_field.
17029         (extract_bit_field_using_extv): Add an op0_mode argument.
17030         Use scalar_int_mode internally.
17031         (extract_bit_field_1): Rename the new integer mode from imode to
17032         op0_mode and use it instead of GET_MODE (op0).  Update calls to
17033         extract_split_bit_field, extract_bit_field_using_extv and
17034         extract_fixed_bit_field.
17035         (extract_fixed_bit_field): Add an op0_mode argument.  Update calls
17036         to extract_split_bit_field and extract_fixed_bit_field_1.
17037         (extract_fixed_bit_field_1): Add a mode argument.  Remove assertion
17038         that OP0 has a scalar integer mode.  Use as_a <scalar_int_mode>
17039         on the target mode.
17040         (extract_split_bit_field): Add an op0_mode argument.  Update call
17041         to extract_fixed_bit_field.
17042
17043 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17044             Alan Hayward  <alan.hayward@arm.com>
17045             David Sherwood  <david.sherwood@arm.com>
17046
17047         * cse.c (cse_insn): Use opt_scalar_int_mode for the mode iterator.
17048         * explow.c (hard_function_value): Likewise.
17049         * expmed.c (extract_fixed_bit_field_1): Likewise.  Move the
17050         convert_to_mode call outside the loop.
17051         * expr.c (alignment_for_piecewise_move): Use opt_scalar_int_mode
17052         for the mode iterator.  Require the mode specified by max_pieces
17053         to exist.
17054         (emit_block_move_via_movmem): Use opt_scalar_int_mode for the
17055         mode iterator.
17056         (copy_blkmode_to_reg): Likewise.
17057         (set_storage_via_setmem): Likewise.
17058         * optabs.c (prepare_cmp_insn): Likewise.
17059         * rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise.
17060         * stor-layout.c (finish_bitfield_representative): Likewise.
17061
17062 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17063             Alan Hayward  <alan.hayward@arm.com>
17064             David Sherwood  <david.sherwood@arm.com>
17065
17066         * rtl.h (subreg_unpromoted_mode, subreg_promoted_mode): New functions.
17067         * expr.c (convert_move): Use them.
17068         (convert_modes): Likewise.
17069         (store_expr_with_bounds): Likewise.
17070
17071 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17072             Alan Hayward  <alan.hayward@arm.com>
17073             David Sherwood  <david.sherwood@arm.com>
17074
17075         * rtl.h (rtl_hooks::reg_nonzero_bits): Add a scalar_int_mode
17076         parameter for the mode of "x".  Remove the "known_x", "known_mode"
17077         and "known_ret" arguments.  Change the type of the mode argument
17078         to scalar_int_mode.
17079         (rtl_hooks:reg_num_sign_bit_copies): Likewise.
17080         * combine.c (reg_nonzero_bits_for_combine): Update accordingly.
17081         (reg_num_sign_bit_copies_for_combine): Likewise.
17082         * rtlanal.c (nonzero_bits1): Likewise.
17083         (num_sign_bit_copies1): Likewise.
17084         * rtlhooks-def.h (reg_nonzero_bits_general): Likewise.
17085         (reg_num_sign_bit_copies_general): Likewise.
17086         * rtlhooks.c (reg_num_sign_bit_copies_general): Likewise.
17087         (reg_nonzero_bits_general): Likewise.
17088
17089 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17090             Alan Hayward  <alan.hayward@arm.com>
17091             David Sherwood  <david.sherwood@arm.com>
17092
17093         * rtlanal.c (num_sign_bit_copies): Handle VOIDmode here rather
17094         than in subroutines.  Return 1 for non-integer modes.
17095         (cached_num_sign_bit_copies): Change the type of the mode parameter
17096         to scalar_int_mode.
17097         (num_sign_bit_copies1): Likewise.  Remove early exit for other mode
17098         classes.  Handle CONST_INT_P first and then check whether X also
17099         has a scalar integer mode.  Check the same thing for inner registers
17100         of a SUBREG and for values that are being extended or truncated.
17101
17102 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17103             Alan Hayward  <alan.hayward@arm.com>
17104             David Sherwood  <david.sherwood@arm.com>
17105
17106         * rtlanal.c (nonzero_bits): Handle VOIDmode here rather than
17107         in subroutines.  Return the mode mask for non-integer modes.
17108         (cached_nonzero_bits): Change the type of the mode parameter
17109         to scalar_int_mode.
17110         (nonzero_bits1): Likewise.  Remove early exit for other mode
17111         classes.  Handle CONST_INT_P first and then check whether X
17112         also has a scalar integer mode.
17113
17114 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17115             Alan Hayward  <alan.hayward@arm.com>
17116             David Sherwood  <david.sherwood@arm.com>
17117
17118         * expr.c (widest_int_mode_for_size): Make the comment match the code.
17119         Return a scalar_int_mode and assert that the size is greater than
17120         one byte.
17121         (by_pieces_ninsns): Update accordingly and remove VOIDmode handling.
17122         (op_by_pieces_d::op_by_pieces_d): Likewise.
17123         (op_by_pieces_d::run): Likewise.
17124         (can_store_by_pieces): Likewise.
17125
17126 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17127             Alan Hayward  <alan.hayward@arm.com>
17128             David Sherwood  <david.sherwood@arm.com>
17129
17130         * combine.c (extract_left_shift): Add a mode argument and update
17131         recursive calls.
17132         (make_compound_operation_int): Change the type of the mode parameter
17133         to scalar_int_mode and update the call to extract_left_shift.
17134
17135 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17136             Alan Hayward  <alan.hayward@arm.com>
17137             David Sherwood  <david.sherwood@arm.com>
17138
17139         * combine.c (simplify_and_const_int): Change the type of the mode
17140         parameter to scalar_int_mode.
17141         (simplify_and_const_int_1): Likewise.  Update recursive call.
17142
17143 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17144             Alan Hayward  <alan.hayward@arm.com>
17145             David Sherwood  <david.sherwood@arm.com>
17146
17147         * combine.c (simplify_compare_const): Check that the mode is a
17148         scalar_int_mode (rather than VOIDmode) before testing its
17149         precision.
17150         (simplify_comparison): Move COMPARISON_P handling out of the
17151         loop and restrict the latter part of the loop to scalar_int_modes.
17152         Check is_a <scalar_int_mode> before calling HWI_COMPUTABLE_MODE_P
17153         and when considering SUBREG_REGs.  Use is_int_mode instead of
17154         checking GET_MODE_CLASS against MODE_INT.
17155
17156 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17157             Alan Hayward  <alan.hayward@arm.com>
17158             David Sherwood  <david.sherwood@arm.com>
17159
17160         * combine.c (try_widen_shift_mode): Move check for equal modes to...
17161         (simplify_shift_const_1): ...here.  Use scalar_int_mode for
17162         shift_unit_mode and for modes involved in scalar shifts.
17163
17164 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17165             Alan Hayward  <alan.hayward@arm.com>
17166             David Sherwood  <david.sherwood@arm.com>
17167
17168         * combine.c (force_int_to_mode): New function, split out from...
17169         (force_to_mode): ...here.  Keep xmode up-to-date and use it
17170         instead of GET_MODE (x).
17171
17172 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17173             Alan Hayward  <alan.hayward@arm.com>
17174             David Sherwood  <david.sherwood@arm.com>
17175
17176         * optabs-query.h (extraction_insn::struct_mode): Change type to
17177         opt_scalar_int_mode and update comment.
17178         (extraction_insn::field_mode): Change type to scalar_int_mode.
17179         (extraction_insn::pos_mode): Likewise.
17180         * combine.c (make_extraction): Update accordingly.
17181         * optabs-query.c (get_traditional_extraction_insn): Likewise.
17182         (get_optab_extraction_insn): Likewise.
17183         * recog.c (simplify_while_replacing): Likewise.
17184         * expmed.c (narrow_bit_field_mem): Change the type of the mode
17185         parameter to opt_scalar_int_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 (bit_field_mode_iterator::next_mode): Take a pointer
17192         to a scalar_int_mode instead of a machine_mode.
17193         (bit_field_mode_iterator::m_mode): Change type to opt_scalar_int_mode.
17194         (get_best_mode): Return a boolean and use a pointer argument to store
17195         the selected mode.  Replace the limit mode parameter with a bit limit.
17196         * expmed.c (adjust_bit_field_mem_for_reg): Use scalar_int_mode
17197         for the values returned by bit_field_mode_iterator::next_mode.
17198         (store_bit_field): Update call to get_best_mode.
17199         (store_fixed_bit_field): Likewise.
17200         (extract_fixed_bit_field): Likewise.
17201         * expr.c (optimize_bitfield_assignment_op): Likewise.
17202         * fold-const.c (optimize_bit_field_compare): Likewise.
17203         (fold_truth_andor_1): Likewise.
17204         * stor-layout.c (bit_field_mode_iterator::next_mode): As above.
17205         Update for new type of m_mode.
17206         (get_best_mode): As above.
17207
17208 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17209             Alan Hayward  <alan.hayward@arm.com>
17210             David Sherwood  <david.sherwood@arm.com>
17211
17212         * expmed.c (strict_volatile_bitfield_p): Change the type of fieldmode
17213         to scalar_int_mode.  Remove check for SCALAR_INT_MODE_P.
17214         (store_bit_field): Check is_a <scalar_int_mode> before calling
17215         strict_volatile_bitfield_p.
17216         (extract_bit_field): Likewise.
17217
17218 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17219             Alan Hayward  <alan.hayward@arm.com>
17220             David Sherwood  <david.sherwood@arm.com>
17221
17222         * target.def (cstore_mode): Return a scalar_int_mode.
17223         * doc/tm.texi: Regenerate.
17224         * config/sparc/sparc.c (sparc_cstore_mode): Return a scalar_int_mode.
17225         * targhooks.h (default_cstore_mode): Likewise.
17226         * targhooks.c (default_cstore_mode): Likewise, using a forced
17227         conversion.
17228         * expmed.c (emit_cstore): Expect the target of the cstore to be
17229         a scalar_int_mode.
17230
17231 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17232             Alan Hayward  <alan.hayward@arm.com>
17233             David Sherwood  <david.sherwood@arm.com>
17234
17235         * cfgloop.h (rtx_iv): Change type of extend_mode and mode to
17236         scalar_int_mode.
17237         (niter_desc): Likewise mode.
17238         (iv_analyze): Add a mode parameter.
17239         (biv_p): Likewise.
17240         (iv_analyze_expr): Pass the mode paraeter before the rtx it describes
17241         and change its type to scalar_int_mode.
17242         * loop-iv.c: Update commentary at head of file.
17243         (iv_constant): Pass the mode paraeter before the rtx it describes
17244         and change its type to scalar_int_mode.  Remove VOIDmode handling.
17245         (iv_subreg): Change the type of the mode parameter to scalar_int_mode.
17246         (iv_extend): Likewise.
17247         (shorten_into_mode): Likewise.
17248         (iv_add): Use scalar_int_mode.
17249         (iv_mult): Likewise.
17250         (iv_shift): Likewise.
17251         (canonicalize_iv_subregs): Likewise.
17252         (get_biv_step_1): Pass the outer_mode parameter before the rtx
17253         it describes and change its mode to scalar_int_mode.   Also change
17254         the type of the returned inner_mode to scalar_int_mode.
17255         (get_biv_step): Likewise, turning outer_mode from a pointer
17256         into a direct parameter.  Update call to get_biv_step_1.
17257         (iv_analyze_biv): Add an outer_mode parameter.  Update calls to
17258         iv_constant and get_biv_step.
17259         (iv_analyze_expr): Pass the mode parameter before the rtx it describes
17260         and change its type to scalar_int_mode.  Don't initialise iv->mode
17261         to VOIDmode and remove later checks for its still being VOIDmode.
17262         Update calls to iv_analyze_op and iv_analyze_expr.  Check
17263         is_a <scalar_int_mode> when changing the mode under consideration.
17264         (iv_analyze_def): Ignore registers that don't have a scalar_int_mode.
17265         Update call to iv_analyze_expr.
17266         (iv_analyze_op): Add a mode parameter.  Reject subregs whose
17267         inner register is not also a scalar_int_mode.  Update call to
17268         iv_analyze_biv.
17269         (iv_analyze): Add a mode parameter.  Update call to iv_analyze_op.
17270         (biv_p): Add a mode parameter.  Update call to iv_analyze_biv.
17271         (iv_number_of_iterations): Use is_a <scalar_int_mode> instead of
17272         separate mode class checks.  Update calls to iv_analyze.  Remove
17273         fix-up of VOIDmodes after iv_analyze_biv.
17274         * loop-unroll.c (analyze_iv_to_split_insn): Reject registers that
17275         don't have a scalar_int_mode.  Update call to biv_p.
17276
17277 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17278             Alan Hayward  <alan.hayward@arm.com>
17279             David Sherwood  <david.sherwood@arm.com>
17280
17281         * cfgexpand.c (convert_debug_memory_address): Use
17282         as_a <scalar_int_mode>.
17283         * combine.c (expand_compound_operation): Likewise.
17284         (make_extraction): Likewise.
17285         (change_zero_ext): Likewise.
17286         (simplify_comparison): Likewise.
17287         * cse.c (cse_insn): Likewise.
17288         * dwarf2out.c (minmax_loc_descriptor): Likewise.
17289         (mem_loc_descriptor): Likewise.
17290         (loc_descriptor): Likewise.
17291         * expmed.c (init_expmed_one_mode): Likewise.
17292         (synth_mult): Likewise.
17293         (emit_store_flag_1): Likewise.
17294         (expand_divmod): Likewise.  Use HWI_COMPUTABLE_MODE_P instead
17295         of a comparison with size.
17296         * expr.c (expand_assignment): Use as_a <scalar_int_mode>.
17297         (reduce_to_bit_field_precision): Likewise.
17298         * function.c (expand_function_end): Likewise.
17299         * internal-fn.c (expand_arith_overflow_result_store): Likewise.
17300         * loop-doloop.c (doloop_modify): Likewise.
17301         * optabs.c (expand_binop): Likewise.
17302         (expand_unop): Likewise.
17303         (expand_copysign_absneg): Likewise.
17304         (prepare_cmp_insn): Likewise.
17305         (maybe_legitimize_operand): Likewise.
17306         * recog.c (const_scalar_int_operand): Likewise.
17307         * rtlanal.c (get_address_mode): Likewise.
17308         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
17309         (simplify_cond_clz_ctz): Likewise.
17310         * tree-nested.c (get_nl_goto_field): Likewise.
17311         * tree.c (build_vector_type_for_mode): Likewise.
17312         * var-tracking.c (use_narrower_mode): Likewise.
17313
17314 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17315             Alan Hayward  <alan.hayward@arm.com>
17316             David Sherwood  <david.sherwood@arm.com>
17317
17318         * tree.h (SCALAR_INT_TYPE_MODE): New macro.
17319         * builtins.c (expand_builtin_signbit): Use it.
17320         * cfgexpand.c (expand_debug_expr): Likewise.
17321         * dojump.c (do_jump): Likewise.
17322         (do_compare_and_jump): Likewise.
17323         * dwarf2cfi.c (expand_builtin_init_dwarf_reg_sizes): Likewise.
17324         * expmed.c (make_tree): Likewise.
17325         * expr.c (expand_expr_real_2): Likewise.
17326         (expand_expr_real_1): Likewise.
17327         (try_casesi): Likewise.
17328         * fold-const-call.c (fold_const_call_ss): Likewise.
17329         * fold-const.c (unextend): Likewise.
17330         (extract_muldiv_1): Likewise.
17331         (fold_single_bit_test): Likewise.
17332         (native_encode_int): Likewise.
17333         (native_encode_string): Likewise.
17334         (native_interpret_int): Likewise.
17335         * gimple-fold.c (gimple_fold_builtin_memset): Likewise.
17336         * internal-fn.c (expand_addsub_overflow): Likewise.
17337         (expand_neg_overflow): Likewise.
17338         (expand_mul_overflow): Likewise.
17339         (expand_arith_overflow): Likewise.
17340         * match.pd: Likewise.
17341         * stor-layout.c (layout_type): Likewise.
17342         * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
17343         * tree-ssa-math-opts.c (convert_mult_to_widen): Likewise.
17344         * tree-ssanames.c (get_range_info): Likewise.
17345         * tree-switch-conversion.c (array_value_type) Likewise.
17346         * tree-vect-patterns.c (vect_recog_rotate_pattern): Likewise.
17347         (vect_recog_divmod_pattern): Likewise.
17348         (vect_recog_mixed_size_cond_pattern): Likewise.
17349         * tree-vrp.c (extract_range_basic): Likewise.
17350         (simplify_float_conversion_using_ranges): Likewise.
17351         * tree.c (int_fits_type_p): Likewise.
17352         * ubsan.c (instrument_bool_enum_load): Likewise.
17353         * varasm.c (mergeable_string_section): Likewise.
17354         (narrowing_initializer_constant_valid_p): Likewise.
17355         (output_constant): Likewise.
17356
17357 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17358             Alan Hayward  <alan.hayward@arm.com>
17359             David Sherwood  <david.sherwood@arm.com>
17360
17361         * machmode.h (NARROWEST_INT_MODE): New macro.
17362         * expr.c (alignment_for_piecewise_move): Use it instead of
17363         GET_CLASS_NARROWEST_MODE (MODE_INT).
17364         (push_block): Likewise.
17365         * stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator):
17366         Likewise.
17367         * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
17368
17369 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17370             Alan Hayward  <alan.hayward@arm.com>
17371             David Sherwood  <david.sherwood@arm.com>
17372
17373         * postreload.c (move2add_valid_value_p): Change the type of the
17374         mode parameter to scalar_int_mode.
17375         (move2add_use_add2_insn): Add a mode parameter and use it instead
17376         of GET_MODE (reg).
17377         (move2add_use_add3_insn): Likewise.
17378         (reload_cse_move2add): Update accordingly.
17379
17380 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17381             Alan Hayward  <alan.hayward@arm.com>
17382             David Sherwood  <david.sherwood@arm.com>
17383
17384         * expr.c (expand_expr_real_2): Use scalar_int_mode for the
17385         double-word mode.
17386         * lower-subreg.c (resolve_shift_zext): Use is_a <scalar_int_mode>.
17387         * optabs.c (expand_unop): Likewise.
17388
17389 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17390             Alan Hayward  <alan.hayward@arm.com>
17391             David Sherwood  <david.sherwood@arm.com>
17392
17393         * dwarf2out.c (typed_binop): Change mode parameter to scalar_int_mode.
17394         (clz_loc_descriptor): Likewise.  Remove SCALAR_INT_MODE_P check.
17395         (popcount_loc_descriptor): Likewise.
17396         (bswap_loc_descriptor): Likewise.
17397         (rotate_loc_descriptor): Likewise.
17398         (mem_loc_descriptor): Add is_a <scalar_int_mode> checks before
17399         calling the functions above.
17400
17401 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17402             Alan Hayward  <alan.hayward@arm.com>
17403             David Sherwood  <david.sherwood@arm.com>
17404
17405         * combine.c (sign_extend_short_imm): Add is_a <scalar_int_mode>
17406         checks.
17407         (try_combine): Likewise.
17408         (simplify_if_then_else): Likewise.
17409         * cse.c (cse_insn): Likewise.
17410         * dwarf2out.c (mem_loc_descriptor): Likewise.
17411         * emit-rtl.c (gen_lowpart_common): Likewise.
17412         * simplify-rtx.c (simplify_truncation): Likewise.
17413         (simplify_binary_operation_1): Likewise.
17414         (simplify_const_relational_operation): Likewise.
17415         (simplify_ternary_operation): Likewise.
17416         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
17417
17418 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17419             Alan Hayward  <alan.hayward@arm.com>
17420             David Sherwood  <david.sherwood@arm.com>
17421
17422         * cse.c (cse_insn): Add is_a <scalar_int_mode> checks.
17423         * reload.c (push_reload): Likewise.
17424         (find_reloads): Likewise.
17425
17426 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17427             Alan Hayward  <alan.hayward@arm.com>
17428             David Sherwood  <david.sherwood@arm.com>
17429
17430         * combine.c (find_split_point): Add is_a <scalar_int_mode> checks.
17431         (make_compound_operation_int): Likewise.
17432         (change_zero_ext): Likewise.
17433         * expr.c (convert_move): Likewise.
17434         (convert_modes): Likewise.
17435         * fwprop.c (forward_propagate_subreg): Likewise.
17436         * loop-iv.c (get_biv_step_1): Likewise.
17437         * optabs.c (widen_operand): Likewise.
17438         * postreload.c (move2add_valid_value_p): Likewise.
17439         * recog.c (simplify_while_replacing): Likewise.
17440         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
17441         (simplify_binary_operation_1): Likewise.  Remove redundant
17442         mode equality check.
17443
17444 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17445             Alan Hayward  <alan.hayward@arm.com>
17446             David Sherwood  <david.sherwood@arm.com>
17447
17448         * combine.c (combine_simplify_rtx): Add checks for
17449         is_a <scalar_int_mode>.
17450         (simplify_if_then_else): Likewise.
17451         (make_field_assignment): Likewise.
17452         (simplify_comparison): Likewise.
17453         * ifcvt.c (noce_try_bitop): Likewise.
17454         * loop-invariant.c (canonicalize_address_mult): Likewise.
17455         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
17456
17457 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17458             Alan Hayward  <alan.hayward@arm.com>
17459             David Sherwood  <david.sherwood@arm.com>
17460
17461         * gimple-fold.c (gimple_fold_builtin_memory_op): Use
17462         is_a <scalar_int_mode> instead of != BLKmode.
17463
17464 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17465             Alan Hayward  <alan.hayward@arm.com>
17466             David Sherwood  <david.sherwood@arm.com>
17467
17468         * cfgexpand.c (expand_debug_expr): Use is_a <scalar_int_mode>
17469         instead of != VOIDmode.
17470         * combine.c (if_then_else_cond): Likewise.
17471         (change_zero_ext): Likewise.
17472         * dwarf2out.c (mem_loc_descriptor): Likewise.
17473         (loc_descriptor): Likewise.
17474         * rtlanal.c (canonicalize_condition): Likewise.
17475         * simplify-rtx.c (simplify_relational_operation_1): Likewise.
17476
17477 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17478             Alan Hayward  <alan.hayward@arm.com>
17479             David Sherwood  <david.sherwood@arm.com>
17480
17481         * simplify-rtx.c (simplify_binary_operation_1): Use
17482         is_a <scalar_int_mode> instead of !VECTOR_MODE_P.
17483
17484 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17485             Alan Hayward  <alan.hayward@arm.com>
17486             David Sherwood  <david.sherwood@arm.com>
17487
17488         * wide-int.h (int_traits<unsigned char>) New class.
17489         (int_traits<unsigned short>) Likewise.
17490         * cfgexpand.c (expand_debug_expr): Use is_a <scalar_int_mode>.
17491         Use GET_MODE_UNIT_PRECISION and remove redundant test for
17492         SCALAR_INT_MODE_P.
17493         * combine.c (set_nonzero_bits_and_sign_copies): Use
17494         is_a <scalar_int_mode>.
17495         (find_split_point): Likewise.
17496         (combine_simplify_rtx): Likewise.
17497         (simplify_logical): Likewise.
17498         (expand_compound_operation): Likewise.
17499         (expand_field_assignment): Likewise.
17500         (make_compound_operation): Likewise.
17501         (extended_count): Likewise.
17502         (change_zero_ext): Likewise.
17503         (simplify_comparison): Likewise.
17504         * dwarf2out.c (scompare_loc_descriptor): Likewise.
17505         (ucompare_loc_descriptor): Likewise.
17506         (minmax_loc_descriptor): Likewise.
17507         (mem_loc_descriptor): Likewise.
17508         (loc_descriptor): Likewise.
17509         * expmed.c (init_expmed_one_mode): Likewise.
17510         * lra-constraints.c (lra_constraint_offset): Likewise.
17511         * optabs.c (prepare_libcall_arg): Likewise.
17512         * postreload.c (move2add_note_store): Likewise.
17513         * reload.c (operands_match_p): Likewise.
17514         * rtl.h (load_extend_op): Likewise.
17515         * rtlhooks.c (gen_lowpart_general): Likewise.
17516         * simplify-rtx.c (simplify_truncation): Likewise.
17517         (simplify_unary_operation_1): Likewise.
17518         (simplify_binary_operation_1): Likewise.
17519         (simplify_const_binary_operation): Likewise.
17520         (simplify_const_relational_operation): Likewise.
17521         (simplify_subreg): Likewise.
17522         * stor-layout.c (bitwise_mode_for_mode): Likewise.
17523         * var-tracking.c (adjust_mems): Likewise.
17524         (prepare_call_arguments): Likewise.
17525
17526 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17527             Alan Hayward  <alan.hayward@arm.com>
17528             David Sherwood  <david.sherwood@arm.com>
17529
17530         * machmode.h (is_int_mode): New fuction.
17531         * combine.c (find_split_point): Use it.
17532         (combine_simplify_rtx): Likewise.
17533         (simplify_if_then_else): Likewise.
17534         (simplify_set): Likewise.
17535         (simplify_shift_const_1): Likewise.
17536         (simplify_comparison): Likewise.
17537         * config/aarch64/aarch64.c (aarch64_rtx_costs): Likewise.
17538         * cse.c (notreg_cost): Likewise.
17539         (cse_insn): Likewise.
17540         * cselib.c (cselib_lookup_1): Likewise.
17541         * dojump.c (do_jump_1): Likewise.
17542         (do_compare_rtx_and_jump): Likewise.
17543         * dse.c (get_call_args): Likewise.
17544         * dwarf2out.c (rtl_for_decl_init): Likewise.
17545         (native_encode_initializer): Likewise.
17546         * expmed.c (emit_store_flag_1): Likewise.
17547         (emit_store_flag): Likewise.
17548         * expr.c (convert_modes): Likewise.
17549         (store_field): Likewise.
17550         (expand_expr_real_1): Likewise.
17551         * fold-const.c (fold_read_from_constant_string): Likewise.
17552         * gimple-ssa-sprintf.c (get_format_string): Likewise.
17553         * optabs-libfuncs.c (gen_int_libfunc): Likewise.
17554         * optabs.c (expand_binop): Likewise.
17555         (expand_unop): Likewise.
17556         (expand_abs_nojump): Likewise.
17557         (expand_one_cmpl_abs_nojump): Likewise.
17558         * simplify-rtx.c (mode_signbit_p): Likewise.
17559         (val_signbit_p): Likewise.
17560         (val_signbit_known_set_p): Likewise.
17561         (val_signbit_known_clear_p): Likewise.
17562         (simplify_relational_operation_1): Likewise.
17563         * tree.c (vector_type_mode): Likewise.
17564
17565 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17566             Alan Hayward  <alan.hayward@arm.com>
17567             David Sherwood  <david.sherwood@arm.com>
17568
17569         * machmode.h (smallest_mode_for_size): Fix formatting.
17570         (smallest_int_mode_for_size): New function.
17571         * cfgexpand.c (expand_debug_expr): Use smallest_int_mode_for_size
17572         instead of smallest_mode_for_size.
17573         * combine.c (make_extraction): Likewise.
17574         * config/arc/arc.c (arc_expand_movmem): Likewise.
17575         * config/arm/arm.c (arm_expand_divmod_libfunc): Likewise.
17576         * config/i386/i386.c (ix86_get_mask_mode): Likewise.
17577         * config/s390/s390.c (s390_expand_insv): Likewise.
17578         * config/sparc/sparc.c (assign_int_registers): Likewise.
17579         * config/spu/spu.c (spu_function_value): Likewise.
17580         (spu_function_arg): Likewise.
17581         * coverage.c (get_gcov_type): Likewise.
17582         (get_gcov_unsigned_t): Likewise.
17583         * dse.c (find_shift_sequence): Likewise.
17584         * expmed.c (store_bit_field_1): Likewise.
17585         * expr.c (convert_move): Likewise.
17586         (store_field): Likewise.
17587         * internal-fn.c (expand_arith_overflow): Likewise.
17588         * optabs-query.c (get_best_extraction_insn): Likewise.
17589         * optabs.c (expand_twoval_binop_libfunc): Likewise.
17590         * stor-layout.c (layout_type): Likewise.
17591         (initialize_sizetypes): Likewise.
17592         * targhooks.c (default_get_mask_mode): Likewise.
17593         * tree-ssa-loop-manip.c (canonicalize_loop_ivs): Likewise.
17594
17595 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17596             Alan Hayward  <alan.hayward@arm.com>
17597             David Sherwood  <david.sherwood@arm.com>
17598
17599         * machmode.h (opt_mode::else_blk): New function.
17600         (int_mode_for_mode): Declare.
17601         * stor-layout.c (int_mode_for_mode): Return an opt_scalar_int_mode.
17602         * builtins.c (expand_builtin_signbit): Adjust for new int_mode_for_mode
17603         return type.
17604         * cfgexpand.c (expand_debug_expr): Likewise.
17605         * combine.c (gen_lowpart_or_truncate): Likewise.
17606         (gen_lowpart_for_combine): Likewise.
17607         * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Likewise.
17608         * config/avr/avr.c (avr_to_int_mode): Likewise.
17609         (avr_out_plus_1): Likewise.
17610         (avr_out_plus): Likewise.
17611         (avr_out_round): Likewise.
17612         * config/i386/i386.c (ix86_split_to_parts): Likewise.
17613         * config/s390/s390.c (s390_expand_vec_compare_cc): Likewise.
17614         (s390_expand_vcond): Likewise.
17615         * config/spu/spu.c (spu_split_immediate): Likewise.
17616         (spu_expand_mov): Likewise.
17617         * dse.c (get_stored_val): Likewise.
17618         * expmed.c (store_bit_field_1): Likewise.
17619         (convert_extracted_bit_field): Use int_mode_for_mode instead of
17620         int_mode_for_size.
17621         (extract_bit_field_1): Adjust for new int_mode_for_mode return type.
17622         (extract_low_bits): Likewise.
17623         * expr.c (emit_group_load_1): Likewise.  Separate out the BLKmode
17624         handling rather than repeating the check.
17625         (emit_group_store): Likewise.
17626         (emit_move_via_integer): Adjust for new int_mode_for_mode return type.
17627         * optabs.c (expand_absneg_bit): Likewise.
17628         (expand_copysign_absneg): Likewise.
17629         (expand_copysign_bit): Likewise.
17630         * tree-if-conv.c (ifcvt_can_use_mask_load_store): Likewise.
17631         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
17632         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
17633         * var-tracking.c (prepare_call_arguments):  Likewise.
17634         * config/powerpcspe/powerpcspe.c (rs6000_do_expand_vec_perm): Use
17635         int_mode_for_mode instead of mode_for_size.
17636         * config/rs6000/rs6000.c (rs6000_do_expand_vec_perm): Likewise.
17637
17638 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17639             Alan Hayward  <alan.hayward@arm.com>
17640             David Sherwood  <david.sherwood@arm.com>
17641
17642         * machmode.h (int_mode_for_size): New function.
17643         * builtins.c (set_builtin_user_assembler_name): Use int_mode_for_size
17644         instead of mode_for_size.
17645         * calls.c (save_fixed_argument_area): Likewise.  Make use of BLKmode
17646         explicit.
17647         * combine.c (expand_field_assignment): Use int_mode_for_size
17648         instead of mode_for_size.
17649         (make_extraction): Likewise.
17650         (simplify_shift_const_1): Likewise.
17651         (simplify_comparison): Likewise.
17652         * dojump.c (do_jump): Likewise.
17653         * dwarf2out.c (mem_loc_descriptor): Likewise.
17654         * emit-rtl.c (init_derived_machine_modes): Likewise.
17655         * expmed.c (flip_storage_order): Likewise.
17656         (convert_extracted_bit_field): Likewise.
17657         * expr.c (copy_blkmode_from_reg): Likewise.
17658         * graphite-isl-ast-to-gimple.c (max_mode_int_precision): Likewise.
17659         * internal-fn.c (expand_mul_overflow): Likewise.
17660         * lower-subreg.c (simple_move): Likewise.
17661         * optabs-libfuncs.c (init_optabs): Likewise.
17662         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
17663         * tree.c (vector_type_mode): Likewise.
17664         * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
17665         * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Likewise.
17666         * tree-vect-generic.c (expand_vector_parallel): Likewise.
17667         * tree-vect-stmts.c (vectorizable_load): Likewise.
17668         (vectorizable_store): Likewise.
17669
17670 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17671             Alan Hayward  <alan.hayward@arm.com>
17672             David Sherwood  <david.sherwood@arm.com>
17673
17674         * coretypes.h (pod_mode): New type.
17675         (scalar_int_mode_pod): New typedef.
17676         * machmode.h (pod_mode): New class.
17677         (int_n_data_t::m): Change type to scalar_int_mode_pod.
17678         * genmodes.c (emit_mode_int_n): Update accordingly.
17679         * lower-subreg.h (target_lower_subreg): Change type to
17680         scalar_int_mode_pod.
17681         * gdbhooks.py (build_pretty_printer): Handle pod_mode and
17682         scalar_int_mode_pod.
17683
17684 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17685             Alan Hayward  <alan.hayward@arm.com>
17686             David Sherwood  <david.sherwood@arm.com>
17687
17688         * config/powerpcspe/powerpcspe.h (rs6000_pmode): Change type from
17689         machine_mode to scalar_int_mode.
17690         * config/powerpcspe/powerpcspe.c (rs6000_pmode): Likewise.
17691         (rs6000_option_override_internal): Remove cast to int.
17692         * config/rs6000/rs6000.h (rs6000_pmode): Change type from
17693         machine_mode to scalar_int_mode.
17694         * config/rs6000/rs6000.c (rs6000_pmode): Likewise.
17695         (rs6000_option_override_internal): Remove cast to int.
17696         * config/s390/s390.h (Pmode): Remove cast to machine_mode.
17697         * config/epiphany/epiphany.h (RTX_OK_FOR_OFFSET_P): Add cast
17698         to machine_mode.
17699         * config/s390/s390.c (s390_expand_builtin): Likewise.
17700         * coretypes.h (scalar_int_mode): New type.
17701         (opt_scalar_int_mode): New typedef.
17702         * machmode.h (scalar_int_mode): New class.
17703         (scalar_int_mode::includes_p): New function.
17704         (byte_mode): Change type to scalar_int_mode.
17705         (word_mode): Likewise.
17706         (ptr_mode): Likewise.
17707         * emit-rtl.c (byte_mode): Likewise.
17708         (word_mode): Likewise.
17709         (ptr_mode): Likewise.
17710         (init_derived_machine_modes): Update accordingly.
17711         * genmodes.c (get_mode_class): Return scalar_int_mode for MODE_INT
17712         and MODE_PARTIAL_INT.
17713         * gdbhooks.py (build_pretty_printer): Handle scalar_int_mode and
17714         opt_scalar_int_mode.
17715
17716 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17717             Alan Hayward  <alan.hayward@arm.com>
17718             David Sherwood  <david.sherwood@arm.com>
17719
17720         * target.def (libgcc_floating_mode_supported_p): Take a
17721         scalar_float_mode.
17722         * doc/tm.texi: Regenerate.
17723         * targhooks.h (default_libgcc_floating_mode_supported_p): Take a
17724         scalar_float_mode.
17725         * targhooks.c (default_libgcc_floating_mode_supported_p): Likewise.
17726         * config/aarch64/aarch64.c (aarch64_libgcc_floating_mode_supported_p):
17727         Likewise.
17728
17729 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17730             Alan Hayward  <alan.hayward@arm.com>
17731             David Sherwood  <david.sherwood@arm.com>
17732
17733         * target.def (default_floatn_mode): Return an opt_scalar_float_mode.
17734         * doc/tm.texi: Regenerate.
17735         * config/arm/arm.c (arm_floatn_mode): Return an opt_scalar_float_mode.
17736         * config/powerpcspe/powerpcspe.c (rs6000_floatn_mode): Likewise.
17737         * config/rs6000/rs6000.c (rs6000_floatn_mode): Likewise.
17738         * targhooks.h (default_floatn_mode): Likewise.
17739         * targhooks.c (default_floatn_mode): Likewise.
17740         * tree.c (build_common_tree_nodes): Update accordingly.
17741
17742 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17743             Alan Hayward  <alan.hayward@arm.com>
17744             David Sherwood  <david.sherwood@arm.com>
17745
17746         * machmode.h (mode_iterator::start): Provide overload for opt_modes.
17747         (mode_iterator::iterate_p): Likewise.
17748         (mode_iterator::get_wider): Likewise.
17749         * expr.c (init_expr_target): Use opt_scalar_float_mode.
17750
17751 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17752             Alan Hayward  <alan.hayward@arm.com>
17753             David Sherwood  <david.sherwood@arm.com>
17754
17755         * coretypes.h (opt_scalar_float_mode): New typedef.
17756         * machmode.h (float_mode_for_size): New function.
17757         * emit-rtl.c (double_mode): Delete.
17758         (init_emit_once): Use float_mode_for_size.
17759         * stor-layout.c (layout_type): Likewise.
17760         * gdbhooks.py (build_pretty_printer): Handle opt_scalar_float_mode.
17761
17762 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17763             Alan Hayward  <alan.hayward@arm.com>
17764             David Sherwood  <david.sherwood@arm.com>
17765
17766         * output.h (assemble_real): Take a scalar_float_mode.
17767         * config/arm/arm.c (arm_assemble_integer): Update accordingly.
17768         * config/arm/arm.md (consttable_4): Likewise.
17769         (consttable_8): Likewise.
17770         (consttable_16): Likewise.
17771         * config/mips/mips.md (consttable_float): Likewise.
17772         * config/s390/s390.c (s390_output_pool_entry): Likewise.
17773         * varasm.c (assemble_real): Take a scalar_float_mode.
17774         (output_constant_pool_2): Update accordingly.
17775         (output_constant): Likewise.
17776
17777 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17778             Alan Hayward  <alan.hayward@arm.com>
17779             David Sherwood  <david.sherwood@arm.com>
17780
17781         * tree.h (SCALAR_FLOAT_TYPE_MODE): New macro.
17782         * builtins.c (expand_builtin_signbit): Use it instead of TYPE_MODE.
17783         * fold-const.c (fold_convert_const_real_from_fixed): Likewise.
17784         (native_encode_real): Likewise.
17785         (native_interpret_real): Likewise.
17786         * hsa-brig.c (emit_immediate_scalar_to_buffer): Likewise.
17787         * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
17788
17789 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17790             Alan Hayward  <alan.hayward@arm.com>
17791             David Sherwood  <david.sherwood@arm.com>
17792
17793         * optabs-libfuncs.c (gen_trunc_conv_libfunc): Use is_a
17794         <scalar_float_mode>.  Simplify.
17795         (gen_extend_conv_libfunc): Likewise.
17796
17797 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17798             Alan Hayward  <alan.hayward@arm.com>
17799             David Sherwood  <david.sherwood@arm.com>
17800
17801         * coretypes.h (scalar_float_mode): New type.
17802         * machmode.h (mode_traits::from_int): Use machine_mode if
17803         USE_ENUM_MODES is defined.
17804         (is_a): New function.
17805         (as_a): Likewise.
17806         (dyn_cast): Likewise.
17807         (scalar_float_mode): New class.
17808         (scalar_float_mode::includes_p): New function.
17809         (is_float_mode): Likewise.
17810         * gdbhooks.py (MachineModePrinter): New class.
17811         (build_pretty_printer): Use it for scalar_float_mode.
17812         * real.h (FLOAT_MODE_FORMAT): Use as_a <scalar_float_mode>.
17813         (format_helper::format_helper): Turn into a template.
17814         * genmodes.c (get_mode_class): New function.
17815         (emit_insn_modes_h): Give modes the class returned by get_mode_class,
17816         or machine_mode if none.
17817         * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Use
17818         as_a <scalar_float_mode>.
17819         * dwarf2out.c (mem_loc_descriptor): Likewise.
17820         (insert_float): Likewise.
17821         (add_const_value_attribute): Likewise.
17822         * simplify-rtx.c (simplify_immed_subreg): Likewise.
17823         * optabs.c (expand_absneg_bit): Take a scalar_float_mode.
17824         (expand_unop): Update accordingly.
17825         (expand_abs_nojump): Likewise.
17826         (expand_copysign_absneg): Take a scalar_float_mode.
17827         (expand_copysign_bit): Likewise.
17828         (expand_copysign): Update accordingly.
17829
17830 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17831             Alan Hayward  <alan.hayward@arm.com>
17832             David Sherwood  <david.sherwood@arm.com>
17833
17834         * coretypes.h (opt_mode): New class.
17835         * machmode.h (opt_mode): Likewise.
17836         (opt_mode::else_void): New function.
17837         (opt_mode::require): Likewise.
17838         (opt_mode::exists): Likewise.
17839         (GET_MODE_WIDER_MODE): Turn into a function and return an opt_mode.
17840         (GET_MODE_2XWIDER_MODE): Likewise.
17841         (mode_iterator::get_wider): Update accordingly.
17842         (mode_iterator::get_2xwider): Likewise.
17843         (mode_iterator::get_known_wider): Likewise, turning into a template.
17844         * combine.c (make_extraction): Update use of GET_MODE_WIDER_MODE,
17845         forcing a wider mode to exist.
17846         * config/cr16/cr16.h (LONG_REG_P): Likewise.
17847         * rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise.
17848         * config/c6x/c6x.c (c6x_rtx_costs): Update use of
17849         GET_MODE_2XWIDER_MODE, forcing a wider mode to exist.
17850         * lower-subreg.c (init_lower_subreg): Likewise.
17851         * optabs-libfuncs.c (init_sync_libfuncs_1): Likewise, but not
17852         on the final iteration.
17853         * config/i386/i386.c (ix86_expand_set_or_movmem): Check whether
17854         a wider mode exists before asking for a move pattern.
17855         (get_mode_wider_vector): Update use of GET_MODE_WIDER_MODE,
17856         forcing a wider mode to exist.
17857         (expand_vselect_vconcat): Update use of GET_MODE_2XWIDER_MODE,
17858         returning false if no such mode exists.
17859         * config/ia64/ia64.c (expand_vselect_vconcat): Likewise.
17860         * config/mips/mips.c (mips_expand_vselect_vconcat): Likewise.
17861         * expmed.c (init_expmed_one_mode): Update use of GET_MODE_WIDER_MODE.
17862         Avoid checking for a MODE_INT if we already know the mode is not a
17863         SCALAR_INT_MODE_P.
17864         (extract_high_half): Update use of GET_MODE_WIDER_MODE,
17865         forcing a wider mode to exist.
17866         (expmed_mult_highpart_optab): Likewise.
17867         (expmed_mult_highpart): Likewise.
17868         * expr.c (expand_expr_real_2): Update use of GET_MODE_WIDER_MODE,
17869         using else_void.
17870         * lto-streamer-in.c (lto_input_mode_table): Likewise.
17871         * optabs-query.c (find_widening_optab_handler_and_mode): Likewise.
17872         * stor-layout.c (bit_field_mode_iterator::next_mode): Likewise.
17873         * internal-fn.c (expand_mul_overflow): Update use of
17874         GET_MODE_2XWIDER_MODE.
17875         * omp-low.c (omp_clause_aligned_alignment): Likewise.
17876         * tree-ssa-math-opts.c (convert_mult_to_widen): Update use of
17877         GET_MODE_WIDER_MODE.
17878         (convert_plusminus_to_widen): Likewise.
17879         * tree-switch-conversion.c (array_value_type): Likewise.
17880         * var-tracking.c (emit_note_insn_var_location): Likewise.
17881         * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
17882         Return false inside rather than outside the loop if no wider mode
17883         exists
17884         * optabs.c (expand_binop): Update use of GET_MODE_WIDER_MODE
17885         and GET_MODE_2XWIDER_MODE
17886         (can_compare_p): Use else_void.
17887         * gdbhooks.py (OptMachineModePrinter): New class.
17888         (build_pretty_printer): Use it for opt_mode.
17889
17890 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17891             Alan Hayward  <alan.hayward@arm.com>
17892             David Sherwood  <david.sherwood@arm.com>
17893
17894         * tree-switch-conversion.c (array_value_type): Only read TYPE_MODE
17895         once.  Use get_narrowest_mode instead of GET_CLASS_NARROWEST_MODE.
17896
17897 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17898             Alan Hayward  <alan.hayward@arm.com>
17899             David Sherwood  <david.sherwood@arm.com>
17900
17901         * machmode.h (mode_traits): New structure.
17902         (get_narrowest_mode): New function.
17903         (mode_iterator::start): Likewise.
17904         (mode_iterator::iterate_p): Likewise.
17905         (mode_iterator::get_wider): Likewise.
17906         (mode_iterator::get_known_wider): Likewise.
17907         (mode_iterator::get_2xwider): Likewise.
17908         (FOR_EACH_MODE_IN_CLASS): New mode iterator.
17909         (FOR_EACH_MODE): Likewise.
17910         (FOR_EACH_MODE_FROM): Likewise.
17911         (FOR_EACH_MODE_UNTIL): Likewise.
17912         (FOR_EACH_WIDER_MODE): Likewise.
17913         (FOR_EACH_2XWIDER_MODE): Likewise.
17914         * builtins.c (expand_builtin_strlen): Use new mode iterators.
17915         * combine.c (simplify_comparison): Likewise
17916         * config/i386/i386.c (type_natural_mode): Likewise.
17917         * cse.c (cse_insn): Likewise.
17918         * dse.c (find_shift_sequence): Likewise.
17919         * emit-rtl.c (init_derived_machine_modes): Likewise.
17920         (init_emit_once): Likewise.
17921         * explow.c (hard_function_value): Likewise.
17922         * expmed.c (extract_fixed_bit_field_1): Likewise.
17923         (extract_bit_field_1): Likewise.
17924         (expand_divmod): Likewise.
17925         (emit_store_flag_1): Likewise.
17926         * expr.c (init_expr_target): Likewise.
17927         (convert_move): Likewise.
17928         (alignment_for_piecewise_move): Likewise.
17929         (widest_int_mode_for_size): Likewise.
17930         (emit_block_move_via_movmem): Likewise.
17931         (copy_blkmode_to_reg): Likewise.
17932         (set_storage_via_setmem): Likewise.
17933         (compress_float_constant): Likewise.
17934         * omp-low.c (omp_clause_aligned_alignment): Likewise.
17935         * optabs-query.c (get_best_extraction_insn): Likewise.
17936         * optabs.c (expand_binop): Likewise.
17937         (expand_twoval_unop): Likewise.
17938         (expand_twoval_binop): Likewise.
17939         (widen_leading): Likewise.
17940         (widen_bswap): Likewise.
17941         (expand_parity): Likewise.
17942         (expand_unop): Likewise.
17943         (prepare_cmp_insn): Likewise.
17944         (prepare_float_lib_cmp): Likewise.
17945         (expand_float): Likewise.
17946         (expand_fix): Likewise.
17947         (expand_sfix_optab): Likewise.
17948         * postreload.c (move2add_use_add2_insn): Likewise.
17949         * reg-stack.c (reg_to_stack): Likewise.
17950         * reginfo.c (choose_hard_reg_mode): Likewise.
17951         * rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise.
17952         * stor-layout.c (mode_for_size): Likewise.
17953         (smallest_mode_for_size): Likewise.
17954         (mode_for_vector): Likewise.
17955         (finish_bitfield_representative): Likewise.
17956         * tree-ssa-math-opts.c (target_supports_divmod_p): Likewise.
17957         * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
17958         * tree-vect-stmts.c (vectorizable_conversion): Likewise.
17959         * var-tracking.c (prepare_call_arguments): Likewise.
17960
17961 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17962             Alan Hayward  <alan.hayward@arm.com>
17963             David Sherwood  <david.sherwood@arm.com>
17964
17965         * genconditions.c (write_header): Add a "#define USE_ENUM_MODES".
17966         * genmodes.c (emit_insn_modes_h): Define FOOmode to E_FOOmode if
17967         USE_ENUM_MODES is defined and to ((void) 0, E_FOOmode) otherwise.
17968         * machmode.h (mode_size): Move earlier in file.
17969         (mode_precision): Likewise.
17970         (mode_inner): Likewise.
17971         (mode_nunits): Likewise.
17972         (mode_unit_size): Likewise.
17973         (unit_unit_precision): Likewise.
17974         (mode_wider): Likewise.
17975         (mode_2xwider): Likewise.
17976         (machine_mode): New class.
17977         (mode_to_bytes): New function.
17978         (mode_to_bits): Likewise.
17979         (mode_to_precision): Likewise.
17980         (mode_to_inner): Likewise.
17981         (mode_to_unit_size): Likewise.
17982         (mode_to_unit_precision): Likewise.
17983         (mode_to_nunits): Likewise.
17984         (GET_MODE_SIZE): Use mode_to_bytes.
17985         (GET_MODE_BITSIZE): Use mode_to_bits.
17986         (GET_MODE_PRECISION): Use mode_to_precision.
17987         (GET_MODE_INNER): Use mode_to_inner.
17988         (GET_MODE_UNIT_SIZE): Use mode_to_unit_size.
17989         (GET_MODE_UNIT_PRECISION): Use mode_to_unit_precision.
17990         (GET_MODE_NUNITS): Use mode_to_nunits.
17991         * system.h (ALWAYS_INLINE): New macro.
17992         * config/powerpcspe/powerpcspe-c.c
17993         (altivec_resolve_overloaded_builtin): Use machine_mode instead of
17994         int for arg1_mode and arg2_mode.
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         * config/aarch64/aarch64-builtins.c (aarch64_simd_builtin_std_type):
18001         Prefix mode names with E_ in case statements.
18002         * config/aarch64/aarch64-elf.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
18003         * config/aarch64/aarch64.c (aarch64_split_simd_combine): Likewise.
18004         (aarch64_split_simd_move): Likewise.
18005         (aarch64_gen_storewb_pair): Likewise.
18006         (aarch64_gen_loadwb_pair): Likewise.
18007         (aarch64_gen_store_pair): Likewise.
18008         (aarch64_gen_load_pair): Likewise.
18009         (aarch64_get_condition_code_1): Likewise.
18010         (aarch64_constant_pool_reload_icode): Likewise.
18011         (get_rsqrte_type): Likewise.
18012         (get_rsqrts_type): Likewise.
18013         (get_recpe_type): Likewise.
18014         (get_recps_type): Likewise.
18015         (aarch64_gimplify_va_arg_expr): Likewise.
18016         (aarch64_simd_container_mode): Likewise.
18017         (aarch64_emit_load_exclusive): Likewise.
18018         (aarch64_emit_store_exclusive): Likewise.
18019         (aarch64_expand_compare_and_swap): Likewise.
18020         (aarch64_gen_atomic_cas): Likewise.
18021         (aarch64_emit_bic): Likewise.
18022         (aarch64_emit_atomic_swap): Likewise.
18023         (aarch64_emit_atomic_load_op): Likewise.
18024         (aarch64_evpc_trn): Likewise.
18025         (aarch64_evpc_uzp): Likewise.
18026         (aarch64_evpc_zip): Likewise.
18027         (aarch64_evpc_ext): Likewise.
18028         (aarch64_evpc_rev): Likewise.
18029         (aarch64_evpc_dup): Likewise.
18030         (aarch64_gen_ccmp_first): Likewise.
18031         (aarch64_gen_ccmp_next): Likewise.
18032         * config/alpha/alpha.c (alpha_scalar_mode_supported_p): Likewise.
18033         (alpha_emit_xfloating_libcall): Likewise.
18034         (emit_insxl): Likewise.
18035         (alpha_arg_type): Likewise.
18036         * config/arc/arc.c (arc_vector_mode_supported_p): Likewise.
18037         (arc_preferred_simd_mode): Likewise.
18038         (arc_secondary_reload): Likewise.
18039         (get_arc_condition_code): Likewise.
18040         (arc_print_operand): Likewise.
18041         (arc_legitimate_constant_p): Likewise.
18042         * config/arc/arc.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
18043         * config/arc/arc.md (casesi_load): Likewise.
18044         (casesi_compact_jump): Likewise.
18045         * config/arc/predicates.md (proper_comparison_operator): Likewise.
18046         (cc_use_register): Likewise.
18047         * config/arm/aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
18048         * config/arm/arm-builtins.c (arm_simd_builtin_std_type): Likewise.
18049         (arm_init_iwmmxt_builtins): Likewise.
18050         * config/arm/arm.c (thumb1_size_rtx_costs): Likewise.
18051         (neon_expand_vector_init): Likewise.
18052         (arm_attr_length_move_neon): Likewise.
18053         (maybe_get_arm_condition_code): Likewise.
18054         (arm_emit_vector_const): Likewise.
18055         (arm_preferred_simd_mode): Likewise.
18056         (arm_output_iwmmxt_tinsr): Likewise.
18057         (thumb1_output_casesi): Likewise.
18058         (thumb2_output_casesi): Likewise.
18059         (arm_emit_load_exclusive): Likewise.
18060         (arm_emit_store_exclusive): Likewise.
18061         (arm_expand_compare_and_swap): Likewise.
18062         (arm_evpc_neon_vuzp): Likewise.
18063         (arm_evpc_neon_vzip): Likewise.
18064         (arm_evpc_neon_vrev): Likewise.
18065         (arm_evpc_neon_vtrn): Likewise.
18066         (arm_evpc_neon_vext): Likewise.
18067         (arm_validize_comparison): Likewise.
18068         * config/arm/neon.md (neon_vc<cmp_op><mode>): Likewise.
18069         * config/avr/avr-c.c (avr_resolve_overloaded_builtin): Likewise.
18070         * config/avr/avr.c (avr_rtx_costs_1): Likewise.
18071         * config/c6x/c6x.c (c6x_vector_mode_supported_p): Likewise.
18072         (c6x_preferred_simd_mode): Likewise.
18073         * config/epiphany/epiphany.c (get_epiphany_condition_code): Likewise.
18074         (epiphany_rtx_costs): Likewise.
18075         * config/epiphany/predicates.md (proper_comparison_operator):
18076         Likewise.
18077         * config/frv/frv.c (condexec_memory_operand): Likewise.
18078         (frv_emit_move): Likewise.
18079         (output_move_single): Likewise.
18080         (output_condmove_single): Likewise.
18081         (frv_hard_regno_mode_ok): Likewise.
18082         (frv_matching_accg_mode): Likewise.
18083         * config/h8300/h8300.c (split_adds_subs): Likewise.
18084         (h8300_rtx_costs): Likewise.
18085         (h8300_print_operand): Likewise.
18086         (compute_mov_length): Likewise.
18087         (output_logical_op): Likewise.
18088         (compute_logical_op_length): Likewise.
18089         (compute_logical_op_cc): Likewise.
18090         (h8300_shift_needs_scratch_p): Likewise.
18091         (output_a_shift): Likewise.
18092         (compute_a_shift_length): Likewise.
18093         (compute_a_shift_cc): Likewise.
18094         (expand_a_rotate): Likewise.
18095         (output_a_rotate): Likewise.
18096         * config/i386/i386.c (classify_argument): Likewise.
18097         (function_arg_advance_32): Likewise.
18098         (function_arg_32): Likewise.
18099         (function_arg_64): Likewise.
18100         (function_value_64): Likewise.
18101         (ix86_gimplify_va_arg): Likewise.
18102         (ix86_legitimate_constant_p): Likewise.
18103         (put_condition_code): Likewise.
18104         (split_double_mode): Likewise.
18105         (ix86_avx256_split_vector_move_misalign): Likewise.
18106         (ix86_expand_vector_logical_operator): Likewise.
18107         (ix86_split_idivmod): Likewise.
18108         (ix86_expand_adjust_ufix_to_sfix_si): Likewise.
18109         (ix86_build_const_vector): Likewise.
18110         (ix86_build_signbit_mask): Likewise.
18111         (ix86_match_ccmode): Likewise.
18112         (ix86_cc_modes_compatible): Likewise.
18113         (ix86_expand_branch): Likewise.
18114         (ix86_expand_sse_cmp): Likewise.
18115         (ix86_expand_sse_movcc): Likewise.
18116         (ix86_expand_int_sse_cmp): Likewise.
18117         (ix86_expand_vec_perm_vpermi2): Likewise.
18118         (ix86_expand_vec_perm): Likewise.
18119         (ix86_expand_sse_unpack): Likewise.
18120         (ix86_expand_int_addcc): Likewise.
18121         (ix86_split_to_parts): Likewise.
18122         (ix86_vectorize_builtin_gather): Likewise.
18123         (ix86_vectorize_builtin_scatter): Likewise.
18124         (avx_vpermilp_parallel): Likewise.
18125         (inline_memory_move_cost): Likewise.
18126         (ix86_tieable_integer_mode_p): Likewise.
18127         (x86_maybe_negate_const_int): Likewise.
18128         (ix86_expand_vector_init_duplicate): Likewise.
18129         (ix86_expand_vector_init_one_nonzero): Likewise.
18130         (ix86_expand_vector_init_one_var): Likewise.
18131         (ix86_expand_vector_init_concat): Likewise.
18132         (ix86_expand_vector_init_interleave): Likewise.
18133         (ix86_expand_vector_init_general): Likewise.
18134         (ix86_expand_vector_set): Likewise.
18135         (ix86_expand_vector_extract): Likewise.
18136         (emit_reduc_half): Likewise.
18137         (ix86_emit_i387_round): Likewise.
18138         (ix86_mangle_type): Likewise.
18139         (ix86_expand_round_sse4): Likewise.
18140         (expand_vec_perm_blend): Likewise.
18141         (canonicalize_vector_int_perm): Likewise.
18142         (ix86_expand_vec_one_operand_perm_avx512): Likewise.
18143         (expand_vec_perm_1): Likewise.
18144         (expand_vec_perm_interleave3): Likewise.
18145         (expand_vec_perm_even_odd_pack): Likewise.
18146         (expand_vec_perm_even_odd_1): Likewise.
18147         (expand_vec_perm_broadcast_1): Likewise.
18148         (ix86_vectorize_vec_perm_const_ok): Likewise.
18149         (ix86_expand_vecop_qihi): Likewise.
18150         (ix86_expand_mul_widen_hilo): Likewise.
18151         (ix86_expand_sse2_abs): Likewise.
18152         (ix86_expand_pextr): Likewise.
18153         (ix86_expand_pinsr): Likewise.
18154         (ix86_preferred_simd_mode): Likewise.
18155         (ix86_simd_clone_compute_vecsize_and_simdlen): Likewise.
18156         * config/i386/sse.md (*andnot<mode>3): Likewise.
18157         (<mask_codefor><code><mode>3<mask_name>): Likewise.
18158         (*<code><mode>3): Likewise.
18159         * config/ia64/ia64.c (ia64_expand_vecint_compare): Likewise.
18160         (ia64_expand_atomic_op): Likewise.
18161         (ia64_arg_type): Likewise.
18162         (ia64_mode_to_int): Likewise.
18163         (ia64_scalar_mode_supported_p): Likewise.
18164         (ia64_vector_mode_supported_p): Likewise.
18165         (expand_vec_perm_broadcast): Likewise.
18166         * config/iq2000/iq2000.c (iq2000_move_1word): Likewise.
18167         (iq2000_function_arg_advance): Likewise.
18168         (iq2000_function_arg): Likewise.
18169         * config/m32c/m32c.c (m32c_preferred_reload_class): Likewise.
18170         * config/m68k/m68k.c (output_dbcc_and_branch): Likewise.
18171         (m68k_libcall_value): Likewise.
18172         (m68k_function_value): Likewise.
18173         (sched_attr_op_type): Likewise.
18174         * config/mcore/mcore.c (mcore_output_move): Likewise.
18175         * config/microblaze/microblaze.c (microblaze_function_arg_advance):
18176         Likewise.
18177         (microblaze_function_arg): Likewise.
18178         * config/mips/mips.c (mips16_build_call_stub): Likewise.
18179         (mips_print_operand): Likewise.
18180         (mips_mode_ok_for_mov_fmt_p): Likewise.
18181         (mips_vector_mode_supported_p): Likewise.
18182         (mips_preferred_simd_mode): Likewise.
18183         (mips_expand_vpc_loongson_even_odd): Likewise.
18184         (mips_expand_vec_unpack): Likewise.
18185         (mips_expand_vi_broadcast): Likewise.
18186         (mips_expand_vector_init): Likewise.
18187         (mips_expand_vec_reduc): Likewise.
18188         (mips_expand_msa_cmp): Likewise.
18189         * config/mips/mips.md (casesi_internal_mips16_<mode>): Likewise.
18190         * config/mn10300/mn10300.c (mn10300_print_operand): Likewise.
18191         (cc_flags_for_mode): Likewise.
18192         * config/msp430/msp430.c (msp430_print_operand): Likewise.
18193         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Likewise.
18194         (nds32_output_casesi_pc_relative): Likewise.
18195         * config/nds32/nds32.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
18196         * config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Likewise.
18197         (nvptx_gen_unpack): Likewise.
18198         (nvptx_gen_pack): Likewise.
18199         (nvptx_gen_shuffle): Likewise.
18200         (nvptx_gen_wcast): Likewise.
18201         (nvptx_preferred_simd_mode): Likewise.
18202         * config/pa/pa.c (pa_secondary_reload): Likewise.
18203         * config/pa/predicates.md (base14_operand): Likewise.
18204         * config/powerpcspe/powerpcspe-c.c
18205         (altivec_resolve_overloaded_builtin): Likewise.
18206         * config/powerpcspe/powerpcspe.c (rs6000_setup_reg_addr_masks):
18207         Likewise.
18208         (rs6000_preferred_simd_mode): Likewise.
18209         (output_vec_const_move): Likewise.
18210         (rs6000_expand_vector_extract): Likewise.
18211         (rs6000_split_vec_extract_var): Likewise.
18212         (reg_offset_addressing_ok_p): Likewise.
18213         (rs6000_legitimate_offset_address_p): Likewise.
18214         (rs6000_legitimize_address): Likewise.
18215         (rs6000_emit_set_const): Likewise.
18216         (rs6000_const_vec): Likewise.
18217         (rs6000_emit_move): Likewise.
18218         (spe_build_register_parallel): Likewise.
18219         (rs6000_darwin64_record_arg_recurse): Likewise.
18220         (swap_selector_for_mode): Likewise.
18221         (spe_init_builtins): Likewise.
18222         (paired_init_builtins): Likewise.
18223         (altivec_init_builtins): Likewise.
18224         (do_load_for_compare): Likewise.
18225         (rs6000_generate_compare): Likewise.
18226         (rs6000_expand_float128_convert): Likewise.
18227         (emit_load_locked): Likewise.
18228         (emit_store_conditional): Likewise.
18229         (rs6000_output_function_epilogue): Likewise.
18230         (rs6000_handle_altivec_attribute): Likewise.
18231         (rs6000_function_value): Likewise.
18232         (emit_fusion_gpr_load): Likewise.
18233         (emit_fusion_p9_load): Likewise.
18234         (emit_fusion_p9_store): Likewise.
18235         * config/powerpcspe/predicates.md (easy_fp_constant): Likewise.
18236         (fusion_gpr_mem_load): Likewise.
18237         (fusion_addis_mem_combo_load): Likewise.
18238         (fusion_addis_mem_combo_store): Likewise.
18239         * config/rs6000/predicates.md (easy_fp_constant): Likewise.
18240         (fusion_gpr_mem_load): Likewise.
18241         (fusion_addis_mem_combo_load): Likewise.
18242         (fusion_addis_mem_combo_store): Likewise.
18243         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18244         Likewise.
18245         * config/rs6000/rs6000-string.c (do_load_for_compare): Likewise.
18246         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Likewise.
18247         (rs6000_preferred_simd_mode): Likewise.
18248         (output_vec_const_move): Likewise.
18249         (rs6000_expand_vector_extract): Likewise.
18250         (rs6000_split_vec_extract_var): Likewise.
18251         (reg_offset_addressing_ok_p): Likewise.
18252         (rs6000_legitimate_offset_address_p): Likewise.
18253         (rs6000_legitimize_address): Likewise.
18254         (rs6000_emit_set_const): Likewise.
18255         (rs6000_const_vec): Likewise.
18256         (rs6000_emit_move): Likewise.
18257         (rs6000_darwin64_record_arg_recurse): Likewise.
18258         (swap_selector_for_mode): Likewise.
18259         (paired_init_builtins): Likewise.
18260         (altivec_init_builtins): Likewise.
18261         (rs6000_expand_float128_convert): Likewise.
18262         (emit_load_locked): Likewise.
18263         (emit_store_conditional): Likewise.
18264         (rs6000_output_function_epilogue): Likewise.
18265         (rs6000_handle_altivec_attribute): Likewise.
18266         (rs6000_function_value): Likewise.
18267         (emit_fusion_gpr_load): Likewise.
18268         (emit_fusion_p9_load): Likewise.
18269         (emit_fusion_p9_store): Likewise.
18270         * config/rx/rx.c (rx_gen_move_template): Likewise.
18271         (flags_from_mode): Likewise.
18272         * config/s390/predicates.md (s390_alc_comparison): Likewise.
18273         (s390_slb_comparison): Likewise.
18274         * config/s390/s390.c (s390_handle_vectorbool_attribute): Likewise.
18275         (s390_vector_mode_supported_p): Likewise.
18276         (s390_cc_modes_compatible): Likewise.
18277         (s390_match_ccmode_set): Likewise.
18278         (s390_canonicalize_comparison): Likewise.
18279         (s390_emit_compare_and_swap): Likewise.
18280         (s390_branch_condition_mask): Likewise.
18281         (s390_rtx_costs): Likewise.
18282         (s390_secondary_reload): Likewise.
18283         (__SECONDARY_RELOAD_CASE): Likewise.
18284         (s390_expand_cs): Likewise.
18285         (s390_preferred_simd_mode): Likewise.
18286         * config/s390/vx-builtins.md (vec_packsu_u<mode>): Likewise.
18287         * config/sh/sh.c (sh_print_operand): Likewise.
18288         (dump_table): Likewise.
18289         (sh_secondary_reload): Likewise.
18290         * config/sh/sh.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
18291         * config/sh/sh.md (casesi_worker_1): Likewise.
18292         (casesi_worker_2): Likewise.
18293         * config/sparc/predicates.md (icc_comparison_operator): Likewise.
18294         (fcc_comparison_operator): Likewise.
18295         * config/sparc/sparc.c (sparc_expand_move): Likewise.
18296         (emit_soft_tfmode_cvt): Likewise.
18297         (sparc_preferred_simd_mode): Likewise.
18298         (output_cbranch): Likewise.
18299         (sparc_print_operand): Likewise.
18300         (sparc_expand_vec_perm_bmask): Likewise.
18301         (vector_init_bshuffle): Likewise.
18302         * config/spu/spu.c (spu_scalar_mode_supported_p): Likewise.
18303         (spu_vector_mode_supported_p): Likewise.
18304         (spu_expand_insv): Likewise.
18305         (spu_emit_branch_or_set): Likewise.
18306         (spu_handle_vector_attribute): Likewise.
18307         (spu_builtin_splats): Likewise.
18308         (spu_builtin_extract): Likewise.
18309         (spu_builtin_promote): Likewise.
18310         (spu_expand_sign_extend): Likewise.
18311         * config/tilegx/tilegx.c (tilegx_scalar_mode_supported_p): Likewise.
18312         (tilegx_simd_int): Likewise.
18313         * config/tilepro/tilepro.c (tilepro_scalar_mode_supported_p): Likewise.
18314         (tilepro_simd_int): Likewise.
18315         * config/v850/v850.c (const_double_split): Likewise.
18316         (v850_print_operand): Likewise.
18317         (ep_memory_offset): Likewise.
18318         * config/vax/vax.c (vax_rtx_costs): Likewise.
18319         (vax_output_int_move): Likewise.
18320         (vax_output_int_add): Likewise.
18321         (vax_output_int_subtract): Likewise.
18322         * config/visium/predicates.md (visium_branch_operator): Likewise.
18323         * config/visium/visium.c (rtx_ok_for_offset_p): Likewise.
18324         (visium_print_operand_address): Likewise.
18325         * config/visium/visium.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
18326         * config/xtensa/xtensa.c (xtensa_mem_offset): Likewise.
18327         (xtensa_expand_conditional_branch): Likewise.
18328         (xtensa_copy_incoming_a7): Likewise.
18329         (xtensa_output_literal): Likewise.
18330         * dfp.c (decimal_real_maxval): Likewise.
18331         * targhooks.c (default_libgcc_floating_mode_supported_p): Likewise.
18332
18333 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18334             Alan Hayward  <alan.hayward@arm.com>
18335             David Sherwood  <david.sherwood@arm.com>
18336
18337         * genmodes.c (mode_size_inline): Add an E_ prefix to mode names.
18338         (mode_nunits_inline): Likewise.
18339         (mode_inner_inline): Likewise.
18340         (mode_unit_size_inline): Likewise.
18341         (mode_unit_precision_inline): Likewise.
18342         (emit_insn_modes_h): Likewise.  Also emit a #define of the
18343         unprefixed name.
18344         (emit_mode_wider): Add an E_ prefix to mode names.
18345         (emit_mode_complex): Likewise.
18346         (emit_mode_inner): Likewise.
18347         (emit_mode_adjustments): Likewise.
18348         (emit_mode_int_n): Likewise.
18349         * config/aarch64/aarch64-builtins.c (v8qi_UP, v4hi_UP, v4hf_UP)
18350         (v2si_UP, v2sf_UP, v1df_UP, di_UP, df_UP, v16qi_UP, v8hi_UP, v8hf_UP)
18351         (v4si_UP, v4sf_UP, v2di_UP, v2df_UP, ti_UP, oi_UP, ci_UP, xi_UP)
18352         (si_UP, sf_UP, hi_UP, hf_UP, qi_UP): Likewise.
18353         (CRC32_BUILTIN, ENTRY): Likewise.
18354         * config/aarch64/aarch64.c (aarch64_push_regs): Likewise.
18355         (aarch64_pop_regs): Likewise.
18356         (aarch64_process_components): Likewise.
18357         * config/alpha/alpha.c (alpha_emit_conditional_move): Likewise.
18358         * config/arm/arm-builtins.c (v8qi_UP, v4hi_UP, v4hf_UP, v2si_UP)
18359         (v2sf_UP, di_UP, v16qi_UP, v8hi_UP, v8hf_UP, v4si_UP, v4sf_UP)
18360         (v2di_UP, ti_UP, ei_UP, oi_UP, hf_UP, si_UP, void_UP): Likewise.
18361         * config/arm/arm.c (arm_init_libfuncs): Likewise.
18362         * config/i386/i386-builtin-types.awk (ix86_builtin_type_vect_mode):
18363         Likewise.
18364         * config/i386/i386-builtin.def (pcmpestr): Likewise.
18365         (pcmpistr): Likewise.
18366         * config/microblaze/microblaze.c (double_memory_operand): Likewise.
18367         * config/mmix/mmix.c (mmix_output_condition): Likewise.
18368         * config/powerpcspe/powerpcspe.c (rs6000_init_hard_regno_mode_ok):
18369         Likewise.
18370         * config/rl78/rl78.c (mduc_regs): Likewise.
18371         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise.
18372         (htm_expand_builtin): Likewise.
18373         * config/sh/sh.h (REGISTER_NATURAL_MODE): Likewise.
18374         * config/sparc/sparc.c (emit_save_or_restore_regs): Likewise.
18375         * config/xtensa/xtensa.c (print_operand): Likewise.
18376         * expmed.h (NUM_MODE_PARTIAL_INT): Likewise.
18377         (NUM_MODE_VECTOR_INT): Likewise.
18378         * genoutput.c (null_operand): Likewise.
18379         (output_operand_data): Likewise.
18380         * genrecog.c (print_parameter_value): Likewise.
18381         * lra.c (debug_operand_data): Likewise.
18382
18383 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18384
18385         * dwarf2out.c (scompare_loc_descriptor_wide)
18386         (scompare_loc_descriptor_narrow): New functions, split out from...
18387         (scompare_loc_descriptor): ...here.
18388         * expmed.c (emit_store_flag_int): New function, split out from...
18389         (emit_store_flag): ...here.
18390
18391 2017-08-30  Richard Biener  <rguenther@suse.de>
18392
18393         * dwarf2out.c (dwarf2out_finish): Remove setting AT_pubnames.
18394         (dwarf2out_early_finish): Move setting of AT_pubnames from
18395         early debug output to early finish.
18396
18397 2017-08-30  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
18398
18399         * gcc/config/msp430/msp430.h: Pass -mcode/data-region to the linker
18400         and -mdata-region to the assembler.
18401
18402 2017-08-30  Richard Biener  <rguenther@suse.de>
18403
18404         * dwarf2out.c (add_dwarf_attr): Check we don't add duplicate
18405         attributes.
18406         (gen_subprogram_die): Add DW_AT_object_pointer only early.
18407         (dwarf2out_early_global_decl): Only generate a DIE for the
18408         abstract origin if it doesn't already exist or is a declaration DIE.
18409         (resolve_addr): Do not add the linkage name twice when
18410         generating a stub DIE for the DW_TAG_GNU_call_site target.
18411
18412 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18413
18414         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18415         Use machine_mode rather than int for arg1_mode.
18416
18417 2017-08-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
18418
18419         PR target/82015
18420         * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Insure
18421         that the second argument of the built-in functions to unpack
18422         128-bit scalar types to 64-bit values is 0 or 1.  Change to use a
18423         switch statement instead a lot of if statements.
18424         * config/rs6000/rs6000.md (unpack<mode>, FMOVE128_VSX iterator):
18425         Allow 64-bit values to be in Altivec registers as well as
18426         traditional floating point registers.
18427         (pack<mode>, FMOVE128_VSX iterator): Likewise.
18428
18429 2017-08-29  Alexander Monakov  <amonakov@ispras.ru>
18430
18431         * ira-costs.c (record_address_regs): Handle both operands of PLUS for
18432         MAX_REGS_PER_ADDRESS == 1.
18433
18434 2017-08-29  Uros Bizjak  <ubizjak@gmail.com>
18435
18436         * config/i386/i386.opt (flag_fentry): Do not init to -1.
18437         * config/i386/i386.c (ix86_option_override_internal): Simplify
18438         setting of opts->x_flag_entry.
18439
18440 2017-08-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
18441             Jakub Jelinek  <jakub@redhat.com>
18442             Richard Biener  <rguenther@suse.de>
18443
18444         PR tree-optimization/81503
18445         * gimple-ssa-strength-reduction.c (replace_mult_candidate): Ensure
18446         folded constant fits in the target type; reorder tests for clarity.
18447
18448 2017-08-29  Martin Liska  <mliska@suse.cz>
18449
18450         * passes.def: Include pass_lower_switch.
18451         * stmt.c (dump_case_nodes): Remove and move to
18452         tree-switch-conversion.
18453         (case_values_threshold): Likewise.
18454         (expand_switch_as_decision_tree_p): Likewise.
18455         (emit_case_decision_tree): Likewise.
18456         (expand_case): Likewise.
18457         (balance_case_nodes): Likewise.
18458         (node_has_low_bound): Likewise.
18459         (node_has_high_bound): Likewise.
18460         (node_is_bounded): Likewise.
18461         (emit_case_nodes): Likewise.
18462         (struct simple_case_node): New struct.
18463         (add_case_node): Remove.
18464         (emit_case_dispatch_table): Use vector instead of case_list.
18465         (reset_out_edges_aux): Remove.
18466         (compute_cases_per_edge): Likewise.
18467         (expand_case): Build list of simple_case_node.
18468         (expand_sjlj_dispatch_table): Use it.
18469         * tree-switch-conversion.c (struct case_node): Moved from
18470         stmt.c and adjusted.
18471         (emit_case_nodes): Likewise.
18472         (node_has_low_bound): Likewise.
18473         (node_has_high_bound): Likewise.
18474         (node_is_bounded): Likewise.
18475         (case_values_threshold): Likewise.
18476         (reset_out_edges_aux): Likewise.
18477         (compute_cases_per_edge): Likewise.
18478         (add_case_node): Likewise.
18479         (dump_case_nodes): Likewise.
18480         (balance_case_nodes): Likewise.
18481         (expand_switch_as_decision_tree_p): Likewise.
18482         (emit_jump): Likewise.
18483         (emit_case_decision_tree): Likewise.
18484         (try_switch_expansion): Likewise.
18485         (do_jump_if_equal): Likewise.
18486         (emit_cmp_and_jump_insns): Likewise.
18487         (fix_phi_operands_for_edge): New function.
18488         (record_phi_operand_mapping): Likewise.
18489         (class pass_lower_switch): New pass.
18490         (pass_lower_switch::execute): New function.
18491         (make_pass_lower_switch): Likewise.
18492         (conditional_probability):
18493         * timevar.def: Add TV_TREE_SWITCH_LOWERING.
18494         * tree-pass.h: Add make_pass_lower_switch.
18495
18496 2017-08-29  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
18497
18498         PR target/80993
18499         * gcc/config/msp430/msp430.c (msp430_attr): Mark interrupt
18500         handlers as used.
18501
18502 2017-08-29  Richard Biener  <rguenther@suse.de>
18503
18504         * dwarf2out.c (add_dwarf_attr): When checking is enabled verify
18505         we do not add a DW_AT_inline attribute twice.
18506         (gen_subprogram_die): Remove code setting DW_AT_inline on
18507         DECL_ABSTRACT_P nodes.
18508
18509 2017-08-29  Richard Sandiford  <richard.sandiford@linaro.org>
18510
18511         * gimplify.c (gimplify_call_expr): Copy the nothrow flag to
18512         calls to internal functions.
18513         (gimplify_modify_expr): Likewise.
18514         * tree-call-cdce.c (use_internal_fn): Likewise.
18515         * tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise.
18516         (convert_to_divmod): Set the nothrow flag.
18517         * tree-if-conv.c (predicate_mem_writes):  Likewise.
18518         * tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
18519         (vectorizable_call): Likewise.
18520         (vectorizable_store): Likewise.
18521         (vectorizable_load): Likewise.
18522         * tree-vect-patterns.c (vect_recog_pow_pattern): Likewise.
18523         (vect_recog_mask_conversion_pattern): Likewise.
18524
18525 2017-08-29  Martin Liska  <mliska@suse.cz>
18526
18527         PR other/39851
18528         * gcc.c (driver_handle_option): Add new argument.
18529         * opts-common.c (handle_option): Pass
18530         target_option_override_hook.
18531         * opts-global.c (lang_handle_option): Add new option.
18532         (set_default_handlers):  Add new argument.
18533         (decode_options): Likewise.
18534         * opts.c (target_handle_option): Likewise.
18535         (common_handle_option): Call target_option_override_hook.
18536         * opts.h (struct cl_option_handler_func): Add hook for
18537         target option override.
18538         (struct cl_option_handlers): Likewise.
18539         (set_default_handlers): Add new argument.
18540         (decode_options): Likewise.
18541         (common_handle_option): Likewise.
18542         (target_handle_option): Likewise.
18543         * toplev.c (toplev::main): Pass targetm.target_option.override
18544         hook.
18545
18546 2017-08-29  Richard Biener  <rguenther@suse.de>
18547         Dominik Infuehr <dominik.infuehr@theobroma-systems.com>
18548
18549         * tree-vect-slp.c (vect_bb_slp_scalar_cost): Properly confine
18550         life to the active subtree.
18551
18552 2017-08-28  Jeff Law  <law@redhat.com>
18553
18554         * tree-ssa-dom.c (edge_info::record_simple_equiv): Call
18555         derive_equivalences.
18556         (derive_equivalences_from_bit_ior, record_temporary_equivalences):
18557         Code moved into....
18558         (edge_info::derive_equivalences): New private member function
18559
18560         * tree-ssa-dom.c (class edge_info): Changed from a struct
18561         to a class.  Add ctor/dtor, methods and data members.
18562         (edge_info::edge_info): Renamed from allocate_edge_info.
18563         Initialize additional members.
18564         (edge_info::~edge_info): New.
18565         (free_dom_edge_info): Delete the edge info.
18566         (record_edge_info): Use new class & associated member functions.
18567         Tighten forms for testing for edge equivalences.
18568         (record_temporary_equivalences): Iterate over the simple
18569         equivalences rather than assuming there's only one per edge.
18570         (cprop_into_successor_phis): Iterate over the simple
18571         equivalences rather than assuming there's only one per edge.
18572         (optimize_stmt): Use operand_equal_p rather than pointer
18573         equality for mini-DSE code.
18574
18575 2017-08-28  Nathan Sidwell  <nathan@acm.org>
18576
18577         * gcc.c (execute): Fold SIGPIPE handling into switch
18578         statement.  Adjust internal error message.
18579
18580 2017-08-28  Richard Biener  <rguenther@suse.de>
18581
18582         PR debug/81993
18583         * dwarf2out.c (gen_remaining_tmpl_value_param_die_attributes):
18584         Do nothing for removed DIEs.
18585
18586 2017-08-28  Richard Biener  <rguenther@suse.de>
18587
18588         PR tree-optimization/81977
18589         * tree-ssa-sccvn.c (vn_reference_lookup_3): Fix look through
18590         memcpy.
18591
18592 2017-08-28  Alexander Monakov  <amonakov@ispras.ru>
18593
18594         PR target/80640
18595         * doc/md.texi (mem_thread_fence): Remove mention of mode.  Rewrite.
18596         * optabs.c (expand_mem_thread_fence): Emit a compiler barrier when
18597         using targetm.gen_mem_thread_fence.
18598
18599 2017-08-27  Uros Bizjak  <ubizjak@gmail.com>
18600
18601         PR target/81995
18602         * config/i386/i386.md (*<btsc><mode>): Change operand 2
18603         predicate to register_operand.  Reorder operands.
18604         (*btr<mode>): Ditto.
18605         (*<btsc><mode>_mask): Change operand 3 predicate to register_operand.
18606         (*btr<mode>_mask): Ditto.
18607
18608 2017-08-25  Steven Munroe  <munroesj@gcc.gnu.org>
18609
18610         * config.gcc (powerpc*-*-*): Add xmmintrin.h and mm_malloc.h.
18611         * config/rs6000/xmmintrin.h: New file.
18612         * config/rs6000/x86intrin.h [__ALTIVEC__]: Include xmmintrin.h.
18613
18614 2017-08-25  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
18615
18616         PR target/81504
18617         * config/rs6000/rs6000-p8swap.c (find_alignment_op): Add reference
18618         parameter and_insn and return it.
18619         (recombine_lvx_pattern): Insert a copy to ensure availability of
18620         the base register of the copied masking operation at the point of
18621         the instruction replacement.
18622         (recombine_stvx_pattern): Likewise.
18623
18624 2017-08-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
18625
18626         * config/rs6000/rs6000.opt (-mpower9-dform-scalar): Delete
18627         undocumented switches.
18628         (-mpower9-dform-vector): Likewise.
18629         (-mpower9-dform): Likewise.
18630         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
18631         comments to delete references to -mpower9-dform* switches.
18632         * config/rs6000/predicates.md (vsx_quad_dform_memory_operand):
18633         Delete reference to -mpower9-dform* switches, test for
18634         -mpower9-vector instead.
18635         * config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Likewise.
18636         (OTHER_P9_VECTOR_MASKS): Likewise.
18637         (POWERPC_MASKS): Likewise.
18638         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Change
18639         tests against -mpower9-dform* to -mpower9-vector.  Delete code
18640         that checked for -mpower9-dform* consistancy with other options.
18641         Add test for -mpower9-misc to enable other power9 switches.
18642         (rs6000_init_hard_regno_mode_ok): Likewise.
18643         (rs6000_option_override_internal): Likewise.
18644         (rs6000_emit_prologue): Likewise.
18645         (rs6000_emit_epilogue): Likewise.
18646         (rs6000_opt_masks): Delete -mpower9-dform-{scalar,vector}.
18647         (rs6000_disable_incompatiable_switches): Delete -mpower9-dform.
18648         (emit_fusion_p9_load): Change tests for -mpower9-dform-scalar
18649         -mpower9-vector.
18650         (emit_fusion_p9_store): Likewise.
18651         * config/rs6000/rs6000.h (TARGET_P9_DFORM_SCALAR): Delete
18652         resetting these macros if the assembler does not support ISA 3.0
18653         instructions.
18654         (TARGET_P9_DFORM_VECTOR): Likewise.
18655         * config/rs6000/rs6000.md (peepholes to optimize altivec memory):
18656         Change to use -mpower9-vector instead of -mpower9-dform-scalar.
18657
18658 2017-08-25  Alan Modra  <amodra@gmail.com>
18659
18660         PR rtl-optimization/81747
18661         * cse.c (cse_extended_basic_block): Don't attempt to record
18662         equivalences for degenerate conditional branches that branch
18663         to their fall-through.
18664
18665 2017-08-24  Martin Sebor  <msebor@redhat.com>
18666
18667         PR middle-end/81908
18668         * gimple-fold.c (size_must_be_zero_p): New function.
18669         (gimple_fold_builtin_memory_op): Call it.
18670
18671 2017-08-24  Steven Munroe  <munroesj@gcc.gnu.org>
18672
18673         * config/rs6000/mm_malloc.h: New file.
18674
18675 2017-08-24  Bin Cheng  <bin.cheng@arm.com>
18676
18677         PR tree-optimization/81913
18678         * tree-ssa-loop-niter.c (number_of_iterations_cond): Skip niter
18679         analysis when either IVs in condition can wrap.
18680
18681 2017-08-24  Uros Bizjak  <ubizjak@gmail.com>
18682
18683         * dwarf2out.c (MAX_ARTIFICIAL_LABEL_BYTES): Increase to 40.
18684         * dwarf2cfi.c (MAX_ARTIFICIAL_LABEL_BYTES): Remove.
18685
18686 2017-08-24  Richard Biener  <rguenther@suse.de>
18687
18688         PR target/81921
18689         * targhooks.c (default_target_can_inline_p): Properly
18690         use target_option_default_node when no DECL_FUNCTION_SPECIFIC_TARGET
18691         is present and always compare.
18692         * config/i386/i386.c (ix86_valid_target_attribute_tree): Do not
18693         infer -mfpmath=sse from TARGET_SSE_P.
18694         (ix86_can_inline_p): Properly use target_option_default_node when
18695         no DECL_FUNCTION_SPECIFIC_TARGET is present and always compare.
18696
18697 2017-08-24  Richard Biener  <rguenther@suse.de>
18698
18699         PR debug/81936
18700         * dwarf2out.c (output_die): Handle flag_generate_offload like
18701         flag_generate_lto.
18702         (output_comp_unit): Likewise.
18703         (gen_array_type_die): Likewise.
18704         (dwarf2out_early_finish): Likewise.
18705         (note_variable_value_in_expr): Likewise.
18706         (dwarf2out_finish): Likewise.  Adjust assert.
18707         * cgraphunit.c (symbol_table::compile): Move setting of
18708         flag_generate_offload earlier ...
18709         (symbol_table::finalize_compilation_unit): ... here, before
18710         early debug finalization.
18711
18712 2017-08-24  Richard Biener  <rguenther@suse.de>
18713
18714         * config/i386/i386.c: Include symbol-summary.h, ipa-prop.h
18715         and ipa-fnsummary.h.
18716         (ix86_can_inline_p): When ix86_fpmath flags do not match
18717         check whether the callee uses FP math at all.
18718
18719 2017-08-24  Aldy Hernandez  <aldyh@redhat.com>
18720
18721         PR middle-end/81931
18722         * tree-ssanames.c (get_nonzero_bits): Use element_precision
18723         instead of TYPE_PRECISION.
18724
18725 2017-08-24  Richard Sandiford  <richard.sandiford@linaro.org>
18726             Alan Hayward  <alan.hayward@arm.com>
18727             David Sherwood  <david.sherwood@arm.com>
18728
18729         * combine.c (make_extraction): Use subreg_offset_from_lsb.
18730
18731 2017-08-23  Daniel Santos  <daniel.santos@pobox.com>
18732
18733         * config/i386/i386.h (ix86_frame::stack_realign_allocate_offset):
18734         Remove field.
18735         (ix86_frame::stack_realign_allocate): New field.
18736         (struct machine_frame_state): Modify comments.
18737         (machine_frame_state::sp_realigned_fp_end): New field.
18738         * config/i386/i386.c (ix86_compute_frame_layout): Rework stack frame
18739         layout calculation.
18740         (sp_valid_at): Add assertion to assure no attempt to access invalid
18741         offset of a realigned stack.
18742         (fp_valid_at): Likewise.
18743         (choose_baseaddr): Modify comments.
18744         (ix86_emit_outlined_ms2sysv_save): Adjust to changes in
18745         ix86_expand_prologue.
18746         (ix86_expand_prologue): Modify stack realignment and allocation.
18747         (ix86_expand_epilogue): Modify comments.
18748         * doc/sourcebuild.texi: Add documentation for target selectors avx2,
18749         avx2_runtime, avx512f, and avx512f_runtime.
18750
18751 2017-08-23  Uros Bizjak  <ubizjak@gmail.com>
18752
18753         * config/i386/i386.opt: Remove unneeded Init(0) initializations.
18754         (mstackrealign): Do not init to -1.
18755         * config/i386/i386.c (ix86_option_override_internal):
18756         Check opts_set, not opts when setting default value of
18757         opts->x_ix86_force_align_arg_pointer.
18758
18759 2017-08-23  Richard Biener  <rguenther@suse.de>
18760
18761         * function.c (fndecl_name): Use verbosity 1 (no arguments) for
18762         lang_hooks.decl_printable_name.
18763         * print-rtl-function.c (print_rtx_function): Likewise.
18764         * tree-pretty-print.c (dump_function_header): Likewise.
18765
18766 2017-08-23  Richard Biener  <rguenther@suse.de>
18767
18768         PR lto/81940
18769         * dwarf2out.c (dwarf2out_abstract_function): Handle LTO with
18770         -g0 at compile-time.
18771
18772 2017-08-23  Tamar Christina  <tamar.christina@arm.com>
18773
18774         PR middle-end/19706
18775         * doc/sourcebuild.texi (Other hardware attributes):
18776         Document xorsign.
18777
18778 2017-08-23  Tamar Christina  <tamar.christina@arm.com>
18779
18780         PR middle-end/19706
18781         * tree-ssa-math-opts.c (convert_expand_mult_copysign):
18782         Fix single-use check.
18783
18784 2017-08-23  Thomas Preud'homme  <thomas.preudhomme@arm.com>
18785
18786         * gcc.c (execute): Only test for SIGKILL and SIGQUIT if available.
18787
18788 2017-08-22  Daniel Santos  <daniel.santos@pobox.com>
18789
18790         * doc/install.texi: Modify to add more details on running selected
18791         tests.
18792
18793 2017-08-22  Daniel Santos  <daniel.santos@pobox.com>
18794
18795         * config/i386/i386.c (ix86_option_override_internal): Error when -mx32
18796         is combined with -mabi=ms.
18797         (ix86_function_type_abi): Limit errors for mixing -mx32 with attribute
18798         ms_abi.
18799
18800 2017-08-22  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
18801
18802         PR tree-optimization/81488
18803         * gimple-ssa-strength-reduction (struct slsr_cand_d): Add visited
18804         and cached_basis fields.
18805         (MAX_SPREAD): New constant.
18806         (alloc_cand_and_find_basis): Initialize new fields.
18807         (clear_visited): New function.
18808         (create_phi_basis_1): Rename from create_phi_basis, set visited
18809         and cached_basis fields.
18810         (create_phi_basis): New wrapper function.
18811         (phi_add_costs_1): Rename from phi_add_costs, add spread
18812         parameter, set visited field, short-circuit when limits reached.
18813         (phi_add_costs): New wrapper function.
18814         (record_phi_increments_1): Rename from record_phi_increments, set
18815         visited field.
18816         (record_phi_increments): New wrapper function.
18817         (phi_incr_cost_1): Rename from phi_incr_cost, set visited field.
18818         (phi_incr_cost): New wrapper function.
18819         (all_phi_incrs_profitable_1): Rename from
18820         all_phi_incrs_profitable, set visited field.
18821         (all_phi_incrs_profitable): New wrapper function.
18822
18823 2017-08-22  Richard Sandiford  <richard.sandiford@linaro.org>
18824             Alan Hayward  <alan.hayward@arm.com>
18825             David Sherwood  <david.sherwood@arm.com>
18826
18827         * rtl.h (paradoxical_subreg_p): Define inline, and add a version
18828         that takes the outer and inner modes.
18829         * doc/rtl.texi: Use paradoxical_subreg_p instead of a GET_MODE_SIZE
18830         comparison as the canonical test for a paradoxical subreg.
18831         * combine.c (simplify_set): Use paradoxical_subreg_p.
18832         (make_extraction): Likewise.
18833         (force_to_mode): Likewise.
18834         (rtx_equal_for_field_assignment_p): Likewise.
18835         (gen_lowpart_for_combine): Likewise.
18836         (simplify_comparison): Likewise.
18837         * cse.c (equiv_constant): Likewise.
18838         * expmed.c (store_bit_field_1): Likewise.
18839         * final.c (alter_subreg): Likewise.
18840         * fwprop.c (propagate_rtx): Likewise.
18841         (forward_propagate_subreg): Likewise.
18842         * ira-conflicts.c (ira_build_conflicts): Likewise.
18843         * lower-subreg.c (simplify_gen_subreg_concatn): Likewise.
18844         * lra-constraints.c (curr_insn_transform): Likewise.
18845         (split_reg): Likewise.
18846         * lra-eliminations.c (move_plus_up): Likewise.
18847         (lra_eliminate_regs_1): Likewise.
18848         * recog.c (general_operand): Likewise.
18849         * ree.c (combine_reaching_defs): Likewise.
18850         * reload.c (push_reload): Likewise.
18851         (find_reloads): Likewise.
18852         * reload1.c (elimination_effects): Likewise.
18853         (compute_reload_subreg_offset): Likewise.
18854         (choose_reload_regs): Likewise.
18855         * rtlanal.c (subreg_lsb_1): Likewise.
18856         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
18857         (simplify_subreg): Likewise.
18858         * var-tracking.c (track_loc_p): Likewise.
18859         * emit-rtl.c (byte_lowpart_offset): Likewise.
18860         (paradoxical_subreg_p): Delete out-of-line definition.
18861
18862 2017-08-22  Jeff Law  <law@redhat.com>
18863
18864         PR tree-optimization/81741
18865         PR tree-optimization/71947
18866         * tree-ssa-dom.c: Include tree-inline.h.
18867         (record_temporary_equivalences): Only record SSA_NAME = SSA_NAME
18868         equivalences if one is more expensive to compute than the other.
18869         * tree-ssa-scopedtables.h (class const_or_copies): Make
18870         record_const_or_copy_raw method private.
18871         (class avail_exprs_stack): New method simplify_binary_operation.
18872         * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr): Call
18873         avail_exprs_stack::simplify_binary_operation as needed.
18874         (avail_exprs_stack::simplify_binary_operation): New function.
18875
18876 2017-08-22  Sebastian Huber  <sebastian.huber@embedded-brains.de>
18877
18878         * config.gcc (powerpc-*-rtems*): Add rs6000/linux64.opt.
18879         * config/rs6000/rtems.h (ASM_PREFERRED_EH_DATA_FORMAT): New define.
18880         (DOT_SYMBOLS): Likewise.
18881         (MINIMAL_TOC_SECTION_ASM_OP): Likewise.
18882         (RELOCATABLE_NEEDS_FIXUP): Likewise.
18883         (RS6000_ABI_NAME): Likewise.
18884         (TARGET_CMODEL): Likewise.
18885         (TOC_SECTION_ASM_OP): Likewise.
18886         (SET_CMODEL): New macro.
18887         (SUBSUBTARGET_OVERRIDE_OPTIONS): Evaluate cmodel options.
18888
18889 2017-08-22  Richard Biener  <rguenther@suse.de>
18890
18891         * tree-inline.c (remap_type_1): Change asserts on TYPE_SIZE[_UNIT]
18892         to allow for free-lang-data replacements similar to verify_type_variant.
18893
18894 2017-08-22  Richard Sandiford  <richard.sandiford@linaro.org>
18895             Alan Hayward  <alan.hayward@arm.com>
18896             David Sherwood  <david.sherwood@arm.com>
18897
18898         * config/aarch64/aarch64.md (casesi): Use DImode rather than
18899         VOIDmode for the LABEL_REF.
18900
18901 2017-08-22  Richard Biener  <rguenther@suse.de>
18902
18903         * tree-cfg.c (gimple_split_edge): Avoid reallocating target PHI nodes.
18904
18905 2017-08-22  Richard Biener  <rguenther@suse.de>
18906
18907         * common.opt (feliminate-dwarf2-dups): Ignore.
18908         * doc/invoke.texi (feliminate-dwarf2-dups): Remove documentation.
18909         * dwarf2out.c (push_new_compile_unit, pop_compile_unit,
18910         same_die_p_wrap, compute_section_prefix,
18911         is_symbol_die, assign_symbol_names, break_out_includes): Remove.
18912         (comdat_symbol_id, comdat_symbol_number): Likewise.
18913         (cu_hash_table_entry, cu_hash_table_entry_hasher, cu_hash_type):
18914         Likewise.
18915         (check_duplicate_cu, record_comdat_symbol_number): Likewise.
18916         (output_die): Mark unreachable path unreachable.
18917         (dwarf2out_start_source_file): Do not create DW_TAG_GNU_BINCL.
18918         (dwarf2out_end_source_file): Do not create DW_TAG_GNU_EINCL.
18919         (dwarf2out_init): Remove code handling flag_eliminate_dwarf2_dups.
18920         (dwarf2out_early_finish): Likewise.
18921
18922 2017-08-22  Aldy Hernandez  <aldyh@redhat.com>
18923
18924         * wide-int.h (hwi_with_prec::hwi_with_prec): Sign extend.
18925
18926 2017-08-22  Georg-Johann Lay  <avr@gjlay.de>
18927
18928         PR target/81910
18929         * config/avr/avr.c (avr_handle_addr_attribute): Early return if
18930         not VAR_P. Filter attribute warnings with OPT_Wattributes.
18931         (avr_attribute_table) <io, io_low, address>: Initialize
18932         .decl_required with true.
18933
18934 2017-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
18935
18936         * config/rs6000/rs6000-cpus.def (-mvsx-scalar-float): Delete
18937         undocumented debugging options.
18938         (-mvsx-scalar-double): Likewise.
18939         (-mallow-df-permute): Likewise.
18940         (-mvectorize-builtins): Likewise.
18941         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise.
18942         (rs6000_builtin_vectorized_function): Likewise.
18943         (rs6000_builtin_md_vectorized_function): Likewise.
18944         (rs6000_opt_vars): Likewise.
18945
18946 2017-08-21  Uros Bizjak  <ubizjak@gmail.com>
18947
18948         PR target/46091
18949         * config/i386/i386.md (*btsq_imm): Rename from *btsq.
18950         (*btrq_imm): Rename from *btrq.
18951         (*btcq_imm): Rename from *btcq.
18952         (btsc): New code attribute.
18953         (*<btsc><mode>): New insn pattern.
18954         (*btr<mode>): Ditto.
18955         (*<btsc><mode>_mask): New insn_and_split pattern.
18956         (*btr<mode>_mask): Ditto.
18957
18958 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
18959             Alan Hayward  <alan.hayward@arm.com>
18960             David Sherwood  <david.sherwood@arm.com>
18961
18962         * function.c (pad_below): Simplify padding calculation.
18963
18964 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
18965             Alan Hayward  <alan.hayward@arm.com>
18966             David Sherwood  <david.sherwood@arm.com>
18967
18968         * target.def (function_prologue): Remove frame size argument.
18969         (function_epilogue): Likewise.
18970         * doc/tm.texi: Regenerate.
18971         * final.c (final_start_function): Update call to function_prologue.
18972         (final_end_function): Update call to function_epilogue.
18973         (default_function_pro_epilogue): Remove frame size argument.
18974         * output.h (default_function_pro_epilogue): Likewise.
18975         * config/arm/arm.c (arm_output_function_epilogue): Likewise.
18976         (arm_output_function_prologue): Likewise.
18977         * config/frv/frv.c (frv_function_prologue): Likewise.
18978         (frv_function_epilogue): Likewise.
18979         * config/i386/i386.c (ix86_output_function_epilogue): Likewise.
18980         * config/ia64/ia64.c (ia64_output_function_prologue): Likewise.
18981         (ia64_output_function_epilogue): Likewise.
18982         * config/m32r/m32r.c (m32r_output_function_prologue): Likewise.
18983         (m32r_output_function_epilogue): Likewise.
18984         * config/microblaze/microblaze.c (microblaze_function_prologue)
18985         (microblaze_function_epilogue): Likewise.
18986         * config/mips/mips.c (mips_output_function_prologue): Likewise.
18987         (mips_output_function_epilogue): Likewise.
18988         * config/mmix/mmix.c (mmix_target_asm_function_prologue): Likewise.
18989         (mmix_target_asm_function_epilogue): Likewise.
18990         * config/msp430/msp430.c (msp430_start_function): Likewise.
18991         * config/nds32/nds32.c (nds32_asm_function_prologue): Likewise.
18992         (nds32_asm_function_epilogue): Likewise.
18993         * config/nios2/nios2.c (nios2_asm_function_prologue): Likewise.
18994         * config/pa/pa.c (pa_output_function_prologue): Likewise.
18995         (pa_output_function_epilogue): Likewise.
18996         * config/powerpcspe/powerpcspe.c (rs6000_output_function_prologue)
18997         (rs6000_output_function_epilogue): Likewise.
18998         * config/rl78/rl78.c (rl78_start_function): Likewise.
18999         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Likewise.
19000         (rs6000_output_function_epilogue): Likewise.
19001         * config/rx/rx.c (rx_output_function_prologue): Likewise.
19002         * config/sh/sh.c (sh_output_function_epilogue): Likewise.
19003         * config/sparc/sparc.c (sparc_asm_function_prologue): Likewise.
19004         (sparc_asm_function_epilogue): Likewise.
19005
19006 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
19007
19008         * tree.h (type_has_mode_precision_p): New function.
19009         * convert.c (convert_to_integer_1): Use it.
19010         * expr.c (expand_expr_real_2): Likewise.
19011         (expand_expr_real_1): Likewise.
19012         * fold-const.c (fold_single_bit_test_into_sign_test): Likewise.
19013         * match.pd: Likewise.
19014         * tree-ssa-forwprop.c (simplify_rotate): Likewise.
19015         * tree-ssa-math-opts.c (convert_mult_to_fma): Likewise.
19016         * tree-tailcall.c (process_assignment): Likewise.
19017         * tree-vect-loop.c (vectorizable_reduction): Likewise.
19018         * tree-vect-patterns.c (vect_recog_vector_vector_shift_pattern)
19019         (vect_recog_mult_pattern, vect_recog_divmod_pattern): Likewise.
19020         * tree-vect-stmts.c (vectorizable_conversion): Likewise.
19021         (vectorizable_assignment): Likewise.
19022         (vectorizable_shift): Likewise.
19023         (vectorizable_operation): Likewise.
19024         * tree-vrp.c (register_edge_assert_for_2): Likewise.
19025
19026 2017-08-21  Wilco Dijkstra  <wdijkstr@arm.com>
19027
19028         * match.pd: Add pow (C, x) simplification.
19029
19030 2017-08-21  Richard Biener  <rguenther@suse.de>
19031
19032         PR tree-optimization/81900
19033         * tree-ssa-pre.c (compute_antic_aux): Properly compute changed
19034         for blocks with abnormal predecessors.
19035         (compute_antic): Do not set visited flag prematurely.
19036
19037 2017-08-21  Georg-Johann Lay  <avr@gjlay.de>
19038
19039         PR target/79883
19040         * config/avr/avr.c (avr_set_current_function): Typo in diagnostic.
19041
19042 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
19043
19044         * stor-layout.h (vector_type_mode): Move to...
19045         * tree.h (vector_type_mode): ...here.
19046         * stor-layout.c (vector_type_mode): Move to...
19047         * tree.c (vector_type_mode): ...here.  Include rtl.h and regs.h.
19048
19049 2017-08-21  Richard Biener  <rguenther@suse.de>
19050
19051         * debug.h (struct gcc_debug_hooks): Add die_ref_for_decl and
19052         register_external_die hooks.
19053         (debug_false_tree_charstarstar_uhwistar): Declare.
19054         (debug_nothing_tree_charstar_uhwi): Likewise.
19055         * debug.c (do_nothing_debug_hooks): Adjust.
19056         (debug_false_tree_charstarstar_uhwistar): New do nothing.
19057         (debug_nothing_tree_charstar_uhwi): Likewise.
19058         * dbxout.c (dbx_debug_hooks): Adjust.
19059         (xcoff_debug_hooks): Likewise.
19060         * sdbout.c (sdb_debug_hooks): Likewise.
19061         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
19062         * dwarf2out.c (macinfo_label_base): New global.
19063         (dwarf2out_register_external_die): New function for the
19064         register_external_die hook.
19065         (dwarf2out_die_ref_for_decl): Likewise for die_ref_for_decl.
19066         (dwarf2_debug_hooks): Use them.
19067         (dwarf2_lineno_debug_hooks): Adjust.
19068         (struct die_struct): Add with_offset flag.
19069         (DEBUG_LTO_DWO_INFO_SECTION, DEBUG_LTO_INFO_SECTION,
19070         DEBUG_LTO_DWO_ABBREV_SECTION, DEBUG_LTO_ABBREV_SECTION,
19071         DEBUG_LTO_DWO_MACINFO_SECTION, DEBUG_LTO_MACINFO_SECTION,
19072         DEBUG_LTO_DWO_MACRO_SECTION, DEBUG_LTO_MACRO_SECTION,
19073         DEBUG_LTO_LINE_SECTION, DEBUG_LTO_DWO_STR_OFFSETS_SECTION,
19074         DEBUG_LTO_STR_DWO_SECTION, DEBUG_STR_LTO_SECTION): New macros
19075         defining section names for the early LTO debug variants.
19076         (reset_indirect_string): New helper.
19077         (add_AT_external_die_ref): Helper for dwarf2out_register_external_die.
19078         (print_dw_val): Add support for offsetted symbol references.
19079         (get_ultimate_context): Split out from is_cxx.
19080         (is_cxx): Use get_ultimate_context.
19081         (is_fortran): Add decl overload.
19082         (compute_comp_unit_symbol): Split out worker from
19083         compute_section_prefix.
19084         (compute_section_prefix): Call compute_comp_unit_symbol and
19085         set comdat_type_p here.
19086         (output_die): Skip DIE symbol output for the LTO added one.
19087         Handle DIE symbol references with offset.
19088         (output_comp_unit): Guard section name mangling properly.
19089         For LTO debug sections emit a symbol at the section beginning
19090         which we use to refer to its DIEs.
19091         (add_abstract_origin_attribute): For DIEs registered via
19092         dwarf2out_register_external_die directly refer to the early
19093         DIE rather than indirectly through the shadow one we created.
19094         Remove obsolete call to dwarf2out_abstract_function for
19095         non-function/block origins.
19096         (gen_array_type_die): When generating early LTO debug do
19097         not emit DW_AT_string_length.
19098         (gen_formal_parameter_die): Do not re-create DIEs for PARM_DECLs
19099         late when in LTO.  As suggested place a gcc_unreachable for
19100         the DECL_ABSTRACT_P case.
19101         (gen_subprogram_die): Avoid another specification DIE
19102         for early built declarations/definitions for the late LTO case.
19103         (gen_variable_die): Add type references for late duplicated VLA dies
19104         when in late LTO.
19105         (gen_inlined_subroutine_die): Do not call dwarf2out_abstract_function,
19106         we have the abstract instance already.
19107         (process_scope_var): Adjust decl DIE contexts in LTO which
19108         first puts them in limbo.
19109         (gen_decl_die): Do not generate type DIEs late apart from
19110         types for VLAs or for decls we do not yet have a DIE.  Do not
19111         call dwarf2out_abstract_function late.
19112         (dwarf2out_early_global_decl): Make sure to create DIEs
19113         for abstract instances of a decl first.
19114         (dwarf2out_late_global_decl): Adjust comment.
19115         (output_macinfo_op): With multiple macro sections use
19116         macinfo_label_base to distinguish labels.
19117         (output_macinfo): Likewise.  Update macinfo_label_base.
19118         Pass in the line info label.
19119         (note_variable_value_in_expr): When generating LTO resolve
19120         all variable values here by generating DIEs as needed.
19121         (init_sections_and_labels): Add early LTO debug flag parameter
19122         and generate different sections and names if set.  Add generation
19123         counter for the labels so we can have multiple of them.
19124         (reset_dies): Helper to allow DIEs to be output multiple times.
19125         (dwarf2out_finish): When outputting DIEs to the fat part of an
19126         LTO object first reset DIEs.
19127         (dwarf2out_early_finish): Output early DIEs when generating LTO.
19128         (modified_type_die): Check for decl_ultimate_origin being self
19129         before recursing.
19130         (gen_type_die_with_usage): Likewise.
19131         (gen_typedef_die): Allow decl_ultimate_origin being self.
19132         (set_decl_abstract_flags): Remove.
19133         (set_block_abstract_flags): Likewise.
19134         (dwarf2out_abstract_function): Treat the early generated DIEs
19135         as the abstract copy and only add DW_AT_inline and
19136         DW_AT_artificial here and call set_decl_origin_self.
19137         If the DIE has an abstract origin don't do anything.
19138         * tree.c (free_lang_data): Build a dummy TRANSLATION_UNIT_DECL
19139         if we have none yet (Go fails to build one, PR78628).
19140         (variably_modified_type_p): Prevent endless recursion for Ada
19141         cyclic pointer types.
19142         * lto-streamer-in.c: Include debug.h.
19143         (dref_queue): New global.
19144         (lto_read_tree_1): Stream in DIE references.
19145         (lto_input_tree): Register DIE references.
19146         (input_function): Stream DECL_DEBUG_ARGS.
19147         * lto-streamer-out.c: Include debug.h.
19148         (lto_write_tree_1): Output DIE references.
19149         (DFS::DFS_write_tree_body): Follow DECL_ABSTRACT_ORIGIN.
19150         Force a TRANSLATION_UNIT_DECL DECL_CONTEXT for file-scope decls.
19151         (output_function): Stream DECL_DEBUG_ARGS.
19152         * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
19153         Stream DECL_ABSTRACT_ORIGIN.
19154         * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
19155         (write_ts_decl_minimal_tree_pointers): Force a TRANSLATION_UNIT_DECL
19156         DECL_CONTEXT for file-scope decls.
19157         * lto-streamer.h (struct dref_entry): Declare.
19158         (dref_queue): Likewise.
19159         * cfgexpand.c (pass_expand::execute): Do not call the
19160         outlining_inline_function hook here.
19161         * lto-wrapper.c (debug_obj): New global.
19162         (tool_cleanup): Unlink it if required.
19163         (debug_objcopy): New function.
19164         (run_gcc): Handle early debug sections in the IL files by
19165         extracting them to separate files, partially linkin them and
19166         feeding the result back as result to the linker.
19167         * config/darwin.h (DEBUG_LTO_INFO_SECTION, DEBUG_LTO_ABBREV_SECTION,
19168         DEBUG_LTO_MACINFO_SECTION, DEBUG_LTO_LINE_SECTION,
19169         DEBUG_STR_LTO_SECTION, DEBUG_LTO_MACRO_SECTION): Put early debug
19170         sections into a separate segment.
19171         * config/darwin.c (darwin_asm_named_section): Handle __GNU_DWARF_LTO
19172         segments.
19173         (darwin_asm_dwarf_section): Likewise.
19174         (darwin_asm_output_dwarf_offset): Likewise.
19175         * config/i386/i386.c (make_resolver_func): Set DECL_IGNORED_P.
19176
19177 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
19178             Alan Hayward  <alan.hayward@arm.com>
19179             David Sherwood  <david.sherwood@arm.com>
19180
19181         * read-md.h (md_reader::record_potential_iterator_use): Replace
19182         pointer argument with an rtx and an index.
19183         * read-rtl.c (iterator_group::apply_iterator): Likewise.
19184         (apply_mode_iterator): Likewise.
19185         (apply_code_iterator): Likewise.
19186         (apply_int_iterator): Likewise.
19187         (apply_subst_iterator): Likewise.
19188         (record_iterator_use): Likewise.
19189         (record_attribute_use): Likewise.
19190         (md_reader::record_potential_iterator_use): Likewise.  Update calls
19191         to record_iterator_use and apply_iterator.
19192         (iterator_use): Replace ptr with x and index.
19193         (attribute_use): Likewise.
19194         (apply_attribute_uses): Update calls to apply_iterator.
19195         (apply_iterators): Likewise.  Update initialization of iterator_use.
19196         (rtx_reader::read_rtx_code): Update calls to record_iterator_use
19197         and record_potential_iterator_use.
19198         (rtx_reader::read_rtx_operand): Likewise.
19199
19200 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
19201             Alan Hayward  <alan.hayward@arm.com>
19202             David Sherwood  <david.sherwood@arm.com>
19203
19204         * varasm.c (const_rtx_hash_1): Don't hash in the mode of a
19205         CONST_WIDE_INT.
19206
19207 2017-08-21  Richard Biener  <rguenther@suse.de>
19208
19209         PR middle-end/81884
19210         * tree-ssa-alias.c (stmt_kills_ref_p): Handle array accesses
19211         at struct end conservatively when comparing common bases.
19212
19213 2017-08-21  Richard Biener  <rguenther@suse.de>
19214
19215         * tree-ssa-loop-im.c (struct lim_aux_data): Add ref index member.
19216         (mem_ref_in_stmt): Remove.
19217         (determine_max_movement): Use ref index to get at the reference.
19218         (invariantness_dom_walker::before_dom_children): Deal with
19219         lim data already initialized.
19220         (gather_mem_refs_stmt): Initialize lim data and record ref index.
19221
19222 2017-08-19  Uros Bizjak  <ubizjak@gmail.com>
19223
19224         * config/i386/i386.h (OPTION_MASK_ISA_ROUND): Remove.
19225         (TARGET_ISA_ROUND): Ditto.
19226         (TARGET_ROUND): Ditto.
19227         * config/i386/i386.c: Substitute TARGET_ROUND with TARGET_SSE4_1.
19228         * config/i386/i386.md: Ditto.
19229         * config/i386/sse.md: Ditto.
19230         * config/i386/i386-builtin.def: Substitute OPTION_MASK_ISA_ROUND
19231         with OPTION_MASK_ISA_SSE4_1.
19232
19233 2017-08-19  Uros Bizjak  <ubizjak@gmail.com>
19234
19235         PR target/81894
19236         * doc/extend.texi (x86 Built-in Functions): Correct the name of
19237         __builtin_ia32_lzcnt_u16.
19238
19239 2017-08-18  Peter Bergner  <bergner@vnet.ibm.com>
19240
19241         PR target/80210
19242         * config/rs6000/rs6000.c (rs6000_activate_target_options): New function.
19243         (rs6000_set_current_function): Rewrite function to use it.
19244
19245 2017-08-18  H.J. Lu  <hongjiu.lu@intel.com>
19246
19247         PR c/53037
19248         * print-tree.c (print_node): Support DECL_WARN_IF_NOT_ALIGN
19249         and TYPE_WARN_IF_NOT_ALIGN.
19250         * stor-layout.c (do_type_align): Merge DECL_WARN_IF_NOT_ALIGN.
19251         (handle_warn_if_not_align): New.
19252         (place_union_field): Call handle_warn_if_not_align.
19253         (place_field): Call handle_warn_if_not_align.
19254         Copy TYPE_WARN_IF_NOT_ALIGN.
19255         (finish_builtin_struct): Copy TYPE_WARN_IF_NOT_ALIGN.
19256         (layout_type): Likewise.
19257         * tree-core.h (tree_type_common): Add warn_if_not_align.  Set
19258         spare to 18.
19259         (tree_decl_common): Add warn_if_not_align.
19260         * tree.c (build_range_type_1): Copy TYPE_WARN_IF_NOT_ALIGN.
19261         * tree.h (TYPE_WARN_IF_NOT_ALIGN): New.
19262         (SET_TYPE_WARN_IF_NOT_ALIGN): Likewise.
19263         (DECL_WARN_IF_NOT_ALIGN): Likewise.
19264         (SET_DECL_WARN_IF_NOT_ALIGN): Likewise.
19265         * doc/extend.texi: Document warn_if_not_aligned attribute.
19266         * doc/invoke.texi: Document -Wif-not-aligned and -Wpacked-not-aligned.
19267
19268 2017-08-17  Martin Liska  <mliska@suse.cz>
19269
19270         PR bootstrap/81864
19271         * tree-loop-distribution.c (ddrs_table): Change type to pointer type.
19272         (get_data_dependence): Use it as pointer type.
19273         (distribute_loop): Likewise.
19274
19275 2017-08-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
19276
19277         * config/rs6000/altivec.md (UNSPEC_VMRGOW_DIRECT): New constant.
19278         (p8_vmrgew_v4sf_direct): Generalize to p8_vmrgew_<mode>_direct.
19279         (p8_vmrgow_<mode>_direct): New define_insn.
19280         * config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Properly
19281         handle endianness for vmrgew and vmrgow permute patterns.
19282
19283 2017-08-17  Peter Bergner  <bergner@vnet.ibm.com>
19284
19285         * config/rs6000/altivec.md (VParity): Remove TARGET_VSX_TIMODE.
19286         * config/rs6000/rs6000-cpus.def: Remove comment.
19287         (ISA_2_7_MASKS_SERVER): Delete OPTION_MASK_VSX_TIMODE;
19288         (POWERPC_MASKS): Likewise.
19289         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Remove unneeded
19290         use of TARGET_VSX_TIMODE.
19291         (rs6000_setup_reg_addr_masks): Change TARGET_VSX_TIMODE to TARGET_VSX.
19292         (rs6000_init_hard_regno_mode_ok): Remove unneeded uses of
19293         TARGET_VSX_TIMODE.  Change use of TARGET_VSX_TIMODE to TARGET_VSX.
19294         (rs6000_option_override_internal): Remove dead code.
19295         (rs6000_legitimize_address): Change TARGET_VSX_TIMODE to TARGET_VSX.
19296         (rs6000_legitimize_reload_address): Likewise.
19297         (rs6000_legitimate_address_p): Likewise.
19298         (rs6000_opt_masks): Delete "vsx-timode".
19299         (rs6000_disable_incompatible_switches): Remove mention of -mvsx-timode
19300         from function comment.
19301         * config/rs6000/rs6000.h (MASK_VSX_TIMODE): Delete.
19302         * config/rs6000/rs6000.md (FMOVE128_GPR): Remove TARGET_VSX_TIMODE.
19303         (V16QI, V8HI, V4SI, V4SF, V2DI, V2DF, V1TI): Remove useless empty
19304         condition.
19305         * config/rs6000/rs6000.opt (mvsx-timode): Replace with stub.
19306         * config/rs6000/vector.md (VEC_IP): Remove TARGET_VSX_TIMODE.
19307         * config/rs6000/vsx.md (VSX_LE_128): Likewise.
19308         (VSX_TI): Likewise.
19309         (VSX_M): Likewise.
19310         (define_peephole2): Likewise.
19311
19312 2017-08-17  Martin Sebor  <msebor@redhat.com>
19313
19314         PR c/81859
19315         * pretty-print.c (pp_format): Use strnlen in %.*s to avoid reading
19316         past the end of an array.
19317         (test_pp_format): Add test cases.
19318
19319 2017-08-17  Richard Sandiford  <richard.sandiford@linaro.org>
19320
19321         * internal-fn.def (CLRSB, CLZ, CTZ, FFS, PARITY, POPCOUNT): Add
19322         missing ECF_NOTHROW flags.
19323
19324 2017-08-17  Peter Bergner  <bergner@vnet.ibm.com>
19325
19326         PR target/72804
19327         * config/rs6000/vsx.md (*vsx_le_permute_<mode>): Add support for
19328         operands residing in integer registers.
19329         (*vsx_le_perm_load_<mode>): Likewise.
19330         (*vsx_le_perm_store_<mode>): Likewise.
19331         (define_peephole2): Add peepholes to optimize the above.
19332
19333 2017-08-17  Marek Polacek  <polacek@redhat.com>
19334
19335         PR middle-end/81814
19336         * fold-const.c (operand_equal_for_comparison_p): Remove code that used
19337         to mimic what shorten_compare did.  Change the return type to bool.
19338         (fold_cond_expr_with_comparison): Update call to
19339         operand_equal_for_comparison_p.
19340         (fold_ternary_loc): Likewise.
19341
19342 2017-08-17  Jackson Woodruff  <jackson.woodruff@arm.com>
19343
19344         * aarch64-simd.md (mov<mode>): No longer force zero immediate into
19345         register.
19346         (*aarch64_simd_mov<mode>): Add new case for stp using zero immediate.
19347
19348 2017-08-17  Richard Biener  <rguenther@suse.de>
19349
19350         * tree-ssa-structalias.c (solve_graph): When propagating
19351         to successors update the graphs succ edges and avoid duplicate work.
19352
19353 2017-08-17  Maxim Ostapenko  <m.ostapenko@samsung.com>
19354
19355         PR target/81861
19356         * config/i386/i386.c (ix86_option_override_internal): Save target
19357         specific options after ix86_stack_protector_guard_reg was changed.
19358
19359 2017-08-17  Richard Biener  <rguenther@suse.de>
19360
19361         PR tree-optimization/81827
19362         * tree-ssa-structalias.c (struct variable_info): Add is_reg_var flag.
19363         (new_var_info): Initialize it conservatively.
19364         (get_call_vi): Mark register vars.
19365         (new_scalar_tmp_constraint_exp): Likewise.
19366         (handle_rhs_call): Likewise.
19367         (handle_const_call): Likewise.
19368         (create_function_info_for): Likewise.
19369         (solve_constraints): Sort varinfos to separate register from
19370         non-register vars to pack points-to solution bitmaps during
19371         iteration.
19372
19373 2017-08-17  Marek Polacek  <polacek@redhat.com>
19374
19375         * gimplify.c (gimplify_adjust_omp_clauses): Compare with 0 instead of 1.
19376
19377 2017-08-17  Richard Biener  <rguenther@suse.de>
19378
19379         * tree-vrp.c (vrp_int_const_binop): Do not set *overflow_p
19380         to true when overflow is undefined and we saturated the result.
19381
19382 2017-08-17  Alan Modra  <amodra@gmail.com>
19383
19384         PR target/80938
19385         * config/rs6000/rs6000.c (rs6000_savres_strategy): Revert 2017-08-09.
19386         Don't use store multiple if only one reg needs saving.
19387         (interesting_frame_related_regno): New function.
19388         (rs6000_frame_related): Don't emit frame info for regs that
19389         don't need saving.
19390         (rs6000_emit_epilogue): Likewise.
19391
19392 2017-08-16  Nathan Sidwell  <nathan@acm.org>
19393
19394         * tree-core.h (tree_type_non_common): Rename binfo to lang_1.
19395         * tree.h (TYPE_BINFO): Use type_non_common.maxval.
19396         (TYPE_LANG_SLOT_1): Use type_non_common.lang_1, for any type.
19397         * tree.c (free_lang_data_in_type): Use else-if chain.  Always
19398         clear TYPE_LANG_1.  Remove obsolete member-function stripping.
19399         (find_decls_types_r): Comment about TYPE_MAX_VALUES_RAW.
19400         (verify_type): Adjust for TYPE_BINFO move.
19401         * lto-streamer-out.c (DFS::DFS_write_tree_body): No need to
19402         process TYPE_BINFO directly.
19403         (hash_tree): Likewise.
19404         * tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers):
19405         Likewise.
19406         * tree-streamer-out.c (write_ts_type_non_common_tree_pointers):
19407         Likewise.
19408
19409 2017-08-16  David Malcolm  <dmalcolm@redhat.com>
19410
19411         * diagnostic-show-locus.c (colorizer::m_caret): Remove unused field.
19412
19413 2017-08-16  Uros Bizjak  <ubizjak@gmail.com>
19414
19415         PR target/46091
19416         * config/i386/i386.md (*anddi_1_btr): Change predicates of
19417         operand 0 and operand 1 to nomimmediate_operand. Add "m" constraint.
19418         Add ix86_binary_operator_ok to insn constraint.
19419         (*iordi_1_bts): Ditto.
19420         (*xordi_1_btc): Ditto.
19421         (*btsq): Change predicate of operand 0 to nonimmediate_operand.
19422         Update corresponding peephole2 pattern.
19423         (*btrq): Ditto.
19424         (*btcq): Ditto.
19425
19426 2017-08-16  Bin Cheng  <bin.cheng@arm.com>
19427
19428         PR tree-optimization/81832
19429         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Don't
19430         copy loop header which has IFN_LOOP_DIST_ALIAS call.
19431
19432 2017-08-16  Marek Polacek  <polacek@redhat.com>
19433
19434         PR middle/81695
19435         * fold-const.c (fold_indirect_ref_1): Restore original behavior
19436         regarding size_zero_node.
19437
19438 2017-08-16  Martin Liska  <mliska@suse.cz>
19439
19440         PR target/81753
19441         * config.gcc: Respect previously set extra_objs in case
19442         of darwin target.
19443
19444 2017-08-16  Richard Sandiford  <richard.sandiford@linaro.org>
19445
19446         PR tree-optimization/81835
19447         * tree-vect-loop.c (vect_is_simple_reduction): Simply checks for
19448         the phi SSA_NAME.  Check that the condition in a COND_EXPR does
19449         not depend on the phi.
19450
19451 2017-08-16  Alan Modra  <amodra@gmail.com>
19452
19453         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Delete
19454         dead code.
19455
19456 2017-08-16  Alan Modra  <amodra@gmail.com>
19457
19458         * config/rs6000/rs6000.c (rs6000_reg_live_or_pic_offset_p): Merge..
19459         (save_reg_p): ..into this.  Update all callers.
19460         (first_reg_to_save): Simplify.
19461
19462 2017-08-16  Alan Modra  <amodra@gmail.com>
19463
19464         * config/rs6000/rs6000.c (rs6000_savres_strategy): Don't restore
19465         fixed regs.
19466
19467 2017-08-15  Joseph Myers  <joseph@codesourcery.com>
19468
19469         PR target/78460
19470         PR target/67712
19471         * config/sh/sh-mem.cc (sh_expand_cmpnstr): Only unroll for
19472         constant count if that count is less than 32.
19473
19474 2017-08-15  Nathan Sidwell  <nathan@acm.org>
19475
19476         * gcc.c (execute): Emit friendlier message if inferior is killed
19477         by an external cause.
19478
19479 2017-08-15  Richard Biener  <rguenther@suse.de>
19480
19481         PR tree-optimization/81790
19482         * tree-ssa-sccvn.c (vn_lookup_simplify_result): Handle both
19483         CONSTRUCTORs from simplifying and VN.
19484
19485 2017-08-14  Martin Sebor  <msebor@redhat.com>
19486
19487         * builtin-attrs.def: Add comments.
19488
19489 2017-08-14  Martin Sebor  <msebor@redhat.com>
19490
19491         PR c/81117
19492         * doc/extend.texi (attribute nonstring): Document new attribute.
19493
19494 2017-08-14  Martin Sebor  <msebor@redhat.com>
19495
19496         PR c/81117
19497         * tree-diagnostic.c (default_tree_printer): Handle %G.
19498         * gimple-pretty-print.h (percent_G_format): Declare new function.
19499         * gimple-pretty-print.c (percent_G_format): Define.
19500         * tree-pretty-print.c (percent_K_format): Add argument.
19501
19502 2017-08-14  Martin Sebor  <msebor@redhat.com>
19503
19504         PR translation/79998
19505         * gimple-ssa-sprintf.c (pass_sprintf_length::handle_gimple_call):
19506         Remove a stray space.
19507
19508 2017-08-14  Uros Bizjak  <ubizjak@gmail.com>
19509
19510         PR target/46091
19511         * config/i386/i386.md (*anddi_1_btr): New insn_and_split pattern.
19512         (*iordi_1_bts): Ditto.
19513         (*xordi_1_btc): Ditto.
19514
19515 2017-08-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
19516
19517         PR target/79845
19518         * config/rs6000/linux64.h (INVALID_64BIT): Use quoted strings.
19519         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
19520         Likewise.
19521         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Use
19522         quoted strings, and make more translator-friendly.
19523         (darwin_rs6000_override_options): Likewise.
19524         (rs6000_option_override_internal): Likewise.
19525         (rs6000_return_in_memory): Fix overlong line.
19526         (init_cmulative_args): Use quoted strings, and make more
19527         translator-friendly.
19528         (rs6000_pass_by_reference): Fix overlong line.
19529         (def_builtin): Use quoted strings.
19530         (altivec_expand_predicate_builtin): Use quoted strings, and make
19531         more translator-friendly.
19532         (htm_expand_builtin): Use quoted strings.
19533         (cpu_expand_builtin): Use quoted strings, and make more
19534         translator-friendly.
19535         (altivec_expand_builtin): Likewise.
19536         (paired_expand_predicate_builtin): Likewise.
19537         (rs6000_invalid_builtin): Likewise.
19538         (builtin_function_type): Use quoted strings.
19539         (rs6000_expand_split_stack_prologue): Use quoted strings, and make
19540         more translator-friendly.
19541         (rs6000_trampoline_init): Likewise.
19542         (rs6000_handle_altivec_attribute): Likewise.
19543         (rs6000_inner_target_options): Use quoted strings.
19544         (rs6000_disable_incompatible_switches): Likewise.
19545         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Use quoted
19546         strings, and make more translator-friendly.
19547         (SUBSUBTARGET_OVERRIDE_OPTIONS): Use quoted strings.
19548
19549 2017-08-14  Bin Cheng  <bin.cheng@arm.com>
19550
19551         PR tree-optimization/81799
19552         * tree-loop-distribution.c (version_loop_by_alias_check): Force
19553         cond_expr to simple gimple operand.
19554
19555 2017-08-14  Wilco Dijkstra  <wdijkstr@arm.com>
19556
19557         PR middle-end/46932
19558         * doc/sourcebuild.texi (autoincdec): Add autoincdec description.
19559
19560 2017-08-14  Georg-Johann Lay  <avr@gjlay.de>
19561
19562         PR target/81754
19563         PR target/81268
19564         * config/avr/avr.opt (mgas-isr-prologues): New Var avr_gasisr_prologues.
19565         * config/avr/avr.md (gasisr, *gasisr): Use it instead of
19566         TARGET_GASISR_PROLOGUES.
19567         * config/avr/avr.c (avr_option_override): Same.
19568         (avr_pass_pre_proep::execute): Same.
19569
19570 2017-08-13  H.J. Lu  <hongjiu.lu@intel.com>
19571
19572         PR target/81820
19573         * config/i386/i386.c (ix86_finalize_stack_frame_flags): Replace
19574         frame pointer with stack pointer - UNITS_PER_WORD in debug insns.
19575
19576 2017-08-13  Uros Bizjak  <ubizjak@gmail.com>
19577
19578         * config/i386/i386.md (*load_tp_<mode>): Redefine as
19579         define_insn_and_split.  Split to a memory load from 0 in
19580         DEFAULT_TLS_SEG_REG address space.  Merge with *load_tp_x32
19581         using PTR mode iterator.
19582         (*load_tp_x32_zext"): Redefine as define_insn_and_split.
19583         Split to a memory load from 0 in DEFAULT_TLS_SEG_REG address space.
19584         (*add_tp_<mode>): Redefine as define_insn_and_split.
19585         Split to an add with a memory load from 0 in DEFAULT_TLS_SEG_REG
19586         address space.  Merge with *add_tp_x32 using PTR mode iterator.
19587         (*add_tp_x32_zext"): Redefine as define_insn_and_split.
19588         Split to an add with a  memory load from 0 in
19589         DEFAULT_TLS_SEG_REG address space.
19590
19591 2017-08-12  Andrew Pinski  <apinski@cavium.com>
19592
19593         * config/aarch64/aarch64-option-extensions.def (rdma):
19594         Fix feature string to what Linux prints out in /proc/cpuinfo.
19595
19596 2017-08-12  Pierre-Marie de Rodat  <derodat@adacore.com>
19597
19598         PR ada/79542
19599         * dwarf2out.c (modified_type_die): For C typedef types that have
19600         an ultimate origin, process the ultimate origin instead of the
19601         input type.
19602         (gen_typedef_die): Assert that input DECLs have no ultimate
19603         origin.
19604         (gen_type_die_with_usage): For typedef variants that have an
19605         ultimate origin, just call gen_decl_die on the original DECL.
19606         (process_scope_var): Avoid creating DIEs for local typedefs and
19607         concrete static variables.
19608
19609 2017-08-12  Alan Modra  <amodra@gmail.com>
19610
19611         PR target/81170
19612         PR target/81295
19613         * config/rs6000/sysv4.h (STARTFILE_LINUX_SPEC): Upgrade to
19614         match gnu-user.h startfile.
19615         (ENDFILE_LINUX_SPEC): Similarly.
19616
19617 2017-08-11  Thomas Schwinge  <thomas@codesourcery.com>
19618
19619         PR lto/81430
19620         * config/nvptx/nvptx.c (nvptx_override_options_after_change):
19621         Remove function.
19622         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Remove definition.
19623
19624 2017-08-11  Tamar Christina  <tamar.christina@arm.com>
19625         * config/aarch64/aarch64.md (mov<mode>): Change.
19626         (*movhf_aarch64, *movsf_aarch64, *movdf_aarch64):
19627         aarch64_reg_or_fp_float into aarch64_reg_or_fp_zero.
19628         * config/aarch64/predicates.md (aarch64_reg_or_fp_float): Removed.
19629
19630 2017-08-11  Eric Botcazou  <ebotcazou@adacore.com>
19631
19632         * tree-sra.c (build_access_from_expr_1): Use more precise diagnostics
19633         for storage order barriers.
19634
19635 2017-08-11  Martin Liska  <mliska@suse.cz>
19636
19637         PR tree-opt/79987
19638         * tree-chkp.c (chkp_get_bounds_for_decl_addr): Do not instrument
19639         variables of void type.
19640
19641 2017-08-11  Martin Liska  <mliska@suse.cz>
19642
19643         * asan.c (asan_protect_global): Replace ASM_OUTPUT_DEF with
19644         TARGET_SUPPORTS_ALIASES.
19645         * cgraph.c (cgraph_node::create_same_body_alias): Likewise.
19646         * ipa-visibility.c (can_replace_by_local_alias): Likewise.
19647         (optimize_weakref): Likewise.
19648         * symtab.c (symtab_node::noninterposable_alias): Likewise.
19649         * varpool.c (varpool_node::create_extra_name_alias): Likewise.
19650         * defaults.h: Introduce TARGET_SUPPORTS_ALIASES.
19651
19652 2017-08-11  Martin Liska  <mliska@suse.cz>
19653
19654         PR ipa/81213
19655         * config/i386/i386.c (make_resolver_func): Do complete
19656         refactoring of the function.
19657
19658 2017-08-10  Uros Bizjak  <ubizjak@gmail.com>
19659
19660         PR target/81708
19661         * config/i386/i386.opt (mstack-protector-guard-symbol=): New option
19662         * config/i386/i386.c (ix86_stack_protect_guard): Use
19663         ix86_stack_protect_guard_symbol_str to generate varible declaration.
19664         * doc/invoke.texi (x86 Options): Document
19665         -mstack-protector-guard-symbol= option.
19666
19667 2017-08-10  Uros Bizjak  <ubizjak@gmail.com>
19668
19669         * config/i386/i386-protos.h (ix86_split_stack_guard): New prototype.
19670         * config/i386/i386.c (ix86_split_stack_guard): New function.
19671         (ix86_xpand_split_stack_prologue): Call ix86_split_stack_guard.
19672         (ix86_legitimate_address_p) <case UNSPEC_STACK_CHECK>: Remove.
19673         (i386_asm_output_addr_const_extra) <case UNSPEC_STACK_CHECK>: Ditto.
19674         (optput_pic_addr_const): Remove UNSPEC_STACK_CHECK handling.
19675         * config/i386/i386.md (unspec): Remove UNSPEC_STACK_CHECK.
19676         (split_stack_space_check): Call ix86_split_stack_guard.
19677
19678 2017-08-10  Martin Sebor  <msebor@redhat.com>
19679
19680         * print-tree.c (print_node): Print location using the established
19681         format %s:%i%i.
19682         Replace spaces with colons.
19683         (debug_raw, debug): Ditto.
19684
19685 2017-08-10  Martin Sebor  <msebor@redhat.com>
19686
19687         PR c++/81586
19688         * pretty-print.c (pp_format): Correct the handling of %s precision.
19689
19690 2017-08-10  H.J. Lu  <hongjiu.lu@intel.com>
19691
19692         PR target/81736
19693         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Renamed
19694         to ...
19695         (ix86_finalize_stack_frame_flags): This.  Also clear
19696         frame_pointer_needed if -fno-omit-frame-pointer is used without
19697         stack access.
19698         (ix86_expand_prologue): Replace ix86_finalize_stack_realign_flags
19699         with ix86_finalize_stack_frame_flags.
19700         (ix86_expand_epilogue): Likewise.
19701         (ix86_expand_split_stack_prologue): Likewise.
19702         * doc/invoke.texi: Add a note for -fno-omit-frame-pointer.
19703
19704 2017-08-10  Martin Liska  <mliska@suse.cz>
19705
19706         PR c++/81355
19707         * c-attribs.c (handle_target_attribute):
19708         Report warning for an empty string argument of target attribute.
19709
19710 2017-08-09  Jakub Jelinek  <jakub@redhat.com>
19711
19712         PR c/81687
19713         * omp-low.c (omp_copy_decl): Don't remap FORCED_LABEL or DECL_NONLOCAL
19714         LABEL_DECLs.
19715         * tree-cfg.c (move_stmt_op): Don't adjust DECL_CONTEXT of FORCED_LABEL
19716         or DECL_NONLOCAL labels.
19717         (move_stmt_r) <case GIMPLE_LABEL>: Adjust DECL_CONTEXT of FORCED_LABEL
19718         or DECL_NONLOCAL labels here.
19719
19720 2017-08-09  Will Schmidt  <will_schmidt@vnet.ibm.com>
19721
19722         * config/rs6000/rs6000.c (rs6000_option_override_internal): Add blurb
19723         to indicate when early gimple folding has been disabled.
19724         (rs6000_gimple_fold_builtin): Add debug content.
19725         (rs6000_invalid_builtin): Fix whitespace.
19726         (rs6000_expand_builtin): Fix whitespace.
19727         * config/rs6000/rs6000.opt: Add option for -mfold-gimple.
19728
19729 2017-08-09  Segher Boessenkool  <segher@kernel.crashing.org>
19730
19731         PR target/80938
19732         * config/rs6000/rs6000.c (rs6000_savres_strategy): Don't use
19733         SAVE_MULTIPLE if not all the registers that saves, should be saved.
19734
19735 2017-08-09  Jim Wilson  <jim.wilson@linaro.org>
19736
19737         * config/aarch64/aarch64-cores.def (falkor): Use falkor pipeline.
19738         (qdf24xx): Likewise.
19739         * config/aarch64/aarch64.md: Include falkor.md.
19740         * config/aarch64/falkor.md: New.
19741
19742 2017-08-09  Marek Polacek  <polacek@redhat.com>
19743
19744         PR c/81233
19745         * diagnostic-core.h (emit_diagnostic_valist): Add declaration.
19746         * diagnostic.c (emit_diagnostic): Add a comment.
19747         (emit_diagnostic_valist): New function.
19748
19749 2017-08-09  Marek Polacek  <polacek@redhat.com>
19750
19751         PR c/81417
19752         * input.c (make_location): New overload.
19753         * input.h (make_location): Declare.
19754
19755 2017-08-08  Alan Modra  <amodra@gmail.com>
19756             H.J. Lu  <hongjiu.lu@intel.com>
19757
19758         PR driver/81523
19759         * gcc.c (NO_PIE_SPEC): Delete.
19760         (PIE_SPEC): Define as !no-pie/pie.  Move static|shared|r
19761         exclusion..
19762         (LINK_PIE_SPEC): ..to here.
19763         (LINK_COMMAND_SPEC): Support -no-pie.
19764         * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Correct
19765         chain of crtbegin*.o selection, update for PIE_SPEC changes and
19766         format.
19767         (GNU_USER_TARGET_ENDFILE_SPEC): Similarly.
19768         * config/sol2.h (STARTFILE_CRTBEGIN_SPEC): Similarly.
19769         (ENDFILE_CRTEND_SPEC): Similarly.
19770
19771 2017-08-08  Uros Bizjak  <ubizjak@gmail.com>
19772
19773         PR target/81708
19774         * config/i386/i386.opt (mstack-protector-guard-reg=): New option
19775         (mstack-protector-guard-offset=): Ditto.
19776         * config/i386/i386.c (ix86_option_override): Handle
19777         -mstack-protector-guard-reg= and -mstack-protector-guard-offset=
19778         options.
19779         (ix86_stack_protect_guard): Use ix86_stack_protect_guard_reg and
19780         ix86_stack_protect_guard_offset variables.
19781         (TARGET_STACK_PROTECT_GUARD): Always define.
19782         * doc/invoke.texi (x86 Options): Document -mstack-protector-guard-reg=
19783         and -mstack-protector-guard-offset= options.
19784
19785 2017-08-08  Bin Cheng  <bin.cheng@arm.com>
19786
19787         * tree-ssa-loop-ivopts.c (relate_compare_use_with_all_cands): Handle
19788         boundary case for the last candidate.
19789
19790 2017-08-08  Bin Cheng  <bin.cheng@arm.com>
19791
19792         * doc/invoke.texi: Document -ftree-loop-distribution for O3.
19793         * opts.c (default_options_table): Add OPT_ftree_loop_distribution.
19794
19795 2017-08-08  Tamar Christina  <tamar.christina@arm.com>
19796
19797         PR middle-end/19706
19798         * config/aarch64/aarch64.md (xorsign<mode>3): New optabs.
19799         * config/aarch64/aarch64-builtins.c
19800         (aarch64_builtin_vectorized_function): Added CASE_CFN_XORSIGN.
19801         * config/aarch64/aarch64-simd-builtins.def: Added xorsign BINOP.
19802         * config/aarch64/aarch64-simd.md: Added xorsign<mode>3
19803
19804 2017-08-08  Tamar Christina  <tamar.christina@arm.com>
19805             Andrew Pinski <pinskia@gmail.com>
19806
19807         PR middle-end/19706
19808         * internal-fn.def (XORSIGN): New.
19809         * optabs.def (xorsign_optab): New.
19810         * tree-ssa-math-opts.c (is_copysign_call_with_1): New.
19811         (convert_expand_mult_copysign): New.
19812         (pass_optimize_widening_mul::execute): Call
19813         convert_expand_mult_copysign.
19814
19815 2017-08-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
19816
19817         PR tree-optimization/81354
19818         * gimple-ssa-strength-reduction.c (create_add_on_incoming_edge):
19819         Insert on edges rather than explicitly creating landing pads.
19820         (analyze_candidates_and_replace): Commit edge inserts.
19821
19822 2017-08-08  Richard Biener  <rguenther@suse.de>
19823
19824         PR middle-end/81719
19825         * tree-ssa-loop-niter.c: Include tree-dfa.h.
19826         (expand_simple_operations): Also look through ADDR_EXPRs with
19827         MEM_REF bases treating them as POINTER_PLUS_EXPR.
19828
19829 2017-08-08  Richard Biener  <rguenther@suse.de>
19830
19831         PR tree-optimization/81723
19832         * tree-vect-slp.c (struct bst_traits): New hash traits.
19833         (bst_fail): New global.
19834         (vect_build_slp_tree_2): New worker, split out from ...
19835         (vect_build_slp_tree): ... this now wrapping it with using
19836         bst_fail set to cache SLP tree build fails.  Properly handle
19837         max_tree_size.
19838         (vect_analyze_slp_instance): Allocate and free bst_fail.
19839
19840 2017-08-08  Martin Liska  <mliska@suse.cz>
19841
19842         PR tree-opt/81696
19843         * ipa-icf-gimple.c (func_checker::compare_cst_or_decl): Consider
19844         LABEL_DECLs that can be from a different function.
19845
19846 2017-08-08  Bin Cheng  <bin.cheng@arm.com>
19847
19848         PR tree-optimization/81744
19849         * tree-predcom.c (prepare_finalizers_chain): Deep copy expr of
19850         loop's number of iterations.
19851
19852 2017-08-08  Martin Liska  <mliska@suse.cz>
19853
19854         * asan.c: Include header files.
19855         * attribs.c (build_decl_attribute_variant): New function moved
19856         from tree.[ch].
19857         (build_type_attribute_qual_variant): Likewise.
19858         (cmp_attrib_identifiers): Likewise.
19859         (simple_cst_list_equal): Likewise.
19860         (omp_declare_simd_clauses_equal): Likewise.
19861         (attribute_value_equal): Likewise.
19862         (comp_type_attributes): Likewise.
19863         (build_type_attribute_variant): Likewise.
19864         (lookup_ident_attribute): Likewise.
19865         (remove_attribute): Likewise.
19866         (merge_attributes): Likewise.
19867         (merge_type_attributes): Likewise.
19868         (merge_decl_attributes): Likewise.
19869         (merge_dllimport_decl_attributes): Likewise.
19870         (handle_dll_attribute): Likewise.
19871         (attribute_list_equal): Likewise.
19872         (attribute_list_contained): Likewise.
19873         * attribs.h (lookup_attribute): New function moved from tree.[ch].
19874         (lookup_attribute_by_prefix): Likewise.
19875         * bb-reorder.c: Include header files.
19876         * builtins.c: Likewise.
19877         * calls.c: Likewise.
19878         * cfgexpand.c: Likewise.
19879         * cgraph.c: Likewise.
19880         * cgraphunit.c: Likewise.
19881         * convert.c: Likewise.
19882         * dwarf2out.c: Likewise.
19883         * final.c: Likewise.
19884         * fold-const.c: Likewise.
19885         * function.c: Likewise.
19886         * gimple-expr.c: Likewise.
19887         * gimple-fold.c: Likewise.
19888         * gimple-pretty-print.c: Likewise.
19889         * gimple.c: Likewise.
19890         * gimplify.c: Likewise.
19891         * hsa-common.c: Likewise.
19892         * hsa-gen.c: Likewise.
19893         * internal-fn.c: Likewise.
19894         * ipa-chkp.c: Likewise.
19895         * ipa-cp.c: Likewise.
19896         * ipa-devirt.c: Likewise.
19897         * ipa-fnsummary.c: Likewise.
19898         * ipa-inline.c: Likewise.
19899         * ipa-visibility.c: Likewise.
19900         * ipa.c: Likewise.
19901         * lto-cgraph.c: Likewise.
19902         * omp-expand.c: Likewise.
19903         * omp-general.c: Likewise.
19904         * omp-low.c: Likewise.
19905         * omp-offload.c: Likewise.
19906         * omp-simd-clone.c: Likewise.
19907         * opts-global.c: Likewise.
19908         * passes.c: Likewise.
19909         * predict.c: Likewise.
19910         * sancov.c: Likewise.
19911         * sanopt.c: Likewise.
19912         * symtab.c: Likewise.
19913         * toplev.c: Likewise.
19914         * trans-mem.c: Likewise.
19915         * tree-chkp.c: Likewise.
19916         * tree-eh.c: Likewise.
19917         * tree-into-ssa.c: Likewise.
19918         * tree-object-size.c: Likewise.
19919         * tree-parloops.c: Likewise.
19920         * tree-profile.c: Likewise.
19921         * tree-ssa-ccp.c: Likewise.
19922         * tree-ssa-live.c: Likewise.
19923         * tree-ssa-loop.c: Likewise.
19924         * tree-ssa-sccvn.c: Likewise.
19925         * tree-ssa-structalias.c: Likewise.
19926         * tree-ssa.c: Likewise.
19927         * tree-streamer-in.c: Likewise.
19928         * tree-vectorizer.c: Likewise.
19929         * tree-vrp.c: Likewise.
19930         * tsan.c: Likewise.
19931         * ubsan.c: Likewise.
19932         * varasm.c: Likewise.
19933         * varpool.c: Likewise.
19934         * tree.c: Remove functions moved to attribs.[ch].
19935         * tree.h: Likewise.
19936         * config/aarch64/aarch64.c: Add attrs.h header file.
19937         * config/alpha/alpha.c: Likewise.
19938         * config/arc/arc.c: Likewise.
19939         * config/arm/arm.c: Likewise.
19940         * config/avr/avr.c: Likewise.
19941         * config/bfin/bfin.c: Likewise.
19942         * config/c6x/c6x.c: Likewise.
19943         * config/cr16/cr16.c: Likewise.
19944         * config/cris/cris.c: Likewise.
19945         * config/darwin.c: Likewise.
19946         * config/epiphany/epiphany.c: Likewise.
19947         * config/fr30/fr30.c: Likewise.
19948         * config/frv/frv.c: Likewise.
19949         * config/ft32/ft32.c: Likewise.
19950         * config/h8300/h8300.c: Likewise.
19951         * config/i386/winnt.c: Likewise.
19952         * config/ia64/ia64.c: Likewise.
19953         * config/iq2000/iq2000.c: Likewise.
19954         * config/lm32/lm32.c: Likewise.
19955         * config/m32c/m32c.c: Likewise.
19956         * config/m32r/m32r.c: Likewise.
19957         * config/m68k/m68k.c: Likewise.
19958         * config/mcore/mcore.c: Likewise.
19959         * config/microblaze/microblaze.c: Likewise.
19960         * config/mips/mips.c: Likewise.
19961         * config/mmix/mmix.c: Likewise.
19962         * config/mn10300/mn10300.c: Likewise.
19963         * config/moxie/moxie.c: Likewise.
19964         * config/msp430/msp430.c: Likewise.
19965         * config/nds32/nds32-isr.c: Likewise.
19966         * config/nds32/nds32.c: Likewise.
19967         * config/nios2/nios2.c: Likewise.
19968         * config/nvptx/nvptx.c: Likewise.
19969         * config/pa/pa.c: Likewise.
19970         * config/pdp11/pdp11.c: Likewise.
19971         * config/powerpcspe/powerpcspe.c: Likewise.
19972         * config/riscv/riscv.c: Likewise.
19973         * config/rl78/rl78.c: Likewise.
19974         * config/rx/rx.c: Likewise.
19975         * config/s390/s390.c: Likewise.
19976         * config/sh/sh.c: Likewise.
19977         * config/sol2.c: Likewise.
19978         * config/sparc/sparc.c: Likewise.
19979         * config/spu/spu.c: Likewise.
19980         * config/stormy16/stormy16.c: Likewise.
19981         * config/tilegx/tilegx.c: Likewise.
19982         * config/tilepro/tilepro.c: Likewise.
19983         * config/v850/v850.c: Likewise.
19984         * config/vax/vax.c: Likewise.
19985         * config/visium/visium.c: Likewise.
19986         * config/xtensa/xtensa.c: Likewise.
19987
19988 2017-08-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
19989
19990         PR target/81593
19991         * config/rs6000/vsx.md (vsx_concat_<mode>, VSX_D): Cleanup
19992         constraints since the -mupper-regs-* switches have been
19993         eliminated.
19994         (vsx_concat_<mode>_1): New combiner insns to recognize inserting
19995         into a vector from a double word element that was extracted from
19996         another vector, and eliminate extra XXPERMDI instructions.
19997         (vsx_concat_<mode>_2): Likewise.
19998         (vsx_concat_<mode>_3): Likewise.
19999         (vsx_set_<mode>, VSX_D): Rewrite vector set in terms of vector
20000         concat to allow optimizing inserts from previous extracts.
20001
20002 2017-08-07  Uros Bizjak  <ubizjak@gmail.com>
20003
20004         * config/i386/i386.c (ix86_stack_protect_guard): Generate
20005         memory reference to a SSP offset in TLS address space.
20006         (ix86_print_operand) <case '@'>: Remove.
20007         (ix86_print_operand_punct_valid_p): Remove '@' code.
20008         * config/i386/i386.md (unspec): Remove UNSPEC_SP_TLS_SET and
20009         UNSPEC_SP_TLS_TEST.
20010         (stack_tls_protect_set_<mode>): Remove.
20011         (stack_protect_set): Do not call gen_stack_tls_protect_set_<mode>.
20012         (stack_tls_protect_test_<mode>): Remove.
20013         (stack_protect_test): Do not call gen_stack_tls_protect_test_<mode>.
20014
20015 2017-08-07  Olivier Hainque  <hainque@adacore.com>
20016
20017         PR target/81755
20018         * config/vxworksae.h (VXWORKS_HAVE_TLS): Define.
20019
20020 2017-08-07  Douglas Rupp  <rupp@adacore.com>
20021
20022         * Makefile.in (install-mkheaders): Fix typo, where the multi_dir
20023         variable was referenced as multidir in command.
20024
20025 2017-08-07  Jakub Jelinek  <jakub@redhat.com>
20026
20027         PR c/69389
20028         * gimplify.c (goa_stabilize_expr): Handle BIT_INSERT_EXPR and
20029         BIT_FIELD_REF.
20030
20031 2017-08-07  Martin Liska  <mliska@suse.cz>
20032
20033         * config/m32c/m32c.c: Add include of stringpool.h and attribs.h.
20034         * config/rl78/rl78.c: Add include of attribs.h.
20035         * config/sh/sh.c: Likewise.
20036         * config/v850/v850.c: Likewise.
20037
20038 2017-08-07  Tom de Vries  <tom@codesourcery.com>
20039
20040         PR middle-end/78266
20041         * omp-expand.c (expand_oacc_for): Ensure diff_type is large enough.
20042
20043 2017-08-07  Martin Liska  <mliska@suse.cz>
20044
20045         * config/mips/mips.c: Include attribs.h.
20046
20047 2017-08-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
20048
20049         PR fortran/68829
20050         * doc/invoke.texi: Document change in behvaior for -Ofast for
20051         Fortran.
20052
20053 2017-08-07  Wilco Dijkstra  <wdijkstr@arm.com>
20054
20055         * config/aarch64/aarch64.c (aarch64_pushwb_single_reg):
20056         Use gen_frame_mem.
20057         (aarch64_pop_regs): Likewise.
20058         (aarch64_gen_load_pair): Likewise.
20059         (aarch64_save_callee_saves): Likewise.
20060         (aarch64_restore_callee_saves): Likewise.
20061
20062 2017-08-07  H.J. Lu  <hongjiu.lu@intel.com>
20063
20064         * config/i386/i386.c: Revert the last change.
20065
20066 2017-08-07  H.J. Lu  <hongjiu.lu@intel.com>
20067
20068         PR target/81736
20069         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Renamed
20070         to ...
20071         (ix86_finalize_stack_frame_flags): This.  Also clear
20072         frame_pointer_needed if -fno-omit-frame-pointer is used without
20073         stack access.
20074         (ix86_expand_prologue): Replace ix86_finalize_stack_realign_flags
20075         with ix86_finalize_stack_frame_flags.
20076         (ix86_expand_epilogue): Likewise.
20077         (ix86_expand_split_stack_prologue): Likewise.
20078
20079 2017-08-07  H.J. Lu  <hongjiu.lu@intel.com>
20080
20081         PR target/81743
20082         * config/i386/i386.c (get_builtin_code_for_version): Set priority
20083         to P_AES for Westmere.
20084
20085 2017-08-07  Jonathan Yong  <10walls@gmail.com>
20086
20087         * config/i386/mingw.opt (fset-stack-executable): Removed.
20088         * config/i386/cygming.opt (fset-stack-executable): Moved
20089         from mingw.opt.
20090         * config/i386/cygwin.h: Define CHECK_EXECUTE_STACK_ENABLED.
20091
20092 2017-08-07  Segher Boessenkool  <segher@kernel.crashing.org>
20093
20094         * print-rtl.c (print_exp): Print NOT as "~" instead of as "!".
20095
20096 2017-08-07  Marek Polacek  <polacek@redhat.com>
20097
20098         PR middle-end/81737
20099         * fold-const.c (fold_indirect_ref_1): Check type_domain.
20100
20101 2017-08-07  Martin Liska  <mliska@suse.cz>
20102
20103         * attribs.h (canonicalize_attr_name): New function.
20104         (cmp_attribs): Move from c-format.c and adjusted.
20105         (is_attribute_p): Moved from tree.h.
20106         * tree-inline.c: Add new includes.
20107         * tree.c (cmp_attrib_identifiers): Use cmp_attribs.
20108         (private_is_attribute_p): Remove.
20109         (private_lookup_attribute): Likewise.
20110         (private_lookup_attribute_by_prefix): Simplify.
20111         (remove_attribute): Use is_attribute_p.
20112         * tree.h: Remove removed declarations.
20113
20114 2017-08-07  Jakub Jelinek  <jakub@redhat.com>
20115
20116         PR middle-end/81698
20117         * stmt.c (emit_case_dispatch_table): Add DEFAULT_EDGE argument,
20118         instead of computing it in the function.  Formatting fix.
20119         (expand_case): Don't rely on default_edge being the first edge,
20120         clear it if removing it, pass default_edge to
20121         emit_case_dispatch_table.
20122         (expand_sjlj_dispatch_table): Pass NULL as DEFAULT_EDGE, formatting
20123         fix.
20124
20125 2017-08-06  Uros Bizjak  <ubizjak@gmail.com>
20126
20127         * config/alpha/alpha.c (alpha_reorg): If trap is the last active
20128         insn in the function, emit NOP after the insn.
20129
20130 2017-08-06  Tom de Vries  <tom@codesourcery.com>
20131
20132         * omp-expand.c (expand_oacc_for): Add missing edge probability for tile
20133         and element loops.
20134
20135 2017-08-06  Tom de Vries  <tom@codesourcery.com>
20136
20137         * omp-expand.c (expand_oacc_for): Add missing edge probability for chunk
20138         loop.
20139
20140 2017-08-04  Yury Gribov  <tetra2005@gmail.com>
20141
20142         PR tree-optimization/57371
20143         * match.pd: New pattern.
20144
20145 2017-08-04  Marek Polacek  <polacek@redhat.com>
20146
20147         PR middle-end/81695
20148         * fold-const.c (fold_indirect_ref_1): For ((int *)&a + 4 -> a[1],
20149         perform the computation in offset_int.
20150
20151 2017-08-04  Richard Sandiford  <richard.sandiford@linaro.org>
20152
20153         PR tree-optimization/81136
20154         * tree-vectorizer.h: Include tree-hash-traits.h.
20155         (vec_base_alignments): New typedef.
20156         (vec_info): Add a base_alignments field.
20157         (vect_record_base_alignments): Declare.
20158         * tree-data-ref.h (data_reference): Add an is_conditional_in_stmt
20159         field.
20160         (DR_IS_CONDITIONAL_IN_STMT): New macro.
20161         (create_data_ref): Add an is_conditional_in_stmt argument.
20162         * tree-data-ref.c (create_data_ref): Likewise.  Use it to initialize
20163         the is_conditional_in_stmt field.
20164         (data_ref_loc): Add an is_conditional_in_stmt field.
20165         (get_references_in_stmt): Set the is_conditional_in_stmt field.
20166         (find_data_references_in_stmt): Update call to create_data_ref.
20167         (graphite_find_data_references_in_stmt): Likewise.
20168         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
20169         * tree-vect-data-refs.c (vect_analyze_data_refs): Likewise.
20170         (vect_record_base_alignment): New function.
20171         (vect_record_base_alignments): Likewise.
20172         (vect_compute_data_ref_alignment): Adjust base_addr and aligned_to
20173         for nested statements even if we fail to compute a misalignment.
20174         Use pooled base alignments for unconditional references.
20175         (vect_find_same_alignment_drs): Compare base addresses instead
20176         of base objects.
20177         (vect_analyze_data_refs_alignment): Call vect_record_base_alignments.
20178         * tree-vect-slp.c (vect_slp_analyze_bb_1): Likewise.
20179
20180 2017-08-04  Richard Sandiford  <richard.sandiford@linaro.org>
20181
20182         * tree-vectorizer.h (vec_info): Add a constructor and destructor.
20183         Add an explicit name for the enum.  Use auto_vec for slp_instances
20184         and grouped_stores.
20185         (_loop_vec_info): Add a constructor and destructor.  Use auto_vec
20186         for all vectors.
20187         (_bb_vec_info): Add a constructor and destructor.
20188         (vinfo_for_stmt): Return NULL for uids of -1 as well.
20189         (destroy_loop_vec_info): Delete.
20190         (vect_destroy_datarefs): Likewise.
20191         * tree-vectorizer.c (vect_destroy_datarefs): Delete.
20192         (vec_info::vec_info): New function.
20193         (vec_info::~vec_info): Likewise.
20194         (vectorize_loops): Use delete instead of destroy_loop_vec_info.
20195         * tree-parloops.c (gather_scalar_reductions): Use delete instead of
20196         destroy_loop_vec_info.
20197         * tree-vect-loop.c (new_loop_vec_info): Replace with...
20198         (_loop_vec_info::_loop_vec_info): ...this.
20199         (destroy_loop_vec_info): Replace with...
20200         (_loop_vec_info::~_loop_vec_info): ...this.  Unconditionally delete
20201         the stmt_vec_infos.  Leave handling of vec_info information to its
20202         destructor.  Remove explicit vector releases.
20203         (vect_analyze_loop_form): Use new instead of new_loop_vec_info.
20204         (vect_analyze_loop): Use delete instead of destroy_loop_vec_info.
20205         * tree-vect-slp.c (new_bb_vec_info): Replace with...
20206         (_bb_vec_info::_bb_vec_info): ...this.  Don't reserve space in
20207         BB_VINFO_GROUPED_STORES or BB_VINFO_SLP_INSTANCES.
20208         (destroy_bb_vec_info): Replace with...
20209         (_bb_vec_info::~_bb_vec_info): ...this.  Leave handling of vec_info
20210         information to its destructor.
20211         (vect_slp_analyze_bb_1): Use new and delete instead of
20212         new_bb_vec_info and destroy_bb_vec_info.
20213         (vect_slp_bb): Replace 2 calls to destroy_bb_vec_info with a
20214         single delete.
20215
20216 2017-08-04  Richard Sandiford  <richard.sandiford@linaro.org>
20217
20218         * tree-data-ref.h (subscript): Add access_fn field.
20219         (data_dependence_relation): Add could_be_independent_p.
20220         (SUB_ACCESS_FN, DDR_COULD_BE_INDEPENDENT_P): New macros.
20221         (same_access_functions): Move to tree-data-ref.c.
20222         * tree-data-ref.c (ref_contains_union_access_p): New function.
20223         (access_fn_component_p): Likewise.
20224         (access_fn_components_comparable_p): Likewise.
20225         (dr_analyze_indices): Add a reference to access_fn_component_p.
20226         (dump_data_dependence_relation): Use SUB_ACCESS_FN instead of
20227         DR_ACCESS_FN.
20228         (constant_access_functions): Likewise.
20229         (add_other_self_distances): Likewise.
20230         (same_access_functions): Likewise.  (Moved from tree-data-ref.h.)
20231         (initialize_data_dependence_relation): Use XCNEW and remove
20232         explicit zeroing of DDR_REVERSED_P.  Look for a subsequence
20233         of access functions that have the same type.  Allow the
20234         subsequence to end with different bases in some circumstances.
20235         Record the chosen access functions in SUB_ACCESS_FN.
20236         (build_classic_dist_vector_1): Replace ddr_a and ddr_b with
20237         a_index and b_index.  Use SUB_ACCESS_FN instead of DR_ACCESS_FN.
20238         (subscript_dependence_tester_1): Likewise dra and drb.
20239         (build_classic_dist_vector): Update calls accordingly.
20240         (subscript_dependence_tester): Likewise.
20241         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Check
20242         DDR_COULD_BE_INDEPENDENT_P.
20243         * tree-vectorizer.h (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Test
20244         comp_alias_ddrs instead of may_alias_ddrs.
20245         * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr):
20246         New function.
20247         (vect_analyze_data_ref_dependence): Use it if
20248         DDR_COULD_BE_INDEPENDENT_P, but fall back to using the recorded
20249         distance vectors if that fails.
20250         (dependence_distance_ge_vf): New function.
20251         (vect_prune_runtime_alias_test_list): Use it.  Don't clear
20252         LOOP_VINFO_MAY_ALIAS_DDRS.
20253
20254 2017-08-04  Richard Biener  <rguenther@suse.de>
20255
20256         PR middle-end/81705
20257         * fold-const.c (fold_binary_loc): Properly restrict
20258         minus_var0 && minus_var1 case when associating undefined overflow
20259         entities.
20260
20261 2017-08-04  Tom de Vries  <tom@codesourcery.com>
20262
20263         * omp-simd-clone.c (simd_clone_adjust): Add missing edge probability.
20264
20265 2017-08-03  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
20266
20267         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
20268         Don't start diagnostic messages with a capital letter.
20269         * config/rs6000/rs6000.c (rs6000_option_override_internal):
20270         Likewise.
20271         (rs6000_invalid_builtin): Likewise.
20272         (rs6000_trampoline_init): Likewise.
20273
20274 2017-08-03  Jakub Jelinek  <jakub@redhat.com>
20275
20276         PR target/81621
20277         * bb-reorder.c (pass_partition_blocks::execute): Return TODO_df_finish
20278         after setting changeable df flags.
20279
20280 2017-08-03  Richard Biener  <rguenther@suse.de>
20281
20282         * tree-ssa-reassoc.c (should_break_up_subtract): Also break
20283         up if the use is in USE - X.
20284
20285 2017-08-03  Alexander Monakov  <amonakov@ispras.ru>
20286
20287         * toplev.c (dumpfile.h): New include.
20288         (internal_error_reentered): New static function.  Use it...
20289         (internal_error_function): ...here to handle reentered internal_error.
20290
20291 2017-08-03  Richard Biener  <rguenther@suse.de>
20292
20293         PR middle-end/81148
20294         * fold-const.c (split_tree): Add minus_var and minus_con
20295         arguments, remove unused loc arg.  Never generate NEGATE_EXPRs
20296         here but always use minus_*.
20297         (associate_trees): Assert we never associate with MINUS_EXPR
20298         and NULL first operand.  Do not recurse for PLUS_EXPR operands
20299         when associating as MINUS_EXPR either.
20300         (fold_binary_loc): Track minus_var and minus_con.
20301
20302 2017-08-03  Tom de Vries  <tom@codesourcery.com>
20303
20304         PR lto/81430
20305         * tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers): If
20306         ACCEL_COMPILER, apply finish_options on
20307         DECL_FUNCTION_SPECIFIC_OPTIMIZATION.
20308
20309 2017-08-03  Tom de Vries  <tom@codesourcery.com>
20310
20311         PR target/81662
20312         * config/nvptx/nvptx.c (nvptx_option_override): Emit sorry if
20313         function_entry_patch_area_size > 0.
20314
20315 2017-08-03  Jakub Jelinek  <jakub@redhat.com>
20316
20317         PR driver/81650
20318         * calls.c (alloc_max_size): Use HOST_WIDE_INT_UC (10??)
20319         instead of 10??LU, perform unit multiplication in wide_int,
20320         don't change alloc_object_size_limit if the limit is larger
20321         than SSIZE_MAX.
20322
20323         PR tree-optimization/81655
20324         PR tree-optimization/81588
20325         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Handle also
20326         the case when ranges[i].low and high are 1 for unsigned type with
20327         precision 1.
20328
20329         PR middle-end/81052
20330         * omp-low.c (diagnose_sb_0): Handle flag_openmp_simd like flag_openmp.
20331         (pass_diagnose_omp_blocks::gate): Enable also for flag_openmp_simd.
20332
20333 2017-08-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
20334
20335         * tree-vrp.h: Add include guard.
20336
20337 2017-08-02  Uros Bizjak  <ubizjak@gmail.com>
20338
20339         PR target/81644
20340         * config/i386/i386.md (unspecv): Add UNSPECV_UD2.
20341         (ud2): New insn pattern.
20342         * config/i386/i386.c (ix86_expand_epilogue):
20343         For naked functions, generate ud2 instead of trap insn.
20344
20345 2017-08-02  Marek Polacek  <polacek@redhat.com>
20346
20347         PR other/81667
20348         * alloc-pool.h (base_pool_allocator): Initialize m_elt_size.
20349
20350 2017-08-02  Tom de Vries  <tom@codesourcery.com>
20351             Cesar Philippidis  <cesar@codesourcery.com>
20352
20353         * config/nvptx/nvptx.c (nvptx_lockless_update, nvptx_lockfull_update):
20354         Add missing edge probabilities.
20355
20356 2017-08-02  Tamar Christina  <tamar.christina@arm.com>
20357
20358         * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
20359         Correct endianness.
20360
20361 2017-08-02  Jakub Jelinek  <jakub@redhat.com>
20362
20363         PR middle-end/79499
20364         * function.c (thread_prologue_and_epilogue_insns): Determine blocks
20365         for find_many_sub_basic_blocks bitmap by looking up BLOCK_FOR_INSN
20366         of first NONDEBUG_INSN_P in each of the split_prologue_seq and
20367         prologue_seq sequences - if any.
20368
20369 2017-08-02  Richard Biener  <rguenther@suse.de>
20370
20371         * tree-vect-stmts.c (vectorizable_store): Perform vector extracts
20372         via vectors if supported, integer extracts via punning if supported
20373         or otherwise vector extracts.
20374
20375 2017-08-02  Richard Biener  <rguenther@suse.de>
20376
20377         * tree-ssa-pre.c (bitmap_insert_into_set_1): Remove and inline
20378         into ...
20379         (bitmap_insert_into_set): ... this.
20380
20381 2017-08-02  Richard Biener  <rguenther@suse.de>
20382
20383         PR tree-optimization/81633
20384         Revert
20385         2015-08-17  Alan Hayward  <alan.hayward@arm.com>
20386
20387         PR tree-optimization/71752
20388         * tree-vect-slp.c (vect_get_slp_defs): Handle null operands.
20389
20390 2017-08-01  Daniel Santos  <daniel.santos@pobox.com>
20391
20392         * config/i386/i386.h (ix86_frame::outlined_save_offset): Remove field.
20393         (machine_function::call_ms2sysv_pad_out): Remove field.
20394         * config/i386/i386.c (xlogue_layout::get_stack_space_used): Modify.
20395         (ix86_compute_frame_layout): Likewise.
20396
20397 2017-08-01  H.J. Lu  <hongjiu.lu@intel.com>
20398
20399         PR target/81654
20400         * config/i386/i386.c (ix86_set_func_type): Disallow naked
20401         attribute with interrupt attribute.
20402
20403 2017-08-01  Andrew Pinski  <apinski@cavium.com>
20404
20405         * tree-ssa-scopedtables.c (hashable_expr_equal_p): Check
20406         BIT_INSERT_EXPR's operand 1
20407         to see if the types precision matches.
20408
20409 2017-08-01  Martin Liska  <mliska@suse.cz>
20410
20411         PR middle-end/70140
20412         * builtins.c (expand_builtin_memcpy_args): Remove.
20413         (expand_builtin_memcpy): Call newly added function
20414         expand_builtin_memory_copy_args.
20415         (expand_builtin_memcpy_with_bounds): Likewise.
20416         (expand_builtin_mempcpy): Remove last argument.
20417         (expand_builtin_mempcpy_with_bounds): Likewise.
20418         (expand_builtin_memory_copy_args): New function created from
20419         expand_builtin_mempcpy_args with small modifications.
20420         (expand_builtin_mempcpy_args): Remove.
20421         (expand_builtin_stpcpy): Remove unused argument.
20422         (expand_builtin): Likewise.
20423         (expand_builtin_with_bounds): Likewise.
20424
20425 2017-08-01  Martin Liska  <mliska@suse.cz>
20426
20427         Revert r250771
20428         Make mempcpy more optimal (PR middle-end/70140).
20429
20430 2017-08-01  Jakub Jelinek  <jakub@redhat.com>
20431
20432         PR target/81622
20433         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): For
20434         __builtin_vec_cmpne verify both arguments are compatible vectors
20435         before looking at TYPE_MODE on the element type.  For __builtin_vec_ld
20436         verify arg1_type is a pointer or array type.  For __builtin_vec_st,
20437         move computation of aligned to after checking the argument types.
20438         Formatting fixes.
20439
20440         PR target/80846
20441         * config/rs6000/vsx.md (vextract_fp_from_shorth,
20442         vextract_fp_from_shortl): Add element mode after mode in gen_vec_init*
20443         calls.
20444
20445 2017-08-01  Jerome Lambourg  <lambourg@adacore.com>
20446             Doug Rupp  <rupp@adacore.com>
20447             Olivier Hainque  <hainque@adacore.com>
20448
20449         * config.gcc (arm-wrs-vxworks*): Rework to handle arm-wrs-vxworks7 as
20450         well as arm-wrs-vxworks. Update target_cpu_name from arm6 (arch v3) to
20451         arm8 (arch v4).
20452         * config/arm/vxworks.h (MAYBE_TARGET_BPABI_CPP_BUILTINS): New, helper
20453         for TARGET_OS_CPP_BUILTIN.
20454         (TARGET_OS_CPP_BUILTIN): Invoke MAYBE_TARGET_BPABI_CPP_BUILTINS(),
20455         refine CPU definitions for arm_arch5 and add those for arm_arch6 and
20456         arm_arch7.
20457         (MAYBE_ASM_ABI_SPEC): New, helper for SUBTARGET_EXTRA_ASM_SPEC,
20458         passing required abi options to the assembler for EABI configurations.
20459         (EXTRA_CC1_SPEC): New macro, to help prevent the implicit production
20460         of .text.hot and .text.unlikely sections for kernel modules when
20461         using ARM style exceptions.
20462         (CC1_SPEC): Remove obsolete attempt at mimicking Diab toolchain
20463         options. Add EXTRA_CC1_SPEC.
20464         (VXWORKS_ENDIAN_SPEC): Adjust comment and remove handling of Diab
20465         toolchain options.
20466         (DWARF2_UNWIND_INFO): Redefine to handle the pre/post VxWorks 7
20467         transition.
20468         (ARM_TARGET2_DWARF_FORMAT): Define.
20469         * config/arm/t-vxworks: Adjust multilib control to removal of the
20470         Diab command line options.
20471
20472 2017-08-01  Martin Liska  <mliska@suse.cz>
20473
20474         PR gcov-profile/81561
20475         * gcov.c (unblock): Make unblocking safe as we need to preserve
20476         index correspondence of blocks and block_lists.
20477
20478 2017-08-01  Richard Biener  <rguenther@suse.de>
20479
20480         PR tree-optimization/81181
20481         * tree-ssa-pre.c (compute_antic_aux): Defer clean() to ...
20482         (compute_antic): ... end of iteration here.
20483
20484 2017-08-01  James Greenhalgh  <james.greenhalgh@arm.com>
20485
20486         * common.opt (ftree-vectorize): No longer set flag_tree_vectorize.
20487         (ftree-loop-vectorize): Set as EnabledBy ftree-vectorize.
20488         (ftree-slp-vectorize): Likewise.
20489         * omp-expand (expand_omp_simd): Remove flag_tree_vectorize, as it
20490         can no longer be set independent of flag_tree_loop_vectorize.
20491         * omp-general.c (emp_max_vf): Likewise.
20492         * opts.c (enable_fdo_optimizations): Remove references to
20493         flag_tree_vectorize, these are now implicit.
20494         (common_handle_option): Remove handling for OPT_ftree_vectorize,
20495         and leave it for the options machinery.
20496
20497 2017-08-01  Martin Liska  <mliska@suse.cz>
20498
20499         PR middle-end/70140
20500         * builtins.c (expand_builtin_memcpy_args): Remove.
20501         (expand_builtin_memcpy): Call newly added function
20502         expand_builtin_memory_copy_args.
20503         (expand_builtin_memcpy_with_bounds): Likewise.
20504         (expand_builtin_mempcpy): Remove last argument.
20505         (expand_builtin_mempcpy_with_bounds): Likewise.
20506         (expand_builtin_memory_copy_args): New function created from
20507         expand_builtin_mempcpy_args with small modifications.
20508         (expand_builtin_mempcpy_args): Remove.
20509         (expand_builtin_stpcpy): Remove unused argument.
20510         (expand_builtin): Likewise.
20511         (expand_builtin_with_bounds): Likewise.
20512
20513 2017-08-01  Uros Bizjak  <ubizjak@gmail.com>
20514
20515         PR target/81641
20516         * config/i386/i386.c (ix86_print_operand_address_as): For -masm=intel
20517         print "ds:" only for immediates in generic address space.
20518
20519 2017-08-01  Uros Bizjak  <ubizjak@gmail.com>
20520
20521         PR target/81639
20522         * config/i386/i386.c (ix86_funciton_naked): New prototype.
20523         (ix86_function_ok_for_sibcall): Return false for naked functions.
20524
20525 2017-08-01  Richard Biener  <rguenther@suse.de>
20526
20527         * tree-ssa-pre.c (print_pre_expr): Handle NULL expr.
20528         (compute_antic): Seed worklist with exit block predecessors.
20529         * cfganal.c (dfs_find_deadend): For a cycle return the source
20530         of the edge closing it.
20531
20532 2017-08-01  Tamar Christina  <tamar.christina@arm.com>
20533
20534         * config/aarch64/aarch64.c
20535         (aarch64_can_const_movi_rtx_p): Move 0 check.
20536
20537 2017-08-01  Bin Cheng  <bin.cheng@arm.com>
20538
20539         * tree.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Delete.
20540         * fold-const.c (fold_comparison, fold_binary_loc): Delete use of
20541         above macro.
20542         * match.pd: Ditto in address comparison pattern.
20543
20544 2017-08-01  Bin Cheng  <bin.cheng@arm.com>
20545
20546         PR tree-optimization/81627
20547         * tree-predcom.c (prepare_finalizers): Always rewrite into loop
20548         closed ssa form for store-store chain.
20549
20550 2017-08-01  Bin Cheng  <bin.cheng@arm.com>
20551
20552         PR tree-optimization/81620
20553         * tree-predcom.c (add_ref_to_chain): Don't set has_max_use_after
20554         for store-store chain.
20555
20556 2017-08-01  Jakub Jelinek  <jakub@redhat.com>
20557
20558         PR tree-optimization/81588
20559         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): If
20560         ranges[i].in_p, invert comparison code ccode.  For >/>=,
20561         swap rhs1 and rhs2 and comparison code unconditionally,
20562         for </<= don't do that.  Don't swap rhs1/rhs2 again if
20563         ranges[i].in_p, instead invert comparison code ccode if
20564         opcode or oe->rank is BIT_IOR_EXPR.
20565
20566         PR target/80846
20567         * optabs.def (vec_extract_optab, vec_init_optab): Change from
20568         a direct optab to conversion optab.
20569         * optabs.c (expand_vector_broadcast): Use convert_optab_handler
20570         with GET_MODE_INNER as last argument instead of optab_handler.
20571         * expmed.c (extract_bit_field_1): Likewise.  Use vector from
20572         vector extraction if possible and optab is available.
20573         * expr.c (store_constructor): Use convert_optab_handler instead
20574         of optab_handler.  Use vector initialization from smaller
20575         vectors if possible and optab is available.
20576         * tree-vect-stmts.c (vectorizable_load): Likewise.
20577         * doc/md.texi (vec_extract, vec_init): Document that the optabs
20578         now have two modes.
20579         * config/i386/i386.c (ix86_expand_vector_init): Handle expansion
20580         of vec_init from half-sized vectors with the same element mode.
20581         * config/i386/sse.md (ssehalfvecmode): Add V4TI case.
20582         (ssehalfvecmodelower, ssescalarmodelower): New mode attributes.
20583         (reduc_plus_scal_v8df, reduc_plus_scal_v4df, reduc_plus_scal_v2df,
20584         reduc_plus_scal_v16sf, reduc_plus_scal_v8sf, reduc_plus_scal_v4sf,
20585         reduc_<code>_scal_<mode>, reduc_umin_scal_v8hi): Add element mode
20586         after mode in gen_vec_extract* calls.
20587         (vec_extract<mode>): Renamed to ...
20588         (vec_extract<mode><ssescalarmodelower>): ... this.
20589         (vec_extract<mode><ssehalfvecmodelower>): New expander.
20590         (rotl<mode>3, rotr<mode>3, <shift_insn><mode>3, ashrv2di3): Add
20591         element mode after mode in gen_vec_init* calls.
20592         (VEC_INIT_HALF_MODE): New mode iterator.
20593         (vec_init<mode>): Renamed to ...
20594         (vec_init<mode><ssescalarmodelower>): ... this.
20595         (vec_init<mode><ssehalfvecmodelower>): New expander.
20596         * config/i386/mmx.md (vec_extractv2sf): Renamed to ...
20597         (vec_extractv2sfsf): ... this.
20598         (vec_initv2sf): Renamed to ...
20599         (vec_initv2sfsf): ... this.
20600         (vec_extractv2si): Renamed to ...
20601         (vec_extractv2sisi): ... this.
20602         (vec_initv2si): Renamed to ...
20603         (vec_initv2sisi): ... this.
20604         (vec_extractv4hi): Renamed to ...
20605         (vec_extractv4hihi): ... this.
20606         (vec_initv4hi): Renamed to ...
20607         (vec_initv4hihi): ... this.
20608         (vec_extractv8qi): Renamed to ...
20609         (vec_extractv8qiqi): ... this.
20610         (vec_initv8qi): Renamed to ...
20611         (vec_initv8qiqi): ... this.
20612         * config/rs6000/vector.md (VEC_base_l): New mode attribute.
20613         (vec_init<mode>): Renamed to ...
20614         (vec_init<mode><VEC_base_l>): ... this.
20615         (vec_extract<mode>): Renamed to ...
20616         (vec_extract<mode><VEC_base_l>): ... this.
20617         * config/rs6000/paired.md (vec_initv2sf): Renamed to ...
20618         (vec_initv2sfsf): ... this.
20619         * config/rs6000/altivec.md (splitter, altivec_copysign_v4sf3,
20620         vec_unpacku_hi_v16qi, vec_unpacku_hi_v8hi, vec_unpacku_lo_v16qi,
20621         vec_unpacku_lo_v8hi, mulv16qi3, altivec_vreve<mode>2): Add
20622         element mode after mode in gen_vec_init* calls.
20623         * config/aarch64/aarch64-simd.md (vec_init<mode>): Renamed to ...
20624         (vec_init<mode><Vel>): ... this.
20625         (vec_extract<mode>): Renamed to ...
20626         (vec_extract<mode><Vel>): ... this.
20627         * config/aarch64/iterators.md (Vel): New mode attribute.
20628         * config/s390/s390.c (s390_expand_vec_strlen, s390_expand_vec_movstr):
20629         Add element mode after mode in gen_vec_extract* calls.
20630         * config/s390/vector.md (non_vec_l): New mode attribute.
20631         (vec_extract<mode>): Renamed to ...
20632         (vec_extract<mode><non_vec_l>): ... this.
20633         (vec_init<mode>): Renamed to ...
20634         (vec_init<mode><non_vec_l>): ... this.
20635         * config/s390/s390-builtins.def (s390_vlgvb, s390_vlgvh, s390_vlgvf,
20636         s390_vlgvf_flt, s390_vlgvg, s390_vlgvg_dbl): Add element mode after
20637         vec_extract mode.
20638         * config/arm/iterators.md (V_elem_l): New mode attribute.
20639         * config/arm/neon.md (vec_extract<mode>): Renamed to ...
20640         (vec_extract<mode><V_elem_l>): ... this.
20641         (vec_extractv2di): Renamed to ...
20642         (vec_extractv2didi): ... this.
20643         (vec_init<mode>): Renamed to ...
20644         (vec_init<mode><V_elem_l>): ... this.
20645         (reduc_plus_scal_<mode>, reduc_plus_scal_v2di, reduc_smin_scal_<mode>,
20646         reduc_smax_scal_<mode>, reduc_umin_scal_<mode>,
20647         reduc_umax_scal_<mode>, neon_vget_lane<mode>, neon_vget_laneu<mode>):
20648         Add element mode after gen_vec_extract* calls.
20649         * config/mips/mips-msa.md (vec_init<mode>): Renamed to ...
20650         (vec_init<mode><unitmode>): ... this.
20651         (vec_extract<mode>): Renamed to ...
20652         (vec_extract<mode><unitmode>): ... this.
20653         * config/mips/loongson.md (vec_init<mode>): Renamed to ...
20654         (vec_init<mode><unitmode>): ... this.
20655         * config/mips/mips-ps-3d.md (vec_initv2sf): Renamed to ...
20656         (vec_initv2sfsf): ... this.
20657         (vec_extractv2sf): Renamed to ...
20658         (vec_extractv2sfsf): ... this.
20659         (reduc_plus_scal_v2sf, reduc_smin_scal_v2sf, reduc_smax_scal_v2sf):
20660         Add element mode after gen_vec_extract* calls.
20661         * config/mips/mips.md (unitmode): New mode iterator.
20662         * config/spu/spu.c (spu_expand_prologue, spu_allocate_stack,
20663         spu_builtin_extract): Add element mode after gen_vec_extract* calls.
20664         * config/spu/spu.md (inner_l): New mode attribute.
20665         (vec_init<mode>): Renamed to ...
20666         (vec_init<mode><inner_l>): ... this.
20667         (vec_extract<mode>): Renamed to ...
20668         (vec_extract<mode><inner_l>): ... this.
20669         * config/sparc/sparc.md (veltmode): New mode iterator.
20670         (vec_init<VMALL:mode>): Renamed to ...
20671         (vec_init<VMALL:mode><VMALL:veltmode>): ... this.
20672         * config/ia64/vect.md (vec_initv2si): Renamed to ...
20673         (vec_initv2sisi): ... this.
20674         (vec_initv2sf): Renamed to ...
20675         (vec_initv2sfsf): ... this.
20676         (vec_extractv2sf): Renamed to ...
20677         (vec_extractv2sfsf): ... this.
20678         * config/powerpcspe/vector.md (VEC_base_l): New mode attribute.
20679         (vec_init<mode>): Renamed to ...
20680         (vec_init<mode><VEC_base_l>): ... this.
20681         (vec_extract<mode>): Renamed to ...
20682         (vec_extract<mode><VEC_base_l>): ... this.
20683         * config/powerpcspe/paired.md (vec_initv2sf): Renamed to ...
20684         (vec_initv2sfsf): ... this.
20685         * config/powerpcspe/altivec.md (splitter, altivec_copysign_v4sf3,
20686         vec_unpacku_hi_v16qi, vec_unpacku_hi_v8hi, vec_unpacku_lo_v16qi,
20687         vec_unpacku_lo_v8hi, mulv16qi3): Add element mode after mode in
20688         gen_vec_init* calls.
20689
20690 2017-08-01  Richard Biener  <rguenther@suse.de>
20691
20692         PR tree-optimization/81297
20693         * tree-vrp.c (get_single_symbol): Remove assert, instead drop
20694         TREE_OVERFLOW from INTEGER_CSTs.
20695
20696 2017-07-31  Segher Boessenkool  <segher@kernel.crashing.org>
20697
20698         * config/rs6000/rs6000.c (enum rs6000_reg_type): Delete trailing comma.
20699
20700 2017-07-31  Carl Love  <cel@us.ibm.com>
20701
20702         * config/rs6000/rs6000-c: Add support for built-in functions
20703         vector signed char vec_xl_be (signed long long, signed char *);
20704         vector unsigned char vec_xl_be (signed long long, unsigned char *);
20705         vector signed int vec_xl_be (signed long long, signed int *);
20706         vector unsigned int vec_xl_be (signed long long, unsigned int *);
20707         vector signed long long vec_xl_be (signed long long, signed long long *);
20708         vector unsigned long long vec_xl_be (signed long long, unsigned long long *);
20709         vector signed short vec_xl_be (signed long long, signed short *);
20710         vector unsigned short vec_xl_be (signed long long, unsigned short *);
20711         vector double vec_xl_be (signed long long, double *);
20712         vector float vec_xl_be (signed long long, float *);
20713         * config/rs6000/altivec.h (vec_xl_be): Add #define.
20714         * config/rs6000/rs6000-builtin.def (XL_BE_V16QI, XL_BE_V8HI, XL_BE_V4SI)
20715         XL_BE_V2DI, XL_BE_V4SF, XL_BE_V2DF, XL_BE): Add definitions
20716         for the builtins.
20717         * config/rs6000/rs6000.c (altivec_expand_xl_be_builtin): Add function.
20718         (altivec_expand_builtin): Add switch statement to call
20719         altivec_expand_xl_be for each builtin.
20720         (altivec_init_builtins): Add def_builtin for _builtin_vsx_le_be_v8hi,
20721         __builtin_vsx_le_be_v4si, __builtin_vsx_le_be_v2di,
20722         __builtin_vsx_le_be_v4sf, __builtin_vsx_le_be_v2df,
20723         __builtin_vsx_le_be_v16qi.
20724         * doc/extend.texi: Update the built-in documentation file for the
20725         new built-in functions.
20726
20727 2017-07-31  Uros Bizjak  <ubizjak@gmail.com>
20728
20729         PR target/25967
20730         * config/i386/i386.c (ix86_allocate_stack_slots_for_args):
20731         New function.
20732         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
20733
20734 2017-07-31  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
20735
20736         * config.gcc: Add z14.
20737         * config/s390/driver-native.c (s390_host_detect_local_cpu): Add
20738         CPU model numbers for z13s and z14.
20739         * config/s390/s390-c.c (s390_resolve_overloaded_builtin): Replace
20740         arch12 with z14.
20741         * config/s390/s390-opts.h (enum processor_type): Rename
20742         PROCESSOR_ARCH12 to PROCESSOR_3906_Z14.
20743         * config/s390/s390.c (processor_table): Add field for CPU name to
20744         be passed to Binutils.
20745         (s390_asm_output_machine_for_arch): Use the new field in
20746         processor_table for Binutils.
20747         (s390_expand_builtin): Replace arch12 with z14.
20748         (s390_issue_rate): Rename PROCESSOR_ARCH12 to PROCESSOR_3906_Z14.
20749         (s390_get_sched_attrmask): Likewise.
20750         (s390_get_unit_mask): Likewise.
20751         * config/s390/s390.opt: Add z14 to processor_type enum.
20752
20753 2017-07-31  Martin Jambor  <mjambor@suse.cz>
20754
20755         PR hsa/81477
20756         * ipa-fnsummary.c (ipa_fn_summary_generate): Set versionable
20757         regardless of optimization level.
20758
20759 2017-07-31  Jan Hubicka <hubicka@ucw.cz>
20760             Martin Liska  <mliska@suse.cz>
20761
20762         * predict.def: Remove old comment and adjust probability.
20763         * gimplify.c (should_warn_for_implicit_fallthrough): Ignore
20764         PREDICT statements.
20765
20766 2017-07-31  Uros Bizjak  <ubizjak@gmail.com>
20767
20768         PR target/25967
20769         * config/i386/i386.c (ix86_function_naked): New function.
20770         (ix86_can_use_return_insn_p): Return false for naked functions.
20771         (ix86_expand_prologue): Skip prologue for naked functions.
20772         (ix86_expand_epilogue): Skip epilogue for naked functions
20773         and emit trap instruction.
20774         (ix86_warn_func_return): New function.
20775         (ix86_attribute_table): Add "naked" attribute specification.
20776         (TARGET_WARN_FUNC_RETURN): Define.
20777         * doc/extend.texi (x86 Function Attributes) <naked>: Document it.
20778
20779 2017-07-31  Martin Liska  <mliska@suse.cz>
20780
20781         * gimple-pretty-print.c (dump_gimple_label): Never dump BB info.
20782         (dump_gimple_bb_header): Always dump BB info.
20783         (pp_cfg_jump): Do not append info about BB when dumping a jump.
20784
20785 2017-07-31  Martin Liska  <mliska@suse.cz>
20786
20787         PR sanitize/81530
20788         * convert.c (convert_to_integer_1): Guard condition with flag_sanitize_p
20789         also with current_function_decl non-null equality.
20790
20791 2017-07-31  Jakub Jelinek  <jakub@redhat.com>
20792
20793         PR sanitizer/81604
20794         * ubsan.c (ubsan_type_descriptor): For UBSAN_PRINT_ARRAY don't
20795         change type to the element type, instead add eltype variable and
20796         use it where we are interested in the element type.
20797
20798         PR tree-optimization/81603
20799         * ipa-polymorphic-call.c
20800         (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Perform
20801         offset arithmetic in offset_int, bail out if the resulting bit offset
20802         doesn't fit into shwi.
20803
20804 2017-07-31  Martin Liska  <mliska@suse.cz>
20805
20806         * gimplify.c (mostly_copy_tree_r): Remove Java specific hunk.
20807         (gimplify_save_expr): Fix comment.
20808
20809 2017-07-30  H.J. Lu  <hongjiu.lu@intel.com>
20810
20811         PR target/79793
20812         * config/i386/i386.c (ix86_function_arg): Update arguments for
20813         exception handler.
20814         (ix86_compute_frame_layout): Set the initial stack offset to
20815         INCOMING_FRAME_SP_OFFSET.  Update red-zone offset with
20816         INCOMING_FRAME_SP_OFFSET.
20817         (ix86_expand_epilogue): Don't pop the 'ERROR_CODE' off the
20818         stack before exception handler returns.
20819         * config/i386/i386.h (INCOMING_FRAME_SP_OFFSET): Add the
20820         the 'ERROR_CODE' for exception handler.
20821
20822 2017-07-30  Uros Bizjak  <ubizjak@gmail.com>
20823
20824         * config/i386/i386.h (ASM_PRINTF_EXTENSIONS): New macro.
20825         (ASM_OUTPUT_REG_PUSH): Rewrite with new operand modifiers.
20826         (ASM_OUTPUT_REG_POP): Ditto.
20827         * config/i386/i386.c (ix86_asm_output_function_label): Use fputs
20828         instead of asm_fprintf to output pure string.
20829
20830 2017-07-29  Jakub Jelinek  <jakub@redhat.com>
20831
20832         * debug.h (struct gcc_debug_hooks): Add IMPLICIT argument
20833         to imported_module_or_decl hook.
20834         (debug_nothing_tree_tree_tree_bool): Remove.
20835         (debug_nothing_tree_tree_tree_bool_bool): New declaration.
20836         * debug.c (do_nothing_debug_hooks): Use
20837         debug_nothing_tree_tree_tree_bool_bool instead of
20838         debug_nothing_tree_tree_tree_bool.
20839         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
20840         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
20841         * sdbout.c (sdb_debug_hooks): Likewise.
20842         * dwarf2out.c (dwarf2_lineno_debug_hooks): Likewise.
20843         (gen_namespace_die): Add DW_AT_export_symbols attribute if
20844         langhook wants it.
20845         (dwarf2out_imported_module_or_decl): Add IMPLICIT argument,
20846         if true, -gdwarf-5 and decl will have DW_AT_export_symbols
20847         attribute, don't add anything.
20848
20849 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
20850
20851         * fold-const.c (fold_build1_stat_loc): Remove _stat from name.
20852         (fold_build2_stat_loc): Likewise.
20853         (fold_build3_stat_loc): Likewise.
20854         * fold-const.h (fold_build1, fold_build2, fold_build3): Adjust.
20855         (fold_build1_loc): Remove macro.
20856         (fold_build2_loc): Likewise.
20857         (fold_build3_loc): Likewise.
20858
20859 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
20860
20861         * gimple.c (gimple_build_debug_bind_stat): Remove _stat from name.
20862         (gimple_build_debug_bind_source_stat): Likewise.
20863         * gimple.h (gimple_build_debug_bind): Remove macro.
20864         (gimple_build_debug_bind_source): Likewise.
20865
20866 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
20867
20868         * bitmap.c (bitmap_alloc): Adjust.
20869         (bitmap_gc_alloc): Likewise.
20870         * bitmap.h (bitmap_initialize_stat): Remove _stat from name.
20871
20872 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
20873
20874         * bitmap.c (bitmap_obstack_alloc_stat): Rename to bitmap_alloc.
20875         (bitmap_gc_alloc_stat): Rename to bitmap_gc_alloc.
20876         * bitmap.h (bitmap_obstack_alloc_stat): Adjust prototype.
20877         (bitmap_gc_alloc_stat): Likewise.
20878         (BITMAP_ALLOC, BITMAP_GGC_ALLOC): Adjust.
20879
20880 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
20881
20882         * rtl.c (shallow_copy_rtx_stat): Remove _stat from name.
20883         * rtl.h (shallow_copy_rtx): Remove macro.
20884
20885 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
20886
20887         * emit-rtl.c (gen_raw_REG): Adjust.
20888         * gengenrtl.c (gendef): Likewise.
20889         * rtl.c (rtx_alloc_stat): Remove _stat from name.
20890         * rtl.h (rtx_alloc): Remove macro.
20891
20892 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
20893
20894         * tree.c (build_tree_list_vec_stat): Remove _stat from name.
20895         (build_tree_list_stat): Likewise.
20896         * tree.h (build_tree_list): Remove macro.
20897         (build_tree_list_vec): Likewise.
20898
20899 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
20900
20901         * tree.c (make_vector_stat): Remove _stat from name.
20902         (build_vector_stat): Likewise.
20903         * tree.h (make_vector_stat): Remove macro.
20904         (build_vector_stat): Likewise.
20905
20906 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
20907
20908         * tree.h (build_var_debug_value): Remove prototype.
20909
20910 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
20911
20912         * tree.c (tree_cons_stat): Remove _stat from name.
20913         * tree.h (tree_cons): Remove macro.
20914
20915 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
20916
20917         * tree.c (build_vl_exp_stat): Remove _stat from name.
20918         * tree.h (build_vl_exp): Remove macro.
20919
20920 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
20921
20922         * tree.c (build_decl_stat): Remove _stat from name.
20923         * tree.h (build_decl): Remove macro.
20924
20925 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
20926
20927         * gimple.c (gimple_build_with_ops_stat): Adjust.
20928         (gimple_alloc_stat): Remove _stat from name.
20929         * gimple.h (gimple_alloc): Remove macro.
20930
20931 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
20932
20933         * tree.c (make_tree_vec_stat): Remove _stat from name.
20934         (grow_tree_vec_stat): Likewise.
20935         * tree.h (make_tree_vec_stat): Adjust prototype.
20936         (grow_tree_vec_stat): Likewise.
20937         (make_tree_vec): Remove macro.
20938         (grow_tree_vec): Likewise.
20939
20940 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
20941
20942         * fold-const.c (fold_build1_stat_loc): Adjust.
20943         (fold_build2_stat_loc): Likewise.
20944         (fold_build3_stat_loc): Likewise.
20945         * tree.c (build0_stat): Remove _stat from name.
20946         (build1_stat): Likewise.
20947         (build2_stat): Likewise.
20948         (build3_stat): Likewise.
20949         (build4_stat): Likewise.
20950         (build5_stat): Likewise.
20951         * tree.h (build1_loc): Remove macro, and rename _stat function
20952         to this.
20953         (build2_loc): Likewise.
20954         (build3_loc): Likewise.
20955         (build4_loc): Likewise.
20956         (build5_loc): Likewise.
20957
20958 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
20959
20960         * tree.c (make_int_cst_stat): Remove _stat from name.
20961         * tree.h (make_int_cst_stat): Adjust prototype.
20962         (make_int_cst): Remove macro.
20963
20964 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
20965
20966         * tree.c (make_tre_binfo_stat): Remove _stat from name.
20967         * tree.h (make_tree_binfo_stat): Adjust prototype.
20968         (make_tree_binfo): Remove.
20969
20970 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
20971
20972         * tree.c (copy_node_stat): Rename to copy_node.
20973         (build_distinct_type_copy): Adjust.
20974         * tree.h (copy_node_stat): Adjust prototype.
20975         (copy_node): Remove macro.
20976
20977 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
20978
20979         * tree.c (make_node_stat): rename to make_node.
20980         (build_tree_list_stat): Adjust.
20981         (build0_stat): Likewise.
20982         (build2_stat): Likewise.
20983         (build3_stat): Likewise.
20984         (build4_stat): Likewise.
20985         (build5_stat): Likewise.
20986         (build_decl_stat): Likewise.
20987         * tree.h (make_node_stat): Adjust prototype.
20988         (make_node): remove macro.
20989
20990 2017-07-28  Peter Bergner  <bergner@vnet.ibm.com>
20991
20992         * config/rs6000/ppc-auxv.h (PPC_FEATURE2_DARN): New define.
20993         (PPC_FEATURE2_SCV): Likewise.
20994         * config/rs6000/rs6000.c (cpu_supports_info): Use them.
20995
20996 2017-07-28  Tamar Christina  <tamar.christina@arm.com>
20997
20998         * config/aarch64/aarch64.c
20999         (aarch64_internal_mov_immediate): Add new special pattern.
21000         * config/aarch64/aarch64.md (*movdi_aarch64):
21001         Add reg/32bit const mov case.
21002
21003 2017-07-28  Tamar Christina  <tamar.christina@arm.com>
21004             Richard Sandiford <richard.sandiford@linaro.org>
21005
21006         * config/aarch64/aarch64.md (mov<mode>): Generalize.
21007         (*movhf_aarch64, *movsf_aarch64, *movdf_aarch64):
21008         Add integer and movi cases.
21009         (movi-split-hf-df-sf split, fp16): New.
21010         (enabled): Added TARGET_FP_F16INST.
21011         * config/aarch64/iterators.md (GPF_HF): New.
21012         * config/aarch64/predicates.md (aarch64_reg_or_fp_float): New.
21013
21014 2017-07-28  Tamar Christina  <tamar.christina@arm.com>
21015
21016         * config/aarch64/aarch64.c
21017         (aarch64_simd_container_mode): Add prototype.
21018         (aarch64_expand_mov_immediate): Add HI support.
21019         (aarch64_reinterpret_float_as_int, aarch64_float_const_rtx_p: New.
21020         (aarch64_can_const_movi_rtx_p): New.
21021         (aarch64_preferred_reload_class):
21022         Remove restrictions of using FP registers for certain SIMD operations.
21023         (aarch64_rtx_costs): Added new cost for CONST_DOUBLE moves.
21024         (aarch64_valid_floating_const): Add integer move validation.
21025         (aarch64_simd_imm_scalar_p): Remove.
21026         (aarch64_output_scalar_simd_mov_immediate): Generalize function.
21027         (aarch64_legitimate_constant_p): Expand list of supported cases.
21028         * config/aarch64/aarch64-protos.h
21029         (aarch64_float_const_rtx_p, aarch64_can_const_movi_rtx_p): New.
21030         (aarch64_reinterpret_float_as_int): New.
21031         (aarch64_simd_imm_scalar_p): Remove.
21032         * config/aarch64/constraints.md (Uvi): New.
21033         (Dd): Split into Ds and new Dd.
21034         * config/aarch64/aarch64.md (*movsi_aarch64):
21035         Add SIMD mov case.
21036         (*movdi_aarch64): Add SIMD mov case.
21037
21038 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
21039
21040         * tree-predcom.c: (struct chain): Handle store-store chain in which
21041         stores for elimination only store loop invariant values.
21042         (execute_pred_commoning_chain): Ditto.
21043         (prepare_initializers_chain_store_elim): Ditto.
21044         (prepare_finalizers): Ditto.
21045         (is_inv_store_elimination_chain): New function.
21046         (initialize_root_vars_store_elim_1): New function.
21047
21048 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
21049
21050         * tree-predcom.c: Revise general description of the pass.
21051         (enum chain_type): New enum type for store elimination.
21052         (struct chain): New field supporting store elimination.
21053         (struct component): Ditto.
21054         (dump_chain): Dump store-stores chain.
21055         (release_chain): Release resources.
21056         (split_data_refs_to_components): Compute and create component
21057         contains only stores for elimination.
21058         (get_chain_last_ref_at): New function.
21059         (make_invariant_chain): Initialization.
21060         (make_rooted_chain): Specify chain type in parameter and record it.
21061         (add_looparound_copies): Skip for store-stores chain.
21062         (determine_roots_comp): Compute type of chain and pass it to
21063         make_rooted_chain.
21064         (initialize_root_vars_store_elim_2): New function.
21065         (finalize_eliminated_stores): New function.
21066         (remove_stmt): Handle store for elimination.
21067         (execute_pred_commoning_chain): Execute predictive commoning on
21068         store-store chains.
21069         (determine_unroll_factor): Skip unroll for store-stores chain.
21070         (prepare_initializers_chain_store_elim): New function.
21071         (prepare_initializers_chain): Hanlde store-store chain.
21072         (prepare_finalizers_chain, prepare_finalizers): New function.
21073         (tree_predictive_commoning_loop): Return integer value indicating
21074         if loop is unrolled or lcssa form is corrupted.
21075         (tree_predictive_commoning): Rewrite for lcssa form if necessary.
21076
21077 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
21078
21079         * tree-predcom.c (initialize_root): Delete.
21080         (execute_pred_commoning_chain): Initialize root vars and replace
21081         reference of non-combined chain directly, rather than call above
21082         function.
21083
21084 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
21085
21086         * tree-predcom.c (ref_at_iteration): Add parameter NITERS.  Compute
21087         memory reference to DR at (NITERS + ITERS)-th iteration of loop.
21088
21089 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
21090
21091         * tree-predcom.c (struct chain): New field init_seq.
21092         (release_chain): Release init_seq.
21093         (prepare_initializers_chain): Record intialization stmts in above
21094         field.
21095         (insert_init_seqs): New function.
21096         (tree_predictive_commoning_loop): Call insert_init_seqs.
21097
21098 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
21099
21100         * tree-predcom.c (determine_roots_comp): Skip trivial components.
21101
21102 2017-07-28  Richard Biener  <rguenther@suse.de>
21103
21104         * match.pd: Remove superfluous :c.
21105         * genmatch.c (simplify::id): Add member.
21106         (lower_commutative, lower_opt_convert, lower_cond, lower_for):
21107         Copy id.
21108         (current_id): New global.
21109         (dt_node::parent): Move from ...
21110         (dt_operand::parent): ... here.  Add for_id member.
21111         (is_a_helper <dt_operand *>::test): DT_TRUE is also a dt_operand.
21112         (decision_tree::find_node): Relax order requirement when
21113         merging DT_TRUE nodes to ones inbetween the current simplify
21114         and the one we try to merge with.  Add diagnostic whenever
21115         we need to enforce pattern order by not merging.
21116         (decision_tree::insert): Set current_id.
21117         (decision_tree::print_node): Dump parent node and for_id.
21118         (parser::last_id): Add member.
21119         (parser::push_simplify): Assign unique id.
21120         (parser::parser): Initialize last_id.
21121
21122 2017-07-28  Martin Liska  <mliska@suse.cz>
21123
21124         PR sanitizer/81340
21125         * sanopt.c (sanitize_rewrite_addressable_params): Set VALUE_EXPR after
21126         gimple_build_debug_bind.
21127
21128 2017-07-28  Richard Biener  <rguenther@suse.de>
21129
21130         PR tree-optimization/81502
21131         * match.pd: Add pattern combining BIT_INSERT_EXPR with
21132         BIT_FIELD_REF.
21133         * tree-cfg.c (verify_expr): Verify types of BIT_FIELD_REF
21134         size/pos operands.
21135         (verify_gimple_assign_ternary): Likewise for BIT_INSERT_EXPR pos.
21136         * gimple-fold.c (maybe_canonicalize_mem_ref_addr): Use bitsizetype
21137         for BIT_FIELD_REF args.
21138         * fold-const.c (make_bit_field_ref): Likewise.
21139         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
21140
21141 2017-07-28  Jakub Jelinek  <jakub@redhat.com>
21142
21143         PR sanitizer/80998
21144         * sanopt.c (pass_sanopt::execute): Handle IFN_UBSAN_PTR.
21145         * tree-ssa-alias.c (call_may_clobber_ref_p_1): Likewise.
21146         * flag-types.h (enum sanitize_code): Add SANITIZER_POINTER_OVERFLOW.
21147         Or it into SANITIZER_UNDEFINED.
21148         * ubsan.c: Include gimple-fold.h and varasm.h.
21149         (ubsan_expand_ptr_ifn): New function.
21150         (instrument_pointer_overflow): New function.
21151         (maybe_instrument_pointer_overflow): New function.
21152         (instrument_object_size): Formatting fix.
21153         (pass_ubsan::execute): Call instrument_pointer_overflow
21154         and maybe_instrument_pointer_overflow.
21155         * internal-fn.c (expand_UBSAN_PTR): New function.
21156         * ubsan.h (ubsan_expand_ptr_ifn): Declare.
21157         * sanitizer.def (__ubsan_handle_pointer_overflow,
21158         __ubsan_handle_pointer_overflow_abort): New builtins.
21159         * tree-ssa-tail-merge.c (merge_stmts_p): Handle IFN_UBSAN_PTR.
21160         * internal-fn.def (UBSAN_PTR): New internal function.
21161         * opts.c (sanitizer_opts): Add pointer-overflow.
21162         * lto-streamer-in.c (input_function): Handle IFN_UBSAN_PTR.
21163         * fold-const.c (build_range_check): Compute pointer range check in
21164         integral type if pointer arithmetics would be needed.  Formatting
21165         fixes.
21166
21167 2017-07-28  Martin Liska  <mliska@suse.cz>
21168
21169         PR sanitizer/81460
21170         * sanopt.c (sanitize_rewrite_addressable_params): Do not rewrite
21171         parameters that are of a variable-length.
21172
21173 2017-07-28  Sebastian Huber  <sebastian.huber@embedded-brains.de>
21174
21175         * config.gcc (powerpc-*-rtems*): Remove rs6000/eabi.h.  Add
21176         rs6000/biarch64.h.
21177         * config/rs6000/rtems.h (ASM_DECLARE_FUNCTION_SIZE): New macro.
21178         (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise.
21179         (CRT_CALL_STATIC_FUNCTION): Likewise.
21180         (ASM_DEFAULT_SPEC): New define.
21181         (ASM_SPEC32): Likewise.
21182         (ASM_SPEC64): Likewise.
21183         (ASM_SPEC_COMMON): Likewise.
21184         (ASM_SPEC): Likewise.
21185         (INVALID_64BIT): Likewise.
21186         (LINK_OS_DEFAULT_SPEC): Likewise.
21187         (LINK_OS_SPEC32): Likewise.
21188         (LINK_OS_SPEC64): Likewise.
21189         (POWERPC_LINUX): Likewise.
21190         (PTRDIFF_TYPE): Likewise.
21191         (RESTORE_FP_PREFIX): Likewise.
21192         (RESTORE_FP_SUFFIX): Likewise.
21193         (SAVE_FP_PREFIX): Likewise.
21194         (SAVE_FP_SUFFIX): Likewise.
21195         (SIZE_TYPE): Likewise.
21196         (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
21197         (TARGET_64BIT): Likewise.
21198         (TARGET_64BIT): Likewise.
21199         (TARGET_AIX): Likewise.
21200         (WCHAR_TYPE_SIZE): Likewise.
21201         (WCHAR_TYPE): Undefine.
21202         (TARGET_OS_CPP_BUILTINS): Add 64-bit PowerPC defines.
21203         (CPP_OS_DEFAULT_SPEC): Use previous CPP_OS_RTEMS_SPEC.
21204         (CPP_OS_RTEMS_SPEC): Delete.
21205         (SUBSUBTARGET_EXTRA_SPECS): Remove cpp_os_rtems.  Add
21206         asm_spec_common, asm_spec32, asm_spec64, link_os_spec32, and
21207         link_os_spec64.
21208         * config/rs6000/t-rtems: Add mcpu=e6500/m64 multilibs.
21209
21210 2017-07-28  Jakub Jelinek  <jakub@redhat.com>
21211
21212         PR tree-optimization/81578
21213         * tree-parloops.c (build_new_reduction): Bail out if
21214         reduction_code isn't one of the standard OpenMP reductions.
21215         Move the details printing after that decision.
21216
21217 2017-07-27  Peter Bergner  <bergner@vnet.ibm.com>
21218
21219         * config/rs6000/predicates.md (volatile_mem_operand): Remove code
21220         related to reload_in_progress.
21221         (splat_input_operand): Likewise.
21222         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
21223         Delete prototype.
21224         * config/rs6000/rs6000.c (machine_function): Remove sdmode_stack_slot
21225         field.
21226         (TARGET_EXPAND_TO_RTL_HOOK): Delete.
21227         (TARGET_INSTANTIATE_DECLS): Likewise.
21228         (legitimate_indexed_address_p): Delete reload_in_progress code.
21229         (rs6000_debug_legitimate_address_p): Likewise.
21230         (rs6000_eliminate_indexed_memrefs): Likewise.
21231         (rs6000_emit_le_vsx_store): Likewise.
21232         (rs6000_emit_move_si_sf_subreg): Likewise.
21233         (rs6000_emit_move): Likewise.
21234         (register_to_reg_type): Likewise.
21235         (rs6000_pre_atomic_barrier): Likewise.
21236         (rs6000_machopic_legitimize_pic_address): Likewise.
21237         (rs6000_allocate_stack_temp): Likewise.
21238         (rs6000_address_for_fpconvert): Likewise.
21239         (rs6000_address_for_altivec): Likewise.
21240         (rs6000_secondary_memory_needed_rtx): Delete function.
21241         (rs6000_check_sdmode): Likewise.
21242         (rs6000_alloc_sdmode_stack_slot): Likewise.
21243         (rs6000_instantiate_decls): Likewise.
21244         * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
21245         * config/rs6000/rs6000.md (splitter for *movsi_got_internal):
21246         Delete reload_in_progress.
21247         (*vec_reload_and_plus_<mptrsize>): Likewise.
21248         * config/rs6000/vsx.md (vsx_mul_v2di): Likewise.
21249         (vsx_div_v2di): Likewise.
21250         (vsx_udiv_v2di): Likewise.
21251
21252 2017-07-27  Peter Bergner  <bergner@vnet.ibm.com>
21253
21254         * config/rs6000/rs6000.opt (mlra): Replace with stub.
21255         * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Delete OPTION_MASK_LRA.
21256         * config/rs6000/rs6000.c (TARGET_LRA_P): Delete.
21257         (rs6000_debug_reg_global): Delete print of LRA status.
21258         (rs6000_option_override_internal): Delete dead LRA related code.
21259         (rs6000_lra_p): Delete function.
21260         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mlra.
21261
21262 2017-07-27  Sebastian Huber  <sebastian.huber@embedded-brains.de>
21263
21264         * config.gcc (riscv*-*-elf*): Add (riscv*-*-rtems*).
21265         * config/riscv/rtems.h: New file.
21266
21267 2017-07-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
21268             Sudakshina Das  <sudi.das@arm.com>
21269
21270         * config/aarch64/aarch64.md
21271         (define_split for and<mode>3nr_compare): Move
21272         non aarch64_logical_operand to a register.
21273         (define_split for and_<SHIFT:optab><mode>3nr_compare0): Move non
21274         register immediate operand to a register.
21275         * config/aarch64/predicates.md (aarch64_mov_imm_operand): New.
21276
21277 2017-07-27  Peter Bergner  <bergner@vnet.ibm.com>
21278
21279         PR middle-end/81564
21280         * tree-cfg.c (group_case_labels_stmt): Handle already deleted blocks.
21281
21282 2017-07-27  Richard Biener  <rguenther@suse.de>
21283
21284         PR tree-optimization/81573
21285         PR tree-optimization/81494
21286         * tree-vect-loop.c (vect_create_epilog_for_reduction): Handle
21287         multi defuse cycle case.
21288
21289 2017-07-27  Richard Biener  <rguenther@suse.de>
21290
21291         PR tree-optimization/81571
21292         * tree-vect-slp.c (vect_build_slp_tree): Properly verify reduction
21293         PHIs.
21294
21295 2017-07-27  Eric Botcazou  <ebotcazou@adacore.com>
21296
21297         * config/sparc/sparc.c (sparc_option_override): Set MASK_FSMULD flag
21298         earlier and only if MASK_FPU is set.  Adjust formatting.
21299
21300 2017-07-27  Martin Liska  <mliska@suse.cz>
21301
21302         * opt-functions.awk: Add validation of value of Init.
21303         * optc-gen.awk: Pass new argument.
21304
21305 2017-07-27  Martin Liska  <mliska@suse.cz>
21306
21307         * auto-profile.c (autofdo_source_profile::update_inlined_ind_target):
21308         Fix wrong condition.
21309
21310 2017-07-27  Martin Liska  <mliska@suse.cz>
21311
21312         * auto-profile.c (afdo_annotate_cfg): Assign zero counts to
21313         BBs and edges seen by autoFDO.
21314
21315 2017-07-27  Richard Biener  <rguenther@suse.de>
21316
21317         PR tree-optimization/81502
21318         * tree-ssa.c (non_rewritable_lvalue_p): Handle BIT_INSERT_EXPR
21319         with incompatible but same sized type.
21320         (execute_update_addresses_taken): Likewise.
21321
21322 2017-07-27  James Greenhalgh  <james.greenhalgh@arm.com>
21323
21324         * tree-ssa-loop-ch.c (pass_ch::process_loop_p): Guard on
21325         flag_tree_loop_vectorize rather than flag_tree_vectorize.
21326
21327 2017-07-27  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
21328
21329         PR target/81534
21330         * config/s390/s390.md ("*atomic_compare_and_swap<mode>_1")
21331         ("*atomic_compare_and_swapdi_2", "*atomic_compare_and_swapsi_3"):
21332         Change s_operand to memory_operand.
21333
21334 2017-07-27  Richard Sandiford  <richard.sandiford@linaro.org>
21335
21336         * config/rs6000/rs6000-protos.h (rs6000_emit_le_vsx_permute): Declare.
21337         * config/rs6000/rs6000.c (rs6000_gen_le_vsx_permute): Replace with...
21338         (rs6000_emit_le_vsx_permute): ...this.  Take the destination as input.
21339         Emit instructions rather than returning an expression.  Handle TFmode
21340         and KFmode by casting to TImode.
21341         (rs6000_emit_le_vsx_load): Update to use rs6000_emit_le_vsx_permute.
21342         (rs6000_emit_le_vsx_store): Likewise.
21343         * config/rs6000/vsx.md (VSX_TI): New iterator.
21344         (*vsx_le_permute_<mode>): Use it instead of VSX_LE_128.
21345         (*vsx_le_undo_permute_<mode>): Likewise.
21346         (*vsx_le_perm_load_<mode>): Use rs6000_emit_le_vsx_permute to
21347         emit the split sequence.
21348         (*vsx_le_perm_store_<mode>): Likewise.
21349
21350 2017-07-27  Jakub Jelinek  <jakub@redhat.com>
21351
21352         PR tree-optimization/81555
21353         PR tree-optimization/81556
21354         * tree-ssa-reassoc.c (rewrite_expr_tree): Add NEXT_CHANGED argument,
21355         if true, force CHANGED for the recursive invocation.
21356         (reassociate_bb): Remember original length of ops array, pass
21357         len != orig_len as NEXT_CHANGED in rewrite_expr_tree call.
21358
21359         * attribs.c (decl_attributes): Imply noinline, noclone and no_icf
21360         attributes for noipa attribute.  For naked attribute use
21361         lookup_attribute first before lookup_attribute_spec.
21362         * final.c (rest_of_handle_final): Disable IPA RA for functions with
21363         noipa attribute.
21364         * ipa-visibility.c (non_local_p): Fix comment typos.  Return true
21365         for functions with noipa attribute.
21366         (cgraph_externally_visible_p): Return true for functions with noipa
21367         attribute.
21368         * cgraph.c (cgraph_node::get_availability): Return AVAIL_INTERPOSABLE
21369         for functions with noipa attribute.
21370         * doc/extend.texi: Document noipa function attribute.
21371         * tree-ssa-structalias.c (refered_from_nonlocal_fn): Set *nonlocal_p
21372         also for functions with noipa attribute.
21373         (ipa_pta_execute): Set nonlocal_p also for nodes with noipa attribute.
21374
21375 2017-07-26  Andrew Pinski  <apinski@cavium.com>
21376
21377         * config/aarch64/aarch64.c (thunderx_vector_cost): Decrease cost of
21378         vec_unalign_load_cost and vec_unalign_store_cost.
21379
21380 2017-07-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
21381
21382         * config/rs6000/rs6000-cpus.def (ISA_2_7_MASKS_SERVER): Delete
21383         -mvsx-small-integer option.
21384         (ISA_3_0_MASKS_IEEE): Likewise.
21385         (OTHER_VSX_VECTOR_MASKS): Likewise.
21386         (POWERPC_MASKS): Likewise.
21387         * config/rs6000/rs6000.opt (-mvsx-small-integer): Likewise.
21388         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Simplify
21389         code, only testing for DImode being allowed in non-VSX floating
21390         point registers.
21391         (rs6000_init_hard_regno_mode_ok): Change TARGET_VSX_SMALL_INTEGER
21392         to TARGET_P8_VECTOR test.  Remove redundant VSX test inside of
21393         another VSX test.
21394         (rs6000_option_override_internal): Delete -mvsx-small-integer.
21395         (rs6000_expand_vector_set): Change TARGET_VSX_SMALL_INTEGER to
21396         TARGET_P8_VECTOR test.
21397         (rs6000_secondary_reload_simple_move): Likewise.
21398         (rs6000_preferred_reload_class): Delete TARGET_VSX_SMALL_INTEGER,
21399         since TARGET_P9_VECTOR was already tested.
21400         (rs6000_opt_masks): Remove -mvsx-small-integer.
21401         * config/rs6000/vsx.md (vsx_extract_<mode>): Delete
21402         TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was
21403         used.
21404         (vsx_extract_<mode>_p9): Delete TARGET_VSX_SMALL_INTEGER, since a
21405         test for TARGET_VEXTRACTUB was used, and that uses
21406         TARGET_P9_VECTOR.
21407         (p9 extract splitter): Likewise.
21408         (vsx_extract_<mode>_di_p9): Likewise.
21409         (vsx_extract_<mode>_store_p9): Likewise.
21410         (vsx_extract_si): Delete TARGET_VSX_SMALL_INTEGER, since a test
21411         for TARGET_P9_VECTOR was used.  Delete code that is now dead with
21412         the elimination of TARGET_VSX_SMALL_INTEGER.
21413         (vsx_extract_<mode>_p8): Likewise.
21414         (vsx_ext_<VSX_EXTRACT_I:VS_scalar>_fl_<FL_CONV:mode>): Likewise.
21415         (vsx_ext_<VSX_EXTRACT_I:VS_scalar>_ufl_<FL_CONV:mode>): Likewise.
21416         (vsx_set_<mode>_p9): Likewise.
21417         (vsx_set_v4sf_p9): Likewise.
21418         (vsx_set_v4sf_p9_zero): Likewise.
21419         (vsx_insert_extract_v4sf_p9): Likewise.
21420         (vsx_insert_extract_v4sf_p9_2): Likewise.
21421         * config/rs6000/rs6000.md (sign extend splitter): Change
21422         TARGET_VSX_SMALL_INTEGER to TARGET_P8_VECTOR test.
21423         (floatsi<mode>2_lfiwax_mem): Likewise.
21424         (floatunssi<mode>2_lfiwzx_mem): Likewise.
21425         (float<QHI:mode><FP_ISA3:mode>2): Delete TARGET_VSX_SMALL_INTEGER,
21426         since a test for TARGET_P9_VECTOR was used.
21427         (float<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
21428         (floatuns<QHI:mode><FP_ISA3:mode>2): Likewise.
21429         (floatuns<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
21430         (fix_trunc<mode>si2): Change TARGET_VSX_SMALL_INTEGER to
21431         TARGET_P8_VECTOR test.
21432         (fix_trunc<mode>si2_stfiwx): Likewise.
21433         (fix_trunc<mode>si2_internal): Likewise.
21434         (fix_trunc<SFDF:mode><QHI:mode>2): Delete
21435         TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was
21436         used.
21437         (fix_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
21438         (fixuns_trunc<mode>si2): Change TARGET_VSX_SMALL_INTEGER to
21439         TARGET_P8_VECTOR test.
21440         (fixuns_trunc<mode>si2_stfiwx): Likewise.
21441         (fixuns_trunc<SFDF:mode><QHI:mode>2): Delete
21442         TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was
21443         used.
21444         (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
21445         (fctiw<u>z_<mode>_smallint): Delete TARGET_VSX_SMALL_INTEGER,
21446         since a test for TARGET_P9_VECTOR was used.
21447         (splitter for loading small constants): Likewise.
21448
21449 2017-07-26  Andrew Pinski  <apinski@cavium.com>
21450
21451         * config/aarch64/aarch64.c (thunderx_vector_cost): Fix
21452         vec_fp_stmt_cost.
21453
21454 2017-07-26  H.J. Lu  <hongjiu.lu@intel.com>
21455
21456         PR target/81563
21457         * config/i386/i386.c (sp_valid_at): Properly check CFA offset.
21458         (fp_valid_at): Likewise.
21459
21460 2017-07-26  James Greenhalgh  <james.greenhalgh@arm.com>
21461
21462         * config/aarch64/aarch64.c (cortexa57_addrcost_table): Remove.
21463         (qdf24xx_addrcost_table): Likewise.
21464         (cortexa57_tunings): Update to use generic_branch_cost.
21465         (cortexa72_tunings): Likewise.
21466         (cortexa73_tunings): Likewise.
21467         (qdf24xx_tunings): Likewise.
21468
21469 2017-07-26  James Greenhalgh  <james.greenhalgh@arm.com>
21470
21471         * config/aarch64/aarch64.c (cortexa57_branch_cost): Remove.
21472         (thunderx2t99_branch_cost): Likewise.
21473         (cortexa35_tunings): Update to use generic_branch_cost.
21474         (cortexa53_tunings): Likewise.
21475         (cortexa57_tunings): Likewise.
21476         (cortexa72_tunings): Likewise.
21477         (cortexa73_tunings): Likewise.
21478         (thunderx2t99_tunings): Likewise.
21479
21480 2017-07-26  Sebastian Huber  <sebastian.huber@embedded-brains.de>
21481
21482         * config/sparc/sparc.c (dump_target_flag_bits): Dump MASK_FSMULD.
21483         (sparc_option_override): Honour MASK_FSMULD.
21484         * config/sparc/sparc.h (MASK_FEATURES): Add MASK_FSMULD.
21485         * config/sparc/sparc.md (muldf3_extend): Use TARGET_FSMULD.
21486         * config/sparc/sparc.opt (mfsmuld): New option.
21487         * doc/invoke.texi (mfsmuld): Document option.
21488
21489 2017-07-26  Marek Polacek  <polacek@redhat.com>
21490
21491         PR middle-end/70992
21492         * tree.c (build2_stat): Don't set TREE_CONSTANT on divisions by zero.
21493
21494 2017-07-26  Richard Biener  <rguenther@suse.de>
21495
21496         * gimple-match-head.c (do_valueize): Return OP if valueize
21497         returns NULL_TREE.
21498         (get_def): New helper to get at the def stmt of a SSA name
21499         if valueize allows.
21500         * genmatch.c (dt_node::gen_kids_1): Use get_def instead of
21501         do_valueize to get at the def stmt.
21502         (dt_operand::gen_gimple_expr): Simplify do_valueize calls.
21503
21504 2017-07-26  Wilco Dijkstra  <wdijkstr@arm.com>
21505
21506         PR middle-end/46932
21507         * auto-inc-dec.c (parse_add_or_inc): Block autoinc on sfp.
21508
21509 2017-07-26  Martin Liska  <mliska@suse.cz>
21510
21511         PR sanitize/81186
21512         * function.c (expand_function_start): Make expansion of
21513         nonlocal_goto_save_area after parm_birth_insn.
21514
21515 2017-07-26  Sebastian Huber  <sebastian.huber@embedded-brains.de>
21516
21517         * config/sparc/sparc.c (sparc_option_override): Remove MASK_FPU
21518         from all CPU target flags enable members.
21519
21520 2017-07-26  Richard Biener  <rguenther@suse.de>
21521
21522         * genmatch.c (dt_simplify::gen): Make iterator vars const.
21523         (decision_tree::gen): Make 'type' const.
21524         (write_predicate): Likewise.
21525
21526 2017-07-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
21527
21528         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok):
21529         Eliminate TARGET_UPPER_REGS_{DF,DI,SF} usage.
21530         (rs6000_option_override_internal): Likewise.
21531         (rs6000_expand_vector_set): Likewise.
21532         * config/rs6000/rs6000.h (TARGET_UPPER_REGS_DF): Delete.
21533         (TARGET_UPPER_REGS_SF): Likewise.
21534         (TARGET_UPPER_REGS_DI): Likewise.
21535         (TARGET_VEXTRACTUB): Eliminate TARGET_UPPER_REGS_{DF,DI,SF}.
21536         (TARGET_DIRECT_MOVE_64BIT): Likewise.
21537         * config/rs6000/rs6000.md (ALTIVEC_DFORM): Likewise.
21538         (float<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
21539         (Splitters for DI constants in Altivec registers): Likewise.
21540         * config/rs6000/vsx.md (vsx_set_<mode>_p9): Likewise.
21541         (vsx_set_v4sf_p9): Likewise.
21542         (vsx_set_v4sf_p9_zero): Likewise.
21543         (vsx_insert_extract_v4sf_p9): Likewise.
21544         (vsx_insert_extract_v4sf_p9_2): Likewise.
21545
21546 2017-07-25  Carl Love  <cel@us.ibm.com>
21547
21548         * doc/extend.texi: Update the built-in documentation file for the
21549         existing built-in functions
21550         vector signed char vec_cnttz (vector signed char);
21551         vector unsigned char vec_cnttz (vector unsigned char);
21552         vector signed short vec_cnttz (vector signed short);
21553         vector unsigned short vec_cnttz (vector unsigned short);
21554         vector signed int vec_cnttz (vector signed int);
21555         vector unsigned int vec_cnttz (vector unsigned int);
21556         vector signed long long vec_cnttz (vector signed long long);
21557         vector unsigned long long vec_cnttz (vector unsigned long long);
21558
21559 2017-07-25  Andrew Pinski  <apinski@cavium.com>
21560
21561         * tree-ssa-uninit.c (warn_uninitialized_vars): Don't warn about memory
21562         accesses where the use is for the first operand of a BIT_INSERT.
21563
21564 2017-07-25  Jim Wilson  <jim.wilson@linaro.org>
21565
21566         PR bootstrap/81521
21567         * config/i386/winnt-cxx.c (i386_pe_adjust_class_at_definition): Look
21568         for FUNCTION_DECLs in TYPE_FIELDS rather than TYPE_METHODS.
21569
21570 2017-07-25  Jim Wilson  <jim.wilson@linaro.org>
21571
21572         * config/i386/gstabs.h: Delete.
21573         * config/i386/openbsd.h, config/i386/t-openbsd: Likewise.
21574
21575 2017-07-25  Uros Bizjak  <ubizjak@gmail.com>
21576
21577         * config/i386/i386.c (ix86_decompose_address): Do not check for
21578         register RTX when looking at index_reg or base_reg.
21579         * config/i386/i386.h (INCOMING_RETURN_ADDR_RTX): Use stack_pointer_rtx.
21580
21581 2017-07-25  Eric Botcazou  <ebotcazou@adacore.com>
21582
21583         * gimple.c (gimple_assign_set_rhs_with_ops): Do not ask gsi_replace
21584         to update EH info here.
21585
21586 2017-07-25  Alexander Monakov  <amonakov@ispras.ru>
21587
21588         * match.pd ((X * CST1) * CST2): Simplify to X * (CST1 * CST2).
21589
21590 2017-07-25  Alexander Monakov  <amonakov@ispras.ru>
21591
21592         * match.pd ((X * CST) * Y): Reassociate to (X * Y) * CST.
21593
21594 2017-07-25  Torsten Duwe  <duwe@suse.de>
21595
21596         * common.opt: Introduce -fpatchable-function-entry
21597         command line option, and its variables function_entry_patch_area_size
21598         and function_entry_patch_area_start.
21599         * opts.c (common_handle_option): Add -fpatchable_function_entry_ case,
21600         including a two-value parser.
21601         * target.def (print_patchable_function_entry): New target hook.
21602         * targhooks.h (default_print_patchable_function_entry): New function.
21603         * targhooks.c (default_print_patchable_function_entry): Likewise.
21604         * toplev.c (process_options): Switch off IPA-RA if
21605         patchable function entries are being generated.
21606         * varasm.c (assemble_start_function): Look at the
21607         patchable-function-entry command line switch and current
21608         function attributes and maybe generate NOP instructions by
21609         calling the print_patchable_function_entry hook.
21610         * doc/extend.texi: Document patchable_function_entry attribute.
21611         * doc/invoke.texi: Document -fpatchable_function_entry
21612         command line option.
21613         * doc/tm.texi.in (TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY):
21614         New target hook.
21615         * doc/tm.texi: Re-generate.
21616
21617 2017-07-25  Jakub Jelinek  <jakub@redhat.com>
21618
21619         PR target/81532
21620         * config/i386/constraints.md (Yd, Ye): Use ALL_SSE_REGS for
21621         TARGET_AVX512DQ rather than TARGET_AVX512BW.
21622
21623 2017-07-25  Tamar Christina  <tamar.christina@arm.com>
21624
21625         * config/arm/parsecpu.awk (all_cores): Remove duplicates.
21626
21627 2017-07-25  Richard Biener  <rguenther@suse.de>
21628
21629         PR tree-optimization/81455
21630         * tree-ssa-loop-unswitch.c (find_loop_guard): Make sure to
21631         not walk in cycles when looking for guards.
21632
21633 2017-07-25  Richard Biener  <rguenther@suse.de>
21634
21635         PR tree-optimization/81529
21636         * tree-vect-stmts.c (process_use): Disregard live induction PHIs
21637         when optimizing backedge uses.
21638
21639 2017-07-25  David Edelsohn  <dje.gcc@gmail.com>
21640
21641         * dwarf2asm.c (dw2_asm_output_nstring): Encode double quote
21642         character for AIX.
21643         * dwarf2out.c (output_macinfo): Copy debug_line_section_label
21644         to dl_section_ref.  On AIX, append an expression to subtract
21645         the size of the section length to dl_section_ref.
21646
21647 2017-07-25  Segher Boessenkool  <segher@kernel.crashing.org>
21648
21649         * configure.ac: If any of the config.* scripts fail, exit 1.
21650         * configure: Regenerate.
21651
21652 2017-07-25  Richard Biener  <rguenther@suse.de>
21653
21654         PR middle-end/81546
21655         * tree-ssa-operands.c (verify_imm_links): Remove cap on number
21656         of immediate uses, be more verbose on errors.
21657
21658 2017-07-25  Richard Biener  <rguenther@suse.de>
21659
21660         PR tree-optimization/81510
21661         * tree-vect-loop.c (vect_is_simple_reduction): When the
21662         reduction stmt is not inside the loop bail out.
21663
21664 2017-07-25  Richard Biener  <rguenther@suse.de>
21665
21666         PR tree-optimization/81303
21667         * tree-vect-loop-manip.c (vect_loop_versioning): Build
21668         profitability check against LOOP_VINFO_NITERSM1.
21669
21670 2017-07-25  Alexander Monakov  <amonakov@ispras.ru>
21671
21672         * domwalk.c (cmp_bb_postorder): Simplify.
21673         (sort_bbs_postorder): New function.  Use it...
21674         (dom_walker::walk): ...here to optimize common cases.
21675
21676 2017-07-25  Martin Liska  <mliska@suse.cz>
21677
21678         PR ipa/81520
21679         * ipa-visibility.c (function_and_variable_visibility): Make the
21680         redirection just on target that supports aliasing.
21681         Fix GNU coding style.
21682
21683 2017-07-25  Sebastian Huber  <sebastian.huber@embedded-brains.de>
21684
21685         PR libgcc/61152
21686         * config/aarch64/rtems.h: Add GCC Runtime Library Exception.
21687         Format changes.
21688         * config/arm/rtems.h: Likewise.
21689         * config/bfin/rtems.h: Likewise.
21690         * config/i386/rtemself.h: Likewise.
21691         * config/lm32/rtems.h: Likewise.
21692         * config/m32c/rtems.h: Likewise.
21693         * config/m68k/rtemself.h: Likewise.
21694         * config/microblaze/rtems.h: Likewise.
21695         * config/mips/rtems.h: Likewise.
21696         * config/moxie/rtems.h: Likewise.
21697         * config/nios2/rtems.h: Likewise.
21698         * config/powerpcspe/rtems.h: Likewise.
21699         * config/rs6000/rtems.h: Likewise.
21700         * config/rtems.h: Likewise.
21701         * config/sh/rtems.h: Likewise.
21702         * config/sh/rtemself.h: Likewise.
21703         * config/sparc/rtemself.h: Likewise.
21704
21705 2017-07-25  Georg-Johann Lay  <avr@gjlay.de>
21706
21707         PR 81487
21708         * hsa-brig.c (brig_init): Use xasprintf instead of asprintf.
21709         * gimple-pretty-print.c (dump_profile, dump_probability): Same.
21710         * tree-ssa-structalias.c (alias_get_name): Same.
21711
21712 2017-07-25  Bin Cheng  <bin.cheng@arm.com>
21713
21714         PR target/81414
21715         * config/aarch64/cortex-a57-fma-steering.c (analyze): Skip fmul/fmac
21716         instructions if no du chain is found.
21717
21718 2017-07-25  Georg-Johann Lay  <avr@gjlay.de>
21719
21720         * config/avr/avr-log.c (avr_log_vadump) ['T']: Print NULL-TREE.
21721
21722 2017-07-25  Richard Biener  <rguenther@suse.de>
21723
21724         PR middle-end/81505
21725         * fold-const.c (fold_negate_const): TREE_OVERFLOW should be
21726         sticky.
21727
21728 2017-07-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
21729
21730         * config/rs6000/rs6000-cpus.def (ISA_2_6_MASKS_SERVER): Delete
21731         upper-regs options.
21732         (ISA_2_7_MASKS_SERVER): Likewise.
21733         (ISA_3_0_MASKS_IEEE): Likewise.
21734         (OTHER_P8_VECTOR_MASKS): Likewise.
21735         (OTHER_VSX_VECTOR_MASKS): Likewise.
21736         (POWERPC_MASKS): Likewise.
21737         (power7 cpu): Use ISA_2_6_MASKS_SERVER instead of using a
21738         duplicate list of options.
21739         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove
21740         explicit -mupper-regs options.
21741         * config/rs6000/rs6000.opt (-mvsx-scalar-memory): Delete
21742         -mupper-regs* options.  Delete -mvsx-scalar-memory, which was an
21743         alias for -mupper-regs-df.
21744         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Likewise.
21745         (rs6000_init_hard_regno_mode_ok): Likewise.
21746         (rs6000_option_override_internal): Likewise.
21747         (rs6000_opt_masks): Likewise.
21748         * config/rs6000/rs6000.h (TARGET_UPPER_REGS_DF): Define upper regs
21749         options in terms of whether -mvsx or -mpower8-vector was used.
21750         (TARGET_UPPER_REGS_DI): Likewise.
21751         (TARGET_UPPER_REGS_SF): Likewise.
21752         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete the
21753         -mupper-regs-* options.
21754
21755 2017-07-24  Segher Boessenkool  <segher@kernel.crashing.org>
21756
21757         * passes.c (emergency_dump_function): Print some empty lines and a
21758         header before the RTL dump.
21759
21760 2017-07-24  Segher Boessenkool  <segher@kernel.crashing.org>
21761
21762         * cfgrtl.c (rtl_dump_bb): Don't call NEXT_INSN on NULL.
21763
21764 2017-07-24  Wilco Dijkstra  <wdijkstr@arm.com>
21765
21766         PR target/79041
21767         * config/aarch64/aarch64.c (aarch64_classify_symbol):
21768         Avoid SYMBOL_SMALL_ABSOLUTE for literals with pc-relative literals.
21769
21770 2017-07-24  Carl Love  <cel@us.ibm.com>
21771
21772         * config/rs6000/rs6000-c.c: Add support for built-in functions
21773         vector float vec_extract_fp32_from_shorth (vector unsigned short);
21774         vector float vec_extract_fp32_from_shortl (vector unsigned short);
21775         * config/rs6000/altivec.h (vec_extract_fp_from_shorth,
21776         vec_extract_fp_from_shortl): Add defines for the two builtins.
21777         * config/rs6000/rs6000-builtin.def (VEXTRACT_FP_FROM_SHORTH,
21778         VEXTRACT_FP_FROM_SHORTL): Add BU_P9V_OVERLOAD_1 and BU_P9V_VSX_1
21779         new builtins.
21780         * config/rs6000/vsx.md vsx_xvcvhpsp): Add define_insn.
21781         (vextract_fp_from_shorth, vextract_fp_from_shortl): Add define_expands.
21782         * doc/extend.texi: Update the built-in documentation file for the
21783         new built-in function.
21784
21785 2017-07-24  Jakub Jelinek  <jakub@redhat.com>
21786
21787         PR bootstrap/81521
21788         * tree.def: Remove TYPE_METHODS documentation, adjust TYPE_FIELDS
21789         documentation.
21790         * doc/generic.texi: Likewise.
21791         * config/i386/winnt-cxx.c (i386_pe_adjust_class_at_definition): Look
21792         for FUNCTION_DECLs in TYPE_FIELDS rather than TYPE_METHODS.
21793
21794 2017-07-24  Jackson Woodruff  <jackson.woodruff@arm.com>
21795
21796         * config/aarch64/aarch64-simd.md (aarch64_mla_elt_merge<mode>): New.
21797         (aarch64_mls_elt_merge<mode>): Likewise.
21798
21799 2017-07-23  Krister Walfridsson  <krister.walfridsson@gmail.com>
21800
21801         * config.gcc (*-*-netbsd*): Remove check for NetBSD versions not
21802         having __cxa_atexit.
21803
21804 2017-07-23  Michael Collison  <michael.collison@arm.com>
21805
21806         * config/arm/arm.c (arm_option_override): Deprecate
21807         use of -mstructure-size-boundary.
21808         * config/arm/arm.opt: Deprecate -mstructure-size-boundary.
21809         * doc/invoke.texi: Deprecate -mstructure-size-boundary.
21810
21811 2017-07-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
21812
21813         PR target/80695
21814         * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost):
21815         Reduce cost estimate for direct moves.
21816
21817 2017-07-23  Uros Bizjak  <ubizjak@gmail.com>
21818
21819         PR target/80569
21820         * config/i386/i386.c (ix86_option_override_internal): Disable
21821         BMI, BMI2 and TBM instructions for -m16.
21822
21823 2017-07-21  Carl Love  <cel@us.ibm.com>
21824
21825         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
21826         ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
21827         ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
21828         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
21829         builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
21830         * config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW,
21831         VMULOSW): New enum "unspec" values.
21832         (altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw,
21833         altivec_vmulosw): New patterns.
21834         * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
21835         VMULOSW): Add definitions.
21836
21837 2017-07-21  Jim Wilson  <jim.wilson@linaro.org>
21838
21839         * config/aarch64/aarch64-cores.def (falkor): Add AARCH64_FL_RDMA.
21840         (qdf24xx): Likewise.
21841         * config/aarch64/aarch64-options-extensions.def (rdma); New.
21842         * config/aarch64/aarch64.h (AARCH64_FL_RDMA): New.
21843         (AARCH64_FL_V8_1): Renumber.
21844         (AARCH64_FL_FOR_ARCH8_1): Add AARCH64_FL_RDMA.
21845         (AARCH64_ISA_RDMA): Use AARCH64_FL_RDMA.
21846         * config/aarch64/arm_neon.h: Use +rdma instead of arch=armv8.1-a.
21847         * doc/invoke.texi (AArch64 Options): Mention +rmda in -march docs.  Add
21848         rdma to feature modifiers list.
21849
21850 2017-07-21  Yury Gribov  <tetra2005@gmail.com>
21851
21852         PR middle-end/56727
21853         * ipa-visibility (function_and_variable_visibility): Convert
21854         recursive PLT call to direct call if appropriate.
21855
21856 2017-07-21  Andrew Pinski  <apinski@cavium.com>
21857
21858         * tree-ssa-sccvn.c (vn_nary_op_eq): Check BIT_INSERT_EXPR's
21859         operand 1 to see if the types precision matches.
21860         * fold-const.c (operand_equal_p): Likewise.
21861
21862 2017-07-21  Richard Biener  <rguenther@suse.de>
21863
21864         PR tree-optimization/81303
21865         * tree-vect-data-refs.c (vect_get_peeling_costs_all_drs): Pass
21866         in datarefs vector.  Allow NULL dr0 for no peeling cost estimate.
21867         (vect_peeling_hash_get_lowest_cost): Adjust.
21868         (vect_enhance_data_refs_alignment): Likewise.  Use
21869         vect_get_peeling_costs_all_drs to compute the penalty for no
21870         peeling to match up costs.
21871
21872 2017-07-21  Richard Biener  <rguenther@suse.de>
21873
21874         PR tree-optimization/81500
21875         * tree-vect-loop.c (vect_is_simple_reduction): Properly fail if
21876         we didn't identify a reduction path.
21877
21878 2017-07-21  Tom de Vries  <tom@codesourcery.com>
21879             Cesar Philippidis  <cesar@codesourcery.com>
21880
21881         PR gcov-profile/81442
21882         * config/nvptx/nvptx.c (nvptx_goacc_reduction_init): Add missing edge
21883         probabilities.
21884
21885 2017-07-21  Tom de Vries  <tom@codesourcery.com>
21886
21887         PR lto/81430
21888         * config/nvptx/nvptx.c (nvptx_override_options_after_change): New
21889         function.
21890         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Define to
21891         nvptx_override_options_after_change.
21892
21893 2017-07-21  Ulrich Drepper  <drepper@redhat.com>
21894
21895         * dwarf2out.c (output_file_names): Avoid double testing for
21896         dwarf_version >= 5.
21897
21898 2017-07-21  Georg-Johann Lay  <avr@gjlay.de>
21899
21900         * doc/invoke.texi (AVR Built-in Functions): Re-layout section.
21901
21902 2016-07-21  Jan Hubicka  <hubicka@ucw.cz>
21903
21904         * cfgcleanup.c (flow_find_cross_jump): Do not crossjump across
21905         hot/cold regions.
21906         (try_crossjump_to_edge): Do not punt on partitioned functions.
21907
21908 2016-07-21  Jan Hubicka  <hubicka@ucw.cz>
21909
21910         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
21911         Put all BBs reachable only via paths crossing cold region to cold
21912         region.
21913         * cfgrtl.c (find_bbs_reachable_by_hot_paths): New function.
21914
21915 2016-07-21  Richard Biener  <rguenther@suse.de>
21916
21917         PR tree-optimization/81303
21918         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Take
21919         into account prologue and epilogue iterations when raising
21920         min_profitable_iters to sth at least covering one vector iteration.
21921
21922 2017-07-21  Tamar Christina  <tamar.christina@arm.com>
21923
21924         * config/arm/arm.c (arm_test_cpu_arch_dat):
21925         Check for overlap.
21926
21927 2017-07-20  Nathan Sidwell  <nathan@acm.org>
21928
21929         Remove TYPE_METHODS.
21930         * tree.h (TYPE_METHODS): Delete.
21931         * dwarf2out.c (gen_member_die): Member fns are on TYPE_FIELDS.
21932         * dbxout.c (dbxout_type_fields): Ignore FUNCTION_DECLs.
21933         (dbxout_type_methods): Scan TYPE_FIELDS.
21934         (dbxout_type): Don't check TYPE_METHODS here.
21935         * function.c (use_register_for_decl): Always ignore register for
21936         class types when not optimizing.
21937         * ipa-devirt.c (odr_types_equivalent_p): Delete TYPE_METHODS scan.
21938         * tree.c (free_lang_data_in_type): Stitch out member functions and
21939         templates from TYPE_FIELDS.
21940         (build_distinct_type_copy, verify_type_variant,
21941         verify_type): Member fns are on TYPE_FIELDS.
21942         * tree-dump.c (dequeue_and_dump): No TYPE_METHODS.
21943         * tree-pretty-print.c (dump_generic_node): Likewise.
21944
21945 2017-07-20  Jakub Jelinek  <jakub@redhat.com>
21946
21947         PR target/80846
21948         * config/i386/i386.c (ix86_expand_vector_init_general): Handle
21949         V2TImode and V4TImode.
21950         (ix86_expand_vector_extract): Likewise.
21951         * config/i386/sse.md (VMOVE): Enable V4TImode even for just
21952         TARGET_AVX512F, instead of only for TARGET_AVX512BW.
21953         (ssescalarmode): Handle V4TImode and V2TImode.
21954         (VEC_EXTRACT_MODE): Add V4TImode and V2TImode.
21955         (*vec_extractv2ti, *vec_extractv4ti): New insns.
21956         (VEXTRACTI128_MODE): New mode iterator.
21957         (splitter for *vec_extractv?ti first element): New.
21958         (VEC_INIT_MODE): New mode iterator.
21959         (vec_init<mode>): Consolidate 3 expanders into one using
21960         VEC_INIT_MODE mode iterator.
21961
21962 2017-07-20  Alexander Monakov  <amonakov@ispras.ru>
21963
21964         * lra-assigns.c (pseudo_compare_func): Fix comparison step based on
21965         non_spilled_static_chain_regno_p.
21966
21967 2017-07-20  Alexander Monakov  <amonakov@ispras.ru>
21968
21969         * gimple-ssa-store-merging.c (sort_by_bitpos): Return 0 on equal bitpos.
21970
21971 2017-07-20  Jan Hubicka  <hubicka@ucw.cz>
21972
21973         * bb-reorder.c (connect_traces): Allow copying of blocks within
21974         single partition.
21975
21976 2017-07-20  Richard Biener  <rguenther@suse.de>
21977
21978         * gimple.h (gimple_phi_result): Add gphi * overload.
21979         (gimple_phi_result_ptr): Likewise.
21980         (gimple_phi_arg): Likewise.  Adjust index assert to only
21981         allow actual argument accesses rather than all slots available
21982         by capacity.
21983         (gimple_phi_arg_def): Add gphi * overload.
21984         * tree-phinodes.c (make_phi_node): Initialize only actual
21985         arguments.
21986         (resize_phi_node): Clear memory not covered by old node,
21987         do not initialize excess argument slots.
21988         (reserve_phi_args_for_new_edge): Initialize new argument slot
21989         completely.
21990
21991 2017-07-20  Bin Cheng  <bin.cheng@arm.com>
21992
21993         PR tree-optimization/81388
21994         Revert r238585:
21995         2016-07-21  Bin Cheng  <bin.cheng@arm.com>
21996
21997         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Clean up
21998         by removing computation of may_be_zero.
21999
22000 2017-07-18  Jan Hubicka  <hubicka@ucw.cz>
22001             Tom de Vries  <tom@codesourcery.com>
22002
22003         PR middle-end/81030
22004         * cfgbuild.c (find_many_sub_basic_blocks): Update REG_BR_PROB note
22005         when gimple level profile disagrees with what RTL expander did.
22006
22007 2017-07-20  Richard Biener  <rguenther@suse.de>
22008
22009         PR tree-optimization/61171
22010         * tree-vectorizer.h (slp_instance): Add reduc_phis member.
22011         (vect_analyze_stmt): Add slp instance parameter.
22012         (vectorizable_reduction): Likewise.
22013         * tree-vect-loop.c (vect_analyze_loop_operations): Adjust.
22014         (vect_is_simple_reduction): Deal with chains not detected
22015         as SLP reduction chain, specifically not properly associated
22016         chains containing a mix of plus/minus.
22017         (get_reduction_op): Remove.
22018         (get_initial_defs_for_reduction): Simplify, pass in whether
22019         this is a reduction chain, pass in the SLP node for the PHIs.
22020         (vect_create_epilog_for_reduction): Get the SLP instance as
22021         arg and adjust.
22022         (vectorizable_reduction): Get the SLP instance as arg.
22023         During analysis remember the SLP node with the PHIs in the
22024         instance.  Simplify getting at the vectorized reduction PHIs.
22025         * tree-vect-slp.c (vect_slp_analyze_node_operations): Pass
22026         through SLP instance.
22027         (vect_slp_analyze_operations): Likewise.
22028         * tree-vect-stms.c (vect_analyze_stmt): Likewise.
22029         (vect_transform_stmt): Likewise.
22030
22031 2017-07-20  Tom de Vries  <tom@codesourcery.com>
22032
22033         PR tree-optimization/81489
22034         * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): Move
22035         read of phi arg location to before loop that modifies phi.
22036
22037 2017-07-20  Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
22038
22039         * match.pd (((m1 >/</>=/<= m2) * d -> (m1 >/</>=/<= m2) ? d : 0):
22040         New pattern.
22041
22042 2017-07-19  Jan Hubicka  <hubicka@ucw.cz>
22043
22044         PR middle-end/81331
22045         * except.c (execute): Fix ordering issue.
22046
22047 2018-07-19  Segher Boessenkool  <segher@kernel.crashing.org>
22048
22049         PR rtl-optimization/81423
22050         * combine.c (make_compound_operation_int): Don't try to optimize
22051         the AND of a SUBREG of an LSHIFTRT if that SUBREG is paradoxical.
22052
22053 2017-07-19  Segher Boessenkool  <segher@kernel.crashing.org>
22054
22055         PR rtl-optimization/81423
22056         * simplify-rtx.c (simplify_truncation): Handle truncating an IOR
22057         with a constant that is -1 in the truncated to mode.
22058
22059 2017-07-19  Jan Hubicka  <hubicka@ucw.cz>
22060
22061         * predict.c (propagate_unlikely_bbs_forward): Break out from ...
22062         (determine_unlikely_bbs): ... here.
22063         * predict.h (propagate_unlikely_bbs_forward): Declare.
22064         * cfgexpand.c (pass_expand::execute): Use it.
22065         * bb-reorder.c (sanitize_hot_paths): Do not consider known to be
22066         unlikely edges.
22067         (find_rarely_executed_basic_blocks_and_crossing_edges): Use
22068         propagate_unlikely_bbs_forward.
22069
22070 2017-07-19  Jan Hubicka  <hubicka@ucw.cz>
22071
22072         PR middle-end/81331
22073         * except.c (maybe_add_nop_after_section_switch): New function.
22074         (execute): Use it.
22075
22076 2017-07-19  Tom de Vries  <tom@codesourcery.com>
22077
22078         * gimple.h (gimple_phi_set_arg): Make assert more strict.
22079
22080 2017-07-19  Tom de Vries  <tom@codesourcery.com>
22081
22082         * gimple.h (gimple_phi_arg): Make assert more strict.
22083
22084 2017-07-19  Steven Munroe  <munroesj@gcc.gnu.org>
22085
22086         * config.gcc (powerpc*-*-*): Add mmintrin.h.
22087         * config/rs6000/mmintrin.h: New file.
22088         * config/rs6000/x86intrin.h [__ALTIVEC__]: Include mmintrin.h.
22089
22090 2017-07-19  Jakub Jelinek  <jakub@redhat.com>
22091
22092         PR tree-optimization/81346
22093         * match.pd: Optimize (X - 1U) <= INT_MAX-1U into (int) X > 0.
22094
22095 2017-07-19  Tom de Vries  <tom@codesourcery.com>
22096
22097         * config/nvptx/nvptx.md (VECIM): Add V2DI.
22098
22099 2017-07-19  Tom de Vries  <tom@codesourcery.com>
22100
22101         * config/nvptx/nvptx-modes.def: Add V2DImode.
22102         * config/nvptx/nvptx-protos.h (nvptx_data_alignment): Declare.
22103         * config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Handle V2DImode.
22104         (nvptx_output_mov_insn): Handle lack of mov.b128.
22105         (nvptx_print_operand): Handle 'H' and 'L' codes.
22106         (nvptx_vector_mode_supported): Allow V2DImode.
22107         (nvptx_preferred_simd_mode): New function.
22108         (nvptx_data_alignment): New function.
22109         (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): Redefine to
22110         nvptx_preferred_simd_mode.
22111         * config/nvptx/nvptx.h (STACK_BOUNDARY, BIGGEST_ALIGNMENT): Change from
22112         64 to 128 bits.
22113         (DATA_ALIGNMENT): Define.  Set to nvptx_data_alignment.
22114
22115 2017-07-19  Tom de Vries  <tom@codesourcery.com>
22116
22117         * config/nvptx/nvptx-modes.def: New file.  Add V2SImode.
22118         * config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Handle V2SImode.
22119         (nvptx_vector_mode_supported): New function.  Allow V2SImode.
22120         (TARGET_VECTOR_MODE_SUPPORTED_P): Redefine to nvptx_vector_mode_supported.
22121         * config/nvptx/nvptx.md (VECIM): New mode iterator. Add V2SI.
22122         (mov<VECIM>_insn): New define_insn.
22123         (define_expand "mov<VECIM>): New define_expand.
22124
22125 2017-07-19  Tom de Vries  <tom@codesourcery.com>
22126
22127         * config/nvptx/nvptx.c (nvptx_print_operand): Handle v2 vector mode.
22128
22129 2017-07-19  Jakub Jelinek  <jakub@redhat.com>
22130
22131         PR tree-optimization/81346
22132         * fold-const.h (fold_div_compare, range_check_type): Declare.
22133         * fold-const.c (range_check_type): New function.
22134         (build_range_check): Use range_check_type.
22135         (fold_div_compare): No longer static, rewritten into
22136         a match.pd helper function.
22137         (fold_comparison): Don't call fold_div_compare here.
22138         * match.pd (X / C1 op C2): New optimization using fold_div_compare
22139         as helper function.
22140
22141 2017-07-19  Nathan Sidwell  <nathan@acm.org>
22142
22143         * tree.h (TYPE_MINVAL, TYPE_MAXVAL): Rename to ...
22144         (TYPE_MIN_VALUE_RAW, TYPE_MAX_VALUE_RAW): ... these.
22145         * tree.c (find_decls_types_r, verify_type): Use
22146         TYPE_{MIN,MAX}_VALUE_RAW.
22147         * lto-streamer-out.c (DFS::DFS_write_tree_body): Likewise.
22148         (hash_tree): Likewise.
22149         * tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers):
22150         Likewise.
22151         * tree-streamer-out.c (write_ts_type_non_common_tree_pointers):
22152         Likewise.
22153
22154 2017-07-18  Tom de Vries  <tom@codesourcery.com>
22155
22156         PR middle-end/81464
22157         * omp-expand.c (expand_omp_for_static_chunk): Handle
22158         equal-argument loop exit phi.
22159
22160 2017-07-18  Uros Bizjak  <ubizjak@gmail.com>
22161
22162         PR target/81471
22163         * config/i386/i386.md (rorx_immediate_operand): New mode attribute.
22164         (*bmi2_rorx<mode>3_1): Use rorx_immediate_operand as
22165         operand 2 predicate.
22166         (*bmi2_rorxsi3_1_zext): Use const_0_to_31_operand as
22167         operand 2 predicate.
22168         (ror,rol -> rorx splitters): Use const_int_operand as
22169         operand 2 predicate.
22170
22171 2017-06-18  Richard Biener  <rguenther@suse.de>
22172
22173         PR tree-optimization/81410
22174         * tree-vect-stmts.c (vectorizable_load): Properly adjust for
22175         the gap in the ! slp_perm SLP case after each group.
22176
22177 2017-07-18  Jan Hubicka  <hubicka@ucw.cz>
22178
22179         PR middle-end/81463
22180         * cfgloopmanip.c (scale_loop_profile): Watch out for zero frequency
22181         again.
22182
22183 2017-07-18  Jan Hubicka  <hubicka@ucw.cz>
22184
22185         PR middle-end/81462
22186         * predict.c (set_even_probabilities): Cleanup; do not affect
22187         probabilities that are already known.
22188         (combine_predictions_for_bb): Call even when count is set.
22189
22190 2017-07-18  Nathan Sidwell  <nathan@acm.org>
22191
22192         * tree-parloops.c (try_transform_to_exit_first_loop_alt): Use
22193         TYPE_MAX_VALUE.
22194
22195 2017-07-18  Bin Cheng  <bin.cheng@arm.com>
22196
22197         PR target/81408
22198         * tree-ssa-loop-niter.c (number_of_iterations_exit): Dump missed
22199         optimization for loop niter analysis.
22200
22201 2017-07-18  Georg-Johann Lay  <avr@gjlay.de>
22202
22203         PR target/81473
22204         * config/avr/avr.c (avr_optimize_casesi): Don't use
22205         INT8_MIN, INT8_MAX, UINT8_MAX, INT16_MIN, INT16_MAX, UINT16_MAX.
22206
22207 2017-07-18  Robin Dapp  <rdapp@linux.vnet.ibm.com>
22208
22209         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Remove
22210         body_cost_vec from _vect_peel_extended_info.
22211         (vect_peeling_hash_get_lowest_cost): Do not set body_cost_vec.
22212         (vect_peeling_hash_choose_best_peeling): Remove body_cost_vec and
22213         npeel.
22214
22215 2017-07-18  Bin Cheng  <bin.cheng@arm.com>
22216
22217         * config/arm/arm.c (emit_unlikely_jump): Remove unused var.
22218
22219 2017-07-18  Richard Biener  <rguenther@suse.de>
22220
22221         PR tree-optimization/80620
22222         PR tree-optimization/81403
22223         * tree-ssa-pre.c (phi_translate_1): Clear range and points-to
22224         info when re-using a VN table entry.
22225
22226 2017-07-18  Richard Biener  <rguenther@suse.de>
22227
22228         PR tree-optimization/81418
22229         * tree-vect-loop.c (vectorizable_reduction): Properly compute
22230         vectype_in.  Verify that with lane-reducing reduction operations
22231         we have a single def-use cycle.
22232
22233 2017-07-17  Carl Love  <cel@us.ibm.com>
22234
22235         Revert commit r249424   2017-06-20  Carl Love  <cel@us.ibm.com>
22236
22237         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
22238         ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
22239         ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
22240         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
22241         builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
22242         * config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW,
22243         VMULOSW): New enum "unspec" values.
22244         (vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
22245         vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si,
22246         altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw,
22247         altivec_vmulosw): New patterns.
22248         * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
22249         VMULOSW): Add definitions.
22250
22251 2017-07-17  Uros Bizjak  <ubizjak@gmail.com>
22252
22253         * config/alpha/alpha.c: Include predict.h.
22254
22255 2017-07-17  Yury Gribov  <tetra2005@gmail.com>
22256
22257         * tree-vrp.c (compare_assert_loc): Fix comparison function
22258         to return predictable results.
22259
22260 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
22261
22262         * config/arc/arc.md (adddi3): Remove support for mexpand-adddi
22263         option.
22264         (subdi3): Likewise.
22265         * config/arc/arc.opt (mexpand-adddi): Deprecate it.
22266         * doc/invoke.texi (mexpand-adddi): Update text.
22267
22268 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
22269
22270         * config/arc/arc.md (clzsi2): Expand to an arc_clzsi2 instruction
22271         that also clobbers the CC register. The old expand code is moved
22272         to ...
22273         (*arc_clzsi2): ... here.
22274         (ctzsi2): Expand to an arc_ctzsi2 instruction that also clobbers
22275         the CC register. The old expand code is moved to ...
22276         (arc_ctzsi2): ... here.
22277
22278 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
22279
22280         * config/arc/arc.opt (mindexed-loads): Use initial value
22281         TARGET_INDEXED_LOADS_DEFAULT.
22282         (mauto-modify-reg): Use initial value
22283         TARGET_AUTO_MODIFY_REG_DEFAULT.
22284         * config/arc/elf.h (TARGET_INDEXED_LOADS_DEFAULT): Define.
22285         (TARGET_AUTO_MODIFY_REG_DEFAULT): Likewise.
22286         * config/arc/linux.h (TARGET_INDEXED_LOADS_DEFAULT): Define.
22287         (TARGET_AUTO_MODIFY_REG_DEFAULT): Likewise.
22288
22289 2017-07-17  Martin Liska  <mliska@suse.cz>
22290
22291         PR sanitizer/81302
22292         * opts.c (finish_options): Do not allow -fgnu-tm
22293         w/ -fsanitize={kernel-,}address.  Say sorry.
22294
22295 2017-07-17  Bin Cheng  <bin.cheng@arm.com>
22296
22297         PR target/81369
22298         * tree-loop-distribution.c (classify_partition): Only assert on
22299         numer of iterations.
22300         (merge_dep_scc_partitions): Delete prameter.  Update function call.
22301         (distribute_loop): Remove code handling loop with unknown niters.
22302         (pass_loop_distribution::execute): Skip loop with unknown niters.
22303
22304 2017-07-17  Bin Cheng  <bin.cheng@arm.com>
22305
22306         PR target/81369
22307         * tree-loop-distribution.c (merge_dep_scc_partitions): Sink call to
22308         function sort_partitions_by_post_order.
22309
22310 2017-07-17  Bin Cheng  <bin.cheng@arm.com>
22311
22312         PR tree-optimization/81374
22313         * tree-loop-distribution.c (pass_loop_distribution::execute): Record
22314         the max index of basic blocks, rather than number of basic blocks.
22315
22316 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
22317
22318         * config/arc/arc-protos.h (arc_legitimate_pc_offset_p): Remove
22319         proto.
22320         (arc_legitimate_pic_operand_p): Likewise.
22321         * config/arc/arc.c (arc_legitimate_pic_operand_p): Remove
22322         function.
22323         (arc_needs_pcl_p): Likewise.
22324         (arc_legitimate_pc_offset_p): Likewise.
22325         (arc_legitimate_pic_addr_p): Remove LABEL_REF case, as this
22326         function is also used in constrains.md.
22327         (arc_legitimate_constant_p): Use arc_legitimate_pic_addr_p to
22328         validate pic constants. Handle CONST_INT, CONST_DOUBLE, MINUS and
22329         PLUS.  Only return true/false in known cases, otherwise assert.
22330         (arc_legitimate_address_p): Remove arc_legitimate_pic_addr_p as it
22331         is already called in arc_legitimate_constant_p.
22332         * config/arc/arc.h (CONSTANT_ADDRESS_P): Consider also LABEL for
22333         pic addresses.
22334         (LEGITIMATE_PIC_OPERAND_P): Use
22335         arc_raw_symbolic_reference_mentioned_p function.
22336         * config/arc/constraints.md (Cpc): Use arc_legitimate_pic_addr_p
22337         function.
22338         (Cal): Likewise.
22339         (C32): Likewise.
22340
22341 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
22342         Andrew Burgess  <andrew.burgess@embecosm.com>
22343
22344         * config/arc/arc-protos.h (arc_compute_function_type): Change prototype.
22345         (arc_return_address_register): New function.
22346         * config/arc/arc.c (arc_handle_fndecl_attribute): New function.
22347         (arc_handle_fndecl_attribute): Add naked attribute.
22348         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
22349         (TARGET_WARN_FUNC_RETURN): Likewise.
22350         (arc_allocate_stack_slots_for_args): New function.
22351         (arc_warn_func_return): Likewise.
22352         (machine_function): Change type fn_type.
22353         (arc_compute_function_type): Consider new naked function type,
22354         change function return type.
22355         (arc_must_save_register): Adapt to handle new
22356         arc_compute_function_type's return type.
22357         (arc_expand_prologue): Likewise.
22358         (arc_expand_epilogue): Likewise.
22359         (arc_return_address_regs): Delete.
22360         (arc_return_address_register): New function.
22361         (arc_epilogue_uses): Use above function.
22362         * config/arc/arc.h (arc_return_address_regs): Delete prototype.
22363         (arc_function_type): Change encoding, add naked type.
22364         (ARC_INTERRUPT_P): Change to handle the new encoding.
22365         (ARC_FAST_INTERRUPT_P): Likewise.
22366         (ARC_NORMAL_P): Define.
22367         (ARC_NAKED_P): Likewise.
22368         (arc_compute_function_type): Delete prototype.
22369         * config/arc/arc.md (in_ret_delay_slot): Use
22370         arc_return_address_register function.
22371         (simple_return): Likewise.
22372         (p_return_i): Likewise.
22373
22374 2017-07-17  Jakub Jelinek  <jakub@redhat.com>
22375
22376         PR tree-optimization/81428
22377         * match.pd (X / X -> one): Don't optimize _Fract divisions, as 1
22378         can't be built for those types.
22379
22380 2017-07-17  Georg-Johann Lay  <avr@gjlay.de>
22381
22382         Remove stuff dead since r239246.
22383
22384         * config/avr/avr-arch.h (avr_inform_devices): Remove dead proto.
22385         * config/avr/avr-devices.c (mcu_name, comparator, avr_mcus_str)
22386         (avr_inform_devices): Remove dead stuff.
22387
22388 2017-07-17  Tamar Christina  <tamar.christina@arm.com>
22389
22390         * config/arm/arm_neon.h: Fix softp typo.
22391
22392 2017-07-17  Jakub Jelinek  <jakub@redhat.com>
22393
22394         PR tree-optimization/81365
22395         * tree-ssa-phiprop.c (propagate_with_phi): When considering hoisting
22396         aggregate moves onto bb predecessor edges, make sure there are no
22397         loads that could alias the lhs in between the start of bb and the
22398         loads from *phi.
22399
22400 2017-07-17  Georg-Johann Lay  <avr@gjlay.de>
22401
22402         PR 80929
22403         * config/avr/avr.c (avr_mul_highpart_cost): New static function.
22404         (avr_rtx_costs_1) [TRUNCATE]: Use it to compute mul_highpart cost.
22405         [LSHIFTRT, outer_code = TRUNCATE]: Same.
22406
22407 2017-07-17  Jakub Jelinek  <jakub@redhat.com>
22408
22409         PR tree-optimization/81396
22410         * tree-ssa-math-opts.c (struct symbolic_number): Add n_ops field.
22411         (init_symbolic_number): Initialize it to 1.
22412         (perform_symbolic_merge): Add n_ops from both operands into the new
22413         n_ops.
22414         (find_bswap_or_nop): Don't consider n->n == cmpnop computations
22415         without base_addr as useless if they need more than one operation.
22416         (bswap_replace): Handle !bswap case for NULL base_addr.
22417
22418 2017-07-17  Tom de Vries  <tom@codesourcery.com>
22419
22420         PR target/81069
22421         * config/nvptx/nvptx.c (nvptx_single): Insert diverging branch as late
22422         as possible.
22423
22424 2017-07-17  Sebastian Huber  <sebastian.huber@embedded-brains.de>
22425
22426         * config/sparc/rtemself.h (TARGET_OS_CPP_BUILTINS): Add
22427         conditional builtin define __FIX_LEON3FT_B2BST.
22428
22429 2017-07-17  Daniel Cederman  <cederman@gaisler.com>
22430
22431         * config/sparc/t-rtems: Add mfix-gr712rc multilibs. Replace
22432         MULTILIB_EXCEPTIONS with MULTILIB_REQUIRED. Match -mfix-gr712rc
22433         with -mfix-ut700.
22434
22435 2017-07-16  Eric Botcazou  <ebotcazou@adacore.com>
22436
22437         PR rtl-optimization/81424
22438         * optabs.c (prepare_cmp_insn): Use copy_to_reg instead of force_reg
22439         to remove potential trapping from operands if -fnon-call-exceptions.
22440
22441 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
22442
22443         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Use
22444         profile_proability for scalling.
22445         * scale_profile_for_vect_loop.c (scale_profile_for_vect_loop): Likewise.
22446
22447 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
22448
22449         * cgraph.c (cgraph_edge::redirect_call_stmt_to_caller): Cleanup.
22450
22451 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
22452
22453         * cfgloopmanip.c (scale_loop_profile): Avoid use of REG_BR_PROB_BASE
22454         fixpoint arithmetics.
22455
22456 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
22457
22458         * tree-ssa-loop-unswitch.c (hoist_guard): Avoid use of REG_BR_PROB_BASE
22459         fixpoint arithmetics.
22460
22461 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
22462
22463         * asan.c (create_cond_insert_point): Avoid use of REG_BR_PROB_BASE
22464         fixpoint arithmetics.
22465
22466 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
22467
22468         * profile-count.h (profile_probability::from_reg_br_prob_note,
22469         profile_probability::to_reg_br_prob_note): New functions.
22470         * doc/rtl.texi (REG_BR_PROB_NOTE): Update documentation.
22471         * reg-notes.h (REG_BR_PROB, REG_BR_PRED): Update docs.
22472         * predict.c (probability_reliable_p): Update.
22473         (edge_probability_reliable_p): Update.
22474         (br_prob_note_reliable_p): Update.
22475         (invert_br_probabilities): Update.
22476         (add_reg_br_prob_note): New function.
22477         (combine_predictions_for_insn): Update.
22478         * asan.c (asan_clear_shadow): Update.
22479         * cfgbuild.c (compute_outgoing_frequencies): Update.
22480         * cfgrtl.c (force_nonfallthru_and_redirect): Update.
22481         (update_br_prob_note): Update.
22482         (rtl_verify_edges): Update.
22483         (purge_dead_edges): Update.
22484         (fixup_reorder_chain): Update.
22485         * emit-rtl.c (try_split): Update.
22486         * ifcvt.c (cond_exec_process_insns): Update.
22487         (cond_exec_process_if_block): Update.
22488         (dead_or_predicable): Update.
22489         * internal-fn.c (expand_addsub_overflow): Update.
22490         (expand_neg_overflow): Update.
22491         (expand_mul_overflow): Update.
22492         * loop-doloop.c (doloop_modify): Update.
22493         * loop-unroll.c (compare_and_jump_seq): Update.
22494         * optabs.c (emit_cmp_and_jump_insn_1): Update.
22495         * predict.h: Update.
22496         * reorg.c (mostly_true_jump): Update.
22497         * rtl.h: Update.
22498         * config/aarch64/aarch64.c (aarch64_emit_unlikely_jump): Update.
22499         * config/alpha/alpha.c (emit_unlikely_jump): Update.
22500         * config/arc/arc.c: (emit_unlikely_jump): Update.
22501         * config/arm/arm.c: (emit_unlikely_jump): Update.
22502         * config/bfin/bfin.c (cbranch_predicted_taken_p): Update.
22503         * config/frv/frv.c (frv_print_operand_jump_hint): Update.
22504         * config/i386/i386.c (ix86_expand_split_stack_prologue): Update.
22505         (ix86_print_operand): Update.
22506         (ix86_split_fp_branch): Update.
22507         (predict_jump): Update.
22508         * config/ia64/ia64.c (ia64_print_operand): Update.
22509         * config/mmix/mmix.c (mmix_print_operand): Update.
22510         * config/powerpcspe/powerpcspe.c (output_cbranch): Update.
22511         (rs6000_expand_split_stack_prologue): Update.
22512         * config/rs6000/rs6000.c: Update.
22513         * config/s390/s390.c (s390_expand_vec_strlen): Update.
22514         (s390_expand_vec_movstr): Update.
22515         (s390_expand_cs_tdsi): Update.
22516         (s390_expand_split_stack_prologue): Update.
22517         * config/sh/sh.c (sh_print_operand): Update.
22518         (expand_cbranchsi4): Update.
22519         (expand_cbranchdi4): Update.
22520         * config/sparc/sparc.c (output_v9branch): Update.
22521         * config/spu/spu.c (get_branch_target): Update.
22522         (ea_load_store_inline): Update.
22523         * config/tilegx/tilegx.c (cbranch_predicted_p): Update.
22524         * config/tilepro/tilepro.c: Update.
22525
22526 2017-07-16  Eric Botcazou  <ebotcazou@adacore.com>
22527
22528         * gimplify.c (mostly_copy_tree_r): Revert latest change.
22529         (gimplify_save_expr): Likewise.
22530
22531 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
22532
22533         * ipa-visibility.c (function_and_variable_visibility): Fix pasto.
22534
22535 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
22536
22537         * ipa-fnsummary.c (pass_data_ipa_fn_summary): Use
22538         TV_IPA_FNSUMMARY.
22539         * timevar.def (TV_IPA_FNSUMMARY): Define.
22540
22541 2017-07-16  Daniel Cederman  <cederman@gaisler.com>
22542
22543         * config/sparc/sparc.md (divdf3_fix): Add NOP to prevent back
22544         to back store errata sensitive sequence from being generated.
22545         (sqrtdf2_fix): Likewise.
22546
22547 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
22548
22549         * tree-ssa-threadupdate.c (compute_path_counts,
22550         update_joiner_offpath_counts): Use profile_probability.
22551
22552 2017-07-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>
22553
22554         Revert:
22555         2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
22556
22557         * config/arm/arm-c.c (arm_cpu_builtins): Define
22558         __ARM_FEATURE_NUMERIC_MAXMIN solely based on TARGET_VFP5.
22559
22560 2017-07-14  Kelvin Nilsen  <kelvin@gcc.gnu.org>
22561
22562         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
22563         array entries to represent __ieee128 versions of the
22564         scalar_test_data_class, scalar_test_neg, scalar_extract_exp,
22565         scalar_extract_sig, and scalar_insert_exp built-in functions.
22566         (altivec_resolve_overloaded_builtin): Add special case handling
22567         for the __builtin_scalar_insert_exp function, as represented by
22568         the P9V_BUILTIN_VEC_VSIEDP constant.
22569         * config/rs6000/rs6000-builtin.def (VSEEQP): Add scalar extract
22570         exponent support for __ieee128 argument.
22571         (VSESQP): Add scalar extract signature support for __ieee128
22572         argument.
22573         (VSTDCNQP): Add scalar test negative support for __ieee128
22574         argument.
22575         (VSIEQP): Add scalar insert exponent support for __int128 argument
22576         with __ieee128 result.
22577         (VSIEQPF): Add scalar insert exponent support for __ieee128
22578         argument with __ieee128 result.
22579         (VSTDCQP): Add scalar test data class support for __ieee128
22580         argument.
22581         (VSTDCNQP): Add overload support for scalar test negative with
22582         __ieee128 argument.
22583         (VSTDCQP): Add overload support for scalar test data class
22584         __ieee128 argument.
22585         * config/rs6000/vsx.md (UNSPEC_VSX_SXSIG) Replace
22586         UNSPEC_VSX_SXSIGDP.
22587         (UNSPEC_VSX_SIEXPQP): New constant.
22588         (xsxexpqp): New insn for VSX scalar extract exponent quad
22589         precision.
22590         (xsxsigqp): New insn for VSX scalar extract significand quad
22591         precision.
22592         (xsiexpqpf): New insn for VSX scalar insert exponent quad
22593         precision with floating point argument.
22594         (xststdcqp): New expand for VSX scalar test data class quad
22595         precision.
22596         (xststdcnegqp): New expand for VSX scalar test negative quad
22597         precision.
22598         (xststdcqp): New insn to match expansions for VSX scalar test data
22599         class quad precision and VSX scalar test negative quad precision.
22600         * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Add
22601         special case operand checking to enforce that second operand of
22602         VSX scalar test data class with quad precision argument is a 7-bit
22603         unsigned literal.
22604         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Add
22605         prototypes and descriptions of __ieee128 versions of
22606         scalar_extract_exp, scalar_extract_sig, scalar_insert_exp,
22607         scalar_test_data_class, and scalar_test_neg built-in functions.
22608
22609 2016-07-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
22610
22611         PR tree-optimization/81162
22612         * gimple-ssa-strength-reduction.c (replace_mult_candidate): Don't
22613         replace a negate with an add.
22614
22615 2017-07-14  James Greenhalgh  <james.greenhalgh@arm.com>
22616
22617         * doc/invoke.texi (arm/-mcpu): Document +crypto.
22618
22619 2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
22620
22621         * config/arm/arm-c.c (arm_cpu_builtins): Define
22622         __ARM_FEATURE_NUMERIC_MAXMIN solely based on TARGET_VFP5.
22623
22624 2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
22625
22626         * config/arm/arm-cpus.in (cortex-r52): Add new entry.
22627         (armv8-r): Set ARM Cortex-R52 as default CPU.
22628         * config/arm/arm-tables.opt: Regenerate.
22629         * config/arm/arm-tune.md: Regenerate.
22630         * config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
22631         Cortex-R52.
22632         * doc/invoke.texi: Mention -mtune=cortex-r52 and availability of fp.dp
22633         extension for -mcpu=cortex-r52.
22634
22635 2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
22636
22637         * config/arm/arm-isa.h (isa_bit_FP_ARMv8): Delete enumerator.
22638         (ISA_FP_ARMv8): Define as ISA_FPv5 and ISA_FP_D32.
22639         * config/arm/arm-cpus.in (armv8-r): Define fp.sp as enabling FPv5.
22640         (fp-armv8): Define it as FP_ARMv8 only.
22641         config/arm/arm.h (TARGET_FPU_ARMV8): Delete.
22642         (TARGET_VFP_FP16INST): Define using TARGET_VFP5 rather than
22643         TARGET_FPU_ARMV8.
22644         config/arm/arm.c (arm_rtx_costs_internal): Replace checks against
22645         TARGET_FPU_ARMV8 by checks against TARGET_VFP5.
22646         * config/arm/arm-builtins.c (arm_builtin_vectorized_function): Define
22647         first ARM_CHECK_BUILTIN_MODE definition using TARGET_VFP5 rather
22648         than TARGET_FPU_ARMV8.
22649         * config/arm/arm-c.c (arm_cpu_builtins): Likewise for
22650         __ARM_FEATURE_NUMERIC_MAXMIN macro definition.
22651         * config/arm/arm.md (cmov<mode>): Condition on TARGET_VFP5 rather than
22652         TARGET_FPU_ARMV8.
22653         * config/arm/neon.md (neon_vrint): Likewise.
22654         (neon_vcvt): Likewise.
22655         (neon_<fmaxmin_op><mode>): Likewise.
22656         (<fmaxmin><mode>3): Likewise.
22657         * config/arm/vfp.md (l<vrint_pattern><su_optab><mode>si2): Likewise.
22658         * config/arm/predicates.md (arm_cond_move_operator): Check against
22659         TARGET_VFP5 rather than TARGET_FPU_ARMV8 and fix spacing.
22660
22661 2017-07-14  Jackson Woodruff  <jackson.woodruff@arm.com>
22662
22663         * config/aarch64/aarch64.c (aarch64_print_operand): Move comments
22664         to top of function.
22665
22666 2017-07-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
22667
22668         * gimple-ssa-store-merging.c (clear_bit_region): Replace reference to
22669         loop in comment with memset.
22670
22671 2017-07-14  Martin Liska  <mliska@suse.cz>
22672
22673         * cfgexpand.c (expand_gimple_basic_block): Remove dead comment.
22674         * dwarf2out.c (is_java): Remove the function.
22675         (output_pubname): Remove usage of the function.
22676         (lower_bound_default): Remove usage of DW_LANG_Java.
22677         (gen_compile_unit_die): Likewise.
22678         * gcc.c: Remove compiler defaults for .java and .zip files.
22679         * gimple-expr.c (remove_suffix): Change as there's no longer
22680         extension than 4-letter one.
22681         * gimplify.c (mostly_copy_tree_r): Remove Java-special part.
22682         (gimplify_save_expr): Likewise.
22683         * ipa-utils.h (polymorphic_type_binfo_p): Remove the comment
22684         as it's possible even for other languages than Java.
22685         * langhooks.h (struct lang_hooks): Remove Java from a comment.
22686         * lto-opts.c (lto_write_options): Remove reference to Java.
22687         * opts.c (strip_off_ending): Update file extension handling.
22688         * tree-cfg.c (verify_gimple_call): Remove comment with Java.
22689         * tree-eh.c (lower_resx): Likewise.
22690         * tree.c (free_lang_data_in_type): Remove dead code.
22691         (find_decls_types_r): Likewise.
22692         (build_common_builtin_nodes): Remove Java from a comment.
22693         (verify_type): Remove dead code.
22694         * varasm.c (assemble_external): Remove Java from a comment.
22695
22696 2017-07-14  Martin Liska  <mliska@suse.cz>
22697
22698         * opts.c (finish_options): Add quotes.
22699         (common_handle_option): Likewise.
22700
22701 2017-07-14  Martin Liska  <mliska@suse.cz>
22702
22703         * dbxout.c (get_lang_number): Do not handle GNU Pascal.
22704         * dbxout.h (extern void dbxout_stab_value_internal_label_diff):
22705         Remove N_SO_PASCAL.
22706         * dwarf2out.c (lower_bound_default): Do not handle
22707         DW_LANG_Pascal83.
22708         (gen_compile_unit_die): Likewise.
22709         * gcc.c: Remove default extension binding for GNU Pascal.
22710         * stmt.c: Remove Pascal language from a comment.
22711         * xcoffout.c: Likewise.
22712
22713 2017-07-13  David Malcolm  <dmalcolm@redhat.com>
22714
22715         PR c/81405
22716         * diagnostic-show-locus.c (fixit_cmp): New function.
22717         (layout::layout): Sort m_fixit_hints.
22718         (column_range::column_range): Assert that the values are valid.
22719         (struct char_span): New struct.
22720         (correction::overwrite): New method.
22721         (struct source_line): New struct.
22722         (line_corrections::add_hint): Add assertions.  Reimplement memcpy
22723         calls in terms of classes source_line and char_span, and
22724         correction::overwrite.
22725         (selftest::test_overlapped_fixit_printing_2): New function.
22726         (selftest::diagnostic_show_locus_c_tests): Call it.
22727
22728 2017-07-13  Will Schmidt  <will_schmidt@vnet.ibm.com>
22729
22730         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Return
22731         early if there is no lhs.
22732
22733 2017-07-13  Martin Liska  <mliska@suse.cz>
22734
22735         * dwarf2out.c (gen_pointer_type_die): Remove dead code.
22736         (gen_reference_type_die): Likewise.
22737         * stor-layout.c: Remove Pascal-related comment.
22738
22739 2017-07-13  Martin Liska  <mliska@suse.cz>
22740
22741         * opts.c (finish_options): Add quotes to error messages.
22742         (parse_sanitizer_options): Likewise.
22743
22744 2017-07-13  Thomas Preud'homme  <thomas.preudhomme@arm.com>
22745
22746         * doc/invoke.texi (armv8-r): Document +fp.sp ARMv8-R extension.
22747
22748 2017-07-13  Richard Earnshaw  <rearnsha@arm.com>
22749
22750         * config/arm/vxworks.h (TARGET_ENDIAN_DEFAULT): Define.
22751
22752 2017-07-13  Maxim Ostapenko  <m.ostapenko@samsung.com>
22753
22754         * asan.c (asan_emit_allocas_unpoison): Use ptr_mode for arguments
22755         during expansion.
22756         * builtins.c (expand_asan_emit_allocas_unpoison): Likewise.
22757
22758 2017-07-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
22759
22760         PR target/81193
22761         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If GLIBC
22762         provides the hardware capability bits, define the macro
22763         __BUILTIN_CPU_SUPPORTS__.
22764         * config/rs6000/rs6000.c (cpu_expand_builtin): Generate a warning
22765         if GLIBC does not provide the hardware capability bits.  Add a
22766         gcc_unreachable call if the built-in cpu function is neither
22767         __builtin_cpu_is nor __builtin_cpu_supports.
22768         (rs6000_get_function_versions_dispatcher): Change the warning
22769         that an old GLIBC is used which does not export the capability
22770         bits to be an error.
22771         * doc/extend.texi (target_clones attribute): Document the
22772         restriction that GLIBC 2.23 or newer is needed on the PowerPC.
22773         (PowerPC built-in functions): Document that GLIBC 2.23 or newer is
22774         needed by __builtin_cpu_is and __builtin_cpu_supports.  Document
22775         the macros defined by GCC if the newer GLIBC is available.
22776
22777 2017-07-12  Jeff Law  <law@redhat.com>
22778
22779         * config/riscv/riscv.c: Remove unnecessary includes.  Reorder
22780         remaining includes slightly.
22781         * config/riscv/riscv-builtins.c: Include profile-count.h.
22782
22783 2017-07-12  Georg-Johann Lay  <avr@gjlay.de>
22784
22785         PR target/79883
22786         * config/avr/avr.c (avr_set_current_function): In diagnostic
22787         messages: Quote keywords and (parts of) identifiers.
22788         [WITH_AVRLIBC]: Warn for functions named "ISR", "SIGNAL" or
22789         "INTERUPT".
22790
22791 2017-07-12  Carl Love  <cel@us.ibm.com>
22792
22793         * config/rs6000/rs6000-c.c: Add support for built-in functions
22794         vector bool char vec_revb (vector bool char);
22795         vector bool short vec_revb (vector short char);
22796         vector bool int vec_revb (vector bool int);
22797         vector bool long long vec_revb (vector bool long long);
22798         * doc/extend.texi: Update the built-in documentation file for the
22799         new built-in functions.
22800
22801 2017-07-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
22802
22803         * config/s390/s390.md: Remove movcc splitter.
22804
22805 2017-07-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
22806
22807         * config/s390/s390.c (s390_rtx_costs): Return proper costs for
22808         load/store on condition.
22809
22810 2017-07-12  Georg-Johann Lay  <avr@gjlay.de>
22811
22812         PR target/81407
22813         * config/avr/avr.c (avr_encode_section_info)
22814         [progmem && !TREE_READONLY]: Error if progmem object needs
22815         constructing.
22816
22817 2017-07-11  Michael Collison  <michael.collison@arm.com>
22818
22819         * config/aarch64/aarch64-simd.md (aarch64_sub<mode>_compare0):
22820         New pattern.
22821
22822 2017-07-11  Carl Love  <cel@us.ibm.com>
22823
22824         * config/rs6000/rs6000-c.c: Add support for builtins
22825         vector unsigned int vec_parity_lsbb (vector signed int);
22826         vector unsigned int vec_parity_lsbb (vector unsigned int);
22827         vector unsigned __int128 vec_parity_lsbb (vector signed __int128);
22828         vector unsigned __int128 vec_parity_lsbb (vector unsigned __int128);
22829         vector unsigned long long vec_parity_lsbb (vector signed long long);
22830         vector unsigned long long vec_parity_lsbb (vector unsigned long long);
22831         * config/rs6000/rs6000-builtin.def (VPARITY_LSBB): Add BU_P9V_OVERLOAD1.
22832         * config/rs6000/altivec.h (vec_parity_lsbb): Add define.
22833         * doc/extend.texi: Update the built-in documentation file for the
22834         new built-in functions.
22835
22836 2017-07-11  David Malcolm  <dmalcolm@redhat.com>
22837
22838         * diagnostic-show-locus.c: Include "gcc-rich-location.h".
22839         (layout::m_primary_loc): New field.
22840         (layout::layout): Initialize new field.  Move location filtering
22841         logic from here to...
22842         (layout::maybe_add_location_range): ...this new method.  Add
22843         support for filtering to just the lines already specified by other
22844         locations.
22845         (layout::will_show_line_p): New method.
22846         (gcc_rich_location::add_location_if_nearby): New method.
22847         (selftest::test_add_location_if_nearby): New test function.
22848         (selftest::diagnostic_show_locus_c_tests): Call it.
22849         * gcc-rich-location.h (gcc_rich_location::add_location_if_nearby):
22850         New method.
22851
22852 2017-07-11  Tom de Vries  <tom@codesourcery.com>
22853
22854         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG): New macro.
22855         (bb_first_real_insn): New function.
22856         (nvptx_single): Add extra initialization of broadcasted condition
22857         variables.
22858
22859 2017-07-11  Nathan Sidwell  <nathan@acm.org>
22860
22861         * dwarf2out.c (gen_member_die): Remove useless check for anon ctors.
22862
22863 2017-07-11  Georg-Johann Lay  <avr@gjlay.de>
22864
22865         * doc/extend.texi (AVR Function Attributes): Remove weblink to
22866         Binutils doc as TEXI will mess them up.
22867         * doc/invoke.texi (AVR Options): Same here.
22868
22869 2017-07-11  Daniel Cederman  <cederman@gaisler.com>
22870
22871         * config/sparc/sparc.opt (mfix-ut700): New option.
22872         (mfix-gr712rc): Likewise.
22873         (sparc_fix_b2bst): New variable.
22874         * doc/invoke.texi (SPARC options): Document them.
22875         (ARM options): Fix warnings.
22876         * config/sparc/sparc.c (sparc_do_work_around_errata): Insert NOP
22877         instructions to prevent sequences that can trigger the store-store
22878         errata for certain LEON3FT processors.
22879         (pass_work_around_errata::gate): Also test sparc_fix_b2bst.
22880         (sparc_option_override): Set sparc_fix_b2bst appropriately.
22881         * config/sparc/sparc.md (fix_b2bst): New attribute.
22882         (in_branch_delay): Prevent stores in delay slot if fix_b2bst.
22883
22884 2017-07-10  Uros Bizjak  <ubizjak@gmail.com>
22885
22886         PR target/81375
22887         * config/i386/i386.md (divsf3): Add TARGET_SSE to TARGET_SSE_MATH.
22888         (rcpps): Ditto.
22889         (*rsqrtsf2_sse): Ditto.
22890         (rsqrtsf2): Ditto.
22891         (div<mode>3): Macroize insn from divdf3 and divsf3
22892         using MODEF mode iterator.
22893
22894 2017-07-10  Martin Sebor  <msebor@redhat.com>
22895
22896         PR tree-optimization/80397
22897         * gimple-ssa-sprintf.c (format_integer): Use INTEGRAL_TYPE_P()
22898         instead of testing for equality to INTEGER_TYPE.
22899
22900 2017-07-10  Vineet Gupta <vgupta@synopsys.com>
22901
22902         * config.gcc: Remove uclibc from arc target spec.
22903
22904 2017-07-10  Claudiu Zissulescu  <claziss@synopsys.com>
22905
22906         * config/arc/arc.h (ADDITIONAL_REGISTER_NAMES): Define.
22907
22908 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
22909
22910         PR lto/80838
22911         * lto-wrapper.c (remove_option): New function.
22912         (merge_and_complain): Merge PIC/PIE options more realistically.
22913
22914 2017-07-10  Georg-Johann Lay  <avr@gjlay.de>
22915
22916         Better ISR prologues by supporting GASes __gcc_isr pseudo insn.
22917
22918         PR target/20296
22919         PR target/81268
22920         * configure.ac [target=avr]: Add GAS check for -mgcc-isr.
22921         (HAVE_AS_AVR_MGCCISR_OPTION):  If so, AC_DEFINE it.
22922         * config.in: Regenerate.
22923         * configure: Regenerate.
22924         * doc/extend.texi (AVR Function Attributes) <no_gccisr>: Document it.
22925         * doc/invoke.texi (AVR Options) <-mgas-isr-prologues>: Document it.
22926         * config/avr/avr.opt (-mgas-isr-prologues): New option and...
22927         (TARGET_GASISR_PROLOGUES): ...target mask.
22928         * common/config/avr/avr-common.c
22929         (avr_option_optimization_table) [OPT_LEVELS_1_PLUS_NOT_DEBUG]:
22930         Set -mgas-isr-prologues.
22931         * config/avr/avr-passes.def (avr_pass_pre_proep): Add
22932         INSERT_PASS_BEFORE for it.
22933         * config/avr/avr-protos.h (make_avr_pass_pre_proep): New proto.
22934         * config/avr/avr.c (avr_option_override)
22935         [!HAVE_AS_AVR_MGCCISR_OPTION]: Unset TARGET_GASISR_PROLOGUES.
22936         (avr_no_gccisr_function_p, avr_hregs_split_reg): New static functions.
22937         (avr_attribute_table) <no_gccisr>: Add new function attribute.
22938         (avr_set_current_function) <is_no_gccisr>: Init machine field.
22939         (avr_pass_data_pre_proep, avr_pass_pre_proep): New pass data
22940         and rtl_opt_pass.
22941         (make_avr_pass_pre_proep): New function.
22942         (emit_push_sfr) <treg>: Add argument to function and use it
22943         instead of TMP_REG.
22944         (avr_expand_prologue) [machine->gasisr.maybe]: Emit gasisr insn
22945         and set machine->gasisr.yes.
22946         (avr_expand_epilogue) [machine->gasisr.yes]: Similar.
22947         (avr_asm_function_end_prologue) [machine->gasisr.yes]: Add
22948         __gcc_isr.n_pushed to .L__stack_usage.
22949         (TARGET_ASM_FINAL_POSTSCAN_INSN): Define to...
22950         (avr_asm_final_postscan_insn): ...this new static function.
22951         * config/avr/avr.h (machine_function)
22952         <is_no_gccisr, use_L__stack_usage>: New fields.
22953         <gasisr, gasisr.yes, gasisr.maybe, gasisr.regno>: New fields.
22954         * config/avr/avr.md (UNSPECV_GASISR): Add unspecv enum.
22955         (GASISR_Prologue, GASISR_Epilogue, GASISR_Done): New define_constants.
22956         (gasisr, *gasisr): New expander and insn.
22957         * config/avr/gen-avr-mmcu-specs.c (print_mcu)
22958         [HAVE_AS_AVR_MGCCISR_OPTION]: Print asm_gccisr spec.
22959         * config/avr/specs.h (ASM_SPEC) <asm_gccisr>: Add sub spec.
22960
22961 2017-07-10  Richard Earnshaw  <rearnsha@arm.com>
22962
22963         * config/arm/parsecpu.awk (gen_comm_data): Do not escape single quotes
22964         in quoted strings.
22965
22966 2017-07-10  Georg-Johann Lay  <avr@gjlay.de>
22967
22968         Move jump-tables out of .text again.
22969
22970         PR target/81075
22971         * config/avr/avr.c (ASM_OUTPUT_ADDR_VEC_ELT): Remove function.
22972         (ASM_OUTPUT_ADDR_VEC): New function.
22973         (avr_adjust_insn_length) [JUMP_TABLE_DATA_P]: Return 0.
22974         (avr_final_prescan_insn) [avr_log.insn_addresses]: Dump
22975         INSN_ADDRESSes as asm comment.
22976         * config/avr/avr.h (JUMP_TABLES_IN_TEXT_SECTION): Adjust comment.
22977         (ASM_OUTPUT_ADDR_VEC_ELT): Remove define.
22978         (ASM_OUTPUT_ADDR_VEC): Define to avr_output_addr_vec.
22979         * config/avr/avr.md (*tablejump): Adjust comment.
22980         * config/avr/elf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove.
22981         * config/avr/avr-log.c (avr_log_set_avr_log) <insn_addresses>:
22982         New detail.
22983         * config/avr/avr-protos.h (avr_output_addr_vec_elt): Remove proto.
22984         (avr_output_addr_vec): New proto.
22985         (avr_log_t) <insn_addresses>: New field.
22986
22987 2017-07-09  H.J. Lu  <hongjiu.lu@intel.com>
22988
22989         PR target/81313
22990         * config/i386/i386.c (ix86_function_arg_advance): Set
22991         outgoing_args_on_stack to true if there are outgoing arguments
22992         on stack.
22993         (ix86_function_arg): Likewise.
22994         (ix86_get_drap_rtx): Use DRAP only if there are outgoing
22995         arguments on stack and ACCUMULATE_OUTGOING_ARGS is false.
22996         * config/i386/i386.h (machine_function): Add
22997         outgoing_args_on_stack.
22998
22999 2017-07-09  Krister Walfridsson  <krister.walfridsson@gmail.com>
23000
23001         * config.gcc (*-*-netbsd*): Remove check for NetBSD versions not
23002         supporting pthreds.
23003         * config/netbsd.h (NETBSD_LIBGCC_SPEC): Always enable pthreads.
23004
23005 2017-07-08  Richard Sandiford  <richard.sandiford@linaro.org>
23006
23007         * Makefile.in (HOOKS_H, RTL_BASE_H, FUNCTION_H, EXPR_H, REGS_H)
23008         (REAL_H): Remove $(MACHMODE_H).
23009         (FIXED_VALUE_H, TREE_CORE_H, CFGLOOP_H): Remove $(MACHMODE_H) and
23010         double-int.h.
23011         (CORETYPES_H): Add signop.h, wide-int.h, wide-int-print.h,
23012         $(MACHMODE_H) and double-int.h.
23013         (build/min-insn-modes.o): Depend on $(CORETYPES_H) rather than
23014         $(MACHMODE_H).
23015         (gengtype-state.o, gengtype.o, build/gengtype.o): Don't depend on
23016         double-int.h.
23017
23018 2017-07-07  Andrew Pinski  <apinski@cavium.com>
23019
23020         * config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Check
23021         prev_set and curr_set for AARCH64_FUSE_ALU_BRANCH.
23022
23023 2017-07-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
23024
23025         * config/rs6000/rs6000.c (rs6000_get_function_versions_dispatcher):
23026         Add warning if GCC was not configured to link against a GLIBC that
23027         exports the hardware capability bits.
23028         (make_resolver_func): Make resolver function private and not a
23029         COMDAT function.  Create the name with clone_function_name instead
23030         of make_unique_name.
23031
23032         PR target/81348
23033         * config/rs6000/rs6000.md (HI sign_extend splitter): Use the
23034         correct operand in doing the split.
23035
23036 2017-07-07 Carl Love  <cel@us.ibm.com>
23037
23038         * config/rs6000/rs6000-c: Add support for built-in function
23039         vector unsigned short vec_pack_to_short_fp32 (vector float,
23040                                                       vector float).
23041         * config/rs6000/rs6000-builtin.def (CONVERT_4F32_8I16): Add
23042         BU_P9V_AV_2 and BU_P9V_OVERLOAD_2 definitions.
23043         * config/rs6000/altivec.h (vec_pack_to_short_fp32): Add define.
23044         * config/rs6000/altivec.md(UNSPEC_CONVERT_4F32_8I16): Add UNSPEC.
23045         (convert_4f32_8i16): Add define_expand.
23046         * doc/extend.texi: Update the built-in documentation file for the
23047         new built-in function.
23048
23049 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
23050
23051         * config/sparc/m8.md: New file.
23052         * config/sparc/sparc.md: Include m8.md.
23053
23054 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
23055
23056         * config/sparc/sparc.opt: New option -mvis4b.
23057         * config/sparc/sparc.c (dump_target_flag_bits): Handle MASK_VIS4B.
23058         (sparc_option_override): Handle VIS4B.
23059         (enum sparc_builtins): Define
23060         SPARC_BUILTIN_DICTUNPACK{8,16,32},
23061         SPARC_BUILTIN_FPCMP{LE,GT,EQ,NE}{8,16,32}SHL,
23062         SPARC_BUILTIN_FPCMPU{LE,GT}{8,16,32}SHL,
23063         SPARC_BUILTIN_FPCMPDE{8,16,32}SHL and
23064         SPARC_BUILTIN_FPCMPUR{8,16,32}SHL.
23065         (check_constant_argument): New function.
23066         (sparc_vis_init_builtins): Define builtins
23067         __builtin_vis_dictunpack{8,16,32},
23068         __builtin_vis_fpcmp{le,gt,eq,ne}{8,16,32}shl,
23069         __builtin_vis_fpcmpu{le,gt}{8,16,32}shl,
23070         __builtin_vis_fpcmpde{8,16,32}shl and
23071         __builtin_vis_fpcmpur{8,16,32}shl.
23072         (sparc_expand_builtin): Check that the constant operands to
23073         __builtin_vis_fpcmp*shl and _builtin_vis_dictunpack* are indeed
23074         constant and in range.
23075         * config/sparc/sparc-c.c (sparc_target_macros): Handle
23076         TARGET_VIS4B.
23077         * config/sparc/sparc.h (SPARC_IMM2_P): Define.
23078         (SPARC_IMM5_P): Likewise.
23079         * config/sparc/sparc.md (cpu_feature): Add new feagure "vis4b".
23080         (enabled): Handle vis4b.
23081         (UNSPEC_DICTUNPACK): New unspec.
23082         (UNSPEC_FPCMPSHL): Likewise.
23083         (UNSPEC_FPUCMPSHL): Likewise.
23084         (UNSPEC_FPCMPDESHL): Likewise.
23085         (UNSPEC_FPCMPURSHL): Likewise.
23086         (cpu_feature): New CPU feature `vis4b'.
23087         (dictunpack{8,16,32}): New insns.
23088         (FPCSMODE): New mode iterator.
23089         (fpcscond): New code iterator.
23090         (fpcsucond): Likewise.
23091         (fpcmp{le,gt,eq,ne}{8,16,32}{si,di}shl): New insns.
23092         (fpcmpu{le,gt}{8,16,32}{si,di}shl): Likewise.
23093         (fpcmpde{8,16,32}{si,di}shl): Likewise.
23094         (fpcmpur{8,16,32}{si,di}shl): Likewise.
23095         * config/sparc/constraints.md: Define constraints `q' for unsigned
23096         2-bit integer constants and `t' for unsigned 5-bit integer
23097         constants.
23098         * config/sparc/predicates.md (imm5_operand_dictunpack8): New
23099         predicate.
23100         (imm5_operand_dictunpack16): Likewise.
23101         (imm5_operand_dictunpack32): Likewise.
23102         (imm2_operand): Likewise.
23103         * doc/invoke.texi (SPARC Options): Document -mvis4b.
23104         * doc/extend.texi (SPARC VIS Built-in Functions): Document the
23105         ditunpack* and fpcmp*shl builtins.
23106
23107 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
23108
23109         * config.gcc: Handle m8 in --with-{cpu,tune} options.
23110         * config.in: Add HAVE_AS_SPARC6 define.
23111         * config/sparc/driver-sparc.c (cpu_names): Add entry for the SPARC
23112         M8.
23113         * config/sparc/sol2.h (CPP_CPU64_DEFAULT_SPEC): Define for
23114         TARGET_CPU_m8.
23115         (ASM_CPU32_DEFAUILT_SPEC): Likewise.
23116         (CPP_CPU_SPEC): Handle m8.
23117         (ASM_CPU_SPEC): Likewise.
23118         * config/sparc/sparc-opts.h (enum processor_type): Add
23119         PROCESSOR_M8.
23120         * config/sparc/sparc.c (m8_costs): New struct.
23121         (sparc_option_override): Handle TARGET_CPU_m8.
23122         (sparc32_initialize_trampoline): Likewise.
23123         (sparc64_initialize_trampoline): Likewise.
23124         (sparc_issue_rate): Likewise.
23125         (sparc_register_move_cost): Likewise.
23126         * config/sparc/sparc.h (TARGET_CPU_m8): Define.
23127         (CPP_CPU64_DEFAULT_SPEC): Define for M8.
23128         (ASM_CPU64_DEFAULT_SPEC): Likewise.
23129         (CPP_CPU_SPEC): Handle M8.
23130         (ASM_CPU_SPEC): Likewise.
23131         (AS_M8_FLAG): Define.
23132         * config/sparc/sparc.md: Add m8 to the cpu attribute.
23133         * config/sparc/sparc.opt: New option -mcpu=m8 for sparc targets.
23134         * configure.ac (HAVE_AS_SPARC6): Check for assembler support for
23135         M8 instructions.
23136         * configure: Regenerate.
23137         * doc/invoke.texi (SPARC Options): Document -mcpu=m8 and
23138         -mtune=m8.
23139
23140 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
23141
23142         * config/sparc/niagara7.md: Rework the DFA scheduler to use insn
23143         subtypes.
23144         * config/sparc/sparc.md: Remove the `v3pipe' insn attribute.
23145         ("*movdi_insn_sp32"): Do not set v3pipe.
23146         ("*movsi_insn"): Likewise.
23147         ("*movdi_insn_sp64"): Likewise.
23148         ("*movsf_insn"): Likewise.
23149         ("*movdf_insn_sp32"): Likewise.
23150         ("*movdf_insn_sp64"): Likewise.
23151         ("*zero_extendsidi2_insn_sp64"): Likewise.
23152         ("*sign_extendsidi2_insn"): Likewise.
23153         ("*mov<VM32:mode>_insn"): Likewise.
23154         ("*mov<VM64:mode>_insn_sp64"): Likewise.
23155         ("*mov<VM64:mode>_insn_sp32"): Likewise.
23156         ("<plusminus_insn><VADDSUB:mode>3"): Likewise.
23157         ("<vlop:code><VL:mode>3"): Likewise.
23158         ("*not_<vlop:code><VL:mode>3"): Likewise.
23159         ("*nand<VL:mode>_vis"): Likewise.
23160         ("*<vlnotop:code>_not1<VL:mode>_vis"): Likewise.
23161         ("*<vlnotop:code>_not2<VL:mode>_vis"): Likewise.
23162         ("one_cmpl<VL:mode>2"): Likewise.
23163         ("faligndata<VM64:mode>_vis"): Likewise.
23164         ("alignaddrsi_vis"): Likewise.
23165         ("alignaddrdi_vis"): Likweise.
23166         ("alignaddrlsi_vis"): Likewise.
23167         ("alignaddrldi_vis"): Likewise.
23168         ("fcmp<gcond:code><GCM:gcm_name><P:mode>_vis"): Likewise.
23169         ("bmaskdi_vis"): Likewise.
23170         ("bmasksi_vis"): Likewise.
23171         ("bshuffle<VM64:mode>_vis"): Likewise.
23172         ("cmask8<P:mode>_vis"): Likewise.
23173         ("cmask16<P:mode>_vis"): Likewise.
23174         ("cmask32<P:mode>_vis"): Likewise.
23175         ("pdistn<P:mode>_vis"): Likewise.
23176         ("<vis3_addsub_ss_patname><VASS:mode>3"): Likewise.
23177
23178 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
23179
23180         * config/sparc/sparc.md ("subtype"): New insn attribute.
23181         ("*wrgsr_sp64"): Set insn subtype.
23182         ("*rdgsr_sp64"): Likewise.
23183         ("alignaddrsi_vis"): Likewise.
23184         ("alignaddrdi_vis"): Likewise.
23185         ("alignaddrlsi_vis"): Likewise.
23186         ("alignaddrldi_vis"): Likewise.
23187         ("<plusminus_insn><VADDSUB:mode>3"): Likewise.
23188         ("fexpand_vis"): Likewise.
23189         ("fpmerge_vis"): Likewise.
23190         ("faligndata<VM64:mode>_vis"): Likewise.
23191         ("bshuffle<VM64:mode>_vis"): Likewise.
23192         ("cmask8<P:mode>_vis"): Likewise.
23193         ("cmask16<P:mode>_vis"): Likewise.
23194         ("cmask32<P:mode>_vis"): Likewise.
23195         ("fchksm16_vis"): Likewise.
23196         ("v<vis3_shift_patname><GCM:mode>3"): Likewise.
23197         ("fmean16_vis"): Likewise.
23198         ("fp<plusminus_insn>64_vis"): Likewise.
23199         ("<plusminus_insn>v8qi3"): Likewise.
23200         ("<vis3_addsub_ss_patname><VASS:mode>3"): Likewise.
23201         ("<vis4_minmax_patname><VMMAX:mode>3"): Likewise.
23202         ("<vis4_uminmax_patname><VMMAX:mode>3"): Likewise.
23203         ("<vis3_addsub_ss_patname>v8qi3"): Likewise.
23204         ("<vis4_addsub_us_patname><VAUS:mode>3"): Likewise.
23205         ("*movqi_insn"): Likewise.
23206         ("*movhi_insn"): Likewise.
23207         ("*movsi_insn"): Likewise.
23208         ("movsi_pic_gotdata_op"): Likewise.
23209         ("*movdi_insn_sp32"): Likewise.
23210         ("*movdi_insn_sp64"): Likewise.
23211         ("movdi_pic_gotdata_op"): Likewise.
23212         ("*movsf_insn"): Likewise.
23213         ("*movdf_insn_sp32"): Likewise.
23214         ("*movdf_insn_sp64"): Likewise.
23215         ("*zero_extendhisi2_insn"): Likewise.
23216         ("*zero_extendqihi2_insn"): Likewise.
23217         ("*zero_extendqisi2_insn"): Likewise.
23218         ("*zero_extendqidi2_insn"): Likewise.
23219         ("*zero_extendhidi2_insn"): Likewise.
23220         ("*zero_extendsidi2_insn_sp64"): Likewise.
23221         ("ldfsr"): Likewise.
23222         ("prefetch_64"): Likewise.
23223         ("prefetch_32"): Likewise.
23224         ("tie_ld32"): Likewise.
23225         ("tie_ld64"): Likewise.
23226         ("*tldo_ldub_sp32"): Likewise.
23227         ("*tldo_ldub1_sp32"): Likewise.
23228         ("*tldo_ldub2_sp32"): Likewise.
23229         ("*tldo_ldub_sp64"): Likewise.
23230         ("*tldo_ldub1_sp64"): Likewise.
23231         ("*tldo_ldub2_sp64"): Likewise.
23232         ("*tldo_ldub3_sp64"): Likewise.
23233         ("*tldo_lduh_sp32"): Likewise.
23234         ("*tldo_lduh1_sp32"): Likewise.
23235         ("*tldo_lduh_sp64"): Likewise.
23236         ("*tldo_lduh1_sp64"): Likewise.
23237         ("*tldo_lduh2_sp64"): Likewise.
23238         ("*tldo_lduw_sp32"): Likewise.
23239         ("*tldo_lduw_sp64"): Likewise.
23240         ("*tldo_lduw1_sp64"): Likewise.
23241         ("*tldo_ldx_sp64"): Likewise.
23242         ("*mov<VM32:mode>_insn"): Likewise.
23243         ("*mov<VM64:mode>_insn_sp64"): Likewise.
23244         ("*mov<VM64:mode>_insn_sp32"): Likewise.
23245
23246 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
23247
23248         * config/sparc/sparc.md ("type"): New insn type viscmp.
23249         ("fcmp<gcond:code><GCM:gcm_name><P:mode>_vis"): Set insn type to
23250         viscmp.
23251         ("fpcmp<gcond:code>8<P:mode>_vis"): Likewise.
23252         ("fucmp<gcond:code>8<P:mode>_vis"): Likewise.
23253         ("fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis"): Likewise.
23254         * config/sparc/niagara7.md ("n7_vis_logical_v3pipe"): Handle
23255         viscmp.
23256         ("n7_vis_logical_11cycle"): Likewise.
23257         * config/sparc/niagara4.md ("n4_vis_logical"): Likewise.
23258         * config/sparc/niagara2.md ("niag3_vis": Likewise.
23259         * config/sparc/niagara.md ("niag_vis"): Likewise.
23260         * config/sparc/ultra3.md ("us3_fga"): Likewise.
23261         * config/sparc/ultra1_2.md ("us1_fga_double"): Likewise.
23262
23263 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
23264
23265         * config/sparc/sparc.md: New instruction type `bmask'.
23266         (bmaskdi_vis): Use the `bmask' type.
23267         (bmasksi_vis): Likewise.
23268         * config/sparc/ultra3.md (us3_array): Likewise.
23269         * config/sparc/niagara7.md (n7_array): Likewise.
23270         * config/sparc/niagara4.md (n4_array): Likewise.
23271         * config/sparc/niagara2.md (niag2_vis): Likewise.
23272         (niag3_vis): Likewise.
23273         * config/sparc/niagara.md (niag_vis): Likewise.
23274
23275 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
23276
23277         * ipa-comdats.c: Remove optimize check from gate.
23278         * ipa-fnsummary.c (ipa_fn_summary_generate): do not generate summary
23279         for functions not optimized.
23280         (ipa_fn_summary_read): Skip optimize check.
23281         (ipa_fn_summary_write): Likewise.
23282         * ipa-inline-analysis.c (do_estimate_growth_1): Check that caller
23283         is optimized.
23284         * ipa-inline.c (can_inline_edge_p): Not optimized functions are
23285         uninlinable.
23286         (can_inline_edge_p): Check flag_pcc_struct_return for match.
23287         (check_callers): Give up on caller which is not optimized.
23288         (inline_small_functions): Likewise.
23289         (ipa_inline): Do not give up when not optimizing.
23290         * ipa-visbility.c (function_and_variable_visibility): Do not optimize
23291         away unoptimizes cdtors.
23292         (whole_program_function_and_variable_visibility): Do
23293         ipa_discover_readonly_nonaddressable_vars in LTO mode.
23294         * ipa.c (process_references): Do not check optimize.
23295         (symbol_table::remove_unreachable_nodes): Update optimize check.
23296         (set_writeonly_bit): Update optimize check.
23297         (pass_ipa_cdtor_merge::gate): Do not check optimize.
23298         (pass_ipa_single_use::gate): Remove.
23299
23300 2017-07-06  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
23301
23302         * config/rs6000/rs6000.c (union_defs, union_uses, insn_is_load_p,
23303         insn_is_store_p, insn_is_swap_p, const_load_sequence_p, v2df_reduction_p,
23304         rtx_is_swappable_p, insn_is_swappable_p, chain_contains_only_swaps,
23305         mark_swaps_for_removal, swap_const_vector_halves, adjust_subreg_index,
23306         permute_load, permute_store, adjust_extract, adjust_splat,
23307         adjust_xxpermdi, adjust_concat, adjust_vperm, handle_special_swappables,
23308         replace_swap_with_copy, dump_swap_insn_table,
23309         alignment_with_canonical_addr, alignment_mask, find_alignment_op,
23310         recombine_lvx_pattern, recombine_stvx_pattern,
23311         recombine_lvx_stvx_patterns, rs6000_analyze_swaps,
23312         make_pass_analyze_swaps): Move all code related to p8 swap optimizations
23313         to file rs6000-p8swap.c.
23314         * config/rs6000/rs6000-p8swap.c: New file.
23315         * config/rs6000/t-rs6000: Add rule to build rs6000-p8swap.o.
23316         * config.gcc: Add rs6000-p8swap.o to extra_objs for powerpc*-*-*
23317         and rs6000*-*-* targets.
23318
23319 2017-07-06  David Malcolm  <dmalcolm@redhat.com>
23320
23321         * Makefile.in (selftest): Remove dependency on s-selftest-c++.
23322
23323 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
23324
23325         * lto-wrapper.c (merge_and_complain): Do not merge
23326         fexceptions, fnon_call_exceptions, ftrapv, ffp_contract_, fmath_errno,
23327         fsigned_zeros, ftrapping_math, fwrapv.
23328         (append_compiler_options): Do not track these options.
23329         (append_linker_options): Likewie
23330
23331 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
23332
23333         * cgraphunit.c (cgraph_node::finalize_function): When
23334         !flag_toplevel_reorde set no_reorder flag.
23335         (varpool_node::finalize_decl): Likewise.
23336         (symbol_table::compile): Drop no toplevel reorder path.
23337
23338 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
23339
23340         * bb-reorder.c (better_edge_p): Do not build traces across abnormal/eh
23341         edges; zero probability is not better than uninitialized.
23342
23343 2017-07-06  Maxim Ostapenko  <m.ostapenko@samsung.com>
23344
23345         * asan.h (asan_sanitize_allocas_p): Declare.
23346         * asan.c (asan_sanitize_allocas_p): New function.
23347         (handle_builtin_stack_restore): Bail out if !asan_sanitize_allocas_p.
23348         (handle_builtin_alloca): Likewise.
23349         * cfgexpand.c (expand_used_vars): Do not add allocas unpoisoning stuff
23350         if !asan_sanitize_allocas_p.
23351         * params.def (asan-instrument-allocas): Add new option.
23352         * params.h (ASAN_PROTECT_ALLOCAS): Define.
23353         * opts.c (common_handle_option): Disable allocas sanitization for
23354         KASan by default.
23355
23356 2017-07-06  Maxim Ostapenko  <m.ostapenko@samsung.com>
23357
23358         * asan.c: Include gimple-fold.h.
23359         (get_last_alloca_addr): New function.
23360         (handle_builtin_stackrestore): Likewise.
23361         (handle_builtin_alloca): Likewise.
23362         (asan_emit_allocas_unpoison): Likewise.
23363         (get_mem_refs_of_builtin_call): Add new parameter, remove const
23364         quallifier from first paramerer. Handle BUILT_IN_ALLOCA,
23365         BUILT_IN_ALLOCA_WITH_ALIGN and BUILT_IN_STACK_RESTORE builtins.
23366         (instrument_builtin_call): Pass gimple iterator to
23367         get_mem_refs_of_builtin_call.
23368         (last_alloca_addr): New global.
23369         * asan.h (asan_emit_allocas_unpoison): Declare.
23370         * builtins.c (expand_asan_emit_allocas_unpoison): New function.
23371         (expand_builtin): Handle BUILT_IN_ASAN_ALLOCAS_UNPOISON.
23372         * cfgexpand.c (expand_used_vars): Call asan_emit_allocas_unpoison
23373         if function calls alloca.
23374         * gimple-fold.c (replace_call_with_value): Remove static keyword.
23375         * gimple-fold.h (replace_call_with_value): Declare.
23376         * internal-fn.c: Include asan.h.
23377         * sanitizer.def (BUILT_IN_ASAN_ALLOCA_POISON,
23378         BUILT_IN_ASAN_ALLOCAS_UNPOISON): New builtins.
23379
23380 2017-07-06  David Malcolm  <dmalcolm@redhat.com>
23381
23382         * Makefile.in (SELFTEST_FLAGS): Drop "-x c", moving it to...
23383         (C_SELFTEST_FLAGS): New.
23384         (CPP_SELFTEST_FLAGS): New.
23385         (SELFTEST_DEPS): New, from deps of s-selftest.
23386         (C_SELFTEST_DEPS): New, from deps of s-selftest.
23387         (CPP_SELFTEST_DEPS): New.
23388         (selftest): Add dependency on s-selftest-c++.
23389         (s-selftest): Rename to...
23390         (s-selftest-c): ...this, moving deps to SELFTEST_DEPS
23391         and C_SELFTEST_DEPS, and using C_SELFTEST_FLAGS rather
23392         than SELFTEST_FLAGS.
23393         (selftest-gdb): Rename to...
23394         (selftest-c-gdb): ...this, using C_SELFTEST_DEPS and
23395         C_SELFTEST_FLAGS.
23396         (selftest-gdb): Reintroduce as an alias for selftest-c-gdb.
23397         (selftest-valgrind): Rename to...
23398         (selftest-c-valgrind): ...this, using C_SELFTEST_DEPS and
23399         C_SELFTEST_FLAGS.
23400         (selftest-valgrind): Reintroduce as an alias for
23401         selftest-c-valgrind.
23402         (s-selftest-c++): New.
23403         (selftest-c++-gdb): New.
23404         (selftest-c++-valgrind): New.
23405
23406 2017-07-06  Olivier Hainque  <hainque@adacore.com>
23407
23408         * gcc.c (process_command): When deciding if undefined variables
23409         should be ignored when processing specs, accept "gcc -v" as well.
23410
23411 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
23412
23413         * auto-profile.c (afdo_set_bb_count, afdo_propagate_edge,
23414         afdo_annotate_cfg): Set counts/probabilities as determined by afdo.
23415
23416 2017-07-06  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23417
23418         * config/arm/arm-cpus.in (armv8-r): Add new entry.
23419         * config/arm/arm-isa.h (ISA_ARMv8r): Define macro.
23420         * config/arm/arm-tables.opt: Regenerate.
23421         * config/arm/arm.h (enum base_architecture): Add BASE_ARCH_8R
23422         enumerator.
23423         * doc/invoke.texi: Mention -march=armv8-r and its extensions.
23424
23425 2017-07-06  Carl Love  <cel@us.ibm.com>
23426
23427         * ChangeLog: Clean up from mid air collision
23428
23429 2017-07-06  Carl Love  <cel@us.ibm.com>
23430
23431         * config/rs6000/rs6000-c.c: Add support for built-in functions
23432         vector signed int vec_subc (vector signed int, vector signed int);
23433         vector signed __int128 vec_subc (vector signed __int128,
23434                                          vector signed __int128);
23435         vector unsigned __int128 vec_subc (vector unsigned __int128,
23436                                            vector unsigned __int128);
23437         vector signed int vec_sube (vector signed int, vector signed int,
23438                                     vector signed int);
23439         vector unsigned int vec_sube (vector unsigned int,
23440                                       vector unsigned int,
23441                                       vector unsigned int);
23442         vector signed __int128 vec_sube (vector signed __int128,
23443                                          vector signed __int128,
23444                                          vector signed__int128);
23445         vector unsigned __int128 vec_sube (vector unsigned __int128,
23446                                            vector unsigned __int128,
23447                                            vector unsigned __int128);
23448         vector signed int vec_subec (vector signed int, vector signed int,
23449                                      vector signed int);
23450         vector unsigned int vec_subec (vector unsigned int,
23451                                        vector unsigned int,
23452                                        vector unsigned int);
23453         vector signed __int128 vec_subec (vector signed __int128,
23454                                           vector signed __int128,
23455                                           vector signed__int128);
23456         vector unsigned __int128 vec_subec (vector unsigned __int128,
23457                                             vector unsigned __int128,
23458                                             vector unsigned __int128);
23459         * config/rs6000/rs6000.c (ALTIVEC_BUILTIN_VEC_SUBE,
23460         ALTIVEC_BUILTIN_VEC_SUBEC): Add ef_builtins.
23461         * config/rs6000/rs6000-builtin.def (SUBE, SUBEC): Add
23462         BU_ALTIVEC_OVERLOAD_X definitions.
23463         * config/rs6000/altivec.h (vec_sube, vec_subec): Add builtin defines.
23464         * doc/extend.texi: Update the built-in documentation file for the new
23465         built-in functions.
23466
23467 2017-07-06  David Malcolm  <dmalcolm@redhat.com>
23468
23469         PR c++/79300
23470         * diagnostic-show-locus.c (layout::layout): Use start and finish
23471         spelling location for the start and finish of each range.
23472         * genmatch.c (linemap_client_expand_location_to_spelling_point):
23473         Add unused aspect param.
23474         * input.c (expand_location_1): Add "aspect" param, and use it
23475         to access the correct part of the location.
23476         (expand_location): Pass LOCATION_ASPECT_CARET to new param of
23477         expand_location_1.
23478         (expand_location_to_spelling_point): Likewise.
23479         (linemap_client_expand_location_to_spelling_point): Add "aspect"
23480         param, and pass it to expand_location_1.
23481
23482 2017-07-06  Sebastian Peryt  <sebastian.peryt@intel.com>
23483
23484         * config/i386/avx512fintrin.h (_mm_mask_getexp_round_ss,
23485         _mm_maskz_getexp_round_ss, _mm_mask_getexp_round_sd,
23486         _mm_maskz_getexp_round_sd, _mm_mask_getmant_round_sd,
23487         _mm_maskz_getmant_round_sd, _mm_mask_getmant_round_ss,
23488         _mm_maskz_getmant_round_ss, _mm_mask_getexp_ss, _mm_maskz_getexp_ss,
23489         _mm_mask_getexp_sd, _mm_maskz_getexp_sd, _mm_mask_getmant_sd,
23490         _mm_maskz_getmant_sd, _mm_mask_getmant_ss,
23491         _mm_maskz_getmant_ss): New intrinsics.
23492         (__builtin_ia32_getexpss128_mask): Changed to ...
23493         __builtin_ia32_getexpss128_round ... this.
23494         (__builtin_ia32_getexpsd128_mask): Changed to ...
23495         __builtin_ia32_getexpsd128_round ... this.
23496         * config/i386/i386-builtin-types.def
23497         ((V2DF, V2DF, V2DF, INT, V2DF, UQI, INT),
23498         (V4SF, V4SF, V4SF, INT, V4SF, UQI, INT)): New function type aliases.
23499         * config/i386/i386-builtin.def (__builtin_ia32_getexpsd_mask_round,
23500         __builtin_ia32_getexpss_mask_round,     __builtin_ia32_getmantsd_mask_round,
23501         __builtin_ia32_getmantss_mask_round): New builtins.
23502         * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_INT_V2DF_UQI_INT,
23503         V4SF_FTYPE_V4SF_V4SF_INT_V4SF_UQI_INT): Handle new types.
23504         (CODE_FOR_avx512f_vgetmantv2df_mask_round,
23505         CODE_FOR_avx512f_vgetmantv4sf_mask_round): New cases.
23506         * config/i386/sse.md
23507         (avx512f_sgetexp<mode><round_saeonly_name>): Changed to ...
23508         avx512f_sgetexp<mode><mask_scalar_name>
23509         <round_saeonly_scalar_name> ... this.
23510         (vgetexp<ssescalarmodesuffix>\t{<round_saeonly_op3>%2, %1, %0|
23511         %0, %1, %2<round_saeonly_op3>}): Changed to ...
23512         vgetexp<ssescalarmodesuffix>
23513         \t{<round_saeonly_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
23514         %0<mask_scalar_operand3>, %1, %2<round_saeonly_scalar_mask_op3>} ... this.
23515         (avx512f_vgetmant<mode><round_saeonly_name>): Changed to ...
23516         avx512f_vgetmant<mode><mask_scalar_name>
23517         <round_saeonly_scalar_name> ... this.
23518         (vgetmant<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
23519         %0, %1, %2<round_saeonly_op4>, %3}): Changed to ...
23520         vgetmant<ssescalarmodesuffix>
23521         \t{%3, <round_saeonly_scalar_mask_op4>%2, %1, %0<mask_scalar_operand4>|
23522         %0<mask_scalar_operand4>, %1, %2
23523         <round_saeonly_scalar_mask_op4>, %3} ... this.
23524         * config/i386/subst.md (mask_scalar_operand4,
23525         round_saeonly_scalar_mask_operand4,     round_saeonly_scalar_mask_op4,
23526         round_saeonly_scalar_nimm_predicate): New subst attributes.
23527
23528 2017-07-06  Julia Koval  <julia.koval@intel.com>
23529
23530         * config/i386/i386.c (ix86_erase_embedded_rounding):
23531         Remove code for old rounding pattern.
23532
23533 2017-07-06  Richard Earnshaw  <rearnsha@arm.com>
23534
23535         * config/arm/t-arm (GTM_H): Add arm-cpu.h.
23536
23537 2017-07-06  Christophe Lyon  <christophe.lyon@linaro.org>
23538
23539         * doc/sourcebuild.texi (Test Directives, Variants of
23540         dg-require-support): Add documentation for dg-require-stack-check.
23541
23542 2017-07-05  Sebastian Peryt  <sebastian.peryt@intel.com>
23543
23544         * config/i386/subst.md (mask_scalar, round_scalar,
23545         round_saeonly_scalar): New meta-templates.
23546         (mask_scalar_name, mask_scalar_operand3, round_scalar_name,
23547         round_scalar_mask_operand3, round_scalar_mask_op3,
23548         round_scalar_constraint, round_scalar_prefix, round_saeonly_scalar_name,
23549         round_saeonly_scalar_mask_operand3, round_saeonly_scalar_mask_op3,
23550         round_saeonly_scalar_constraint,
23551         round_saeonly_scalar_prefix): New subst attribute.
23552         * config/i386/sse.md
23553         (<sse>_vm<plusminus_insn><mode>3<mask_name><round_name>): Renamed to ...
23554         <sse>_vm<plusminus_insn><mode>3<mask_scalar_name>
23555         <round_scalar_name> ... this.
23556         (<sse>_vm<multdiv_mnemonic><mode>3<mask_name><round_name>): Renamed to ...
23557         <sse>_vm<multdiv_mnemonic><mode>3<mask_scalar_name>
23558         <round_scalar_name> ... this.
23559         (<sse>_vm<code><mode>3<mask_name><round_saeonly_name>): Renamed to ...
23560         <sse>_vm<code><mode>3<mask_scalar_name>
23561         <round_saeonly_scalar_name> ... this.
23562         (v<plusminus_mnemonic><ssescalarmodesuffix>
23563         \t{<round_mask_op3>%2, %1, %0<mask_operand3>|
23564         %0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}): Changed to ...
23565         v<plusminus_mnemonic><ssescalarmodesuffix>
23566         \t{<round_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
23567         %0<mask_scalar_operand3>, %1, %<iptr>2<round_scalar_mask_op3>} ... this.
23568         (v<multdiv_mnemonic><ssescalarmodesuffix>
23569         \t{<round_mask_op3>%2, %1, %0<mask_operand3>|
23570         %0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}): Changed to ...
23571         v<multdiv_mnemonic><ssescalarmodesuffix>
23572         \t{<round_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
23573         %0<mask_scalar_operand3>, %1, %<iptr>2<round_scalar_mask_op3>} ... this.
23574         (v<maxmin_float><ssescalarmodesuffix>
23575         \t{<round_saeonly_mask_op3>%2, %1, %0<mask_operand3>|
23576         %0<mask_operand3>, %1, %<iptr>2<round_saeonly_mask_op3>}): Changed to ...
23577         v<maxmin_float><ssescalarmodesuffix>
23578         \t{<round_saeonly_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
23579         %0<mask_scalar_operand3>, %1, %<iptr>2
23580         <round_saeonly_scalar_mask_op3>} ... this.
23581
23582 2017-07-05  Richard Earnshaw  <rearnsha@arm.com>
23583
23584         * config/arm/arm.c (arm_fixed_condition_code_regs): New function.
23585         (TARGET_FIXED_CONDITION_CODE_REGS): Redefine.
23586
23587 2017-07-05  Richard Sandiford  <richard.sandiford@linaro.org>
23588             Alan Hayward  <alan.hayward@arm.com>
23589             David Sherwood  <david.sherwood@arm.com>
23590
23591         * combine.c (simplify_if_then_else): Remove "enum" before
23592         "machine_mode".
23593         * compare-elim.c (can_eliminate_compare): Likewise.
23594         * config/aarch64/aarch64-builtins.c (aarch64_simd_builtin_std_type):
23595         Likewise.
23596         (aarch64_lookup_simd_builtin_type): Likewise.
23597         (aarch64_simd_builtin_type): Likewise.
23598         (aarch64_init_simd_builtin_types): Likewise.
23599         (aarch64_simd_expand_args): Likewise.
23600         * config/aarch64/aarch64-protos.h (aarch64_simd_attr_length_rglist):
23601         Likewise.
23602         (aarch64_reverse_mask): Likewise.
23603         (aarch64_simd_emit_reg_reg_move): Likewise.
23604         (aarch64_gen_adjusted_ldpstp): Likewise.
23605         (aarch64_ccmp_mode_to_code): Likewise.
23606         (aarch64_operands_ok_for_ldpstp): Likewise.
23607         (aarch64_operands_adjust_ok_for_ldpstp): Likewise.
23608         * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
23609         Likewise.
23610         (aarch64_min_divisions_for_recip_mul): Likewise.
23611         (aarch64_reassociation_width): Likewise.
23612         (aarch64_get_condition_code_1): Likewise.
23613         (aarch64_simd_emit_reg_reg_move): Likewise.
23614         (aarch64_simd_attr_length_rglist): Likewise.
23615         (aarch64_reverse_mask): Likewise.
23616         (aarch64_operands_ok_for_ldpstp): Likewise.
23617         (aarch64_operands_adjust_ok_for_ldpstp): Likewise.
23618         (aarch64_gen_adjusted_ldpstp): Likewise.
23619         * config/aarch64/cortex-a57-fma-steering.c (fma_node::rename):
23620         Likewise.
23621         * config/arc/arc.c (legitimate_offset_address_p): Likewise.
23622         * config/arm/arm-builtins.c (arm_simd_builtin_std_type): Likewise.
23623         (arm_lookup_simd_builtin_type): Likewise.
23624         (arm_simd_builtin_type): Likewise.
23625         (arm_init_simd_builtin_types): Likewise.
23626         (arm_expand_builtin_args): Likewise.
23627         * config/arm/arm-protos.h (arm_expand_builtin): Likewise.
23628         * config/ft32/ft32.c (ft32_libcall_value): Likewise.
23629         (ft32_setup_incoming_varargs): Likewise.
23630         (ft32_function_arg): Likewise.
23631         (ft32_function_arg_advance): Likewise.
23632         (ft32_pass_by_reference): Likewise.
23633         (ft32_arg_partial_bytes): Likewise.
23634         (ft32_valid_pointer_mode): Likewise.
23635         (ft32_addr_space_pointer_mode): Likewise.
23636         (ft32_addr_space_legitimate_address_p): Likewise.
23637         * config/i386/i386-protos.h (ix86_operands_ok_for_move_multiple):
23638         Likewise.
23639         * config/i386/i386.c (ix86_setup_incoming_vararg_bounds): Likewise.
23640         (ix86_emit_outlined_ms2sysv_restore): Likewise.
23641         (iamcu_alignment): Likewise.
23642         (canonicalize_vector_int_perm): Likewise.
23643         (ix86_noce_conversion_profitable_p): Likewise.
23644         (ix86_mpx_bound_mode): Likewise.
23645         (ix86_operands_ok_for_move_multiple): Likewise.
23646         * config/microblaze/microblaze-protos.h
23647         (microblaze_expand_conditional_branch_reg): Likewise.
23648         * config/microblaze/microblaze.c
23649         (microblaze_expand_conditional_branch_reg): Likewise.
23650         * config/powerpcspe/powerpcspe.c (rs6000_init_hard_regno_mode_ok):
23651         Likewise.
23652         (rs6000_reassociation_width): Likewise.
23653         (rs6000_invalid_binary_op): Likewise.
23654         (fusion_p9_p): Likewise.
23655         (emit_fusion_p9_load): Likewise.
23656         (emit_fusion_p9_store): Likewise.
23657         * config/riscv/riscv-protos.h (riscv_regno_mode_ok_for_base_p):
23658         Likewise.
23659         (riscv_hard_regno_mode_ok_p): Likewise.
23660         (riscv_address_insns): Likewise.
23661         (riscv_split_symbol): Likewise.
23662         (riscv_legitimize_move): Likewise.
23663         (riscv_function_value): Likewise.
23664         (riscv_hard_regno_nregs): Likewise.
23665         (riscv_expand_builtin): Likewise.
23666         * config/riscv/riscv.c (riscv_build_integer_1): Likewise.
23667         (riscv_build_integer): Likewise.
23668         (riscv_split_integer): Likewise.
23669         (riscv_legitimate_constant_p): Likewise.
23670         (riscv_cannot_force_const_mem): Likewise.
23671         (riscv_regno_mode_ok_for_base_p): Likewise.
23672         (riscv_valid_base_register_p): Likewise.
23673         (riscv_valid_offset_p): Likewise.
23674         (riscv_valid_lo_sum_p): Likewise.
23675         (riscv_classify_address): Likewise.
23676         (riscv_legitimate_address_p): Likewise.
23677         (riscv_address_insns): Likewise.
23678         (riscv_load_store_insns): Likewise.
23679         (riscv_force_binary): Likewise.
23680         (riscv_split_symbol): Likewise.
23681         (riscv_force_address): Likewise.
23682         (riscv_legitimize_address): Likewise.
23683         (riscv_move_integer): Likewise.
23684         (riscv_legitimize_const_move): Likewise.
23685         (riscv_legitimize_move): Likewise.
23686         (riscv_address_cost): Likewise.
23687         (riscv_subword): Likewise.
23688         (riscv_output_move): Likewise.
23689         (riscv_canonicalize_int_order_test): Likewise.
23690         (riscv_emit_int_order_test): Likewise.
23691         (riscv_function_arg_boundary): Likewise.
23692         (riscv_pass_mode_in_fpr_p): Likewise.
23693         (riscv_pass_fpr_single): Likewise.
23694         (riscv_pass_fpr_pair): Likewise.
23695         (riscv_get_arg_info): Likewise.
23696         (riscv_function_arg): Likewise.
23697         (riscv_function_arg_advance): Likewise.
23698         (riscv_arg_partial_bytes): Likewise.
23699         (riscv_function_value): Likewise.
23700         (riscv_pass_by_reference): Likewise.
23701         (riscv_setup_incoming_varargs): Likewise.
23702         (riscv_print_operand): Likewise.
23703         (riscv_elf_select_rtx_section): Likewise.
23704         (riscv_save_restore_reg): Likewise.
23705         (riscv_for_each_saved_reg): Likewise.
23706         (riscv_register_move_cost): Likewise.
23707         (riscv_hard_regno_mode_ok_p): Likewise.
23708         (riscv_hard_regno_nregs): Likewise.
23709         (riscv_class_max_nregs): Likewise.
23710         (riscv_memory_move_cost): Likewise.
23711         * config/rl78/rl78-protos.h (rl78_split_movsi): Likewise.
23712         * config/rl78/rl78.c (rl78_split_movsi): Likewise.
23713         (rl78_addr_space_address_mode): Likewise.
23714         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
23715         Likewise.
23716         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise.
23717         (rs6000_reassociation_width): Likewise.
23718         (rs6000_invalid_binary_op): Likewise.
23719         (fusion_p9_p): Likewise.
23720         (emit_fusion_p9_load): Likewise.
23721         (emit_fusion_p9_store): Likewise.
23722         * config/visium/visium-protos.h (prepare_move_operands): Likewise.
23723         (ok_for_simple_move_operands): Likewise.
23724         (ok_for_simple_move_strict_operands): Likewise.
23725         (ok_for_simple_arith_logic_operands): Likewise.
23726         (visium_legitimize_reload_address): Likewise.
23727         (visium_select_cc_mode): Likewise.
23728         (output_cbranch): Likewise.
23729         (visium_split_double_move): Likewise.
23730         (visium_expand_copysign): Likewise.
23731         (visium_expand_int_cstore): Likewise.
23732         (visium_expand_fp_cstore): Likewise.
23733         * config/visium/visium.c (visium_pass_by_reference): Likewise.
23734         (visium_function_arg): Likewise.
23735         (visium_function_arg_advance): Likewise.
23736         (visium_libcall_value): Likewise.
23737         (visium_setup_incoming_varargs): Likewise.
23738         (visium_legitimate_constant_p): Likewise.
23739         (visium_legitimate_address_p): Likewise.
23740         (visium_legitimize_address): Likewise.
23741         (visium_secondary_reload): Likewise.
23742         (visium_register_move_cost): Likewise.
23743         (visium_memory_move_cost): Likewise.
23744         (prepare_move_operands): Likewise.
23745         (ok_for_simple_move_operands): Likewise.
23746         (ok_for_simple_move_strict_operands): Likewise.
23747         (ok_for_simple_arith_logic_operands): Likewise.
23748         (visium_function_value_1): Likewise.
23749         (rtx_ok_for_offset_p): Likewise.
23750         (visium_legitimize_reload_address): Likewise.
23751         (visium_split_double_move): Likewise.
23752         (visium_expand_copysign): Likewise.
23753         (visium_expand_int_cstore): Likewise.
23754         (visium_expand_fp_cstore): Likewise.
23755         (visium_split_cstore): Likewise.
23756         (visium_select_cc_mode): Likewise.
23757         (visium_split_cbranch): Likewise.
23758         (output_cbranch): Likewise.
23759         (visium_print_operand_address): Likewise.
23760         * expmed.c (flip_storage_order): Likewise.
23761         * expmed.h (emit_cstore): Likewise.
23762         (flip_storage_order): Likewise.
23763         * genrecog.c (validate_pattern): Likewise.
23764         * hsa-gen.c (gen_hsa_addr): Likewise.
23765         * internal-fn.c (expand_arith_overflow): Likewise.
23766         * ira-color.c (allocno_copy_cost_saving): Likewise.
23767         * lra-assigns.c (find_hard_regno_for_1): Likewise.
23768         * lra-constraints.c (prohibited_class_reg_set_mode_p): Likewise.
23769         (process_invariant_for_inheritance): Likewise.
23770         * lra-eliminations.c (move_plus_up): Likewise.
23771         * omp-low.c (lower_oacc_reductions): Likewise.
23772         * simplify-rtx.c (simplify_subreg): Likewise.
23773         * target.def (TARGET_SETUP_INCOMING_VARARG_BOUNDS): Likewise.
23774         (TARGET_CHKP_BOUND_MODE): Likewise..
23775         * targhooks.c (default_chkp_bound_mode): Likewise.
23776         (default_setup_incoming_vararg_bounds): Likewise.
23777         * targhooks.h (default_chkp_bound_mode): Likewise.
23778         (default_setup_incoming_vararg_bounds): Likewise.
23779         * tree-ssa-math-opts.c (divmod_candidate_p): Likewise.
23780         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
23781         (have_whole_vector_shift): Likewise.
23782         * tree-vect-stmts.c (vectorizable_load): Likewise.
23783         * doc/tm.texi: Regenerate.
23784
23785 2017-07-05  Georg-Johann Lay  <avr@gjlay.de>
23786
23787         Graceful degrade if Binutils PR21472 is not available.
23788
23789         PR target/81072
23790         * configure.ac [target=avr]: WARN instead of ERROR if avrxmega3
23791         .rodata in flash test fails.
23792         (HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH): Define it if test passes.
23793         * confgure: Regenerate.
23794         * config.in: Regenerate.
23795         * config/avr/avr.c (avr_asm_named_section)
23796         [HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH]: Only trigger
23797         __do_copy_data for stuff in .rodata if flash_pm_offset = 0.
23798         (avr_asm_init_sections): Same.
23799
23800 2017-07-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
23801
23802         * config/arm/neon.md (fma<VCVTF:mode>4): Remove %?.
23803         (fma<VH:mode>4_intrinsic): Likewise.
23804         (*fmsub<VCVTF:mode>4): Likewise.
23805         (*fmsub<VH:mode>4_intrinsic): Likewise.
23806
23807 2017-07-05  Georg-Johann Lay  <avr@gjlay.de>
23808
23809         PR target/81305
23810         * config/avr/avr.c (avr_out_movhi_mr_r_xmega) [CONSTANT_ADDRESS_P]:
23811         Don't depend on "optimize > 0".
23812         (out_movhi_r_mr, out_movqi_mr_r): Same.
23813         (out_movhi_mr_r, out_movqi_r_mr): Same.
23814         (avr_address_cost) [CONSTANT_ADDRESS_P]: Don't depend cost for
23815         io_address_operand on "optimize > 0".
23816
23817 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
23818
23819         * tree-loop-distribution.c: Add general explanantion on the pass.
23820         (generate_loops_for_partition): Mark distributed loop.
23821         (pg_add_dependence_edges): New parameter.  Handle alias data
23822         dependence specially and record it in the parameter if asked.
23823         (struct pg_vdata, pg_edata, pg_edge_callback_data): New structs.
23824         (init_partition_graph_vertices, add_partition_graph_edge): New.
23825         (pg_skip_alias_edge, free_partition_graph_edata_cb): New.
23826         (free_partition_graph_vdata, build_partition_graph): New.
23827         (sort_partitions_by_post_order, merge_dep_scc_partitions): New.
23828         (pg_collect_alias_ddrs, break_alias_scc_partitions): New.
23829         (data_ref_segment_size, latch_dominated_by_data_ref): New.
23830         (compute_alias_check_pairs, version_loop_by_alias_check): New.
23831         (version_for_distribution_p, finalize_partitions): New.
23832         (distribute_loop): Handle alias data dependence specially.  Factor
23833         out loop fusion code as functions and call these functions.
23834
23835 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
23836
23837         * tree-loop-distribution.c (classify_partition): New parameter and
23838         better handle reduction statement.
23839         (rdg_build_partitions): Revise comment.
23840         (distribute_loop): Compute statements in all partitions and pass it
23841         to classify_partition.
23842
23843 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
23844
23845         * tree-loop-distribution.c (enum partition_type): New.
23846         (struct partition): New field type.
23847         (partition_merge_into): Add parameter.  Update partition type.
23848         (data_dep_in_cycle_p, update_type_for_merge): New functions.
23849         (build_rdg_partition_for_vertex): Compute partition type.
23850         (rdg_build_partitions): Dump partition type.
23851         (distribute_loop): Update calls to partition_merge_into.
23852
23853 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
23854
23855         * tree-loop-distribution.c (struct ddr_hasher): New.
23856         (ddr_hasher::hash, ::equal, get_data_dependence): New function.
23857         (ddrs_table): New.
23858         (classify_partition): Call get_data_dependence.
23859         (pg_add_dependence_edges): Ditto.
23860         (distribute_loop): Release data dependence hash table.
23861
23862 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
23863
23864         * tree-loop-distribution.c (ref_base_address): Delete.
23865         (similar_memory_accesses): Rename ...
23866         (share_memory_accesses): ... to this.  Check if partitions access
23867         the same memory reference.
23868         (distribute_loop): Call share_memory_accesses.
23869
23870 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
23871
23872         * tree-loop-distribution.c (struct partition): New field recording
23873         its data reference.
23874         (partition_alloc, partition_free): Init and release data refs.
23875         (partition_merge_into): Merge data refs.
23876         (build_rdg_partition_for_vertex): Collect data refs for partition.
23877         (pg_add_dependence_edges): Change parameters from vector to bitmap.
23878         Update uses.
23879         (distribute_loop): Remve data refs from vertice data of partition
23880         graph.
23881
23882 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
23883
23884         * tree-loop-distribution.c (params.h): Include header file.
23885         (MAX_DATAREFS_NUM, DR_INDEX): New macro.
23886         (datarefs_vec): New global var.
23887         (create_rdg_vertices): Use datarefs_vec directly.
23888         (free_rdg): Don't free data references.
23889         (build_rdg): Update use.  Don't free data references.
23890         (distribute_loop): Compute global variable for data references.
23891         Bail out if there are too many data references.
23892
23893 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
23894
23895         * tree-loop-distribution.c (loop_nest): New global var.
23896         (build_rdg): Use loop directly, rather than loop nest.
23897         (pg_add_dependence_edges): Remove loop nest parameter.  Use global
23898         variable directly.
23899         (distribute_loop): Compute global variable loop nest.  Update use.
23900
23901 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
23902
23903         * tree-loop-distribution.c (enum fuse_type, fuse_message): New.
23904         (partition_merge_into): New parameter.  Dump reason for fusion.
23905         (distribute_loop): Update use of partition_merge_into.
23906
23907 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
23908
23909         * tree-loop-distribution.c (bb_top_order_index): New.
23910         (bb_top_order_index_size, bb_top_order_cmp): New.
23911         (stmts_from_loop): Use topological order.
23912         (pass_loop_distribution::execute): Compute and release topological
23913         order for basic blocks.
23914
23915 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
23916
23917         * tree-loop-distribution.c (pass_loop_distribution::execute): Skip
23918         if no loops.
23919
23920 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
23921
23922         * cfgloop.h (struct loop): Add comment.  New field orig_loop_num.
23923         * cfgloopmanip.c (lv_adjust_loop_entry_edge): Comment change.
23924         * internal-fn.c (expand_LOOP_DIST_ALIAS): New function.
23925         * internal-fn.def (LOOP_DIST_ALIAS): New.
23926         * tree-vectorizer.c (fold_loop_vectorized_call): Rename to ...
23927         (fold_loop_internal_call): ... this.
23928         (vect_loop_dist_alias_call): New function.
23929         (set_uid_loop_bbs): Call fold_loop_internal_call.
23930         (vectorize_loops): Fold IFN_LOOP_VECTORIZED and IFN_LOOP_DIST_ALIAS
23931         internal calls.
23932
23933 2017-07-04  Uros Bizjak  <ubizjak@gmail.com>
23934
23935         PR target/81300
23936         * config/i386/i386.md (setcc + movzbl/and to xor + setcc peepholes):
23937         Require dead FLAGS_REG at the beginning of a peephole.
23938
23939 2017-07-04  Uros Bizjak  <ubizjak@gmail.com>
23940
23941         PR target/81294
23942         * config/i386/adxintrin.h (_subborrow_u32): Swap _X and _Y
23943         arguments in the call to __builtin_ia32_sbb_u32.
23944         (_subborrow_u64): Swap _X and _Y arguments in the call to
23945         __builtin_ia32_sbb_u64.
23946
23947 2017-07-04  Jakub Jelinek  <jakub@redhat.com>
23948
23949         PR debug/81278
23950         * tree-vrp.c (compare_assert_loc): Turn into a function template
23951         with stable template parameter.  Only test if a->e is NULL,
23952         !a->e == !b->e has been verified already.  Use e == NULL or
23953         e != NULL instead of e or ! e tests.  If stable is true, don't use
23954         iterative_hash_expr, on the other side allow a or b or both NULL
23955         and sort the NULLs last.
23956         (process_assert_insertions): Sort using compare_assert_loc<false>
23957         instead of compare_assert_loc, later sort using
23958         compare_assert_loc<true> before calling process_assert_insertions_for
23959         in a loop.  Use break instead of continue once seen NULL pointer.
23960
23961 2017-07-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23962
23963         * config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
23964         Cortex-R7 and Cortex-R8 processors.
23965
23966 2017-07-04  Jan Hubicka  <hubicka@ucw.cz>
23967
23968         * ipa-utils.c (ipa_merge_profiles): Fix merging when dst is
23969         uninitialized while src is not.
23970
23971 2017-07-04  Richard Earnshaw  <rearnsha@arm.com>
23972
23973         * common/config/arm/arm-common.c: Adjust include path for
23974         arm-cpu-cdata.h
23975         * config/arm/t-arm (TM_H): Adjust path for arm-cpu.h.
23976         (arm-cpu.h): Create in build directory.  Adjust dependency rules.
23977         (arm-cpu-data.h): Likewise.
23978         (arm-cpu-cdata.h): Likewise.
23979         * config/arm/arm-cpu.h: Delete.
23980         * config/arm/arm-cpu-cdata.h: Delete.
23981         * config/arm/arm-cpu-data.h: Delete.
23982
23983 2017-07-04  James Greenhalgh  <james.greenhalgh@arm.com>
23984
23985         * config/arm/arm-cpus.in (cortex-a55): New.
23986         (cortex-a75): Likewise.
23987         (cortex-a75.cortex-a55): Likewise.
23988         * config/arm/driver-arm.c (arm_cpu_table): Add cortex-a55 and
23989         cortex-a75.
23990         * doc/invoke.texi (-mcpu): Document cortex-a55 and cortex-a75.
23991         * config/arm/arm-cpu-cdata.h: Regenerate.
23992         * config/arm/arm-cpu-data.h: Regenerate.
23993         * config/arm/arm-cpu.h: Regenerate.
23994         * config/arm/arm-tables.opt: Regenerate.
23995         * config/arm/arm-tune.md: Regenerate.
23996
23997 2017-07-04  Jan Hubicka  <hubicka@ucw.cz>
23998
23999         * haifa-sched.c (sched_create_recovery_edges): Update profile.
24000
24001 2017-07-04  Jan Hubicka  <hubicka@ucw.cz>
24002
24003         * bb-reorder.c (better_edge_p): Fix handling of uninitialized
24004         probability.
24005
24006 2017-07-04  Richard Sandiford  <richard.sandiford@linaro.org>
24007
24008         PR tree-optimization/81292
24009         * tree-ssa-strlen.c (handle_builtin_strlen): When setting
24010         full_string_p, also call adjust_related_strinfos if the adjustment
24011         is simple, otherwise invalidate related strinfos.
24012
24013 2017-07-04  Martin Liska  <mliska@suse.cz>
24014
24015         PR sanitizer/81040
24016         * sanopt.c (sanitize_rewrite_addressable_params): Mark the
24017         newly created variable as DECL_IGNORED_P.
24018
24019 2017-07-04  Martin Liska  <mliska@suse.cz>
24020
24021         PR ipa/81293
24022         * ipa-inline.c (inline_small_functions):
24023         Use xstrdup_for_dump.
24024
24025 2017-07-04  Tom de Vries  <tom@codesourcery.com>
24026
24027         * graph.c (draw_cfg_edges): Save and restore EDGE_DFS_BACK.
24028
24029 2017-07-03  Dominique d'Humieres  <dominiq@lps.ens.fr>
24030
24031         PR target/81033
24032         * config/darwin.c (darwin_function_switched_text_sections):
24033         Fix spaces.
24034
24035 2017-07-03  Jan Hubicka  <hubicka@ucw.cz>
24036
24037         * tree-vect-loop-manip.c (vect_do_peeling): Fix scaling up.
24038
24039 2017-07-03  Richard Earnshaw  <rearnsha@arm.com>
24040
24041         * doc/invoke.texi (ARM Options): Add -mbe8 and -mbe32 to option summary.
24042
24043 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
24044
24045         * tree-vect-loop.c (vect_analyze_loop_2): Treat min_scalar_loop_bound,
24046         min_profitable_iters, and th as inclusive lower bounds.
24047         Fix LOOP_VINFO_PEELING_FOR_GAPS condition.
24048         (vect_estimate_min_profitable_iters): Return inclusive lower bounds
24049         for min_profitable_iters and min_profitable_estimate.
24050         (vect_transform_loop): Treat th as an inclusive lower bound.
24051         * tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
24052
24053 2017-07-03  Dominique d'Humieres  <dominiq@lps.ens.fr>
24054
24055         PR target/81033
24056         * config/darwin.c (darwin_function_switched_text_sections):
24057         Replace DECL_NAME with DECL_ASSEMBLER_NAME, split assemble_name_raw
24058         in two pieces, and suppress the use of buf.
24059
24060 2017-07-03  Nathan Sidwell  <nathan@acm.org>
24061
24062         * hash-table.h (hash_table_mod1): Fix indentation.
24063
24064 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
24065
24066         PR middle-end/81290
24067         * predict.c (force_edge_cold): Be more careful about propagation
24068         backward.
24069         * profile-count.h (profile_probability::guessed,
24070         profile_probability::fdo, profile_count::guessed, profile_count::fdo):
24071         New.
24072         * tree-ssa-threadupdate.c (recompute_probabilities): Result is guessed.
24073
24074 2017-07-03  James Greenhalgh  <james.greenhalgh@arm.com>
24075
24076         * doc/invoke.texi (rcpc architecture extension): Document it.
24077
24078 2017-07-03  Richard Biener  <rguenther@suse.de>
24079
24080         PR tree-optimization/60510
24081         * tree-vect-loop.c (vect_create_epilog_for_reduction): Pass in
24082         the scalar reduction PHI and use it.
24083         (vectorizable_reduction): Properly guard the single_defuse_cycle
24084         path for non-SLP reduction chains where we cannot use it.
24085         Rework reduc_def/index and vector type deduction.  Rework
24086         vector operand gathering during reduction op code-gen.
24087         * tree-vect-slp.c (vect_analyze_slp): For failed SLP reduction
24088         chains dissolve the chain and leave it to non-SLP reduction
24089         handling.
24090
24091 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
24092
24093         * tree-data-ref.h (dr_alignment): Declare.
24094         * tree-data-ref.c (dr_alignment): New function.
24095         * tree-vectorizer.h (dataref_aux): Remove base_element_aligned.
24096         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
24097         set it.
24098         * tree-vect-stmts.c (vectorizable_store): Use dr_alignment.
24099
24100 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
24101
24102         * tree-data-ref.h (innermost_loop_behavior): Add base_alignment
24103         and base_misalignment fields.
24104         (DR_BASE_ALIGNMENT, DR_BASE_MISALIGNMENT): New macros.
24105         * tree-data-ref.c: Include builtins.h.
24106         (dr_analyze_innermost): Set up the new innmost_loop_behavior fields.
24107         * tree-vectorizer.h (STMT_VINFO_DR_BASE_ALIGNMENT): New macro.
24108         (STMT_VINFO_DR_BASE_MISALIGNMENT): Likewise.
24109         * tree-vect-data-refs.c: Include tree-cfg.h.
24110         (vect_compute_data_ref_alignment): Use the new innermost_loop_behavior
24111         fields instead of calculating an alignment here.
24112         (vect_analyze_data_refs): Use dr_analyze_innermost.  Dump the new
24113         innermost_loop_behavior fields.
24114
24115 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
24116
24117         * tree-data-ref.h (innermost_loop_behavior): Add a step_alignment
24118         field.
24119         (DR_STEP_ALIGNMENT): New macro.
24120         * tree-vectorizer.h (STMT_VINFO_DR_STEP_ALIGNMENT): Likewise.
24121         * tree-data-ref.c (dr_analyze_innermost): Initalize step_alignment.
24122         (create_data_ref): Print it.
24123         * tree-vect-stmts.c (vectorizable_load): Use the step alignment
24124         to tell whether the step preserves vector (mis)alignment.
24125         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Likewise.
24126         Move the check for an integer step and generalise to all INTEGER_CST.
24127         (vect_analyze_data_refs): Set DR_STEP_ALIGNMENT when setting DR_STEP.
24128         Print the outer step alignment.
24129
24130 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
24131
24132         * tree-data-ref.h (innermost_loop_behavior): Replace aligned_to
24133         with offset_alignment.
24134         (DR_ALIGNED_TO): Delete.
24135         (DR_OFFSET_ALIGNMENT): New macro.
24136         * tree-vectorizer.h (STMT_VINFO_DR_ALIGNED_TO): Delete.
24137         (STMT_VINFO_DR_OFFSET_ALIGNMENT): New macro.
24138         * tree-data-ref.c (dr_analyze_innermost): Update after above changes.
24139         (create_data_ref): Likewise.
24140         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Likewise.
24141         (vect_analyze_data_refs): Likewise.
24142         * tree-if-conv.c (if_convertible_loop_p_1): Use memset before
24143         creating dummy innermost behavior.
24144
24145 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
24146
24147         * tree-data-ref.h (dr_analyze_innermost): Replace the dr argument
24148         with a "innermost_loop_behavior *" and refeence tree.
24149         * tree-data-ref.c (dr_analyze_innermost): Likewise.
24150         (create_data_ref): Update call accordingly.
24151         * tree-predcom.c (find_looparound_phi): Likewise.
24152
24153 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
24154
24155         * tree-vectorizer.h (_stmt_vec_info): Replace individual dr_*
24156         fields with dr_wrt_vec_loop.
24157         (STMT_VINFO_DR_BASE_ADDRESS, STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET)
24158         (STMT_VINFO_DR_STEP, STMT_VINFO_DR_ALIGNED_TO): Update accordingly.
24159         (STMT_VINFO_DR_WRT_VEC_LOOP): New macro.
24160         (vect_dr_behavior): New function.
24161         (vect_create_addr_base_for_vector_ref): Remove loop parameter.
24162         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
24163         vect_dr_behavior.  Use a step_preserves_misalignment_p boolean to
24164         track whether the step preserves the misalignment.
24165         (vect_create_addr_base_for_vector_ref): Remove loop parameter.
24166         Use vect_dr_behavior.
24167         (vect_setup_realignment): Update call accordingly.
24168         (vect_create_data_ref_ptr): Likewise.  Use vect_dr_behavior.
24169         * tree-vect-loop-manip.c (vect_gen_prolog_loop_niters): Update
24170         call to vect_create_addr_base_for_vector_ref.
24171         (vect_create_cond_for_align_checks): Likewise.
24172         * tree-vect-patterns.c (vect_recog_bool_pattern): Copy
24173         STMT_VINFO_DR_WRT_VEC_LOOP as a block.
24174         (vect_recog_mask_conversion_pattern): Likewise.
24175         * tree-vect-stmts.c (compare_step_with_zero): Use vect_dr_behavior.
24176         (new_stmt_vec_info): Remove redundant zeroing.
24177
24178 2017-07-03  Richard Earnshaw  <rearnsha@arm.com>
24179
24180         * common/config/arm/arm-common.c (arm_be8_option): New function.
24181         * config/arm/arm-isa.h (isa_feature): Add new feature bit isa_bit_be8.
24182         (ISA_ARMv6): Add isa_bit_be8.
24183         * config/arm/arm.h (arm_be8_option): Add prototype.
24184         (BE8_SPEC_FUNCTION): New define.
24185         (EXTRA_SPEC_FUNCTIONS): Add BE8_SPEC_FUNCTION.
24186         * config/arm/arm.opt (mbig-endian): Mark as Negative of mlittle-endian.
24187         (mlittle-endian): Similarly.
24188         (mbe8, mbe32): New options.
24189         * config/arm/bpabi.h (BE8_LINK_SPEC): Call arm_be8_option.
24190         * doc/invoke.texi (ARM Options): Document -mbe8 and -mbe32.
24191
24192 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
24193
24194         * tree-cfg.c (gimple_find_sub_bbs): Fix profile updating.
24195
24196 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
24197
24198         * tree-cfgcleanup.c (want_merge_blocks_p): New function.
24199         (cleanup_tree_cfg_bb): Use it.
24200         * profile-count.h (profile_count::of_for_merging, profile_count::merge):
24201         New functions.
24202         * tree-cfg.c (gimple_merge_blocks): Use profile_count::merge.
24203
24204 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
24205
24206         PR bootstrap/81285
24207         * loop-doloop.c (add_test): Update profile.
24208
24209 2017-07-03  Martin Liska  <mliska@suse.cz>
24210
24211         PR sanitize/81040
24212         * sanopt.c (rewrite_usage_of_param): New function.
24213         (sanitize_rewrite_addressable_params): Likewise.
24214         (pass_sanopt::execute): Call rewrite_usage_of_param.
24215
24216 2017-07-03  Richard Biener  <rguenther@suse.de>
24217
24218         * tree-vect-loop.c (vect_create_epilog_for_reduction): Revert
24219         back to using VIEW_CONVERT_EXPR.
24220
24221 2017-07-03  Martin Liska  <mliska@suse.cz>
24222
24223         PR other/78366
24224         * doc/extend.texi: Document when a resolver function is
24225         generated for target_clones.
24226
24227 2017-07-03  Martin Liska  <mliska@suse.cz>
24228
24229         * asan.c (asan_emit_stack_protection): Unpoison just red zones
24230         and shadow memory of auto variables which are subject of
24231         use-after-scope sanitization.
24232         (asan_expand_mark_ifn): Add do set only when is_poison.
24233
24234 2016-07-03  Richard Biener  <rguenther@suse.de>
24235
24236         * tree-vect-loop.c (vect_analyze_loop_operations): Also analyze
24237         reduction PHIs.
24238         (vect_force_simple_reduction): Record reduction def -> phi mapping.
24239         (vectorizable_reduction): Perform reduction PHI creation when
24240         visiting a reduction PHI and adjust and simplify code generation
24241         phase of the reduction op.  Cache dts, use fold_binary, not fold_build2.
24242         (vect_transform_loop): Visit reduction PHIs.
24243         * tree-vect-slp.c (vect_get_and_check_slp_defs): Record reduction
24244         defs into the SLP tree.
24245         (vect_build_slp_tree): Reduction defs terminate the recursion.
24246         * tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Allow lookup
24247         of reduction defs.
24248         (vect_get_vec_defs_for_stmt_copy): Export.
24249         (vect_get_vec_defs): Likewise.
24250         * tree-vectorizer.h (struct _stmt_vec_info): Amend reduc_def
24251         purpose.
24252         (vect_get_vec_defs_for_stmt_copy): Declare.
24253         (vect_get_vec_defs): Likewise.
24254
24255 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
24256
24257         * tree-data-ref.c (dr_analyze_innermost): Replace the "nest"
24258         parameter with a "loop" parameter and use it instead of the
24259         loop containing DR_STMT.  Don't check simple_iv when doing
24260         BB analysis.  Describe the two analysis modes in the comment.
24261
24262 2017-07-03  Tom de Vries  <tom@codesourcery.com>
24263
24264         PR tree-optimization/69468
24265         * tree-ssa-tail-merge.c (ignore_edge_flags): New constant.
24266         (find_same_succ_bb): Handle ignore_edge_flags.
24267
24268 2017-07-03  Tom de Vries  <tom@codesourcery.com>
24269
24270         PR tree-optimization/81192
24271         * tree-ssa-tail-merge.c (same_succ_hash): Use bb->loop_father->num in
24272         hash.
24273         (same_succ::equal): Don't find bbs to be equal if bb->loop_father
24274         differs.
24275         (find_same_succ_bb): Remove obsolete test on bb->loop_father->latch.
24276
24277 2017-07-03  Tom de Vries  <tom@codesourcery.com>
24278
24279         PR tree-optimization/81192
24280         * tree-ssa-tail-merge.c (same_succ_flush_bb): Handle
24281         BB_SAME_SUCC (bb) == NULL.
24282
24283 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
24284
24285         * cfgrtl.c (rtl_verify_edges): Enable checking of profile_probability
24286         consistency.
24287
24288 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
24289
24290         * dumpfile.c: Include profile-count.h
24291         * tree-cfg.c (gimple_duplicate_sese_tail): Drop UNUSED attributes;
24292         update profile.
24293         (insert_cond_bb): Update profile.
24294         * tree-cfg.h (insert_cond_bb): Update prototype.
24295         * tree-chkp-opt.c (chkp_optimize_string_function_calls): Update.
24296         * tree-dump.c: Do not include tree-cfg.
24297
24298 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
24299
24300         * bb-reorder.c (fix_up_crossing_landing_pad): Update profile.
24301
24302 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
24303
24304         * expect.c (dw2_build_landing_pads): Update profile of the landing pad
24305         bb.
24306
24307 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
24308
24309         * tree-complex.c (expand_complex_div_wide): update profile.
24310
24311 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
24312             Alan Hayward  <alan.hayward@arm.com>
24313             David Sherwood  <david.sherwood@arm.com>
24314
24315         * Makefile.in (MACHMODE_H): Remove insn-modes.h
24316         (CORETYPES_H): New define.
24317         (MOSTLYCLEANFILES): Add insn-modes-inline.h.
24318         (insn-modes-inline.h, s-modes-inline-h): New rules.
24319         (generated_files): Add insn-modes-inline.h.
24320         (RTL_BASE_H, TREE_CORE_H): Use CORETYPES_H instead of coretypes.h.
24321         (build/gensupport.o, build/ggc-none.o, build/print-rtl.o): Likewise.
24322         (build/read-md.o, build/read-rtl.o, build/rtl.o): Likewise.
24323         (build/vec.o, build/hash-table.o, build/inchash.o): Likewise.
24324         (build/gencondmd.o, build/genattr.o, build/genattr-common.o): Likewise.
24325         (build/genattrtab.o, build/genautomata.o, build/gencheck.o): Likewise.
24326         (build/gencodes.o, build/genconditions.o): Likewise.
24327         (build/genconfig.o, build/genconstants.o, build/genemit.o): Likewise.
24328         (build/genenums.o, build/genextract.o, build/genflags.o): Likewise.
24329         (build/gentarget-def.o, build/genmddeps.o, build/genopinit.o)
24330         (build/genoutput.o, build/genpeep.o, build/genpreds.o): Likewise.
24331         (build/genrecog.o, build/genmddump.o, build/genmatch.o): Likewise.
24332         (build/gencfn-macros.o, build/gcov-iov.o): Likewise.
24333         * coretypes.h: Include everything up to real.h for generators.
24334         Include insn-modes.h first.  Include wide-int-print.h after
24335         wide-int.h.  Include insn-modes-inline.h and then machmode.h.
24336         * machmode.h: Don't include insn-modes.h here.
24337         * function-tests.c: Remove includes of signop.h, machmode.h,
24338         double-int.h and wide-int.h.
24339         * rtl.h: Likewise.
24340         * gcc-rich-location.c: Remove includes of machmode.h, double-int.h
24341         and wide-int.h.
24342         * optc-save-gen.awk: Likewise.
24343         * gencheck.c (BITS_PER_UNIT): Delete dummy definition.
24344         * godump.c: Remove include of wide-int-print.h.
24345         * pretty-print.h: Likewise.
24346         * wide-int-print.cc: Likewise.
24347         * wide-int.cc: Likewise.
24348         * hash-map-tests.c: Remove include of signop.h.
24349         * hash-set-tests.c: Likewise.
24350         * rtl-tests.c: Likewise.
24351         * mkconfig.sh: Remove include of machmode.h.
24352         * genmodes.c (emit_insn_modes_h): Split emission of inline functions
24353         into...
24354         (emit_insn_modes_inline_h): ...this new function.  Emit the code
24355         into an insn-modes-inline.h header file, adding appropriate
24356         include guards and end comments.
24357         (emit_insn_modes_c_header): Remove include of machmode.h.
24358         (emit_min_insn_modes_c_header): Include coretypes.h rather than
24359         machmode.h.
24360         (main): Handle -i flag and call emit_insn_modes_inline_h when
24361         it is passed.
24362
24363 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
24364
24365         * tree-ssa-strlen.c (strinfo): Rename the length field to
24366         nonzero_chars.  Add a full_string_p field.
24367         (compare_nonzero_chars, zero_length_string_p): New functions.
24368         (get_addr_stridx): Add an offset_out parameter.
24369         Use compare_nonzero_chars.
24370         (get_stridx): Update accordingly.  Use compare_nonzero_chars.
24371         (new_strinfo): Update after above changes to strinfo.
24372         (set_endptr_and_length): Set full_string_p.
24373         (get_string_length): Update after above changes to strinfo.
24374         (unshare_strinfo): Update call to new_strinfo.
24375         (maybe_invalidate): Likewise.
24376         (get_stridx_plus_constant): Change off to unsigned HOST_WIDE_INT.
24377         Use compare_nonzero_chars and zero_string_p.  Treat nonzero_chars
24378         as a uhwi instead of an shwi.  Update after above changes to
24379         strinfo and new_strinfo.
24380         (zero_length_string): Assert that chainsi contains full strings.
24381         Use zero_length_string_p.  Update call to new_strinfo.
24382         (adjust_related_strinfos): Update after above changes to strinfo.
24383         Copy full_string_p from origsi.
24384         (adjust_last_stmt): Use zero_length_string_p.
24385         (handle_builtin_strlen): Update after above changes to strinfo and
24386         new_strinfo.  Install the lhs as the string length if the previous
24387         entry didn't describe a full string.
24388         (handle_builtin_strchr): Update after above changes to strinfo
24389         and new_strinfo.
24390         (handle_builtin_strcpy): Likewise.
24391         (handle_builtin_strcat): Likewise.
24392         (handle_builtin_malloc): Likewise.
24393         (handle_pointer_plus): Likewise.
24394         (handle_builtin_memcpy): Likewise.  Track nonzero characters
24395         that aren't necessarily followed by a nul terminator.
24396         (handle_char_store): Likewise.
24397
24398 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
24399
24400         PR tree-optimization/80769
24401         * tree-ssa-strlen.c (strinfo): Document that "stmt" is also used
24402         for malloc and calloc.  Document the new invariant that all related
24403         strinfos have delayed lengths or none do.
24404         (verify_related_strinfos): Move earlier in file.
24405         (set_endptr_and_length): New function, split out from...
24406         (get_string_length): ...here.  Also set the lengths of related
24407         strinfos.
24408         (zero_length_string): Assert that chainsi has known (rather than
24409         delayed) lengths.
24410         (adjust_related_strinfos): Likewise.
24411
24412 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
24413
24414         PR tree-optimization/81136
24415         * tree-vect-data-refs.c (vect_update_misalignment_for_peel): Only
24416         assert that two references with the same misalignment have the same
24417         compile-time misalignment if those compile-time misalignments
24418         are known.
24419
24420 2017-07-01  Andi Kleen  <ak@linux.intel.com>
24421
24422         * print-tree.c (print_node): Print all attributes.
24423
24424 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
24425
24426         * cfg.c (scale_bbs_frequencies): New function.
24427         * cfg.h (scale_bbs_frequencies): Declare it.
24428         * cfgloopanal.c (single_likely_exit): Cleanup.
24429         * cfgloopmanip.c (scale_loop_frequencies): Take profile_probability
24430         as parameter.
24431         (scale_loop_profile): Likewise.
24432         (loop_version): Likewise.
24433         (create_empty_loop_on_edge): Update.
24434         * cfgloopmanip.h (scale_loop_frequencies, scale_loop_profile,
24435         scale_loop_frequencies, scale_loop_profile, loopify,
24436         loop_version): Update prototypes.
24437         * modulo-sched.c (sms_schedule): Update.
24438         * predict.c (unlikely_executed_edge_p): Also check probability.
24439         (probably_never_executed_edge_p): Fix typo.
24440         * tree-if-conv.c (version_loop_for_if_conversion): Update.
24441         * tree-parloops.c (gen_parallel_loop): Update.
24442         * tree-ssa-loop-ivcanon.c (try_peel_loop): Update.
24443         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
24444         * tree-ssa-loop-split.c (split_loop): Update.
24445         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Update.
24446         * tree-vect-loop-manip.c (vect_do_peeling): Update.
24447         (vect_loop_versioning): Update.
24448         * tree-vect-loop.c (scale_profile_for_vect_loop): Update.
24449
24450 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
24451
24452         * trans-mem.c (split_bb_make_tm_edge): Update profile.
24453
24454 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
24455
24456         * tree-if-conv.c (combine_blocks): Use make_single_succ_edge
24457         to keep profile consistent.
24458
24459 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
24460
24461         * cfgrtl.c (rtl_flow_call_edges_add): Update profile.
24462         * tree-cfg.c (gimple_flow_call_edges_add): Likewise.
24463         * profile-count.h (max_safe_multiplier): Make unsigned.
24464         (profile_count::guessed_zero): New.
24465
24466 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
24467
24468         * bb-reorder.c (fix_up_crossing_landing_pad,
24469         fix_crossing_conditional_branches): Use make_single_succ_edge
24470         to keep profile consistent.
24471
24472 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
24473
24474         * tree-vect-loop.c (optimize_mask_stores): Use make_single_succ_edge
24475         to update profile.
24476
24477 2017-07-01  Jakub Jelinek  <jakub@redhat.com>
24478
24479         PR sanitizer/81262
24480         * bb-reorder.c (fix_up_fall_thru_edges): Move variable declarations to
24481         the right scopes, make sure cond_jump isn't preserved between multiple
24482         iterations.  Search for fallthru edge whenever there are 3+ edges and
24483         use find_fallthru_edge for it.
24484
24485 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
24486
24487         Patch by Alexander Monakov <amonakov@ispras.ru>
24488         * sel-sched-ir.c (compute_succs_info): Handle uninitialized
24489         probabilities consistently.
24490
24491 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
24492
24493         * pa.c (pa_expand_compare_and_swap_loop): Update call of
24494         emit_cmp_and_jump_insns.
24495
24496 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
24497
24498         PR ipa/81261
24499         * tree-inline.c (expand_call_inline): Combine profile statuses.
24500
24501 2017-06-30  Andrew Pinski  <apinski@cavium.com>
24502
24503         * tree-if-conv.c (predicate_scalar_phi): Update new_stmt if
24504         fold_stmt returned true.
24505
24506 2017-06-30  Nathan Sidwell  <nathan@acm.org>
24507
24508         * ggc.h (empty_string): Delete.
24509         * cfgexpand.c (expand_asm_stmt): Use plain "".
24510         * optabs.c (expand_asm_memory_barrier): Likewise.
24511         * stringpool.c (empty_string): Delete.
24512         (digit_vector, digit_string): Delete.
24513         (ggc_alloc_string): Use plain "", don't optimize single digit
24514         strings.  Use ggc_alloc_atomic.
24515
24516 2017-06-30  Richard Earnshaw  <rearnsha@arm.com>
24517
24518         * rtlanal.c (insn_rtx_cost): If a parallel contains exactly one
24519         comparison set and one other set, use the cost of the non-comparison
24520         set.
24521
24522 2017-06-30  Nathan Sidwell  <nathan@acm.org>
24523
24524         * ggc.h: Replace all 'static inline' with plain 'inline'.  Fix
24525         some formatting.
24526
24527 2017-06-30  Peter Bergner  <bergner@vnet.ibm.com>
24528
24529         * tree-cfg.c (group_case_labels_stmt): Merge scanning and compressing
24530         loops.  Remove now unneeded calls to gimple_switch_set_label() that
24531         just set removed labels to NULL_TREE.
24532
24533 2017-06-30  Aldy Hernandez  <aldyh@redhat.com>
24534
24535         * tree-ssanames.c (set_range_info_raw): Abstract from ...
24536         (set_range_info): ...here.  Only call set_range_info_raw if domain
24537         is useful.
24538         (set_nonzero_bits): Call set_range_info_raw.
24539         * tree-ssanames.h (set_range_info_raw): New.
24540
24541 2017-06-30  Jakub Jelinek  <jakub@redhat.com>
24542
24543         PR target/81225
24544         * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): For V8FI,
24545         V16FI and VI8F_256 iterators, use <store_mask_predicate> instead
24546         of nonimmediate_operand and <store_mask_constraint> instead of m
24547         for the input operand.  For V8FI iterator, always split if input
24548         is a MEM.  For V16FI and V8SF_256 iterators, don't test if both
24549         operands are MEM if <mask_applied>.  For VI4F_256 iterator, use
24550         <store_mask_predicate> instead of register_operand and
24551         <store_mask_constraint> instead of v for the input operand.  Make
24552         sure both operands aren't MEMs for if not <mask_applied>.
24553
24554 2017-06-30  Sylvestre Ledru  <sylvestre@debian.org>
24555
24556         * lto-wrapper.c (copy_file) Close both file descriptors before
24557         exiting normally.
24558
24559 2017-06-30  Martin Liska  <mliska@suse.cz>
24560
24561         PR ipa/81214
24562         * multiple_target.c (create_dispatcher_calls): Make ifunc
24563         also for function that don't have calls or are not referenced.
24564
24565 2017-06-30  Richard Biener  <rguenther@suse.de>
24566
24567         * tree-vect-slp.c (vect_slp_analyze_node_operations): Only
24568         analyze the first scalar stmt.  Move vector type computation
24569         for the BB case here from ...
24570         * tree-vect-stmts.c (vect_analyze_stmt): ... here.  Guard
24571         live operation processing in the SLP case properly.
24572
24573 2017-06-30  Richard Biener  <rguenther@suse.de>
24574
24575         * graph.c (draw_cfg_node_succ_edges): Fix broken dot syntax.
24576
24577 2017-06-30  Martin Liska  <mliska@suse.cz>
24578
24579         PR sanitizer/81021
24580         * tree-eh.c (lower_resx): Call BUILT_IN_ASAN_HANDLE_NO_RETURN
24581         before BUILT_IN_UNWIND_RESUME when ASAN is used.
24582
24583 2017-06-30  Yvan Roux  <yvan.roux@linaro.org>
24584
24585         * doc/invoke.texi (AArch64): Add missing options and remove redundant
24586         ones.
24587
24588 2017-06-30  Richard Biener  <rguenther@suse.de>
24589
24590         PR tree-optimization/81249
24591         * tree-vect-loop.c (vect_create_epilog_for_reduction): Convert
24592         condition reduction result to original scalar type.
24593
24594 2017-06-30  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
24595
24596         * profile-count.h (enum profile_quality): Fix typos and whitespace
24597         issues.
24598
24599 2017-06-30  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
24600
24601         * config/s390/s390.c (s390_expand_setmem): Adjust to the new data
24602         type for branch probabilities.
24603
24604 2017-06-29  Julian Brown  <julian@codesourcery.com>
24605             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
24606
24607         * config/aarch64/aarch64-fusion-pairs.def: Add ALU_BRANCH entry.
24608         * config/aarch64/aarch64.c (AARCH64_FUSE_ALU_BRANCH): New fusion type.
24609         (thunderx2t99_tunings): Set AARCH64_FUSE_ALU_BRANCH flag.
24610         (aarch_macro_fusion_pair_p): Add support for AARCH64_FUSE_ALU_BRANCH.
24611
24612 2017-06-29  Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
24613
24614         * config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Push the
24615         check for CC usage into AARCH64_FUSE_CMP_BRANCH.
24616         * config/i386/i386.c (ix86_macro_fusion_pair_p): Push the check for
24617         CC usage from generic code to here.
24618         * sched-deps.c (sched_macro_fuse_insns): Move the condition for
24619         CC usage into the target macros.
24620
24621 2017-06-29  Maya Rashish  <coypu@sdf.org>
24622
24623         * config/netbsd.h (NETBSD_LIB_SPEC): Add -lc when creating shared
24624         objects.
24625
24626 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
24627
24628         * arm/arm-builtins.c: Include profile-count.h
24629         * except.c (sjlj_emit_function_enter): Use
24630         profile_probability::unlikely.
24631
24632 2017-06-29  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
24633
24634         * config/rs6000/rs6000.c (toc_relative_expr_p): Make tocrel_base
24635         and tocrel_offset be pointer args rather than implicitly using
24636         static versions.
24637         (legitimate_constant_pool_address_p, rs6000_emit_move,
24638         const_load_sequence_p, adjust_vperm): Add local tocrel_base and
24639         tocrel_offset and use in toc_relative_expr_p call.
24640         (print_operand, print_operand_address): Use static tocrel_base_oac
24641         and tocrel_offset_oac.
24642         (rs6000_output_addr_const_extra): Use static tocrel_base_oac and
24643         tocrel_offset_oac.
24644
24645 2017-06-29  Maya Rashish  <coypu@sdf.org>
24646
24647         * config/vax/builtins.md (ffssi2_internal): Correct constraint.
24648
24649 2017-06-29  Eric Botcazou  <ebotcazou@adacore.com>
24650
24651         * expr.c (expand_expr) <normal_inner_ref>: When testing for unaligned
24652         objects, take into account only the alignment of 'op0' and 'mode1' if
24653         'op0' is a MEM.
24654
24655 2017-06-29  Steve Ellcey  <sellcey@cavium.com>
24656
24657         * ccmp.c (ccmp_tree_comparison_p): New function.
24658         (ccmp_candidate_p): Update to use above function.
24659         (get_compare_parts): New function.
24660         (expand_ccmp_next): Update to use new functions.
24661         (expand_ccmp_expr_1): Take tree arg instead of gimple, update to use
24662         new functions.
24663         (expand_ccmp_expr): Pass tree instead of gimple to expand_ccmp_expr_1,
24664         take mode as argument.
24665         * ccmp.h (expand_ccmp_expr): Add mode as argument.
24666         * expr.c (expand_expr_real_1): Pass mode as argument.
24667
24668 2017-06-29  Segher Boessenkool  <segher@kernel.crashing.org>
24669
24670         * combine.c (combine_instructions): Print insns to dump_file, together
24671         with their costs.
24672
24673 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
24674
24675         * asan.c (asan_emit_stack_protection): Update.
24676         (create_cond_insert_point): Update.
24677         * auto-profile.c (afdo_propagate_circuit): Update.
24678         * basic-block.h (struct edge_def): Turn probability to
24679         profile_probability.
24680         (EDGE_FREQUENCY): Update.
24681         * bb-reorder.c (find_traces_1_round): Update.
24682         (better_edge_p): Update.
24683         (sanitize_hot_paths): Update.
24684         * cfg.c (unchecked_make_edge): Initialize probability to uninitialized.
24685         (make_single_succ_edge): Update.
24686         (check_bb_profile): Update.
24687         (dump_edge_info): Update.
24688         (update_bb_profile_for_threading): Update.
24689         * cfganal.c (connect_infinite_loops_to_exit): Initialize new edge
24690         probabilitycount to 0.
24691         * cfgbuild.c (compute_outgoing_frequencies): Update.
24692         * cfgcleanup.c (try_forward_edges): Update.
24693         (outgoing_edges_match): Update.
24694         (try_crossjump_to_edge): Update.
24695         * cfgexpand.c (expand_gimple_cond): Update make_single_succ_edge.
24696         (expand_gimple_tailcall): Update.
24697         (construct_init_block): Use make_single_succ_edge.
24698         (construct_exit_block): Use make_single_succ_edge.
24699         * cfghooks.c (verify_flow_info): Update.
24700         (redirect_edge_succ_nodup): Update.
24701         (split_edge): Update.
24702         (account_profile_record): Update.
24703         * cfgloopanal.c (single_likely_exit): Update.
24704         * cfgloopmanip.c (scale_loop_profile): Update.
24705         (set_zero_probability): Remove.
24706         (duplicate_loop_to_header_edge): Update.
24707         * cfgloopmanip.h (loop_version): Update prototype.
24708         * cfgrtl.c (try_redirect_by_replacing_jump): Update.
24709         (force_nonfallthru_and_redirect): Update.
24710         (update_br_prob_note): Update.
24711         (rtl_verify_edges): Update.
24712         (purge_dead_edges): Update.
24713         (rtl_lv_add_condition_to_bb): Update.
24714         * cgraph.c: (cgraph_edge::redirect_call_stmt_to_calle): Update.
24715         * cgraphunit.c (init_lowered_empty_function): Update.
24716         (cgraph_node::expand_thunk): Update.
24717         * cilk-common.c: Include profile-count.h
24718         * dojump.c (inv): Remove.
24719         (jumpifnot): Update.
24720         (jumpifnot_1): Update.
24721         (do_jump_1): Update.
24722         (do_jump): Update.
24723         (do_jump_by_parts_greater_rtx): Update.
24724         (do_compare_rtx_and_jump): Update.
24725         * dojump.h (jumpifnot, jumpifnot_1, jumpif_1, jumpif, do_jump,
24726         do_jump_1. do_compare_rtx_and_jump): Update prototype.
24727         * dwarf2cfi.c: Include profile-count.h
24728         * except.c (dw2_build_landing_pads): Use make_single_succ_edge.
24729         (sjlj_emit_dispatch_table): Likewise.
24730         * explow.c: Include profile-count.h
24731         * expmed.c (emit_store_flag_force): Update.
24732         (do_cmp_and_jump): Update.
24733         * expr.c (compare_by_pieces_d::generate): Update.
24734         (compare_by_pieces_d::finish_mode): Update.
24735         (emit_block_move_via_loop): Update.
24736         (store_expr_with_bounds): Update.
24737         (store_constructor): Update.
24738         (expand_expr_real_2): Update.
24739         (expand_expr_real_1): Update.
24740         * expr.h (try_casesi, try_tablejump): Update prototypes.
24741         * gimple-pretty-print.c (dump_probability): Update.
24742         (dump_profile): New.
24743         (dump_gimple_label): Update.
24744         (dump_gimple_bb_header): Update.
24745         * graph.c (draw_cfg_node_succ_edges): Update.
24746         * hsa-gen.c (convert_switch_statements): Update.
24747         * ifcvt.c (cheap_bb_rtx_cost_p): Update.
24748         (find_if_case_1): Update.
24749         (find_if_case_2): Update.
24750         * internal-fn.c (expand_arith_overflow_result_store): Update.
24751         (expand_addsub_overflow): Update.
24752         (expand_neg_overflow): Update.
24753         (expand_mul_overflow): Update.
24754         (expand_vector_ubsan_overflow): Update.
24755         * ipa-cp.c (good_cloning_opportunity_p): Update.
24756         * ipa-split.c (split_function): Use make_single_succ_edge.
24757         * ipa-utils.c (ipa_merge_profiles): Update.
24758         * loop-doloop.c (add_test): Update.
24759         (doloop_modify): Update.
24760         * loop-unroll.c (compare_and_jump_seq): Update.
24761         (unroll_loop_runtime_iterations): Update.
24762         * lra-constraints.c (lra_inheritance): Update.
24763         * lto-streamer-in.c (input_cfg): Update.
24764         * lto-streamer-out.c (output_cfg): Update.
24765         * mcf.c (adjust_cfg_counts): Update.
24766         * modulo-sched.c (sms_schedule): Update.
24767         * omp-expand.c (expand_omp_for_init_counts): Update.
24768         (extract_omp_for_update_vars): Update.
24769         (expand_omp_ordered_sink): Update.
24770         (expand_omp_for_ordered_loops): Update.
24771         (expand_omp_for_generic): Update.
24772         (expand_omp_for_static_nochunk): Update.
24773         (expand_omp_for_static_chunk): Update.
24774         (expand_cilk_for): Update.
24775         (expand_omp_simd): Update.
24776         (expand_omp_taskloop_for_outer): Update.
24777         (expand_omp_taskloop_for_inner): Update.
24778         * omp-simd-clone.c (simd_clone_adjust): Update.
24779         * optabs.c (expand_doubleword_shift): Update.
24780         (expand_abs): Update.
24781         (emit_cmp_and_jump_insn_1): Update.
24782         (expand_compare_and_swap_loop): Update.
24783         * optabs.h (emit_cmp_and_jump_insns): Update prototype.
24784         * predict.c (predictable_edge_p): Update.
24785         (edge_probability_reliable_p): Update.
24786         (set_even_probabilities): Update.
24787         (combine_predictions_for_insn): Update.
24788         (combine_predictions_for_bb): Update.
24789         (propagate_freq): Update.
24790         (estimate_bb_frequencies): Update.
24791         (force_edge_cold): Update.
24792         * profile-count.c (profile_count::dump): Add missing space into dump.
24793         (profile_count::debug): Add newline.
24794         (profile_count::differs_from_p): Explicitly convert to unsigned.
24795         (profile_count::stream_in): Update.
24796         (profile_probability::dump): New member function.
24797         (profile_probability::debug): New member function.
24798         (profile_probability::differs_from_p): New member function.
24799         (profile_probability::differs_lot_from_p): New member function.
24800         (profile_probability::stream_in): New member function.
24801         (profile_probability::stream_out): New member function.
24802         * profile-count.h (profile_count_quality): Rename to ...
24803         (profile_quality): ... this one.
24804         (profile_probability): New.
24805         (profile_count): Update.
24806         * profile.c (compute_branch_probabilities): Update.
24807         * recog.c (peep2_attempt): Update.
24808         * sched-ebb.c (schedule_ebbs): Update.
24809         * sched-rgn.c (find_single_block_region): Update.
24810         (compute_dom_prob_ps): Update.
24811         (schedule_region): Update.
24812         * sel-sched-ir.c (compute_succs_info): Update.
24813         * stmt.c (struct case_node): Update.
24814         (do_jump_if_equal): Update.
24815         (get_outgoing_edge_probs): Update.
24816         (conditional_probability): Update.
24817         (emit_case_dispatch_table): Update.
24818         (expand_case): Update.
24819         (expand_sjlj_dispatch_table): Update.
24820         (emit_case_nodes): Update.
24821         * targhooks.c: Update.
24822         * tracer.c (better_p): Update.
24823         (find_best_successor): Update.
24824         * trans-mem.c (expand_transaction): Update.
24825         * tree-call-cdce.c: Update.
24826         * tree-cfg.c (gimple_split_edge): Upate.
24827         (move_sese_region_to_fn): Upate.
24828         * tree-cfgcleanup.c (cleanup_control_expr_graph): Upate.
24829         * tree-eh.c (lower_resx): Upate.
24830         (cleanup_empty_eh_move_lp): Upate.
24831         * tree-if-conv.c (version_loop_for_if_conversion): Update.
24832         * tree-inline.c (copy_edges_for_bb): Update.
24833         (copy_cfg_body): Update.
24834         * tree-parloops.c (gen_parallel_loop): Update.
24835         * tree-profile.c (gimple_gen_ic_func_profiler): Update.
24836         (gimple_gen_time_profiler): Update.
24837         * tree-ssa-dce.c (remove_dead_stmt): Update.
24838         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update.
24839         * tree-ssa-loop-im.c (execute_sm_if_changed): Update.
24840         * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update.
24841         (unloop_loops): Update.
24842         (try_peel_loop): Update.
24843         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
24844         * tree-ssa-loop-split.c (connect_loops): Update.
24845         (split_loop): Update.
24846         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Update.
24847         (hoist_guard): Update.
24848         * tree-ssa-phionlycprop.c (propagate_rhs_into_lhs): Update.
24849         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update.
24850         (value_replacement): Update.
24851         * tree-ssa-reassoc.c (branch_fixup): Update.
24852         * tree-ssa-tail-merge.c (replace_block_by): Update.
24853         * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Update.
24854         (create_edge_and_update_destination_phis): Update.
24855         (compute_path_counts): Update.
24856         (recompute_probabilities): Update.
24857         (update_joiner_offpath_counts): Update.
24858         (freqs_to_counts_path): Update.
24859         (duplicate_thread_path): Update.
24860         * tree-switch-conversion.c (hoist_edge_and_branch_if_true): Update.
24861         (struct switch_conv_info): Update.
24862         (gen_inbound_check): Update.
24863         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Update.
24864         (vect_do_peeling): Update.
24865         (vect_loop_versioning): Update.
24866         * tree-vect-loop.c (scale_profile_for_vect_loop): Update.
24867         (optimize_mask_stores): Update.
24868         * ubsan.c (ubsan_expand_null_ifn): Update.
24869         * value-prof.c (gimple_divmod_fixed_value): Update.
24870         (gimple_divmod_fixed_value_transform): Update.
24871         (gimple_mod_pow2): Update.
24872         (gimple_mod_pow2_value_transform): Update.
24873         (gimple_mod_subtract): Update.
24874         (gimple_mod_subtract_transform): Update.
24875         (gimple_ic): Update.
24876         (gimple_stringop_fixed_value): Update.
24877         (gimple_stringops_transform): Update.
24878         * value-prof.h: Update.
24879
24880 2017-06-29  Carl Love  <cel@us.ibm.com>
24881
24882         * config/rs6000/rs6000-c.c: Add support for built-in functions
24883         vector signed int vec_signed (vector float);
24884         vector signed long long vec_signed (vector double);
24885         vector signed int vec_signed2 (vector double, vector double);
24886         vector signed int vec_signede (vector double);
24887         vector signed int vec_signedo (vector double);
24888         * config/rs6000/rs6000.c (rs6000_generate_vsigned2_code): Add
24889         instruction generator.
24890         * config/rs6000/vsx.md (UNSPEC_VSX_XVCVSPSXWS, UNSPEC_VSX_XVCVSPSXDS,
24891         UNSPEC_VSX_VSIGNED2): Add UNSPECS.
24892         (vsx_xvcvspsxws, vsx_xvcvdpuxds_scale, vsx_xvcvspuxws, vsigned2_v2df):
24893         Add define_insn.
24894         (vsignedo_v2df, vsignede_v2df, vunsigned2_v2df, vunsignedo_v2df,
24895         vunsignede_v2df): Add define_expands.
24896         * config/rs6000/rs6000-builtin.def (VEC_SIGNED, VEC_UNSIGNED,
24897         VEC_SIGNED2, VEC_UNSIGNED2, VEC_SIGNEDE, VEC_UNSIGNEDE, VEC_SIGNEDO,
24898         VEC_UNSIGNEDO): Add definitions.
24899         * config/vsx.md (UNSPEC_VSX_XVCVSPSXWS, UNSPEC_VSX_XVCVSPSXDS,
24900         UNSPEC_VSX_VSIGNED2): Add UNSPECs.
24901         (vsx_xvcvspsxws, vsx_xvcvspuxws): Add define_insn.
24902         (vsigned2_v2df, vsigendo_v2df, vsignede_v2df,
24903         vunsigned2_v2df, vunsignedo_v2df, vunsignede_v2df): Add define_expands.
24904         * config/rs6000/altivec.h (vec_signed, vec_signed2,
24905         vec_signede and vec_signedo, vec_unsigned, vec_unsigned2,
24906         vec_unsignede, vec_unsignedo): Add builtin defines.
24907         * config/rs6000-protos.h (rs6000_generate_vsigned2_code): Add extern
24908         declaration.
24909         * doc/extend.texi: Update the built-in documentation file for the
24910         new built-in functions.
24911
24912 2017-06-29  Richard Biener  <rguenther@suse.de>
24913
24914         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Do not add
24915         reduction chains to LOOP_VINFO_REDUCTIONS.
24916         * tree-vect-slp.c (vect_analyze_slp): Continue looking for
24917         SLP reductions after processing reduction chains.
24918
24919 2017-06-29  Nathan Sidwell  <nathan@acm.org>
24920
24921         * builtins.c (fold_builtin_FUNCTION): Use
24922         lang_hooks.decl_printable_name.
24923
24924 2017-06-29  Peter Bergner  <bergner@vnet.ibm.com>
24925
24926         PR middle-end/81194
24927         * cfgexpand.c (expand_gimple_stmt_1): Handle switch statements
24928         with only one label.
24929         * stmt.c (expand_case): Assert NCASES is greater than one.
24930
24931 2017-06-29  Richard Biener  <rguenther@suse.de>
24932
24933         * tree-cfg.c (group_case_labels_stmt): Return whether we changed
24934         anything.
24935         (group_case_labels): Likewise.
24936         (find_taken_edge): Push sanity checking on val to workers...
24937         (find_taken_edge_cond_expr): ... here
24938         (find_taken_edge_switch_expr): ... and here, handle cases
24939         with just a default label.
24940         * tree-cfg.h (group_case_labels_stmt): Adjust prototype.
24941         (group_case_labels): Likewise.
24942         * tree-cfgcleanup.c (execute_cleanup_cfg_post_optimizing): When
24943         group_case_labels does anything cleanup the CFG again.
24944
24945 2017-06-29  Bin Cheng  <bin.cheng@arm.com>
24946
24947         PR tree-optimization/81196
24948         * tree-ssa-loop-niter.c (number_of_iterations_cond): Handle loop
24949         exit condition comparing two IVs.
24950
24951 2017-06-29  Richard Earnshaw  <rearnsha@arm.com>
24952
24953         * config/arm/parsecpu.awk (gen_comm_data): Add initializer for
24954         profile to the dummy entry at the end of the list of architectures.
24955         * config/arm/arm-cpu-cdata.h: Regenerated.
24956
24957 2017-06-29  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
24958             Michael Collison <michael.collison@arm.com>
24959
24960         PR target/70119
24961         * config/aarch64/aarch64.md (*aarch64_<optab>_reg_<mode>3_mask1):
24962         New pattern.
24963         (*aarch64_reg_<mode>3_neg_mask2): New pattern.
24964         (*aarch64_reg_<mode>3_minus_mask): New pattern.
24965         (*aarch64_<optab>_reg_di3_mask2): New pattern.
24966         * config/aarch64/aarch64.c (aarch64_rtx_costs): Account for cost
24967         of shift when the shift amount is masked with constant equal to
24968         the size of the mode.
24969         * config/aarch64/predicates.md (subreg_lowpart_operator): New
24970         predicate.
24971
24972 2017-06-29  Martin Liska  <mliska@suse.cz>
24973
24974         * config/i386/i386.opt: Change range from [1,5] to [0,5].
24975
24976 2017-06-29  Yury Gribov  <tetra2005@gmail.com>
24977
24978         PR bootstrap/80565
24979         * ipa-cp.c (allocate_and_init_ipcp_value): Add initialization
24980         code.
24981         * ipa-inline.h
24982         (edge_growth_cache_entry::edge_growth_cache_entry): New
24983         function.
24984         (reset_edge_growth_cache): Update to use constructor.
24985
24986 2017-06-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24987
24988         * config/aarch64/aarch64.h (AARCH64_EXPAND_ALIGNMENT): New.
24989         (DATA_ALIGNMENT): Update to use AARCH64_EXPAND_ALIGNMENT.
24990         (LOCAL_ALIGNMENT): Update to use AARCH64_EXPAND_ALIGNMENT.
24991
24992 2017-06-28  Sebastian Peryt  <sebastian.peryt@intel.com>
24993
24994         * config/i386/avx512vlintrin.h (_mm256_permutexvar_epi64)
24995         (_mm256_permutexvar_epi32, _mm256_permutex_epi64): New intrinsics.
24996
24997 2017-06-28  Szabolcs Nagy  <szabolcs.nagy@arm.com>
24998
24999         * config.gcc (*-linux-musl*): Add t-musl tmake_file.
25000         (*-linux-uclibc*): Add t-uclibc tmake_file.
25001         * config/t-musl: New.
25002         * config/t-uclibc: New.
25003
25004 2017-06-28  Richard Earnshaw  <rearnsha@arm.com>
25005
25006         * config/arm/parsecpu.awk (profile): Parse new keyword in an arch
25007         context.
25008         (gen_comm_data): Emit architectural setting of arch_prof.
25009         * config/arm/arm-cpus.in (armv6-m, armv6s-m, armv7-a, armv7ve): Set the
25010         profile.
25011         (armv7-r, armv7-m, armv7e-m, armv8-a, armv8.1-a, armv8.2-a): Likewise.
25012         (armv8-m.base, armv8-m.main): Likewise.
25013         * arm-protos.h (arm_build_target): Add profile field.
25014         (arch_option): Likewise.
25015         * config/arm/arm.c (arm_configure_build_target): Copy the profile to
25016         the active target.
25017         * config/arm/arm.h (TARGET_ARM_ARCH_PROFILE): Use
25018         arm_active_target.profile.
25019
25020 2017-06-28  Richard Biener  <rguenther@suse.de>
25021
25022         PR middle-end/81227
25023         * fold-const.c (negate_expr_p): Use TYPE_UNSIGNED, not
25024         TYPE_OVERFLOW_WRAPS.
25025         * match.pd (negate_expr_p): Likewise.
25026         * tree-ssa-reassoc.c (optimize_range_tests_diff): Use
25027         fold_build2, not fold_binary.
25028
25029 2017-06-28  Wilco Dijkstra  <wdijkstr@arm.com>
25030
25031         * config/aarch64/aarch64 (aarch64_expand_mov_immediate):
25032         Convert memory address to Pmode.
25033         (aarch64_print_operand): Assert MEM operands are always Pmode.
25034
25035 2017-06-28  Wilco Dijkstra  <wdijkstr@arm.com>
25036
25037         PR target/79665
25038         * config/arm/aarch-common.c (arm_no_early_alu_shift_dep):
25039         Remove redundant if.
25040         (aarch_forward_to_shift_is_not_shifted_reg): Remove.
25041         * config/arm/aarch-common-protos.h
25042         (aarch_forward_to_shift_is_not_shifted_re): Remove.
25043         * config/arm/cortex-a53.md: Use arm_no_early_alu_shift_dep in bypass.
25044
25045 2017-06-28  Michael Meissner  <meissner@linux.vnet.ibm.com>
25046
25047         PR ipa/81238
25048         * multiple_target.c (create_dispatcher_calls): Set the default
25049         clone to be static, not public.
25050
25051 2017-06-28  Richard Biener  <rguenther@suse.de>
25052
25053         * tree-vect-loop.c (vectorizable_reduction): Move special
25054         cond reduction IV var creation ...
25055         (vect_create_epilog_for_reduction): ... here.  Remove induction_index
25056         parameter.  Use STMT_VINFO_VECTYPE.
25057         * tree-vect-slp.c (vect_get_constant_vectors): Properly reset
25058         constant_p.
25059
25060 2017-06-28  Martin Liska  <mliska@suse.cz>
25061
25062         PR ipa/81128
25063         * ipa-visibility.c (non_local_p): Handle visibility.
25064
25065 2017-06-28  Martin Liska  <mliska@suse.cz>
25066
25067         PR driver/79659
25068         * common.opt: Add IntegerRange to various options.
25069         * opt-functions.awk (integer_range_info): New function.
25070         * optc-gen.awk: Add integer_range_info to cl_options struct.
25071         * opts-common.c (decode_cmdline_option): Handle
25072         CL_ERR_INT_RANGE_ARG.
25073         (cmdline_handle_error): Likewise.
25074         * opts.c (print_filtered_help): Show valid interval in
25075         when --help is provided.
25076         * opts.h (struct cl_option): Add range_min and range_max fields.
25077         * config/i386/i386.opt: Add IntegerRange for -mbranch-cost.
25078
25079 2017-06-28  Marc Glisse  <marc.glisse@inria.fr>
25080
25081         * match.pd ((X & ~Y) | (~X & Y)): Generalize to + and ^.
25082         (x * C EQ/NE y * C): New transformation.
25083
25084 2017-06-28  Christophe Lyon  <christophe.lyon@linaro.org>
25085
25086         * genmultilib (combination_space): Accept '+' in option names.
25087
25088 2017-06-28  Martin Liska  <mliska@suse.cz>
25089
25090         PR sanitizer/81224
25091         * asan.c (instrument_derefs): Bail out inner references
25092         that are hard register variables.
25093
25094 2017-06-28  Jakub Jelinek  <jakub@redhat.com>
25095
25096         PR target/81175
25097         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use def_builtin
25098         rather than def_builtin_pure for __builtin_ia32_gatherpf*.
25099
25100 2017-06-28  Richard Biener  <rguenther@suse.de>
25101
25102         * tree-vectorizer.h (vect_get_vec_defs): Remove.
25103         (vect_get_slp_defs): Adjust.
25104         * tree-vect-loop.c (get_initial_defs_for_reduction): Split
25105         out from ...
25106         * tree-vect-slp.c (vect_get_constant_vectors): ... here and
25107         simplify.
25108         * tree-vect-loop.c (vect_create_epilog_for_reduction): Use
25109         get_initial_defs_for_reduction instead of vect_get_vec_defs.
25110         (vectorizable_reduction): Adjust.
25111         * tree-vect-slp.c (vect_get_constant_vectors): Remove reduction
25112         handling.
25113         (vect_get_slp_defs): Likewise.
25114         * tree-vect-stmts.c (vect_get_vec_defs): Make static and adjust.
25115         (vectorizable_bswap): Adjust.
25116         (vectorizable_call): Likewise.
25117         (vectorizable_conversion): Likewise.
25118         (vectorizable_assignment): Likewise.
25119         (vectorizable_shift): Likewise.
25120         (vectorizable_operation): Likewise.
25121         (vectorizable_store): Likewise.
25122         (vectorizable_condition): Likewise.
25123         (vectorizable_comparison): Likewise.
25124
25125 2017-06-28  Michael Collison  <michael.collison@arm.com>
25126
25127         PR target/68535
25128         * config/arm/arm.c (gen_ldm_seq): Remove last unnecessary
25129         set of base_reg
25130         (arm_gen_movmemqi): Removed unused variable 'i'.
25131         Convert 'for' loop into 'while' loop.
25132         (arm_expand_prologue): Remove last unnecessary set of insn.
25133         (thumb_pop): Remove unused variable 'pushed_words'.
25134         (thumb_exit): Remove last unnecessary set of regs_to_pop.
25135
25136 2017-06-28  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
25137
25138         * config/s390/predicates.md: Use s390_rel_address_ok_p.
25139         * config/s390/s390-protos.h: Add prototype of
25140         s390_rel_address_ok_p.
25141         * config/s390/s390.c (s390_got_symbol): New function.
25142         (s390_rel_address_ok_p): New function.
25143         (legitimize_pic_address): Use s390_rel_address_ok_p.
25144         (s390_load_got): Use s390_got_symbol.
25145         (s390_option_override): Issue error if
25146         -mno-pic-data-is-text-relative is used without -fpic/-fPIC.
25147         * config/s390/s390.h (TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE):
25148         New macro.
25149         * config/s390/s390.opt: New option mpic-data-is-text-relative.
25150
25151 2017-06-27  Andrew Pinski  <apinski@cavium.com>
25152
25153         * match.pd (X >/>=/</<= 0 ? 1.0 : -1.0): New patterns.
25154         (X * copysign (1.0, X)): New pattern.
25155         (X * copysign (1.0, -X)): New pattern.
25156         (copysign (-1.0, CST)): New pattern.
25157
25158 2017-06-27  Joseph Myers  <joseph@codesourcery.com>
25159
25160         * genmultilib (combination_space): Remove variable.
25161         Validate reuse rules against regular expression for any sequence
25162         of multilib options in any order.
25163
25164 2017-06-27  Michael Collison  <michael.collison@arm.com>
25165
25166         * config/aarch64/aarch64-simd.md (aarch64_combine<mode>): Directly
25167         call aarch64_split_simd_combine.
25168         * (aarch64_combine_internal<mode>): Delete pattern.
25169         * config/aarch64/aarch64.c (aarch64_split_simd_combine):
25170         Allow register and subreg operands.
25171
25172 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
25173
25174         * config/i386/vxworks.h (ASM_SPEC): Remove definition. No target
25175         specific need, just fallback on defaults.
25176         (ASM_OUTPUT_ALIGNED_BSS): Add #undef before #define.
25177
25178 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
25179             Olivier Hainque  <hainque@adacore.com>
25180
25181         * config/i386/vxworks.h (DBX_REGISTER_NUMBER): Pick distinct
25182         map for 64bits.
25183         (TARGET_OS_CPP_BUILTINS): builtin_define CPU to X86_64 for 64bit
25184         targets. Pick a default if no particular attempt applied.
25185         (STACK_CHECK_PROTECT): Double for 64bit targets, which have
25186         larger contexts.
25187
25188 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
25189
25190         * config.gcc (i*86-wrs-vxworks7): Handle new acceptable triplet.
25191         (x86_64-wrs-vxworks7): Likewise.
25192
25193 2017-06-27  Marek Polacek  <polacek@redhat.com>
25194
25195         PR sanitizer/81223
25196         * ubsan.c (instrument_null): Check get_base_address's result for null.
25197
25198 2017-06-27  Marc Glisse  <marc.glisse@inria.fr>
25199
25200         * match.pd ((A+-B)+(C-A), (A+B)-(A-C)): New transformations.
25201
25202 2017-06-27  Marc Glisse  <marc.glisse@inria.fr>
25203
25204         * builtin-types.def (BT_FENV_T_PTR, BT_CONST_FENV_T_PTR,
25205         BT_FEXCEPT_T_PTR, BT_CONST_FEXCEPT_T_PTR): New primitive types.
25206         (BT_FN_INT_FENV_T_PTR, BT_FN_INT_CONST_FENV_T_PTR,
25207         BT_FN_INT_FEXCEPT_T_PTR_INT, BT_FN_INT_CONST_FEXCEPT_T_PTR_INT):
25208         New function types.
25209         * builtins.def (BUILT_IN_FECLEAREXCEPT, BUILT_IN_FEGETENV,
25210         BUILT_IN_FEGETEXCEPTFLAG, BUILT_IN_FEGETROUND,
25211         BUILT_IN_FEHOLDEXCEPT, BUILT_IN_FERAISEEXCEPT,
25212         BUILT_IN_FESETENV, BUILT_IN_FESETEXCEPTFLAG,
25213         BUILT_IN_FESETROUND, BUILT_IN_FETESTEXCEPT,
25214         BUILT_IN_FEUPDATEENV): New builtins.
25215         * tree-core.h (TI_FENV_T_PTR_TYPE, TI_CONST_FENV_T_PTR_TYPE,
25216         TI_FEXCEPT_T_PTR_TYPE, TI_CONST_FEXCEPT_T_PTR_TYPE): New entries.
25217         * tree.h (fenv_t_ptr_type_node, const_fenv_t_ptr_type_node,
25218         fexcept_t_ptr_type_node, const_fexcept_t_ptr_type_node): New
25219         macros.
25220         (builtin_structptr_types): Adjust size.
25221         * tree.c (builtin_structptr_types): Add four entries.
25222
25223 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
25224             Olivier Hainque  <hainque@adacore.com>
25225
25226         * config/vxworks.h (VXWORKS_LIB_SPEC): Incorporate ...
25227         (TLS_SYM): New local macro, forcing reference to __tls__ on
25228         link command lines for VxWorks 7 RTPs, triggering initialization
25229         of tlsLib.
25230         (VXWORKS_HAVE_TLS): New macro. State whether the target VxWorks
25231         OS features TLS support, true for RTPs on VxWorks 7.
25232         * config/vxworks.c (vxworks_override_options): Setup emutls
25233         accordingly.
25234
25235 2017-06-27  Jakub Jelinek  <jakub@redhat.com>
25236
25237         * predict.c (test_prediction_value_range): Use -1U instead of -1
25238         to avoid narrowing conversion warning.
25239         * dumpfile.c (dump_options): Wrap all value into dump_flags_t cast
25240         to avoid narrowing conversion warning.
25241         * opt-functions.awk (var_ref): Return (unsigned short) -1 instead of
25242         -1.
25243         * optc-gen.awk (END): Expect (unsigned short) -1 instead of -1.
25244
25245 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
25246
25247         * config/vxworks.h (VXWORKS_LIBS_RTP): Alternative definition for
25248         64bit configurations.
25249         (PTR_DIFF_TYPE): Alternative definition for TARGET_LP64.
25250         (SIZE_TYPE): Likewise.
25251         * config/vxworks.c (vxworks_emutls_var_fields): Use
25252         long_unsigned_type_node instead of unsigned_type_node as the offset
25253         field type, which is "pointer" mode in emutls.c.
25254
25255 2017-06-27  Jakub Jelinek  <jakub@redhat.com>
25256
25257         PR sanitizer/81209
25258         * ubsan.c (ubsan_encode_value): Initialize DECL_CONTEXT on var.
25259
25260         PR middle-end/81207
25261         * gimple-fold.c (replace_call_with_call_and_fold): Handle
25262         gimple_vuse copying separately from gimple_vdef copying.
25263
25264 2017-06-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
25265
25266         * value-prof.c (free_hist): Remove call to memset and the enclosing if
25267         condition.
25268
25269 2017-06-26  Jerome Lambourg  <lambourg@adacore.com>
25270             Olivier Hainque  <hainque@adacore.com>
25271
25272         * config.gcc (*-*-vxworks*): Add TARGET_VXWORKS7=1 to tm_defines
25273         for all vxworks7 targets.
25274         * config/vxworks.h (TARGET_VXWORKS7): If not defined, define to 0.
25275         (VXWORKS_ADDITIONAL_CPP_SPEC): Alternative definition for VXWORKS7.
25276         (VXWORKS_LIBS_RTP, VXWORKS_LIBS_RTP_DIR): New macros, allowing
25277         variations for VX6/VX7 and 32/64bits later on in ...
25278         (VXWORKS_LIB_SPEC): Leverage new macros.
25279         (VXWORKS_OS_CPP_BUILTINS): Define _VSB_CONFIG_FILE for VXWORKS7,
25280         as well as _ALLOW_KEYWORD_MACROS when "inline" is not a keyword.
25281
25282 2017-06-26  Jerome Lambourg  <lambourg@adacore.com>
25283
25284         * config/vxworks.h (VXWORKS_OS_CPP_BUILTINS): builtin_define
25285         _VX_TOOL_FAMILY and _VX_TOOL to gnu.
25286
25287 2017-06-26  Carl Love  <cel@us.ibm.com>
25288
25289         * config/rs6000/rs6000-c.c: Add support for built-in functions
25290         vector bool char vec_reve (vector bool char);
25291         vector signed char vec_reve (vector signed char);
25292         vector unsigned char vec_reve (vector unsigned char);
25293         vector bool int vec_reve (vector bool int);
25294         vector signed int vec_reve (vector signed int);
25295         vector unsigned int vec_reve (vector unsigned int);
25296         vector bool long long vec_reve (vector bool long long);
25297         vector signed long long vec_reve (vector signed long long);
25298         vector unsigned long long vec_reve (vector unsigned long long);
25299         vector bool short vec_reve (vector bool short);
25300         vector signed short vec_reve (vector signed short);
25301         vector double vec_reve (vector double);
25302         vector float vec_reve (vector float);
25303         * config/rs6000/rs6000-builtin.def (VREVE_V2DI, VREVE_V4SI,
25304         VREVE_V8HI, VREVE_V16QI, VREVE_V2DF, VREVE_V4SF, VREVE): New builtin.
25305         * config/rs6000/altivec.md (UNSPEC_VREVEV): New UNSPEC.
25306         (altivec_vreve): New pattern.
25307         * config/rs6000/altivec.h (vec_reve): New define.
25308         * doc/extend.texi (vec_rev): Update the built-in documentation file
25309         for the new built-in functions.
25310
25311 2016-06-26  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
25312
25313         PR tree-optimization/71815
25314         * gimple-ssa-strength-reduction.c (uses_consumed_by_stmt): New
25315         function.
25316         (find_basis_for_candidate): Call uses_consumed_by_stmt rather than
25317         has_single_use.
25318         (slsr_process_phi): Likewise.
25319         (replace_uncond_cands_and_profitable_phis): Don't replace a
25320         multiply candidate with a stride of 1 (copy or cast).
25321         (phi_incr_cost): Call uses_consumed_by_stmt rather than
25322         has_single_use.
25323         (lowest_cost_path): Likewise.
25324         (total_savings): Likewise.
25325
25326 2017-06-26  Richard Biener  <rguenther@suse.de>
25327
25328         PR target/81175
25329         * config/i386/i386.c (ix86_init_mmx_sse_builtins):
25330         Use def_builtin_pure for all gather builtins.
25331
25332 2017-06-26  Richard Biener  <rguenther@suse.de>
25333
25334         PR tree-optimization/81203
25335         * tree-tailcall.c (find_tail_calls): Do not move stmts into
25336         non-dominating BBs.
25337
25338 2017-06-26  Marek Polacek  <polacek@redhat.com>
25339
25340         PR c/80116
25341         * doc/invoke.texi: Document -Wmultistatement-macros.
25342
25343 2017-06-26  Christophe Lyon  <christophe.lyon@linaro.org>
25344
25345         * doc/sourcebuild.texi (ARM-specific attributes): Document new
25346         arm_neon_ok_no_float_abi effective target.
25347
25348 2017-06-26  Richard Biener  <rguenther@suse.de>
25349
25350         PR tree-optimization/80928
25351         * cfghooks.c (duplicate_block): Do not copy BB_DUPLICATED flag.
25352         (copy_bbs): Set BB_DUPLICATED flag early.
25353         (execute_on_growing_pred): Do not execute for BB_DUPLICATED
25354         marked blocks.
25355         (execute_on_shrinking_pred): Likewise.
25356         * tree-ssa.c (ssa_redirect_edge): Do not look for PHI args in
25357         BB_DUPLICATED blocks.
25358         * tree-ssa-phionlycoprop.c (eliminate_degenerate_phis_1): Properly
25359         iterate over all PHIs considering removal of *gsi.
25360
25361 2017-06-23  Jim Wilson  <jim.wilson@linaro.org>
25362
25363         * doc/invoke.texi (AArch64 Options, -mtune): Re-add falkor and
25364         qdf24xx.
25365
25366 2017-06-23  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
25367
25368         * config/rs6000/rs6000-string.c: (expand_block_clear,
25369         do_load_for_compare, select_block_compare_mode,
25370         compute_current_alignment, expand_block_compare,
25371         expand_strncmp_align_check, expand_strn_compare,
25372         expand_block_move, rs6000_output_load_multiple)
25373         Move functions related to string/block move/compare
25374         to a separate file.
25375         * config/rs6000/rs6000.c: Move above functions to rs6000-string.c.
25376         * config/rs6000/rs6000-protos.h (rs6000_emit_dot_insn): Add prototype
25377         for this function which is now used in two files.
25378         * config/rs6000/t-rs6000: Add rule to compile rs6000-string.o.
25379         * config.gcc: Add rs6000-string.o to extra_objs for
25380         targets powerpc*-*-* and rs6000*-*-*.
25381
25382 2017-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
25383
25384         PR target/80510
25385         * config/rs6000/rs6000.md (ALTIVEC_DFORM): Do not allow DImode in
25386         32-bit, since indexed is not valid for DImode.
25387         (mov<mode>_hardfloat32): Reorder ISA 2.07 load/stores before ISA
25388         3.0 d-form load/stores to be the same as mov<mode>_hardfloat64.
25389         (define_peephole2 for Altivec d-form load): Add 32-bit support.
25390         (define_peephole2 for Altivec d-form store): Likewise.
25391
25392         PR ipa/81185
25393         * multiple_target.c (create_dispatcher_calls): Only create the
25394         dispatcher call if the function is the default clone of a
25395         versioned function.
25396
25397 2017-06-23  Segher Boessenkool  <segher@kernel.crashing.org>
25398
25399         PR middle-end/80902
25400         * builtins.c (expand_builtin_atomic_fetch_op): If emitting code after
25401         a call, force the call to not be a tail call.
25402
25403 2017-06-23  Jeff Law  <law@redhat.com>
25404
25405         * doc/contrib.texi: Add entry for Steven Pemberton's work on
25406         enquire.
25407
25408 2017-06-23  Will Schmidt  <will_schmidt@vnet.ibm.com>
25409
25410         * config/rs6000/rs6000.c: Add include of ssa-propagate.h for
25411         update_call_from_tree().  (rs6000_gimple_fold_builtin): Add
25412         handling for early expansion of vector shifts (sl,sr,sra,rl).
25413         (builtin_function_type): Add vector shift right instructions
25414         to the unsigned argument list.
25415
25416 2017-06-23  Bernd Edlinger  <bernd.edlinger@hotmail.de>
25417
25418         rtl-optimizatoin/79286
25419         * ira.c (update_equiv_regs): Revert to using may_trap_or_fault_p again.
25420         * rtlanal.c (rtx_addr_can_trap_p_1): SYMBOL_REF_FUNCTION_P can never
25421         trap.  PIC register plus a const unspec without offset can never trap.
25422
25423 2017-06-23  Marc Glisse  <marc.glisse@inria.fr>
25424
25425         * tree.h (builtin_structptr_type): New type.
25426         (builtin_structptr_types): Declare new array.
25427         * tree.c (builtin_structptr_types): New array.
25428         (free_lang_data, build_common_tree_nodes): Use it.
25429
25430 2017-06-23  Jonathan Wakely  <jwakely@redhat.com>
25431
25432         PR c++/81187
25433         * doc/invoke.texi (-Wnoexcept-type): Fix name of option, from
25434         -Wnoexcept.
25435
25436 2017-06-22  Matt Turner  <mattst88@gmail.com>
25437
25438         * config/i386/driver-i386.c (host_detect_local_cpu): Add Kaby
25439         Lake models to skylake case.  Assume skylake for unknown
25440         models with clflushopt.
25441
25442 2017-06-22  Jeff Law  <law@redhat.com>
25443
25444         * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Handle
25445         frame sizes that do not satisfy aarch64_uimm12_shift.
25446
25447 2017-06-22  Jan Hubicka <hubicka@ucw.cz>
25448
25449         * profile-count.h (apply_probability,
25450         apply_scale, probability_in): Fix checks for zero.
25451
25452 2017-06-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
25453
25454         * incpath.c (add_sysroot_to_chain): Allow for $SYSROOT prefix.
25455         * doc/cppdiropts.texi (-I @var{dir}): Document it.
25456
25457 2016-06-22  Richard Biener  <rguenther@suse.de>
25458
25459         * tree-vect-loop.c (vect_model_reduction_cost): Handle
25460         COND_REDUCTION and INTEGER_INDUC_COND_REDUCTION without
25461         REDUC_MAX_EXPR support.
25462         (vectorizable_reduction): Likewise.
25463         (vect_create_epilog_for_reduction): Likewise.
25464
25465 2017-06-22  James Greenhalgh  <james.greenhalgh@arm.com>
25466
25467         * match.pd (A / (1 << B) -> A >> B): New.
25468         * generic-match-head.c: Include optabs-tree.h.
25469         * gimple-match-head.c: Likewise.
25470         * optabs-tree.h (target_supports_op_p): New.
25471         * optabs-tree.c (target_supports_op_p): New.
25472
25473 2017-06-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
25474
25475         * configure.ac (gcc_cv_ld_static_dynamic): Also check stderr for
25476         $gcc_cv_ld --help output.
25477         (gcc_cv_ld_demangle): Likewise.
25478         (gcc_cv_ld_eh_frame_hdr): Likewise.
25479         (gcc_cv_ld_pie): Likewise.
25480         (gcc_cv_ld_as_needed): Likewise.  Prefer native forms unless $gnu_ld.
25481         (gcc_cv_ld_buildid): Likewise.
25482         (gcc_cv_ld_sysroot): Likewise.
25483         (ld_bndplt_support): Likewise.
25484         (ld_pushpopstate_support): Likewise.
25485         * configure: Regenerate.
25486         * config/sol2.h [!USE_GLD] (SYSROOT_SPEC): Define.
25487
25488 2017-06-21  Jakub Jelinek  <jakub@redhat.com>
25489
25490         PR target/81151
25491         * config/i386/sse.md (round<mode>2): Renumber match_dup and
25492         operands indexes to avoid gap between operands and match_dups.
25493
25494 2017-06-21  Andrew Pinski  <apinski@cavium.com>
25495
25496         * config/aarch64/aarch64-cost-tables.h (thunderx_extra_costs):
25497         Increment Arith_shift and Arith_shift_reg by 1.
25498         * config/aarch64/aarch64-tuning-flags.def (cheap_shift_extend):
25499         New tuning flag.
25500         * config/aarch64/aarch64.c (thunderx_tunings): Enable
25501         AARCH64_EXTRA_TUNE_CHEAP_SHIFT_EXTEND.
25502         (aarch64_strip_extend): Add new argument and test for it.
25503         (aarch64_cheap_mult_shift_p): New function.
25504         (aarch64_rtx_mult_cost): Call aarch64_cheap_mult_shift_p and don't
25505         add a cost if it is true.
25506         Update calls to aarch64_strip_extend.
25507         (aarch64_rtx_costs): Update calls to aarch64_strip_extend.
25508
25509 2017-06-21  Andrew Pinski  <apinski@cavium.com>
25510
25511         * config/aarch64/aarch64-cores.def (thunderxt88p1): Use thunderxt88
25512         tunings.
25513         (thunderxt88): Likewise.
25514         * config/aarch64/aarch64.c (thunderxt88_prefetch_tune): New variable.
25515         (thunderx_prefetch_tune): New variable.
25516         (thunderx2t99_prefetch_tune): Update for the correct values.
25517         (thunderxt88_tunings): New variable.
25518         (thunderx_tunings): Use thunderx_prefetch_tune instead of
25519         generic_prefetch_tune.
25520         (thunderx2t99_tunings): Use AUTOPREFETCHER_WEAK.
25521
25522 2017-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
25523
25524         * config/aarch64/atomics.md (aarch64_compare_and_swap<mode>_lse,
25525         SHORT): Relax operand 3 to aarch64_reg_or_zero and constraint to Z.
25526         (aarch64_compare_and_swap<mode>_lse, GPI): Likewise.
25527         (aarch64_atomic_cas<mode>, SHORT): Likewise for operand 2.
25528         (aarch64_atomic_cas<mode>, GPI): Likewise.
25529
25530 2017-06-21  Martin Liska  <mliska@suse.cz>
25531
25532         * gimplify.c (gimplify_label_expr): Insert GIMPLE_PREDICT
25533         statements on cold and hot labels.
25534         * predict.c (tree_estimate_probability_bb): Remove the
25535         prediction from this place.
25536
25537 2017-06-21  Martin Liska  <mliska@suse.cz>
25538
25539         PR tree-optimization/79489
25540         * gimplify.c (maybe_add_early_return_predict_stmt): New
25541         function.
25542         (gimplify_return_expr): Call the function.
25543         * predict.c (tree_estimate_probability_bb): Remove handling
25544         of early return.
25545         * predict.def: Update comment about early return predictor.
25546         * gimple-predict.h (is_gimple_predict): New function.
25547         * predict.def: Change default value of early return to 66.
25548         * tree-tailcall.c (find_tail_calls): Skip GIMPLE_PREDICT
25549         statements.
25550         * passes.def: Put pass_strip_predict_hints to the beginning of
25551         IPA passes.
25552
25553 2017-06-21  Pierre-Marie de Rodat  <derodat@adacore.com>
25554
25555         * dwarf2out.c (gen_decl_die): Remove the guard to skip file-scope
25556         FUNCTION_DECL declarations.
25557         (dwarf2out_early_global_decl): Remove the guard to skip FUNCTION_DECL
25558         declarations.
25559         (dwaf2out_decl): Likewise.
25560         * godump.c (go_early_global_decl): Skip call to the real debug hook
25561         for FUNCTION_DECL declarations.
25562         * passes.c (rest_of_decl_compilation): Skip call to the
25563         early_global_decl debug hook for FUNCTION_DECL declarations, unless
25564         -fdump-go-spec is passed.
25565
25566 2017-06-21  Marc Glisse  <marc.glisse@inria.fr>
25567
25568         * config/i386/i386.c (struct builtin_isa): New field pure_p.
25569         Reorder for compactness.
25570         (def_builtin, def_builtin2, ix86_add_new_builtins): Handle pure_p.
25571         (def_builtin_pure, def_builtin_pure2): New functions.
25572         (ix86_init_mmx_sse_builtins) [__builtin_ia32_stmxcsr]: Mark as pure.
25573
25574 2017-06-21  Marc Glisse  <marc.glisse@inria.fr>
25575
25576         * match.pd (nop_convert): New predicate.
25577         ((A +- CST1) +- CST2): Allow some NOP conversions.
25578
25579 2017-06-21  Jakub Jelinek  <jakub@redhat.com>
25580
25581         PR c++/81130
25582         * gimplify.c (omp_add_variable): Don't force GOVD_SEEN for types
25583         with ctors/dtors if GOVD_SHARED is set.
25584
25585 2017-06-21  Wilco Dijkstra  <wdijkstr@arm.com>
25586
25587         * config/aarch64/aarch64.md (movti_aarch64):
25588         Emit mov rather than orr.
25589         (movtf_aarch64): Likewise.
25590         * config/aarch64/aarch64-simd.md (aarch64_simd_mov):
25591         Emit mov rather than orr.
25592
25593 2017-06-21  Wilco Dijkstra  <wdijkstr@arm.com>
25594
25595         * config/aarch64/aarch64-simd.md (aarch64_simd_dup):
25596         Swap alternatives, make integer dup more expensive.
25597
25598 2017-06-21  Wilco Dijkstra  <wdijkstr@arm.com>
25599
25600         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
25601         Return true for non-tls symbols.
25602
25603 2017-06-21  James Greenhalgh  <james.greenhalgh@arm.com>
25604
25605         * config/aarch64/aarch64-cores.def (cortex-a55): New.
25606         (cortex-a75): Likewise.
25607         (cortex-a75.cortex-a55): Likewise.
25608         * config/aarch64/aarch64-tune.md: Regenerate.
25609         * doc/invoke.texi (-mtune): Document new values for -mtune.
25610
25611 2017-06-21  Tom de Vries  <tom@codesourcery.com>
25612
25613         * doc/sourcebuild.texi (Add Options, Features for dg-add-options): Add
25614         stack_size feature.
25615         (Effective-Target Keywords, Other attributes): Suggest using
25616         dg-add-options stack_size feature to get stack limit in stack_size
25617         effective target documentation.
25618
25619 2017-06-21  Julian Brown  <julian@codesourcery.com>
25620             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
25621
25622         * config/aarch64/aarch64-simd.md (aarch64_crypto_pmulldi)
25623         (aarch64_crypto_pmullv2di): Change type attribute to crypto_pmull.
25624         * config/aarch64/thunderx2t99.md (thunderx2t99_pmull): New
25625         reservation.
25626         * config/arm/cortex-a53.md (cortex_a53_advsimd_type): Add crypto_pmull to
25627         attribute type list for neon_multiply.
25628         * config/arm/cortex-a57.md (cortex_a57_neon_type): Add crypto_pmull to
25629         attribute type list for neon_multiply.
25630         * config/arm/crypto.md (crypto_vmullp64): Change type to crypto_pmull.
25631         * config/arm/exynos-m1.md (exynos_m1_neon_type): Add crypto_pmull to
25632         attribute type list for neon_multiply.
25633         * config/arm/types.md (crypto_pmull): Add.
25634         * config/arm/xgene1.md (xgene1_neon_pmull): Add crypto_pmull to
25635         attribute type list.
25636
25637 2017-06-20  Andreas Tobler  <andreast@gcc.gnu.org>
25638
25639         * config.gcc (armv6*-*-freebsd*): Change the target_cpu_cname to
25640         arm1176jzf-s.
25641
25642 2017-06-20  Jakub Jelinek  <jakub@redhat.com>
25643
25644         * ira-costs.c (find_costs_and_classes): Initialize cost_classes later
25645         to make sure not to dereference a NULL cost_classes_ptr pointer.
25646
25647 2017-06-20  Carl Love  <cel@us.ibm.com>
25648
25649         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
25650         ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
25651         ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
25652         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
25653         builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
25654         * config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW,
25655         VMULOSW): New enum "unspec" values.
25656         (vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
25657         vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si,
25658         altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw,
25659         altivec_vmulosw): New patterns.
25660         * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
25661         VMULOSW): Add definitions.
25662
25663 2017-06-20  Julia Koval  <julia.koval@intel.com>
25664
25665         * config/i386/i386.c: Fix rounding expand for new pattern.
25666         * config/i386/subst.md: Fix pattern (parallel -> unspec).
25667
25668 2017-06-20  James Greenhalgh  <james.greenhalgh@arm.com>
25669
25670         * config/aarch64/aarch64-option-extensions.def (rcpc): New.
25671         * config/aarch64/aarch64.h (AARCH64_FL_RCPC): New.
25672
25673 2017-06-20  James Greenhalgh  <james.greenhalgh@arm.com>
25674
25675         * config/aarch64/aarch64-option-extensions.def (fp16): Fix expected
25676         feature string.
25677
25678 2017-06-20  James Greenhalgh  <james.greenhalgh@arm.com>
25679
25680         * config/aarch64/aarch64-cores.def: Rearrange to sort by
25681         architecture, then by implementer ID.
25682         * config/aarch64/aarch64-tune.md: Regenerate.
25683
25684 2017-06-20  Richard Biener  <rguenther@suse.de>
25685
25686         PR middle-end/81097
25687         * fold-const.c (split_tree): Fold to type before negating.
25688
25689 2017-06-20  David Malcolm  <dmalcolm@redhat.com>
25690
25691         * diagnostic-show-locus.c
25692         (selftest::test_fixit_deletion_affecting_newline): New function.
25693         (selftest::diagnostic_show_locus_c_tests): Call it.
25694
25695 2017-06-20  Andreas Schwab  <schwab@suse.de>
25696
25697         PR target/80970
25698         * config/m68k/m68k.md (bsetdreg, bchgdreg, bclrdreg): Use "=d"
25699         instead of "+d".
25700
25701 2017-06-20  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
25702
25703         * config/arm/arm-c.c (arm_cpu_builtins): New block to define
25704         __ARM_FEATURE_COPROC according to support.
25705
25706 2017-06-20  Jakub Jelinek  <jakub@redhat.com>
25707
25708         * tree-chkp.c (chkp_get_hard_register_var_fake_base_address):
25709         Rewritten to avoid overflow for > 32-bit pointers.
25710
25711         PR sanitizer/81125
25712         * ubsan.h (ubsan_encode_value): Workaround buggy clang++ parser
25713         by removing enum keyword.
25714         (ubsan_type_descriptor): Likewise.  Formatting fix.
25715
25716         PR target/81121
25717         * config/i386/i386.md (TARGET_USE_VECTOR_CONVERTS float si->{sf,df}
25718         splitter): Require TARGET_SSE2 in the condition.
25719
25720 2017-06-20  Michael Meissner  <meissner@linux.vnet.ibm.com>
25721
25722         PR target/79799
25723         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Add support
25724         for doing vector set of SFmode on ISA 3.0.
25725         * config/rs6000/vsx.md (vsx_set_v4sf_p9): Likewise.
25726         (vsx_set_v4sf_p9_zero): Special case setting 0.0f to a V4SF
25727         element.
25728         (vsx_insert_extract_v4sf_p9): Add an optimization for inserting a
25729         SFmode value into a V4SF variable that was extracted from another
25730         V4SF variable without converting the element to double precision
25731         and back to single precision vector format.
25732         (vsx_insert_extract_v4sf_p9_2): Likewise.
25733
25734 2017-06-19  Jakub Jelinek  <jakub@redhat.com>
25735
25736         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Multiply
25737         in UWHI to avoid undefined overflow.
25738
25739         PR sanitizer/81125
25740         * ubsan.h (enum ubsan_encode_value_phase): New.
25741         (ubsan_encode_value): Change second argument to
25742         enum ubsan_encode_value_phase with default value of
25743         UBSAN_ENCODE_VALUE_GENERIC.
25744         * ubsan.c (ubsan_encode_value): Change second argument to
25745         enum ubsan_encode_value_phase PHASE from bool IN_EXPAND_P,
25746         adjust uses, for UBSAN_ENCODE_VALUE_GENERIC use just
25747         create_tmp_var_raw instead of create_tmp_var and use a
25748         TARGET_EXPR.
25749         (ubsan_expand_bounds_ifn, ubsan_build_overflow_builtin,
25750         instrument_bool_enum_load, ubsan_instrument_float_cast): Adjust
25751         ubsan_encode_value callers.
25752
25753         PR sanitizer/81111
25754         * ubsan.c (ubsan_encode_value): If current_function_decl is NULL,
25755         use create_tmp_var_raw instead of create_tmp_var, mark it addressable
25756         just by setting TREE_ADDRESSABLE on the result and use a TARGET_EXPR.
25757
25758 2017-06-19  Richard Biener  <rguenther@suse.de>
25759
25760         PR middle-end/81118
25761         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop): Clear niter
25762         estimates if we changed anything.
25763
25764 2017-06-19  Richard Biener  <rguenther@suse.de>
25765
25766         PR tree-optimization/80887
25767         * tree-ssa-sccvn.c (mprts_hook_cnt): New global.
25768         (vn_lookup_simplify_result): Allow only mprts_hook_cnt succesful
25769         simplified lookups, then reset mprts_hook.
25770         (vn_nary_build_or_lookup_1): Set mprts_hook_cnt to 9 before
25771         simplifying.
25772         (try_to_simplify): Likewise.
25773
25774 2017-06-19  Martin Liska  <mliska@suse.cz>
25775
25776         PR sanitizer/80879
25777         * gimplify.c (gimplify_switch_expr):
25778         Initialize live_switch_vars for SWITCH_BODY == STATEMENT_LIST.
25779
25780 2017-06-19  Martin Liska  <mliska@suse.cz>
25781
25782         * doc/install.texi: Document that PGO runs in 4 stages.
25783
25784 2017-06-19  Martin Liska  <mliska@suse.cz>
25785
25786         PR ipa/80732
25787         * attribs.c (make_dispatcher_decl): Do not append '.ifunc'
25788         to dispatcher function name.
25789         * multiple_target.c (replace_function_decl): New function.
25790         (create_dispatcher_calls): Redirect both edges and references.
25791
25792 2017-06-19  Jan Hubicka <hubicka@ucw.cz>
25793
25794         * profile-count.c (profile_count::dump): Dump quality.
25795         (profile_count::differs_from_p): Update for unsigned val.
25796         * profile-count.h (profile_count_quality): New enum.
25797         (profile_count): Turn m_val to 62bit unsigned, add quality tracking.
25798
25799 2017-06-19  Richard Biener  <rguenther@suse.de>
25800
25801         * tree-ssa-loop-niter.h (estimate_numbers_of_iterations): Take
25802         struct function as arg.
25803         (estimate_numbers_of_iterations): Export overload with loop arg.
25804         (free_numbers_of_iterations_estimates_loop): Use an overload of
25805         free_numbers_of_iterations_estimates instead.
25806         * tree-cfg.c (remove_bb): Adjust.
25807         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Likewise.
25808         * tree-parloops.c (gen_parallel_loop): Likewise.
25809         * tree-ssa-loop-ivcanon.c (canonicalize_induction_variables):
25810         Likewise.
25811         (tree_unroll_loops_completely): Likewise.
25812         * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop):
25813         Use an overload instead and export.
25814         (estimated_loop_iterations): Adjust.
25815         (max_loop_iterations): Likewise.
25816         (likely_max_loop_iterations): Likewise.
25817         (estimate_numbers_of_iterations): Take struct function as arg
25818         and adjust.
25819         (loop_exits_before_overflow): Adjust.
25820         (free_numbers_of_iterations_estimates_loop): Use an overload.
25821         * tree-vect-loop.c (vect_analyze_loop_form): Adjust.
25822         * tree-vectorizer.c (vect_free_loop_info_assumptions): Likewise.
25823
25824 2017-06-19  Richard Biener  <rguenther@suse.de>
25825
25826         PR ipa/81112
25827         * ipa-prop.c (find_constructor_constant_at_offset): Handle
25828         RANGE_EXPR conservatively.
25829
25830 2017-06-16  Carl Love  <cel@us.ibm.com>
25831
25832         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
25833         definitions for vec_float, vec_float2, vec_floato,
25834         vec_floate built-ins.
25835         * config/rs6000/vsx.md (define_c_enum "unspec"): Add RTL code
25836         for instructions vsx_xvcvsxws vsx_xvcvuxwsp, float2, floato and
25837         floate.
25838         * config/rs6000/rs6000-builtin.def (FLOAT2_V2DI, FLOATE_V2DF,
25839         FLOATE_2DI, FLOATO_V2DF, FLOATEE_V2DI, XVCVSXWSP_V4SF,
25840         UNS_FLOATO_V2DI, UNS_FLOATE_V2DI): Add definitions.
25841         * config/altivec.md (define_insn "p8_vmrgew_<mode>",
25842         define_mode_attr VF_sxddp): Add V4SF type to p8_vmrgew.
25843         * config/rs6000/altivec.h (vec_float, vec_float2, vec_floate,
25844         vec_floato): Add builtin defines.
25845         * doc/extend.texi (vec_float, vec_float2, vec_floate, vec_floato):
25846         Update the built-in documentation file for the new built-in
25847         functions.
25848
25849 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
25850
25851         * config/arm/arm.opt (marm): Mark as the negative of of -mthumb.
25852         (mthumb): Mark as the negative of -marm.
25853
25854 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
25855
25856         * doc/invoke.texi (ARM Options, -mcpu): Document supported
25857         extension options.
25858         (ARM Options, -mtune): Document that this accepts the same
25859         extension options as -mcpu.
25860         (ARM Options, -mfpu): Document addition of -mfpu=auto.
25861
25862 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
25863
25864         * doc/invoke.texi (ARM Options, -march=): Document new syntax and
25865         permitted extensions.
25866
25867 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
25868
25869         * config/arm/arm-cpus.in (armv7): Add extension +nofp.
25870         (armv7-r): Add aliases vfpv3xd and vfpv3-d16.
25871         (armv8-m.main): Add option +nodsp.
25872         * config/arm/arm-cpu-cdata.h: Regenerated.
25873
25874 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
25875
25876         * config/arm/t-fuchsia: New file.
25877         * config.gcc (arm*-*-fuchsia*): Use it.
25878
25879 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
25880
25881         * config/arm/t-symbian: Rewrite for new option infrastructure.
25882
25883 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
25884
25885         * config/arm/t-phoenix (MULTILIB_REUSE): Clear variable.
25886         (MULTILIB_REQUIRED): Likewise.
25887
25888 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
25889
25890         * config/arm/t-linux-eabi (MULTILIB_EXCEPTIONS): Set to empty.
25891         (MULTILIB_RESUE): Likewise.
25892         (MULTILIB_MATCHES): Likewise.
25893         (MULTLIB_REQUIRED): Likewise.
25894
25895 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
25896
25897         * config/arm/t-rtems: Rewrite for new option framework.
25898
25899 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
25900
25901         * config/arm/t-aprofile (v7_a_nosimd_variants, v7_a_simd_variants)
25902         (v7ve_nosimd_variatns, v7ve_vfpv3_simd_variants)
25903         (v7ve_vfpv4_simd_variants, v8_a_nosimd_variants, v8_a_simd_variants)
25904         (v8_1_a_simd_variants, v8_2_a_simd_variants): Move to ...
25905         * config/arm/t-multilib: ... here.
25906         (MULTILIB_OPTIONS): Add armv7 and armv7+fp architectures.
25907         (MULTILIB_MATCHES): Use armv7 libraries for armv7-r.  Also use for
25908         armv7-a and armv8*-a when A-profile libraries have not been built.
25909         * config/arm/t-rmprofile: Rewrite.
25910
25911 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
25912
25913         * genmultilib (multilib_reuse): Allow an explicit period to be escaped
25914         with a backslash.  Remove the backslash after substituting unescaped
25915         periods.
25916         * doc/fragments.texi (MULTILIB_REUSE): Document it.
25917
25918 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
25919
25920         * config.gcc: (arm*-*-*): When building a-profile libraries, force
25921         the driver to pass through the default setting of -mfloat-abi.
25922         * common/config/arm/arm-common.c (arm_target_thumb_only): Return -marm
25923         rather than NULL.
25924         * config/arm/t-multilib (MULTILIB_REUSE): Initialize to empty.
25925         (all_feat_combs): New rule.
25926         (MULTILIB_OPTIONS): Use explicit ARM and Thumb directories.  Rework
25927         default libraries.
25928         * config/arm/t-aprofile: Rewrite.
25929
25930 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
25931
25932         * config/arm/arm.h (FPUTYPE_AUTO): Define.
25933         * config/arm/arm.c (arm_option_override): Use FPUTYPE_AUTO if the
25934         fpu is not specified by the user/command-line.
25935         * config/arm/bpabi.h (FPUTYPE_DEFAULT): Delete.
25936         * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Delete.
25937         * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Delete.
25938         * config/arm/vxworks.h (FPUTYPE_DEFAULT): Delete.
25939         * common/config/arm/arm-common.c (arm_canon_arch_option): Use
25940         FPUTYPE_AUTO insted of FPUTYPE_DEFAULT.
25941
25942 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
25943
25944         * config/arm/elf.h (MULTILIB_DEFAULTS): Delete.
25945         * config/arm/t-arm-elf: Rewritten.
25946
25947 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
25948
25949         * config/arm/arm.h (TARGET_HARD_FLOAT): Also check that we
25950         have some floating-point instructions.
25951         (TARGET_SOFT_FLOAT): Define as inverse of TARGET_HARD_FLOAT.
25952         (TARGET_MAYBE_HARD_FLOAT): New macro.
25953         * config/arm/arm-builtins.c (arm_init_builtins): Use
25954         TARGET_MAYBE_HARD_FLOAT.
25955         * config/arm/arm.c (arm_option_override): Use TARGET_HARD_FLOAT_ABI.
25956
25957 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
25958
25959         * common/config/arm/arm-common.c: Define INCLUDE_LIST.
25960         (configargs.h): Include it.
25961         (arm_print_hint_for_fpu_option): New function.
25962         (arm_parse_fpu_option): New function.
25963         (candidate_extension): New class.
25964         (arm_canon_for_multilib): New function.
25965         * config/arm/arm.h (CANON_ARCH_SPEC_FUNCTION): New macro.
25966         (EXTRA_SPEC_FUNCTIONS): Add CANON_ARCH_SPEC_FUNCTION.
25967         (ARCH_CANONICAL_SPECS): New macro.
25968         (DRIVER_SELF_SPECS): Add ARCH_CANONICAL_SPECS.
25969
25970 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
25971
25972         * config.gcc (arm*-*-*): Ensure both target_cpu_cname and with_cpu
25973         are set after handling multilib fragments.  Set target_cpu_default2
25974         from with_cpu.
25975
25976 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
25977
25978         * config.gcc (arm*-*-fucshia*): Set target_cpu_cname to the real
25979         cpu name.
25980         (arm*-*-*): Set target_cpu_default2 to a quoted string.
25981         * config/arm/parsecpu.awk (check_cpu): Validate any extension
25982         options.
25983         (check_arch): Likewise.
25984         * config/arm/arm.c (arm_configure_build_target): Handle
25985         TARGET_CPU_DEFAULT being a string constant.  Scan any feature
25986         options in the default.
25987
25988 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
25989
25990         * config/arm/arm-protos.h (cpu_arch_extension): Add field to record
25991         when an option is an alias of another.
25992         * config/arm/parsecpu.awk (optalias): New parser token.
25993         (gen_comm_data): Mark non-alias options as such.  Emit entries
25994         for extension aliases.
25995         * config/arm/arm-cpus.in (armv5e): Make vfpv2 an alias.
25996         (armv5te, armv5tej, armv6, armv6j, armv6k, armv6z): Likewise.
25997         (armv6kz, armv6zk, armv6t2): Likewise.
25998         (armv7): Make vfpv3-d16 an alias.
25999         (armv7-a): Make vfpv3-d16, neon and neon-vfpv3 aliases.  Sort in
26000         canonical order.
26001         (armv7ve): Make vfpv4-d16, neon-vfpv3 and neon-vfpv4 aliases.
26002         Sort in canonical order.
26003         (armv8-a): Sort in canonical order.
26004         (armv8.1-a, armv8.2-a):  Likewise.
26005         (generic-armv7-a): Make neon and neon-vfpv3 aliases.  Sort in
26006         canonical order.
26007         (cortex-a9): Sort in canonical order.
26008         * config/arm/arm.c (selftests.h): Include it.
26009         (arm_test_cpu_arch_data): New function.
26010         (arm_run_self_tests): New function.
26011         (TARGET_RUN_TARGET_SELFTESTS): Redefine.
26012         (targetm): Move declaration to the end of the file.
26013         * arm-cpu-cdata.h: Regenerated.
26014
26015 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26016
26017         * config/arm/arm.h (TARGET_MODE_SPECS): Add additional parameter to
26018         call to target_mode_check describing the type of option passed.
26019         * common/config/arm/arm-common.c (arm_arch_core_flag): Delete.
26020         (arm_target_thumb_only): Use arm_parse_arch_option_name or
26021         arm_parse_cpu_option_name to match parameters against list of
26022         available targets.
26023         * config/arm/parsecpu.awk (gen_comm_data): Don't generate
26024         arm_arch_core_flags data structure.
26025         * config/arm/arm-cpu_cdata.h: Regenerated.
26026
26027 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26028
26029         * common/config/arm/arm-common.c (arm_initialize_isa): Moved here from
26030         config/arm/arm.c.
26031         (arm_print_hint_for_cpu_option): Likewise.
26032         (arm_print_hint_for_arch_option): Likewise.
26033         (arm_parse_cpu_option_name): Likewise.
26034         (arm_parse_arch_option_name): Likewise.
26035         * config/arm/arm.c (arm_identify_fpu_from_isa): Use the computed number
26036         of entries in the all_fpus list.
26037         * config/arm/arm-protos.h (all_architectures, all_cores): Declare.
26038         (arm_parse_cpu_option_name): Declare.
26039         (arm_parse_arch_option_name): Declare.
26040         (arm_parse_option_features): Declare.
26041         (arm_intialize_isa): Declare.
26042         * config/arm/parsecpu.awk (gen_data): Move CPU and architecture
26043         data tables to ...
26044         (gen_comm_data): ... here.  Make definitions non-static.
26045         * config/arm/arm-cpu-data.h: Regenerated.
26046         * config/arm/arm-cpu-cdata.h: Regenerated.
26047
26048 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26049
26050         * config/arm/arm-protos.h (arm_build_target): Remove arch_core.
26051         (cpu_arch_extension): New structure.
26052         (cpu_arch_option, arch_option, cpu_option): New structures.
26053         * config/arm/parsecpu.awk (gen_headers): Build an enumeration of
26054         architecture types.
26055         (gen_data): Generate new format data tables.
26056         * config/arm/arm.c (cpu_tune): New structure.
26057         (cpu_option, processors): Delete.
26058         (arm_print_hint_for_core_or_arch): Delete.  Replace with ...
26059         (arm_print_hint_for_cpu_option): ... this and ...
26060         (arm_print_hint_for_arch_option): ... this.
26061         (arm_parse_arch_cpu_name): Delete.  Replace with ...
26062         (arm_parse_cpu_option_name): ... this and ...
26063         (arm_parse_arch_option_name): ... this.
26064         (arm_unrecognized_feature): Change type of target parameter to
26065         cpu_arch_option.
26066         (arm_parse_arch_cpu_features): Delete.  Replace with ...
26067         (arm_parse_option_features): ... this.
26068         (arm_configure_build_target): Rework to use new configuration data
26069         tables.
26070         (arm_print_tune_info): Rework for new configuration data tables.
26071         * config/arm/arm-cpu-data.h: Regenerated.
26072         * config/arm/arm-cpu.h: Regenerated.
26073
26074 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26075
26076         * Makefile.in (OBJS): Move sbitmap.o from here ...
26077         (OBJS-libcommon): ... to here.
26078
26079 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26080
26081         * config/arm/arm-isa.h (ISA_ALL_FPU_INTERNAL): Renamed from ISA_ALL_FPU.
26082         (ISA_ALL_CRYPTO): New macro.
26083         (ISA_ALL_SIMD): New macro
26084         (ISA_ALL_FP): New macro.
26085         * config/arm/arm.c (fpu_bitlist): Update initializer.
26086         * config/arm/arm-cpus.in: Use new ISA_ALL macros to disable crypto,
26087         simd or fp.
26088         (arm9e): Add fpu.  Add option for nofp
26089         (arm946e-s, arm966e-s, arm968e-s, arm10e, arm1020e, arm1022e): Likewise.
26090         (arm926ej-s, arm1026ej-s): Likewise.
26091         (generic-armv7-a): Add fpu.  Add options for simd, vfpv3, vfpv3-d16,
26092         vfpv3-fp16, vfpv3-d16-fp16, vfpv4, vfpv4-d16, neon, neon-vfp3,
26093         neon-fp16, neon-vfpv4, nofp and nosimd.
26094         (cortex-a5, cortex-a7): Add fpu.  Add options for nosimd and nofp.
26095         (cortex-a8): Add fpu.  Add option for nofp.
26096         (cortex-a9): Add fpu.  Add options for nosimd and nofp.
26097         (cortex-a12, cortex-a15, cortex-a17): Add fpu.  Add option for nofp.
26098         (cortex-r4f): Add fpu.
26099         (cortex-r5): Add fpu.  Add options for nofp.dp and nofp.
26100         (cortex-r7): Use idiv option from architecture.  Add fpu.  Add option
26101         for nofp.
26102         (cortex-r8): Likewise.
26103         (cortex-m4): Add fpu.  Add option for nofp.
26104         (cortex-a15.cortex-a7): Add fpu.  Add option for nofp.
26105         (cortex-a17.cortex-a7): Likewise.
26106         (cortex-a32): Add fpu.  Add options for crypto and nofp.
26107         (cortex-a35, cortex-a53): Likewise.
26108         (cortex-a57): Add fpu.  Add option for crypto.
26109         (cortex-a72, cortex-a73): Likewise.
26110         (exynos-m1): Likewise.
26111         (cortex-a57.cortex-a53, cortex-a72.cortex-a53): Likewise.
26112         (cortex-a73.cortex-a35, cortex-a73.cortex-a53): Likewise.
26113         (cortex-m33): Add fpu.  Add option for nofp.
26114         * config/arm/arm-cpu-cdata.h: Regenerated
26115         * config/arm/arm-cpu-data.h: Regenerated.
26116
26117 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26118
26119         * arm-cpus.in (armv5e): Add options fp, vfpv2 and nofp.
26120         (armv5te, armv5tej): Likewise.
26121         (armv6, armv6j, armv6k, armv6z, armv6kz, armv6zk, armv6t2): Likewise.
26122         (armv7): Add options fp and vfpv3-d16.
26123         (armv7-a): Add options fp, simd, vfpv3, vfpv3-d16, vfpv3-d16-fp16,
26124         vfpv3-fp16, vfpv4, vfpv4-d16, neon, neon-vfpv3, neon-fp16, neon-vfpv4,
26125         nofp and nosimd.
26126         (armv7ve): Likewise.
26127         (armv7-r): Add options fp, fp.sp, idiv, nofp and noidiv.
26128         (armv7e-m): Add options fp, fpv5, fp.dp and nofp.
26129         (armv8-a): Add nocrypto option.
26130         (armv8.1-a, armv8.2-a): Likewise.
26131         (armv8-m.main): add options fp, fp.dp and nofp.
26132
26133 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26134
26135         * config/arm/arm-cpus.in (armv8-a): Add options crc, simd crypto and
26136         nofp.
26137         (armv8-a+crc): Delete.
26138         (armv8.1-a): Add options simd, crypto and nofp.
26139         (armv8.2-a): Add options fp16, simd, crypto and nofp.
26140         (armv8.2-a+fp16): Delete.
26141         (armv8-m.main): Add option dsp.
26142         (armv8-m.main+dsp): Delete.
26143         (cortex-a8): Add fpu.  Add nofp option.
26144         (cortex-a9): Add fpu.  Add nofp and nosimd options.
26145         * config/arm/parsecpu.awk (gen_data): Generate option tables and
26146         link to main cpu and architecture data structures.
26147         (gen_comm_data): Only put isa attributes from the main architecture
26148         in common tables.
26149         (option): New statement for architecture and CPU entries.
26150         * arm.c (struct cpu_option): New structure.
26151         (struct processors): Add entry for options.
26152         (arm_unrecognized_feature): New function.
26153         (arm_parse_arch_cpu_name): Ignore any characters after the first
26154         '+' character.
26155         (arm_parse_arch_cpu_feature): New function.
26156         (arm_configure_build_target): Separate out any CPU and architecture
26157         features and parse separately.  Don't error out if -mfpu=auto is
26158         used with only an architecture string.
26159         (arm_print_asm_arch_directives): New function.
26160         (arm_file_start): Call it.
26161         * config/arm/arm-cpu-cdata.h: Regenerated.
26162         * config/arm/arm-cpu-data.h: Likewise.
26163         * config/arm/arm-tables.opt: Likewise.
26164
26165 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26166
26167         * config/arm/elf.h (ASM_SPEC): Only pass -mfpu through to the
26168         assembler when it is not -mfpu=auto.
26169
26170 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26171
26172         * config/arm/arm.h (BIG_LITTLE_SPEC): Delete macro.
26173         (ASM_REWRITE_SPEC_FUNCTIONS): New macro.
26174         (BIG_LITTLE_CPU_SPEC_FUNCTIONS): Delete macro.
26175         (ASM_CPU_SPEC): Rewrite.
26176         (MCPU_MTUNE_NATIVE_FUNCTIONS): New macro.
26177         (EXTRA_SPEC_FUNCTIONS): Move outside of ifdef.  Use
26178         MCPU_MTUNE_NATIVE_FUNCTIONS and ASM_REWRITE_SPEC_FUNCTIONS.  Remove
26179         reference to BIG_LITTLE_CPU_SPEC_FUNCTIONS.
26180         * common/config/arm/arm-common.c (arm_rewrite_selected_cpu): Ensure
26181         copied string is NUL-terminated.  Also strip any characters prefixed
26182         by '+'.
26183         (arm_rewrite_selected_arch): New function.
26184         (arm_rewrite_march): New function.
26185
26186 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26187
26188         * config/arm/arm.opt (x_arm_arch_string): New TargetSave option.
26189         (x_arm_cpu_string, x_arm_tune_string): Likewise.
26190         (march, mcpu, mtune): Convert to string-based options.
26191         * config/arm/arm.c (arm_print_hint_for_core_or_arch): New function.
26192         (arm_parse_arch_cpu_name): New function.
26193         (arm_configure_build_target): Use arm_parse_arch_cpu_name to
26194         identify selected architecture or CPU.
26195         (arm_option_save): New function.
26196         (TARGET_OPTION_SAVE): Redefine.
26197         (arm_option_restore): Restore string options.
26198         (arm_option_print): Print string options.
26199
26200 2017-06-16  Martin Sebor  <msebor@redhat.com>
26201
26202         PR tree-optimization/80933
26203         PR tree-optimization/80934
26204         * builtins.c (fold_builtin_3): Do not handle bcmp here.
26205         * gimple-fold.c (gimple_fold_builtin_bcmp): New function.
26206         (gimple_fold_builtin_bcopy, gimple_fold_builtin_bzero): Likewise.
26207         (gimple_fold_builtin): Call them.
26208
26209 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
26210
26211         * gimple-ssa-isolate-paths.c (isolate_path): Set edge leading to path
26212         as unlikely; update profile.
26213
26214 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
26215
26216         * predict.c (force_edge_cold): Handle declaring edges impossible
26217         more aggresively.
26218
26219 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
26220
26221         * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update
26222         profile.
26223         (try_unroll_loop_completely): Fix reporting.
26224
26225 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
26226
26227         * tree-ssa-tail-merge.c (replace_block_by): Fix profile updating.
26228
26229 2017-06-16  James Greenhalgh  <james.greenhalgh@arm.com>
26230
26231         PR target/71778
26232         * config/arm/arm-builtins.c (arm_expand_builtin_args): Return TARGET
26233         if given a non-constant argument for an intrinsic which requires a
26234         constant.
26235
26236 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
26237
26238         * profile.c (compare_freqs): New function.
26239         (branch_prob): Sort edge list.
26240         (find_spanning_tree): Assume that the list is priority sorted.
26241
26242 2017-06-16  Richard Biener  <rguenther@suse.de>
26243
26244         PR tree-optimization/81090
26245         * passes.def (pass_record_bounds): Remove.
26246         * tree-pass.h (make_pass_record_bounds): Likewise.
26247         * tree-ssa-loop.c (pass_data_record_bounds, pass_record_bounds,
26248         make_pass_record_bounds): Likewise.
26249         * tree-ssa-loop-ivcanon.c (canonicalize_induction_variables): Do
26250         not free niter estimates at the beginning but at the end.
26251         * tree-scalar-evolution.c (scev_finalize): Free niter estimates.
26252
26253 2017-06-16  Richard Biener  <rguenther@suse.de>
26254
26255         * tree-switch-conversion.c (emit_case_bit_tests): Adjust
26256         initializer to workaround ICE in host GCC 4.8.
26257
26258 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
26259
26260         * ipa-inline-transform.c (update_noncloned_frequencies): Update also
26261         counts.
26262         (clone_inlined_nodes): Update.
26263
26264 2017-06-16  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
26265
26266         * config/aarch64/aarch64.c (qdf24xx_prefetch_tune): Update
26267         prefetch settings, and enable prefetching by default at -O3.
26268
26269 2017-06-16  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
26270
26271         * config/aarch64/aarch64.c (aarch64_override_options_internal):
26272         Set flag_prefetch_loop_arrays according to tuning data.
26273
26274 2017-06-16  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
26275
26276         * config/aarch64/aarch64-protos.h (struct cpu_prefetch_tune):
26277         New tune structure.
26278         (struct tune_params): Use cpu_prefetch_tune instead of cache_line_size.
26279         [Unrelated to main purpose of the patch] Place the pointer field last
26280         to enable type checking errors when tune structure are wrongly merged.
26281         * config/aarch64/aarch64.c (generic_prefetch_tune,)
26282         (exynosm1_prefetch_tune, qdf24xx_prefetch_tune,)
26283         (thunderx2t99_prefetch_tune): New tune constants.
26284         (tune_params *_tunings): Update all tunings (no functional change).
26285         (aarch64_override_options_internal): Set PARAM_SIMULTANEOUS_PREFETCHES,
26286         PARAM_L1_CACHE_SIZE, PARAM_L1_CACHE_LINE_SIZE, and PARAM_L2_CACHE_SIZE
26287         from tunings structures.
26288
26289 2017-06-16  Jakub Jelinek  <jakub@redhat.com>
26290
26291         PR sanitizer/81094
26292         * ubsan.c (instrument_null): Add T argument, use it instead
26293         of computing it based on IS_LHS.
26294         (instrument_object_size): Likewise.
26295         (pass_ubsan::execute): Adjust instrument_null and
26296         instrument_object_size callers to pass gimple_get_lhs or
26297         gimple_assign_rhs1 result to it.  Use instrument_null instead of
26298         calling get_base_address and instrument_mem_ref.  Handle
26299         aggregate call arguments for object-size sanitization.
26300
26301 2017-06-16  Yury Gribov  <tetra2005@gmail.com>
26302
26303         PR tree-optimization/81089
26304         * tree-vrp.c (is_masked_range_test): Validate operands of
26305         subexpression.
26306
26307 2017-06-15  Martin Sebor  <msebor@redhat.com>
26308
26309         PR c++/80560
26310         * dumpfile.c (dump_register): Avoid calling memset to initialize
26311         a class with a default ctor.
26312         * gcc.c (struct compiler): Remove const qualification.
26313         * genattrtab.c (gen_insn_reserv): Replace memset with initialization.
26314         * hash-table.h: Ditto.
26315         * ipa-cp.c (allocate_and_init_ipcp_value): Replace memset with
26316           assignment.
26317         * ipa-prop.c (ipa_free_edge_args_substructures): Ditto.
26318         * omp-low.c (lower_omp_ordered_clauses): Replace memset with
26319         default ctor.
26320         * params.h (struct param_info): Make struct members non-const.
26321         * tree-switch-conversion.c (emit_case_bit_tests): Replace memset
26322         with default initialization.
26323         * vec.h (vec_copy_construct, vec_default_construct): New helper
26324         functions.
26325         (vec<T>::copy, vec<T>::splice, vec<T>::reserve): Replace memcpy
26326         with vec_copy_construct.
26327         (vect<T>::quick_grow_cleared): Replace memset with default ctor.
26328         (vect<T>::vec_safe_grow_cleared, vec_safe_grow_cleared): Same.
26329         * doc/invoke.texi (-Wclass-memaccess): Document.
26330
26331 2017-06-15  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
26332
26333         * emit-rtl.h (is_leaf): Update comment about local
26334         register allocator.
26335
26336 2017-06-15  Jozef Lawrynowicz   <jozef.l@somniumtech.com>
26337
26338         PR target/78818
26339         * config/msp430/msp430.c (msp430_data_attr): Check that it's possible
26340         for a variable to have a section before checking if the section has a
26341         name.
26342         Set section to.persistent if persistent attribute is set.
26343         Warn if .persistent attribute is used on an automatic variable.
26344
26345 2017-06-15  Eric Botcazou  <ebotcazou@adacore.com>
26346
26347         PR rtl-optimization/80474
26348         * reorg.c (update_block): Do not ignore instructions in a delay slot.
26349
26350 2017-06-15  Segher Boessenkool  <segher@kernel.crashing.org>
26351
26352         * config/rs6000/rs6000.md (add<mode>3): Use reg_or_subregno instead
26353         of REGNO.
26354
26355 2017-06-14  Maciej W. Rozycki  <macro@imgtec.com>
26356
26357         * config/mips/mips.md (MIPS16_T_REGNUM): Remove constant.
26358         (casesi): Emit bounds checking as RTL.
26359         (casesi_internal_mips16_<mode>): Remove bounds checking.
26360
26361 2017-06-14  Max Filippov  <jcmvbkbc@gmail.com>
26362
26363         * config/xtensa/xtensa.c (xtensa_option_override): Append
26364         MASK_CONST16 to target_flags in the absence of TARGET_L32R.
26365         (hwloop_optimize, hwloop_fail, hwloop_pattern_reg,
26366          xtensa_doloop_hooks): Define unconditionally.
26367         (xtensa_reorg_loops): Only call reorg_loops in the presence of
26368         TARGET_LOOPS.
26369         * config/xtensa/xtensa.h (TARGET_L32R): New definition.
26370         (TARGET_DEFAULT): Remove XCHAL_HAVE_L32R condition and account
26371         for it in xtensa_option_override.
26372         (HARD_FRAME_POINTER_IS_FRAME_POINTER,
26373          HARD_FRAME_POINTER_IS_ARG_POINTER): New definitions.
26374
26375 2017-06-14  Boris Kolpackov  <boris@codesynthesis.com>
26376
26377         * doc/cppopts.texi: Document '-' special value to -MF.
26378
26379 2017-06-14  Wilco Dijkstra  <wdijkstr@arm.com>
26380
26381         * config/arm/cortex-a53.md (cortex_a53_fpalu) Adjust latency.
26382         (cortex_a53_fconst): Likewise.
26383         (cortex_a53_fpmul): Likewise.
26384         (cortex_a53_f_load_64): Likewise.
26385         (cortex_a53_f_load_many): Likewise.
26386         (cortex_a53_advsimd_alu): Likewise.
26387         (cortex_a53_advsimd_alu_q): Likewise.
26388         (cortex_a53_advsimd_mul): Likewise.
26389         (cortex_a53_advsimd_mul_q): Likewise.
26390         (fpmac bypass): Add new bypass for fpmac-fpmac case.
26391         Add missing fmul, r2f_cvt and fconst cases.
26392
26393 2017-06-14  Richard Biener  <rguenther@suse.de>
26394
26395         PR middle-end/81088
26396         * fold-const.c (split_tree): Drop TREE_OVERFLOW flag from
26397         literal constants.
26398         (fold_binary_loc): When associating do not treat pre-existing
26399         TREE_OVERFLOW on literal constants as a reason to allow
26400         TREE_OVERFLOW on associated literal constants.
26401
26402 2017-06-14  Eric Botcazou  <ebotcazou@adacore.com>
26403
26404         * config/sparc/sparc.h (MASK_ISA): Add MASK_LEON and MASK_LEON3.
26405         (MASK_FEATURES): New macro.
26406         * config/sparc/sparc.c (sparc_option_override): Remove the special
26407         handling of -mfpu and generalize it to all MASK_FEATURES switches.
26408
26409 2017-06-14  Eric Botcazou  <ebotcazou@adacore.com>
26410
26411         * simplify-rtx.c (simplify_binary_operation_1) <UDIV>: Do not simplify
26412         a division of 0 if non-call exceptions are enabled.
26413
26414 2017-06-14  Andrew Pinski  <apinski@cavium.com>
26415             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
26416
26417         PR target/71663
26418         * config/aarch64/aarch64.c (aarch64_expand_vector_init):
26419         Improve vector initialization code gen for only variable case.
26420
26421 2017-06-14  Eric Botcazou  <ebotcazou@adacore.com>
26422
26423         * config/sparc/driver-sparc.c (cpu_names): Add SPARC-T5 entry.
26424
26425 2017-06-14  Richard Biener  <rguenther@suse.de>
26426
26427         PR tree-optimization/81083
26428         * tree-ssa-sccvn.c (vn_reference_lookup_3): Do not use abnormals
26429         as values.
26430
26431 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
26432
26433         * config/rs6000/rs6000.c: Update all comments that mentioned SPE.
26434         (rs6000_expand_builtin): Remove RS6000_BTC_EVSEL.
26435         * config/rs6000/rs6000.h (RS6000_BTC_EVSEL): Delete.
26436         * config/rs6000/vxworks.h (VXCPU_FOR_8548): Delete.  Adjust former use.
26437         * config/rs6000/vxworksae.h (VXCPU_FOR_8548): Delete.
26438         * config/rs6000/vxworksmils.h (VXCPU_FOR_8548): Delete.
26439
26440 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
26441
26442         * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete VECTOR_SPE.
26443         * config/rs6000/rs6000.c (rs6000_debug_vector_unit): Delete VECTOR_SPE.
26444
26445 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
26446
26447         * config/rs6000/rs6000.h (FIXED_SCRATCH): Delete.
26448
26449 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
26450
26451         * config/rs6000/t-rtems: Don't handle SPE.
26452
26453 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
26454
26455         * config/rs6000/t-linux: Don't handle SPE.
26456
26457 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
26458
26459         * config/rs6000/eabispe.h: Delete file.
26460
26461 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
26462
26463         * config/rs6000/t-spe: Delete file.
26464
26465 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
26466
26467         * config/rs6000/rs6000.c (SPE_CONST_OFFSET_OK): Delete.
26468         (rs6000_legitimate_offset_address_p): Return false for anything in
26469         V2SImode or V2SFmode.
26470
26471 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
26472
26473         * config/rs6000/rs6000-modes.def: Remove all 8-byte vector modes
26474         except V2SF and V2SI.  Rearrange the vector modes, and add comments.
26475         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove V8QImode
26476         and V4HImode.
26477         (reg_offset_addressing_ok_p): Remove V4HImode and V1DImode.
26478         (rs6000_legitimate_offset_address_p): Ditto.
26479         (rs6000_emit_move): Ditto.
26480         (rs6000_init_builtins): Remove V4HI_type_node.
26481
26482 2017-06-13  Martin Liska  <mliska@suse.cz>
26483
26484         PR sanitize/78204
26485         * asan.c (asan_sanitize_stack_p): Use sanitize_flags_p.
26486         (gate_asan): Likewise.
26487         * asan.h (asan_no_sanitize_address_p): Remove the function.
26488         (sanitize_flags_p): New function.
26489         * builtins.def: Fix coding style.
26490         * common.opt: Use renamed enum value.
26491         * convert.c (convert_to_integer_1): Use sanitize_flags_p.
26492         * doc/extend.texi: Document no_sanitize attribute.
26493         * flag-types.h (enum sanitize_code): Rename SANITIZE_NONDEFAULT
26494         to SANITIZE_UNDEFINED_NONDEFAULT.
26495         * gcc.c (sanitize_spec_function): Use the renamed enum value.
26496         * gimple-fold.c (optimize_atomic_compare_exchange_p):
26497         Use sanitize_flags_p.
26498         * gimplify.c (gimplify_function_tree): Likewise.
26499         * ipa-inline.c (sanitize_attrs_match_for_inline_p): Likewise.
26500         * opts.c (parse_no_sanitize_attribute): New function.
26501         (common_handle_option): Use renamed enum value.
26502         * opts.h (parse_no_sanitize_attribute): Declare.
26503         * tree.c (sanitize_flags_p): New function.
26504         * tree.h: Declared here.
26505         * tsan.c: Use sanitize_flags_p.
26506         * ubsan.c (ubsan_expand_null_ifn): Likewise.
26507         (instrument_mem_ref): Likewise.
26508         (instrument_bool_enum_load): Likewise.
26509         (do_ubsan_in_current_function): Remove the function.
26510         (pass_ubsan::execute): Use sanitize_flags_p.
26511         * ubsan.h: Remove do_ubsan_in_current_function
26512         * tree-cfg.c (print_no_sanitize_attr_value): New function.
26513         (dump_function_to_file): Use it here.
26514
26515 2017-06-13  Martin Jambor  <mjambor@suse.cz>
26516
26517         PR tree-optimization/80803
26518         PR tree-optimization/81063
26519         * tree-sra.c (subtree_mark_written_and_enqueue): Move up in the file.
26520         (propagate_subaccesses_across_link): Enqueue subtree whenever
26521         necessary instead of relying on the caller.
26522
26523 2017-06-13  Martin Jambor  <mjambor@suse.cz>
26524
26525         * tree-sra.c (add_access_to_work_queue): Only enqueue accesses
26526         that have a first_link.
26527         (sort_and_splice_var_accesses): Do not check first_link before
26528         enquing.
26529         (subtree_mark_written_and_enqueue): Likewise.
26530         (propagate_all_subaccesses): Likewise and do not stop at first
26531         parent with a first_link.
26532
26533 2017-06-13  Martin Jambor  <mjambor@suse.cz>
26534
26535         * tree-sra.c (dump_access_tree_1): Fix accidental dumping to stderr
26536         instead of f.
26537
26538 2017-06-13  Yury Gribov  <tetra2005@gmail.com>
26539
26540         * match.pd: New pattern.
26541
26542 2017-06-13  Yury Gribov  <tetra2005@gmail.com>
26543
26544         * tree-vrp.c (is_masked_range_test): New function.
26545         (register_edge_assert_for): Determine ranges for
26546         some bit tests.
26547
26548 2017-06-13  Yury Gribov  <tetra2005@gmail.com>
26549
26550         PR tree-optimization/67328
26551         * fold-const.c (maskable_range_p): New function.
26552         (build_range_check): Generate bittests if possible.
26553
26554 2017-06-13  Martin Liska  <mliska@suse.cz>
26555
26556         * gimple-pretty-print.c (dump_probability): Add new argument.
26557         (dump_edge_probability): Dump both probability and count.
26558         (dump_gimple_label): Likewise.
26559         (dump_gimple_bb_header): Likewise.
26560
26561 2017-06-13  Georg-Johann Lay  <avr@gjlay.de>
26562
26563         PR target/81072
26564         * config/avr/avr-devices.c: Fix indentation.
26565         * config/avr/gen-avr-mmcu-specs.c: Dito.
26566
26567 2017-06-13  Richard Biener  <rguenther@suse.de>
26568
26569         * tree-vect-loop.c (vect_model_reduction_cost): Do not fail,
26570         instead get vector type from stmt_info.
26571         (vectorizable_reduction): Adjust.  Remove dead code.
26572
26573 2017-06-13  Richard Biener  <rguenther@suse.de>
26574
26575         PR middle-end/81065
26576         * fold-const.c (extract_muldiv_1): Remove bogus distribution
26577         case of C * (x * C2 + C3).
26578         (fold_addr_of_array_ref_difference): Properly fold index difference.
26579
26580 2017-06-12  David S. Miller  <davem@davemloft.net>
26581
26582         PR target/80968
26583         * config/sparc/sparc.md (return expander): Emit frame blockage if
26584         function uses alloca.
26585
26586 2017-06-12  Richard Sandiford  <richard.sandiford@linaro.org>
26587
26588         * combine.c (make_field_assignment): Check len rather than the mode
26589         precision when calling force_to_mode.
26590
26591 2017-06-12  Georg-Johann Lay  <avr@gjlay.de>
26592
26593         Support multilibs and devices that see flash in RAM address range.
26594
26595         PR target/81072
26596         * config/avr/avr-arch.h (avr_arch_id) <ARCH_AVRXMEGA3>: New enum.
26597         (avr_mcu_t) <flash_pm_offset>: New field.
26598         (avr_device_specific_features) <AVR_ISA_RCALL>: New enum.
26599         * config/avr/avr.h (AVR_SHORT_CALLS): New define.
26600         (AVR_HAVE_JMP_CALL): Don't set if AVR_SHORT_CALLS.
26601         (AVR_TINY_PM_OFFSET): Remove macro.
26602         * config/avr/avr.opt (-mshort-calls): New option.
26603         * config/avr/gen-avr-mmcu-specs.c (print_mcu)
26604         [*self_spec]: Add / remove -mshort-calls depending on AVR_ISA_RCALL.
26605         * config/avr/avr-c.c (avr_cpu_cpp_builtins)
26606         <__AVR_SHORT_CALLS__>: Built-in define if AVR_SHORT_CALLS.
26607         <__AVR_HAVE_JMP_CALL__>: Use AVR_HAVE_JMP_CALL as condition
26608         instead of avr_arch->have_jmp_call.
26609         <__AVR_PM_BASE_ADDRESS__>: Built-in define if avr_arch->flash_pm_offset.
26610         [AVR_TINY] <__AVR_TINY_PM_BASE_ADDRESS__>: Use
26611         avr_arch->flash_pm_offset to define.
26612         * config/avr/avr-devices.c (avr_arch_types): Add initializers for
26613         new field flash_pm_offset.  Add entry for avrxmega3.
26614         (avr_texinfo): Add entry for avrxmega3.
26615         * config/avr/avr-mcus.def: Add entries for: avrxmega3,
26616         attiny212, attiny214,
26617         attiny412, attiny414, attiny416, attiny417,
26618         attiny814, attiny816, attiny817,
26619         attiny1614, attiny1616, attiny1617,
26620         attiny3214, attiny3216, attiny3217.
26621         * config/avr/avr.c (avr_assemble_integer)[AVR_TINY]: Use
26622         avr_arch->flash_pm_offset instead of AVR_TINY_PM_OFFSET.
26623         (avr_print_operand_address) [AVR_TINY]: Same.
26624         (avr_asm_init_sections) <readonly_data_section>: Only patch
26625         callback if avr_arch->flash_pm_offset = 0.
26626         (avr_asm_named_section) <avr_need_copy_data_p>: Skip setting it
26627         for rodata if avr_arch->flash_pm_offset != 0.
26628         (avr_encode_section_info) [AVR_TINY]: Adjust comment.
26629         * config/avr/genmultilib.awk (dir_rcall, opt_rcall): New vars.
26630         (opts) [AVR_ISA_RCALL]: Append opt_rcall.
26631         (m_options): Append opt_rcall.
26632         (m_dirnames): Append dir_rcall.
26633         * config/avr/t-multilib: Regenerate.
26634
26635         * configure.ac [target=avr]: Check whether avrxmega3 default
26636         linker description file works as needed.
26637         * configure: Regenerate.
26638         * doc/avr-mmcu.texi: Regenerate.
26639         * doc/invoke.texi (AVR Options) <-mshort-calls>: Document it.
26640         <__AVR_ARCH__>: Document avrxmega3 and 103.
26641         <__AVR_HAVE_JMP_CALL__>: Adjust documentation.
26642         <__AVR_SHORT_CALLS__>: Document it.
26643         <__AVR_PM_BASE_ADDRESS__>: Document it.
26644         * doc/extend.texi (AVR Options) <-mshort-calls>: Document it.
26645         (AVR Variable Attributes) <progmem>: Document this is
26646         not needed for avrxmega3.
26647         (AVR Named Address Spaces) <__flash>: Dito.
26648
26649 2017-06-12  Jan Hubicka  <hubicka@ucw.cz>
26650
26651         * cgraph.c (cgraph_node::dump): Complain about profile insanities.
26652
26653 2017-06-12  Doug Rupp  <rupp@adacore.com>
26654
26655         * config.gcc (*-*-vxworks*): Set use_gcc_stdint to "provide".
26656         Append vxworks-stdint.h to the tm_file list.
26657         * config/vxworks-stdint.h: New file.
26658
26659 2017-06-12  Martin Liska  <mliska@suse.cz>
26660
26661         PR tree-optimization/81041
26662         * tree-profile.c (gimple_gen_ic_func_profiler):
26663         Create an extra BB in profile-generate
26664         (gimple_gen_time_profiler): Likewise.
26665
26666 2017-06-12  Jakub Jelinek  <jakub@redhat.com>
26667
26668         PR tree-optimization/81003
26669         * tree-ssa-reassoc.c (force_into_ssa_name): New function.
26670         (update_range_test): Use it instead of force_gimple_operand_gsi.
26671
26672 2017-06-12  Richard Biener  <rguenther@suse.de>
26673
26674         PR tree-optimization/81053
26675         * tree-vect-loop.c (vect_is_simple_reduction): Handle PHI
26676         with backedge value not defined in loop.  Simplify def stmt
26677         compute.
26678
26679 2017-06-11  Tom de Vries  <tom@codesourcery.com>
26680
26681         PR target/79939
26682         * config/nvptx/nvptx.c (nvptx_cannot_force_const_mem): New function.
26683         Return true.
26684         (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
26685         nvptx_cannot_force_const_mem.
26686
26687 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
26688
26689         * opts.c (finish_options): Move test for flag_split_stack after
26690         it has been initialized.
26691
26692 2017-06-11  Jason Merrill  <jason@redhat.com>
26693
26694         * tree.h (id_equal): New.
26695         * dwarf2out.c, hsa-gen.c, ipa-devirt.c, omp-expand.c,
26696         omp-simd-clone.c, read-rtl-function.c, tree-chkp.c, tree.c: Use it
26697         instead of strcmp of IDENTIFIER_POINTER.
26698
26699 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
26700
26701         * ipa-inline-transform.c: Include function.h, cfg.h and basic-block.h
26702         (mark_all_inlined_calls_cdtor): Fix formating.
26703         (inline_transform): Rescale profile before inlining.
26704
26705 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
26706
26707         * cgraph.h (cgraph_edge::clone): Update prototype.
26708         * cgraphclones.c (cgraph_edge::clone): Update profile scaling.
26709         (cgraph_node::create_clone): Update.
26710         (cgraph_node::create_version_clone): Update.
26711         * tree-inline.c (copy_bb): Update.
26712         (expand_call_inline): Update.
26713
26714 2017-06-10  Segher Boessenkool  <segher@kernel.crashing.org>
26715
26716         * config/rs6000/rs6000.c (emit_vrsave_prologue): New function,
26717         factored out from ...
26718         (rs6000_emit_prologue): ... here.
26719
26720 2017-06-10  Segher Boessenkool  <segher@kernel.crashing.org>
26721
26722         * config/rs6000/rs6000.c (emit_split_stack_prologue): New function,
26723         factored out from ...
26724         (rs6000_emit_prologue): ... here.
26725
26726 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
26727
26728         * predict.c (drop_profile): Also drop individual bb/edge and cgraph
26729         edge counts.
26730         (handle_missing_profiles): Fix computation of tp_first_run.
26731         (counts_to_freqs): Do not touch freqs when count is 0.
26732
26733 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
26734
26735         * cgraphbuild.c (cgraph_edge::rebuild_references): Do not touch
26736         profile.
26737
26738 2017-06-10  Tom de Vries  <tom@codesourcery.com>
26739
26740         * doc/sourcebuild.texi (Effective-Target Keywords, Environment
26741         attributes): Document signal effective target.
26742
26743 2017-06-10  Tom de Vries  <tom@codesourcery.com>
26744
26745         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
26746         Document effective target stack_size.
26747
26748 2017-06-09  David Malcolm  <dmalcolm@redhat.com>
26749
26750         * diagnostic.c (diagnostic_report_diagnostic): Only add fixits
26751         to the edit_context if they can be auto-applied.
26752
26753 2017-06-9  Ian Lance Taylor  <iant@golang.org>
26754
26755         * opts.c (finish_options): If -fsplit-stack, disable implicit
26756         -forder-blocks-and-partition.
26757         * doc/invoke.texi (Optimize Options): Document that when using
26758         -fsplit-stack -forder-blocks-and-partition is not implicitly
26759         enabled.
26760
26761 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
26762
26763         * builtin-attrs.def (ATTR_NORETURN_NOTHROW_LEAF_COLD_LIST,
26764         ATTR_CONST_NORETURN_NOTHROW_LEAF_COLD_LIST,
26765         ATTR_TMPURE_NORETURN_NOTHROW_LEAF_COLD_LIST): New.
26766         * builtins.def (abort, trap, unreachable): Declare cold.
26767         * calls.c (flags_from_decl_or_type): Lookup ECF_COLD.
26768         * tree-core.h (ECF_COLD): New.
26769         * tree.c (set_call_expr_flags): Handle ECF_COLD.
26770         (build_common_builtin_nodes): Mark unreachable and abort as cold.
26771
26772 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
26773
26774         * predict.c (unlikely_executed_stmt_p): Cleanup.
26775
26776 2017-06-09  Richard Biener  <rguenther@suse.de>
26777
26778         * tree-ssa-loop-im.c (execute_sm): Do not force multi-threaded
26779         model if the ref is always written to.
26780
26781 2017-06-09  Tamar Christina  <tamar.christina@arm.com>
26782
26783         * config/aarch64/aarch64.md (lrint<GPF:mode><GPI:mode>2): New.
26784
26785 2017-06-09  Tamar Christina  <tamar.christina@arm.com>
26786
26787         * config/arm/arm.c (arm_rtx_costs_internal): Make sdiv more expensive
26788         than udiv.
26789
26790 2017-06-09  Tom de Vries  <tom@codesourcery.com>
26791
26792         PR target/80855
26793         * config/nvptx/nvptx.md (define_expand "mov<QHSDISDFM>"): Error out with
26794         "target cannot support label values" when encountering LABEL_REF.
26795
26796 2017-06-09  Martin Liska  <mliska@suse.cz>
26797
26798         * tree-profile.c (gimple_gen_ic_profiler): Update comment.
26799         (gimple_gen_ic_func_profiler): Emit direct comparison
26800         of __gcov_indirect_call_callee with NULL.
26801         (gimple_gen_time_profiler): Change probability from
26802         PROB_VERY_UNLIKELY to PROB_UNLIKELY.
26803
26804 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
26805
26806         * profile.c (edge_gcov_counts): Turn to pointer.
26807         (compute_branch_probabilities, compute_branch_probabilities): Update.
26808         (branch_prob): Do not clear edge_gcov_count.
26809         * profile.h (edge_gcov_counts): Turn to pointer.
26810         (edge_gcov_count): Update.
26811
26812 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
26813
26814         * gimple.h (gimple_check_failed): Mark cold.
26815
26816 2017-06-09  Richard Biener  <rguenther@suse.de>
26817
26818         PR tree-optimization/66623
26819         * tree-vect-loop.c (vect_is_simple_reduction): Cleanup,
26820         refactor check_reduction into two parts, properly computing
26821         whether we have to check reduction validity for outer loop
26822         vectorization.
26823
26824 2017-06-09  Richard Biener  <rguenther@suse.de>
26825
26826         PR tree-optimization/79483
26827         * graphite-scop-detection.c (order): New global.
26828         (get_order): Compute bb to order mapping that satisfies code
26829         generation constraints.
26830         (cmp_pbbs): New helper.
26831         (build_scops): Start domwalk at entry block, sort generated
26832         pbbs.
26833
26834 2017-06-09  Richard Biener  <rguenther@suse.de>
26835
26836         PR middle-end/81007
26837         * ipa-polymorphic-call.c
26838         (ipa_polymorphic_call_context::restrict_to_inner_class):
26839         Skip FIELD_DECLs with error_mark_node type.
26840         * passes.def (all_lowering_passes): Run pass_build_cgraph_edges
26841         last again.
26842
26843 2017-06-09  Martin Liska  <mliska@suse.cz>
26844
26845         * predict.c (struct branch_predictor): New struct.
26846         (test_prediction_value_range): New test.
26847         (predict_c_tests): New function.
26848         * selftest-run-tests.c (selftest::run_tests): Run the function.
26849         * selftest.h: Declare new tests.
26850
26851 2017-06-09  Segher Boessenkool  <segher@kernel.crashing.org>
26852
26853         PR target/80966
26854         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Assert that
26855         gen_add3_insn did not fail.
26856         * config/rs6000/rs6000.md (add<mode>3): If asked to add a constant to
26857         r0, construct that number in a temporary reg and add that reg to r0.
26858         If asked to put the result in r0 as well, fail.
26859
26860 2017-06-08  Will Schmidt  <will_schmidt@vnet.ibm.com>
26861
26862         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
26863         for early expansion of vec_eqv.
26864
26865 2017-06-08  Jakub Jelinek  <jakub@redhat.com>
26866
26867         PR middle-end/81005
26868         * ubsan.c (instrument_null): Avoid pointless code temporary.
26869         (pass_ubsan::execute): Instrument aggregate arguments of calls.
26870
26871 2017-06-08  Uros Bizjak  <ubizjak@gmail.com>
26872
26873         PR target/81015
26874         Revert:
26875         2016-12-14  Uros Bizjak  <ubizjak@gmail.com>
26876
26877         PR target/59874
26878         * config/i386/i386.md (*ctzhi2): New insn_and_split pattern.
26879         (*clzhi2): Ditto.
26880
26881 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
26882
26883         * predict.c (unlikely_executed_edge_p): Move ahead.
26884         (probably_never_executed_edge_p): Use it.
26885
26886 2017-06-08  Alexander Ivchenko  <alexander.ivchenko@intel.com>
26887
26888         PR middle-end/79988
26889         * tree-chkp.c (chkp_gimple_call_builtin_p): Remove
26890         gimple_call_builtin_p call.
26891
26892 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
26893
26894         * system.h (fancy_abort): Annotate by ATTRIBUTE_COLD.
26895         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
26896         rtl_check_failed_type2, rtl_check_failed_code1,
26897         rtl_check_failed_code2, rtl_check_failed_code_mode,
26898         rtl_check_failed_block_symbol, cwi_check_failed_bounds,
26899         rtvec_check_failed_bounds, rtl_check_failed_flag,
26900         _fatal_insn_not_found, _fatal_insn): Likewise.
26901         * tree.h (tree_contains_struct_check_failed,
26902         tree_check_failed, tree_not_check_failed,
26903         tree_class_check_failed, tree_range_check_failed,
26904         tree_not_class_check_failed, tree_int_cst_elt_check_failed,
26905         tree_vec_elt_check_failed, phi_node_elt_check_failed,
26906         tree_operand_check_failed, omp_clause_check_failed,
26907         omp_clause_operand_check_failed, omp_clause_range_check_failed):
26908         Likewise.
26909
26910 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
26911
26912         * cgraph.c (cgraph_edge::maybe_hot_p): Do not check
26913         flag_branch_probabilities.
26914         * ipa-inline.c (edge_badness): Likewise.
26915         * ipa-profile.c (ipa_propagate_frequency_1): Likewise.
26916         * postreload-gcse.c (eliminate_partially_redundant_load): Likewise.
26917         * predict.c (maybe_hot_frequency_p): Likewise.
26918         (probably_never_executed): Likewise.
26919         * sched-ebb.c (schedule_ebbs): Likewise.
26920         * sched-rgn.c (find_single_block_region): Likewise.
26921         * tracer.c (tail_duplicate): Likewise.
26922
26923 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
26924
26925         * opts.c (finish_options): x_flag_reorder_blocks_and_partition no
26926         longer requires x_flag_profile_use.
26927
26928 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
26929
26930         * cfgrtl.c (cfg_layout_initialize): Check crtl->has_bb_partition
26931         instead of flag_reorder_blocks_and_partition.
26932         * dbxout.c (dbxout_function_end): Likewise.
26933         * dwarf2out.c (gen_subprogram_die): Likewise.
26934         * haifa-sched.c (sched_create_recovery_edges): Likewise.
26935         * hw-doloop.c (reorg_loops): Likewise.
26936         * varasm.c (assemble_start_function,
26937         assemble_end_function): Likewise.
26938         (decide_function_section): Do not check for
26939         flag_reorder_blocks_and_partition.
26940
26941 2017-06-08  Alexander Ivchenko  <alexander.ivchenko@intel.com>
26942
26943         * tree-chkp.c (chkp_get_hard_register_var_fake_base_address):
26944         New function.
26945         (chkp_get_hard_register_fake_addr_expr): Ditto.
26946         (chkp_build_addr_expr): Add check for hard reg case.
26947         (chkp_parse_array_and_component_ref): Ditto.
26948         (chkp_find_bounds_1): Ditto.
26949         (chkp_process_stmt): Don't generate bounds store for
26950         hard reg case.
26951
26952 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
26953
26954         * predict.c (maybe_hot_bb_p): Do not check profile status.
26955         (maybe_hot_edge_p): Likewise.
26956         (probably_never_executed): Check for zero counts even if profile
26957         is not read.
26958         (unlikely_executed_edge_p): New function.
26959         (unlikely_executed_stmt_p): New function.
26960         (unlikely_executed_bb_p): New function.
26961         (set_even_probabilities): Use unlikely predicates.
26962         (combine_predictions_for_bb): Likewise.
26963         (predict_paths_for_bb): Likewise.
26964         (predict_paths_leading_to_edge): Likewise.
26965         (determine_unlikely_bbs): New function.
26966         (estimate_bb_frequencies): Use it.
26967         (compute_function_frequency): Use zero counts even if profile is
26968         not read.
26969         * profile-count.h: Fix typo.
26970
26971 2017-08-08  Julia Koval  <julia.koval@intel.com>
26972
26973         * config/i386/avx512bwintrin.h (_mm512_mask_cvtepi16_storeu_epi8,
26974         _mm512_mask_cvtsepi16_storeu_epi8,
26975         _mm512_mask_cvtusepi16_storeu_epi8): New intrinsics.
26976         * config/i386/avx512vlbwintrin.h (_mm256_mask_cvtepi16_storeu_epi8,
26977         _mm_mask_cvtsepi16_storeu_epi8, _mm256_mask_cvtsepi16_storeu_epi8,
26978         _mm_mask_cvtusepi16_storeu_epi8, _mm256_mask_cvtusepi16_storeu_epi8,
26979         _mm_mask_cvtepi16_storeu_epi8): New intrinsics.
26980         * config/i386/i386-builtin-types.def (PV8Q, V8QI): New pointer type.
26981         (VOID_FTYPE_PV32QI_V32HI_USI, VOID_FTYPE_PV8QI_V8HI_UQI,
26982         VOID_FTYPE_PV16QI_V16HI_UHI): New function types.
26983         * config/i386/i386-builtin.def (__builtin_ia32_pmovwb128mem_mask,
26984         __builtin_ia32_pmovwb256mem_mask, __builtin_ia32_pmovswb128mem_mask,
26985         __builtin_ia32_pmovswb256mem_mask, __builtin_ia32_pmovuswb128mem_mask,
26986         __builtin_ia32_pmovuswb256mem_mask,
26987         __builtin_ia32_pmovuswb512mem_mask, __builtin_ia32_pmovswb512mem_mask)
26988         __builtin_ia32_pmovwb512mem_mask): New builtins.
26989
26990 2017-08-08  Julia Koval  <julia.koval@intel.com>
26991
26992         PR target/73350,80862
26993         * config/i386/subst.md (round): Fix round pattern.
26994         * config/i386/i386.c (ix86_erase_embedded_rounding):
26995         Fix erasing rounding for the fixed pattern.
26996
26997 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
26998
26999         * cfgbuild.c (find_many_sub_basic_blocks): Fix thinko.
27000
27001 2017-06-08  Martin Liska  <mliska@suse.cz>
27002
27003         PR gcov-profile/80911
27004         * gcov.c (block_info::block_info): New constructor.
27005
27006 2017-06-07  Carl Love  <cel@us.ibm.com>
27007
27008         * config/rs6000/rs6000-c: The return type of the following
27009         built-in functions was implemented as int not long long.  Fix sign
27010         of return value for the unsigned version of vec_mulo and vec_mule.
27011         vector unsigned long long vec_bperm (vector unsigned long long,
27012                                              vector unsigned char)
27013         vector signed long long vec_mule (vector signed int,
27014                                           vector signed int)
27015         vector unsigned long long vec_mule (vector unsigned int,
27016                                             vector unsigned int)
27017         vector signed long long vec_mulo (vector signed int,
27018                                           vector signed int)
27019         vector unsigned long long vec_mulo (vector unsigned int,
27020                                             vector unsigned int)
27021         * doc/extend.texi: Fix the documentation for the built-in
27022         functions.
27023
27024 2017-06-07  Carl Love  <cel@us.ibm.com>
27025
27026         PR target/80982
27027         * config/rs6000/altivec.md (double<mode>2): Fix the implementation of
27028         for BE.
27029
27030 2017-06-07  Carl Love  <cel@us.ibm.com>
27031
27032         * config/rs6000/altivec.md: Fix argument swizzle in vec_doublel
27033         support, Generate       doublehv for signed int/float for BE case only.
27034
27035 2017-06-07  Alexander Monakov  <amonakov@ispras.ru>
27036
27037         * doc/invoke.texi (mcx16): Rewrite.
27038
27039 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27040
27041         * config/rs6000/predicates.md (rs6000_nonimmediate_operand): Delete.
27042         * config/rs6000/rs6000.md (*movsi_internal1, movsi_from_sf,
27043         *mov<mode>_softfloat, and an anonymous splitter): Use
27044         nonimmediate_operand instead of rs6000_nonimmediate_operand.
27045
27046 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27047
27048         * config/rs6000/darwin.h (REGISTER_NAMES): Delete the SPE_ACC and
27049         SPEFSCR registers.
27050         * config/rs6000/rs6000.c (rs6000_reg_names, alt_reg_names): Ditto.
27051         (enum rs6000_reg_type): Delete SPE_ACC_TYPE and SPEFSCR_REG_TYPE.
27052         (rs6000_debug_reg_global): Adjust.
27053         (rs6000_init_hard_regno_mode_ok): Adjust.
27054         (rs6000_dbx_register_number): Adjust.
27055         * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Change to 115.
27056         (FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS):
27057         Remove SPE_ACC and SPEFSCR.
27058         (REG_ALLOC_ORDER): Ditto.
27059         (FRAME_POINTER_REGNUM): Change to 111.
27060         (enum reg_class): Remove the SPE_ACC and SPEFSCR registers.
27061         (REG_CLASS_NAMES): Ditto.
27062         (REG_CLASS_CONTENTS): Delete the SPE_ACC and SPEFSCR registers.
27063         (REGISTER_NAMES): Ditto.
27064         (ADDITIONAL_REG_NAMES): Ditto.
27065         (rs6000_reg_names): Ditto.
27066         * config/rs6000/rs6000.md: Renumber some register number
27067         define_constants.
27068
27069 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27070
27071         * config/rs6000/darwin.h (REGISTER_NAMES): Delete the SPE high
27072         registers.
27073         * config/rs6000/rs6000.c (rs6000_reg_names, alt_reg_names): Ditto.
27074         * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Change from 149
27075         to 117.
27076         (DWARF_REG_TO_UNWIND_COLUMN): Do not define.
27077         (FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS):
27078         Delete the SPE high registers.
27079         (REG_ALLOC_ORDER): Ditto.
27080         (enum reg_class): Remove SPE_HIGH_REGS.
27081         (REG_CLASS_NAMES): Ditto.
27082         (REG_CLASS_CONTENTS): Delete the SPE high registers.
27083         (REGISTER_NAMES): Ditto.
27084         (rs6000_reg_names): Ditto.
27085         * doc/tm.texi.in: Remove SPE as example.
27086         * doc/tm.texi: Regenerate.
27087
27088 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27089
27090         * config/rs6000/8540.md (ppc8540_brinc): Delete.
27091         * config/rs6000/e500mc.md (e500mc_brinc): Delete.
27092         * config/rs6000/e500mc64.md (e500mc64_brinc): Delete.
27093         * config/rs6000/rs6000.md (type): Remove "brinc".
27094
27095 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27096
27097         * config.gcc (powerpc*-*-*): Don't add spe.h to extra_headers.
27098         (powerpc*-linux*spe*): Use ${cpu_type} instead of rs6000.
27099         * config/rs6000/linuxspe.h: Delete file.
27100         * config/rs6000/rs6000.md: Don't include spe.md.
27101         * config/rs6000/spe.h: Delete file.
27102         * config/rs6000/spe.md: Delete file.
27103         * config/rs6000/t-rs6000: Remove spe.md.
27104
27105 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27106
27107         * config/rs6000/predicates.md (reg_or_mem_operand): Reformat.
27108         (reg_or_none500mem_operand): Delete.
27109         * config/rs6000/rs6000.md (extendsfdf2): Use reg_or_mem_operand
27110         instead of reg_or_none500mem_operand.
27111
27112 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27113
27114         * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
27115         handling of SPE flags.
27116         * config/rs6000/rs6000.opt (-mspe, -mspe=no, -mspe=yes): Delete.
27117
27118 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27119
27120         * config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
27121         SPE ABI handling.
27122         * config/rs6000/paired.md (paired_negv2sf2): Rename to negv2sf2.
27123         (paired_absv2sf2, paired_addv2sf3, paired_subv2sf3, paired_mulv2sf3,
27124         paired_divv2sf3): Similar.
27125         * config/rs6000/predicates.md: Replace TARGET_SPE, TARGET_SPE_ABI,
27126         SPE_VECTOR_MODE and SPE_HIGH_REGNO_P by 0; simplify.
27127         * config/rs6000/rs6000-builtin.def: Delete RS6000_BUILTIN_E and
27128         RS6000_BUILTIN_S.
27129         Delete BU_SPE_1, BU_SPE_2, BU_SPE_3, BU_SPE_E, BU_SPE_P, and BU_SPE_X.
27130         Rename the paired_* instruction patterns.
27131         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Do not
27132         define __SPE__.
27133         * config/rs6000/rs6000-protos.h (invalid_e500_subreg): Delete.
27134         * config/rs6000/rs6000.c: Delete RS6000_BUILTIN_E and RS6000_BUILTIN_S.
27135         (struct rs6000_stack): Delete fields spe_gp_save_offset, spe_gp_size,
27136         spe_padding_size, and spe_64bit_regs_used.  Replace TARGET_SPE and
27137         TARGET_SPE_ABI with 0, simplify.  Replace SPE_VECTOR_MODE with
27138         PAIRED_VECTOR_MODE.
27139         (struct machine_function): Delete field spe_insn_chain_scanned_p.
27140         (spe_func_has_64bit_regs_p): Delete.
27141         (spe_expand_predicate_builtin): Delete.
27142         (spe_expand_evsel_builtin): Delete.
27143         (TARGET_DWARF_REGISTER_SPAN): Do not define.
27144         (TARGET_MEMBER_TYPE_FORCES_BLK): Do not define.
27145         (invalid_e500_subreg): Delete.
27146         (rs6000_legitimize_address): Always force_reg op2 as well, for
27147         paired single memory accesses.
27148         (rs6000_member_type_forces_blk): Delete.
27149         (rs6000_spe_function_arg): Delete.
27150         (rs6000_expand_unop_builtin): Delete SPE handling.
27151         (rs6000_expand_binop_builtin): Ditto.
27152         (spe_expand_stv_builtin): Delete.
27153         (bdesc_2arg_spe): Delete.
27154         (spe_expand_builtin): Delete.
27155         (spe_expand_predicate_builtin): Delete.
27156         (spe_expand_evsel_builtin): Delete.
27157         (rs6000_invalid_builtin): Remove RS6000_BTM_SPE handling.
27158         (spe_init_builtins): Delete.
27159         (spe_func_has_64bit_regs_p): Delete.
27160         (savres_routine_name): Delete "info" parameter.  Adjust callers.
27161         (rs6000_emit_stack_reset): Ditto.
27162         (rs6000_dwarf_register_span): Delete.
27163         * config/rs6000/rs6000.h (TARGET_SPE_ABI, TARGET_SPE,
27164         UNITS_PER_SPE_WORD, SPE_HIGH_REGNO_P, SPE_SIMD_REGNO_P,
27165         SPE_VECTOR_MODE, RS6000_BTM_SPE, RS6000_BUILTIN_E, RS6000_BUILTIN_S):
27166         Delete.
27167         * config/rs6000/rs6000.md (FIRST_SPE_HIGH_REGNO, LAST_SPE_HIGH_REGNO):
27168         Delete.
27169         * config/rs6000/rs6000.opt (-mabi=spe, -mabi=no-spe): Delete.
27170         * config/rs6000/spe.md: Delete every pattern that uses TARGET_SPE.
27171         * config/rs6000/vector.md (absv2sf2, negv2sf2, addv2sf3, subv2sf3,
27172         mulv2sf3, divv2sf3): Delete expanders.
27173
27174 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27175
27176         config/rs6000/rs6000.md (UNSPEC_MV_CR_GT): Delete.
27177
27178 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27179
27180         * config/rs6000/rs6000-protos.h (output_e500_flip_gt_bit): Delete.
27181         * config/rs6000/rs6000.c: Ditto.
27182
27183 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27184
27185         * config/rs6000/predicated.md (rs6000_cbranch_operator): Delete.
27186         * config/rs6000/rs6000.md: Replace rs6000_cbranch_operator by
27187         comparison_operator.
27188
27189 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27190
27191         * config/rs6000/rs6000.c: Remove everything related to -mfloat-gprs.
27192         * config/rs6000/rs6000.opt: Ditto.
27193         * config/rs6000/t-rtems: Ditto.
27194
27195 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27196
27197         * config/rs6000/predicates.md: Replace TARGET_E500_DOUBLE and
27198         TARGET_E500_SINGLE by 0, simplify.
27199         * config/rs6000/rs6000.c: Ditto.
27200         (rs6000_option_override_internal): Delete CHECK_E500_OPTIONS.
27201         (spe_build_register_parallel): Delete.
27202         * config/rs6000/rs6000.h: Delete TARGET_E500_SINGLE,
27203         TARGET_E500_DOUBLE, and CHECK_E500_OPTIONS.
27204         * config/rs6000/rs6000.md: Replace TARGET_E500_DOUBLE,
27205         TARGET_E500_SINGLE, and <E500_CONVERT> by 0, simplify.
27206         (E500_CONVERT): Delete.
27207         * config/rs6000/spe.md: Remove many patterns and all define_constants.
27208
27209 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
27210
27211         * config/rs6000/darwin.md: Replace TARGET_FPRS by 1 and simplify.
27212         * config/rs6000/dfp.md: Ditto.
27213         (negdd2, *negdd2_fpr): Merge.
27214         (absdd2, *absdd2_fpr): Merge.
27215         (negtd2, *negtd2_fpr): Merge.
27216         (abstd2, *abstd2_fpr): Merge.
27217         * config/rs6000/e500.h: Delete file.
27218         * config/rs6000/predicates.md (rs6000_cbranch_operator): Replace
27219         TARGET_FPRS by 1 and simplify.
27220         * config/rs6000/rs6000-c.c: Ditto.
27221         * config/rs6000/rs6000.c: Ditto.  Also replace TARGET_SF_SPE and
27222         TARGET_DF_SPE by 0.
27223         * config/rs6000/rs6000.h: Ditto.  Delete TARGET_SF_SPE and
27224         TARGET_DF_SPE.
27225         * config/rs6000/rs6000.md: Ditto.
27226         (floatdidf2, *floatdidf2_fpr): Merge.
27227         (move_from_CR_gt_bit): Delete.
27228         * config/rs6000/spe.md: Replace TARGET_FPRS by 1 and simplify.
27229         (E500_CR_IOR_COMPARE): Delete.
27230         (All patterns that require !TARGET_FPRS): Delete.
27231         * config/rs6000/vsx.md: Replace TARGET_FPRS by 1 and simplify.
27232
27233 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
27234
27235         * passes.def (pass_iv_canon): Move before pass_loop_distribution.
27236
27237 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
27238
27239         * graphds.c (add_edge): Intitialize edge's attached data.
27240         (foll_in_subgraph, dfs_fst_edge, dfs_next_edge): New function
27241         pointer parameter.  Call pointed function on each edge during
27242         graph traversing.  Skip traversing the edge when the function
27243         returns true.
27244         (graphds_dfs, graphds_scc): Ditto.
27245         (for_each_edge): New parameter.  Pass the new parameter to callback
27246         function.
27247         * graphds.h (skip_edge_callback): New function pointer type.
27248         (graphds_dfs, graphds_scc): New function pointer parameter.
27249         (graphds_edge_callback, for_each_edge): New parameter.
27250
27251 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
27252
27253         * tree-vect-data-refs.c (vect_mark_for_runtime_alias_test): Factor
27254         out code checking if runtime alias check is possible to below ...
27255         Call the new function.
27256         * tree-data-ref.c (runtime_alias_check_p): ... to new function.
27257         * tree-data-ref.h (runtime_alias_check_p): New decalaration.
27258
27259 2017-06-07  Marek Polacek  <polacek@redhat.com>
27260
27261         PR sanitizer/80932
27262         * fold-const.c (extract_muldiv_1) <case MINUS_EXPR>: Add
27263         TYPE_OVERFLOW_WRAPS check.
27264
27265 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
27266
27267         * tree-vect-loop-manip.c (vect_do_peeling): Don't skip vector loop
27268         if versioning is required.
27269         * tree-vect-loop.c (vect_analyze_loop_2): Merge niter check for loop
27270         peeling with the check for versioning.
27271
27272 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
27273
27274         * tree-vectorizer.h (vect_build_loop_niters): New parameter.
27275         * tree-vect-loop-manip.c (vect_build_loop_niters): New parameter.
27276         Set true to new parameter if new ssa variable is defined.
27277         (vect_gen_vector_loop_niters): Refactor.  Set range information
27278         for the new vector loop bound variable.
27279         (vect_do_peeling): Ditto.
27280
27281 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
27282
27283         * tree-affine.c (ssa.h): Include header file.
27284         (tree_to_aff_combination): Handle (T1)(X - CST) when inner type
27285         has wrapping overflow behavior.
27286
27287 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
27288
27289         * tree-affine.c (tree_to_aff_combination): Handle (T1)(X + X).
27290
27291 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
27292
27293         (aff_combination_expand): Move (T1)(X *+- CST) simplification to ...
27294         (tree_to_aff_combination): ... here.
27295
27296 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
27297
27298         * tree-ssa-loop-ivopts.c (ivopts_estimate_reg_pressure): New
27299         reg_pressure model function.
27300         (ivopts_global_cost_for_size): Delete.
27301         (determine_set_costs, iv_ca_recount_cost): Call new model function
27302         ivopts_estimate_reg_pressure.
27303
27304 2017-06-07  Tamar Christina  <tamar.christina@arm.com>
27305
27306         * config/aarch64/aarch64.c (aarch64_rtx_costs): Make sdiv more
27307         expensive than udiv.  Remove floating point cases from mod.
27308
27309 2017-06-07  Tamar Christina  <tamar.christina@arm.com>
27310
27311         * config/arm/aarch-cost-tables.h (cortexa53_extra_cost):
27312         Increase idiv cost.
27313
27314 2017-06-07  Tamar Christina  <tamar.christina@arm.com>
27315
27316         * config/aarch64/aarch64.md
27317         (copysignsf3): Fix mask generation.
27318
27319 2017-06-07  Jakub Jelinek  <jakub@redhat.com>
27320
27321         * dumpfile.h (enum tree_dump_index): Rename TDI_generic to
27322         TDI_gimple.
27323         (class dump_manager): Add register_dumps method.
27324         * dumpfile.c: Include langhooks.h.
27325         (dump_files): Use 0 instead of 3/4/5 for TDI_{original,gimple,nested}.
27326         (FIRST_AUTO_NUMBERED_DUMP): Decrease to 1.
27327         (FIRST_ME_AUTO_NUMBERED_DUMP): Define.
27328         (dump_manager::dump_register): Start with 512 entries instead of 32.
27329         (dump_manager::register_dumps): New method.
27330         * toplev.c (general_init): Instead of invoking register_dumps
27331         langhook, invoke register_dumps method on the dump manager.
27332         * gimplify.c (gimplify_function_tree): Use TDI_gimple instead of
27333         TDI_generic.
27334
27335 2017-06-07  Richard Sandiford  <richard.sandiford@linaro.org>
27336
27337         * doc/md.texi: Clarify the restrictions on a define_insn condition.
27338         Say that # requires an associated define_split to exist, and that
27339         the define_split must be suitable for use after register allocation.
27340
27341 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
27342
27343         * cfgbuild.c (find_bb_boundaries): Initialize profile of split blocks.
27344         (compute_outgoing_frequencies): Also initialize zero counts.
27345         (find_many_sub_basic_blocks): Do not produce uninitialized profile
27346         around loops; preserve more of profile when nothing changes.
27347
27348 2017-06-06  Jim Wilson  <jim.wilson@linaro.org>
27349
27350         * config/aarch64/aarch64-cost-tables.h (qdf24xx_extra_costs): Move to
27351         here.
27352         * config/arm/aarch-cost-tables.h (qdf24xx_extra_costs): From here.
27353         * config/arm/arm-cpu-cdata.h: Regenerate.
27354         * config/arm/arm-cpu-data.h, config/arm/arm-cpu.h: Likewise.
27355         * config/arm/arm-tables.opt, config/arm/arm-tune.md: Likewise.
27356         * config/arm/arm-cpus.in: Delete falkor and qdf24xx entries.
27357         * config/arm/arm.c (arm_qdf24xx_tune): Delete.
27358         * config/arm/bpabi.h (BE8_LINK_SPEC): Delete falkor and qdf24xx
27359         support.
27360         * config/arm/t-aprofile (MULTILIB_MATCHES): Delete falkor and qdf24xx
27361         support.
27362         * config/arm/t-rmprofile: Likewise.
27363         * doc/invoke.texi (ARM Options): Drop falkor and qdf24xx support.
27364
27365 2017-06-06  David S. Miller  <davem@davemloft.net>
27366
27367         PR target/80968
27368         * config/sparc/sparc.c (sparc_expand_prologue): Emit frame
27369         blockage if function uses alloca.
27370
27371 2017-06-06  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
27372
27373         * tree-ssa-loop-prefetch.c (struct mem_ref_group, struct mem_ref):
27374         New "uid" fields to hold pretty-print IDs of group and ref.
27375         Memory references are now identified as <group_id>:<ref_id>
27376         instead of using [random] addresses.
27377         (dump_mem_details): Simplify, no functional change.
27378         (dump_mem_ref): Simplify and make output more concise.
27379         Replace couple of fprintf's throughout code with calls to dump_mem_ref.
27380         (find_or_create_group): Initialize group uid.
27381         (record_ref): Initialize ref uid.  Improve debug output.
27382         (prune_group_by_reuse, should_issue_prefetch_p,)
27383         (should_issue_prefetch_p, schedule_prefetches, issue_prefetch_ref,)
27384         (mark_nontemporal_store, determine_loop_nest_reuse):
27385         Improve debug output.
27386
27387 2017-06-06  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
27388
27389         * dbgcnt.def (prefetch): New debug counter.
27390         * tree-ssa-loop-prefetch.c (dbgcnt.h): New include.
27391         (schedule_prefetches): Stop issueing prefetches if debug counter
27392         tripped.
27393
27394 2017-06-06  Tom de Vries  <tom@codesourcery.com>
27395
27396         * doc/sourcebuild.texi (Testsuites, C Language Testsuites,
27397         gcc.c-torture/compile): Remove mention of NO_LABEL_VALUES in fixme.
27398
27399 2017-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
27400
27401         * config/aarch64/atomics.md (atomic_compare_and_swap<mode> expander):
27402         Use aarch64_reg_or_zero predicate for operand 4.
27403         (aarch64_compare_and_swap<mode> define_insn_and_split):
27404         Use aarch64_reg_or_zero predicate for operand 3.  Add 'Z' constraint.
27405         (aarch64_store_exclusive<mode>): Likewise for operand 2.
27406
27407 2017-06-06  Thomas Preud'homme  <thomas.preudhomme@arm.com>
27408
27409         * config/arm/arm.c (arm_compute_save_reg_mask): Rename into ...
27410         (arm_compute_save_core_reg_mask): This.
27411         (thumb1_compute_save_reg_mask): Rename into ...
27412         (thumb1_compute_save_core_reg_mask): This.
27413         (arm_compute_save_reg0_reg12_mask): Adapt comment.
27414         (arm_compute_frame_layout): Likewise.
27415
27416 2017-06-06  Richard Biener  <rguenther@suse.de>
27417
27418         PR tree-optimization/80974
27419         * tree-ssa-sccvn.c (set_ssa_val_to): Do not change but only
27420         keep or clear leaders SSA info.
27421
27422 2017-06-06  Tom de Vries  <tom@codesourcery.com>
27423
27424         * config/nvptx/nvptx.c (split_mode_p): New function.
27425         (nvptx_declare_function_name, nvptx_print_operand): Use split_mode_p.
27426
27427 2017-06-06  Tom de Vries  <tom@codesourcery.com>
27428
27429         * config/nvptx/nvptx.c (nvptx_print_operand): Use maybe_split_mode.
27430
27431 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
27432
27433         PR bootstrap/80978
27434         * tree-cfg.c (execute_fixup_cfg): Fix condition on when to rescale
27435         profile.
27436
27437 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
27438
27439         * shrink-wrap.c (handle_simple_exit): Update profile.
27440         (try_shrink_wrapping): Upate profile.
27441
27442 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
27443
27444         * predict.c (tree_estimate_probability_bb): Add LOCAL_ONLY.
27445         (tree_guess_outgoing_edge_probabilities): New.
27446         * predict.h (tree_guess_outgoing_edge_probabilities): Declare.
27447         * tree-cfg.c (gimple_find_sub_bbs): Propagate profile.
27448
27449 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
27450
27451         * ipa-split.c (split_function): Initialize return bb profile.
27452
27453 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
27454
27455         * profile.c (compute_branch_probabilities): Also initialize
27456         EXIT_BLOCK profile.
27457
27458 2017-06-06  Richard Biener  <rguenther@suse.de>
27459
27460         PR tree-optimization/80928
27461         * tree-vect-loop.c (vect_update_vf_for_slp): Amend dumps.
27462         (vect_analyze_loop_operations): Properly guard analysis for
27463         pure SLP case.
27464         (vect_transform_loop): Likewise.
27465         (vect_analyze_loop_2): Also reset SLP type on PHIs.
27466         (vect_model_induction_cost): Do not cost for pure SLP.
27467         (vectorizable_induction): Pass in SLP node, implement SLP vectorization
27468         of induction in inner loop vectorization.
27469         * tree-vect-slp.c (vect_create_new_slp_node): Handle PHIs.
27470         (vect_get_and_check_slp_defs): Handle vect_induction_def.
27471         (vect_build_slp_tree): Likewise.  Handle PHIs as terminating the
27472         recursion.
27473         (vect_analyze_slp_cost_1): Cost induction.
27474         (vect_detect_hybrid_slp_stmts): Handle PHIs.
27475         (vect_get_slp_vect_defs): Likewise.
27476         * tree-vect-stmts.c (vect_analyze_stmt): Handle induction.
27477         (vect_transform_stmt): Handle SLP reductions.
27478         * tree-vectorizer.h (vectorizable_induction): Adjust.
27479
27480 2017-06-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
27481
27482         * config/rs6000/rs6000.c (make_resolver_func): Update
27483         init_lowered_empty_function call.
27484
27485 2017-06-05  Bernd Edlinger  <bernd.edlinger@hotmail.de>
27486
27487         * doc/invoke.texi: Document the -fprofile-abs-path option.
27488         * common.opt (fprofile-abs-path): New option.
27489         * gcov-io.h (gcov_write_filename): Declare.
27490         * gcov-io.c (gcov_write_filename): New function.
27491         * coverage.c (coverage_begin_function): Use gcov_write_filename.
27492         * profile.c (output_location): Likewise.
27493
27494 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
27495
27496         * shring-wrap.c: Revert accidental commit.
27497
27498 2017-06-05  Volker Reichelt  <v.reichelt@netcologne.de>
27499
27500         * doc/invoke.texi (-Wduplicated-branches): Add to warning list.
27501
27502 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
27503
27504         * cfgexpand.c (expand_gimple_tailcall): Initialize profile of
27505         new edge.
27506         * ipa-inline.c (want_inline_self_recursive_call_p): Watch for missing
27507         profile in callgraph edge.
27508         * profile-count.h (apply_probability): If THIS is 0, then result is 0
27509         (apply_scale): Likewise.
27510         * tree-inline.c (copy_bb, copy_edges_for_bb, copy_cfg_body):
27511         Also scale profile when inlining function with zero profile.
27512         (initialize_cfun): Update exit block profile even when it is zero.
27513         * tree-ssa-threadupdate.c (clear_counts_path): Handle correctly case
27514         when profile is read.
27515
27516 2017-06-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
27517
27518         * config/rs6000/rs6000.c (toplevel): Include attribs.h.
27519         (CLONE_*): New constants to define the processors we can generate
27520         code for with the target_clone attribute.
27521         (rs6000_clone_map): New array to identify which clone processors
27522         the current program is running on.
27523         (TARGET_COMPARE_VERSION_PRIORITY): Define to enable the
27524         target_clone attribute.
27525         (TARGET_GENERATE_VERSION_DISPATCHER_BODY): Likewise.
27526         (TARGET_GET_FUNCTION_VERSIONS_DISPATCHER): Likewise.
27527         (TARGET_OPTION_FUNCTION_VERSIONS): Likewise.
27528         (cpu_expand_builtin): Add support for target_clone attribute.
27529         (rs6000_valid_attribute_p): Allow "default" attribute.
27530         (get_decl_name): New debug function to simplify printing the
27531         current function name in debugging statements.
27532         (rs6000_clone_priority): New functions to support the target_clone
27533         attribute, and be able to generate code to switch between ISA 2.05
27534         through ISA 3.0 (power6 through power9).
27535         (rs6000_compare_version_priority): Likewise.
27536         (rs6000_get_function_versions_dispatcher): Likewise.
27537         (make_resolver_func): Likewise.
27538         (add_condition_to_bb): Likewise.
27539         (dispatch_function_versions): Likewise.
27540         (rs6000_generate_version_dispatcher_body): Likewise.
27541         (rs6000_can_inline_p): Call get_decl_name for debugging usage.
27542         (fusion_gpr_load_p): Fix a spacing issue.
27543         * doc/extend.texi (Common Function Attributes): Document that the
27544         PowerPC supports the target_clone attribute.
27545
27546 2017-06-05  Thomas Preud'homme  <thomas.preudhomme@arm.com>
27547
27548         * config/arm/arm.h: explain F symbol found in description of ARM
27549         register allocation in its legend.
27550
27551 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
27552
27553         * config/mips/frame-header-opt.c: Include profile-count.h.
27554         * config/riscv/riscv.c: Include profile-count.h
27555
27556 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
27557
27558         * tree-ssa-loop-im.c (execute_sm_if_changed): Add FLAG_BBS parameter;
27559         update profile.
27560         (sm_set_flag_if_changed): Add bbs field.
27561         (execute_sm_if_changed_flag_set): Pass BBS.
27562         (execute_sm): Update.
27563
27564 2017-06-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
27565
27566         * config/aarch64/aarch64-simd.md (aarch64_store_lane0<mode>):
27567         New pattern.
27568
27569 2017-06-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
27570
27571         * config/aarch64/aarch64.md (sub<mode>3_compare1_imm): New define_insn.
27572         (peephole2): New peephole2 to emit the above.
27573         * config/aarch64/predicates.md (aarch64_sub_immediate): New predicate.
27574
27575 2017-06-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
27576
27577         * config/aarch64/aarch64.c (define_peephole2 above
27578         *sub_<shift>_<mode>): New peephole.
27579
27580 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
27581
27582         * config/i386/i386.c (make_resolver_func): Update.
27583         * Makefile.in: Add profile-count.h and profile-count.o
27584         * auto-profile.c (afdo_indirect_call): Update to new API.
27585         (afdo_set_bb_count): Update.
27586         (afdo_propagate_edge): Update.
27587         (afdo_propagate_circuit): Update.
27588         (afdo_calculate_branch_prob): Update.
27589         (afdo_annotate_cfg): Update.
27590         * basic-block.h: Include profile-count.h
27591         (struct edge_def): Turn count to profile_count.
27592         (struct basic_block_def): Likewie.
27593         (REG_BR_PROB_BASE): Move to profile-count.h
27594         (RDIV): Move to profile-count.h
27595         * bb-reorder.c (max_entry_count): Turn to profile_count.
27596         (find_traces): Update.
27597         (rotate_loop):Update.
27598         (connect_traces):Update.
27599         (sanitize_hot_paths):Update.
27600         * bt-load.c (migrate_btr_defs): Update.
27601         * cfg.c (RDIV): Remove.
27602         (init_flow): Use alloc_block.
27603         (alloc_block): Uninitialize count.
27604         (unchecked_make_edge): Uninitialize count.
27605         (check_bb_profile): Update.
27606         (dump_edge_info): Update.
27607         (dump_bb_info): Update.
27608         (update_bb_profile_for_threading): Update.
27609         (scale_bbs_frequencies_int): Update.
27610         (scale_bbs_frequencies_gcov_type): Update.
27611         (scale_bbs_frequencies_profile_count): New.
27612         * cfg.h (update_bb_profile_for_threading): Update.
27613         (scale_bbs_frequencies_profile_count): Declare.
27614         * cfgbuild.c (compute_outgoing_frequencies): Update.
27615         (find_many_sub_basic_blocks): Update.
27616         * cfgcleanup.c (try_forward_edges): Update.
27617         (try_crossjump_to_edge): Update.
27618         * cfgexpand.c (expand_gimple_tailcall): Update.
27619         (construct_exit_block): Update.
27620         * cfghooks.c (verify_flow_info): Update.
27621         (dump_bb_for_graph): Update.
27622         (split_edge): Update.
27623         (make_forwarder_block): Update.
27624         (duplicate_block): Update.
27625         (account_profile_record): Update.
27626         * cfgloop.c (find_subloop_latch_edge_by_profile): Update.
27627         (get_estimated_loop_iterations): Update.
27628         * cfgloopanal.c (expected_loop_iterations_unbounded): Update.
27629         (single_likely_exit): Update.
27630         * cfgloopmanip.c (scale_loop_profile): Update.
27631         (loopify): Update.
27632         (set_zero_probability): Update.
27633         (lv_adjust_loop_entry_edge): Update.
27634         * cfgrtl.c (force_nonfallthru_and_redirect): Update.
27635         (purge_dead_edges): Update.
27636         (rtl_account_profile_record): Update.
27637         * cgraph.c (cgraph_node::create): Uninitialize count.
27638         (symbol_table::create_edge): Uninitialize count.
27639         (cgraph_update_edges_for_call_stmt_node): Update.
27640         (cgraph_edge::dump_edge_flags): Update.
27641         (cgraph_node::dump): Update.
27642         (cgraph_edge::maybe_hot_p): Update.
27643         * cgraph.h: Include profile-count.h
27644         (create_clone), create_edge, create_indirect_edge): Update.
27645         (cgraph_node): Turn count to profile_count.
27646         (cgraph_edge0: Likewise.
27647         (make_speculative, clone): Update.
27648         (create_edge): Update.
27649         (init_lowered_empty_function): Update.
27650         * cgraphclones.c (cgraph_edge::clone): Update.
27651         (duplicate_thunk_for_node): Update.
27652         (cgraph_node::create_clone): Update.
27653         * cgraphunit.c (cgraph_node::analyze): Update.
27654         (cgraph_node::expand_thunk): Update.
27655         * final.c (dump_basic_block_info): Update.
27656         * gimple-streamer-in.c (input_bb): Update.
27657         * gimple-streamer-out.c (output_bb): Update.
27658         * graphite.c (print_global_statistics): Update.
27659         (print_graphite_scop_statistics): Update.
27660         * hsa-brig.c: Include basic-block.h.
27661         * hsa-dump.c: Include basic-block.h.
27662         * hsa-gen.c (T sum_slice): Update.
27663         (convert_switch_statements):Update.
27664         * hsa-regalloc.c: Include basic-block.h.
27665         * ipa-chkp.c (chkp_produce_thunks): Update.
27666         * ipa-cp.c (struct caller_statistics): Update.
27667         (init_caller_stats): Update.
27668         (gather_caller_stats): Update.
27669         (ipcp_cloning_candidate_p): Update.
27670         (good_cloning_opportunity_p): Update.
27671         (get_info_about_necessary_edges): Update.
27672         (dump_profile_updates): Update.
27673         (update_profiling_info): Update.
27674         (update_specialized_profile): Update.
27675         (perhaps_add_new_callers): Update.
27676         (decide_about_value): Update.
27677         (ipa_cp_c_finalize): Update.
27678         * ipa-devirt.c (struct odr_type_warn_count): Update.
27679         (struct decl_warn_count): Update.
27680         (struct final_warning_record): Update.
27681         (possible_polymorphic_call_targets): Update.
27682         (ipa_devirt): Update.
27683         * ipa-fnsummary.c (redirect_to_unreachable): Update.
27684         * ipa-icf.c (sem_function::merge): Update.
27685         * ipa-inline-analysis.c (do_estimate_edge_time): Update.
27686         * ipa-inline.c (compute_uninlined_call_time): Update.
27687         (compute_inlined_call_time): Update.
27688         (want_inline_small_function_p): Update.
27689         (want_inline_self_recursive_call_p): Update.
27690         (edge_badness): Update.
27691         (lookup_recursive_calls): Update.
27692         (recursive_inlining): Update.
27693         (inline_small_functions): Update.
27694         (dump_overall_stats): Update.
27695         (dump_inline_stats): Update.
27696         * ipa-profile.c (ipa_profile_generate_summary): Update.
27697         (ipa_propagate_frequency): Update.
27698         (ipa_profile): Update.
27699         * ipa-prop.c (ipa_make_edge_direct_to_target): Update.
27700         * ipa-utils.c (ipa_merge_profiles): Update.
27701         * loop-doloop.c (doloop_modify): Update.
27702         * loop-unroll.c (report_unroll): Update.
27703         (unroll_loop_runtime_iterations): Update.
27704         * lto-cgraph.c (lto_output_edge): Update.
27705         (lto_output_node): Update.
27706         (input_node): Update.
27707         (input_edge): Update.
27708         (merge_profile_summaries): Update.
27709         * lto-streamer-in.c (input_cfg): Update.
27710         * lto-streamer-out.c (output_cfg): Update.
27711         * mcf.c (create_fixup_graph): Update.
27712         (adjust_cfg_counts): Update.
27713         (sum_edge_counts): Update.
27714         * modulo-sched.c (sms_schedule): Update.
27715         * postreload-gcse.c (eliminate_partially_redundant_load): Update.
27716         * predict.c (maybe_hot_count_p): Update.
27717         (probably_never_executed): Update.
27718         (dump_prediction): Update.
27719         (combine_predictions_for_bb): Update.
27720         (propagate_freq): Update.
27721         (handle_missing_profiles): Update.
27722         (counts_to_freqs): Update.
27723         (rebuild_frequencies): Update.
27724         (force_edge_cold): Update.
27725         * predict.h: Include profile-count.h
27726         (maybe_hot_count_p, counts_to_freqs): UPdate.
27727         * print-rtl-function.c: Do not include cfg.h
27728         * print-rtl.c: Include basic-block.h
27729         * profile-count.c: New file.
27730         * profile-count.h: New file.
27731         * profile.c (is_edge_inconsistent): Update.
27732         (correct_negative_edge_counts): Update.
27733         (is_inconsistent): Update.
27734         (set_bb_counts): Update.
27735         (read_profile_edge_counts): Update.
27736         (compute_frequency_overlap): Update.
27737         (compute_branch_probabilities): Update; Initialize and deinitialize
27738         gcov_count tables.
27739         (branch_prob): Update.
27740         * profile.h (bb_gcov_counts, edge_gcov_counts): New.
27741         (edge_gcov_count): New.
27742         (bb_gcov_count): New.
27743         * shrink-wrap.c (try_shrink_wrapping): Update.
27744         * tracer.c (better_p): Update.
27745         * trans-mem.c (expand_transaction): Update.
27746         (ipa_tm_insert_irr_call): Update.
27747         (ipa_tm_insert_gettmclone_call): Update.
27748         * tree-call-cdce.c: Update.
27749         * tree-cfg.c (gimple_duplicate_sese_region): Update.
27750         (gimple_duplicate_sese_tail): Update.
27751         (gimple_account_profile_record): Update.
27752         (execute_fixup_cfg): Update.
27753         * tree-inline.c (copy_bb): Update.
27754         (copy_edges_for_bb): Update.
27755         (initialize_cfun): Update.
27756         (freqs_to_counts): Update.
27757         (copy_cfg_body): Update.
27758         (expand_call_inline): Update.
27759         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update.
27760         * tree-ssa-loop-ivcanon.c (unloop_loops): Update.
27761         (try_unroll_loop_completely): Update.
27762         (try_peel_loop): Update.
27763         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
27764         * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Update.
27765         * tree-ssa-loop-split.c (connect_loops): Update.
27766         * tree-ssa-loop-unswitch.c (hoist_guard): Update.
27767         * tree-ssa-reassoc.c (branch_fixup): Update.
27768         * tree-ssa-tail-merge.c (replace_block_by): Update.
27769         * tree-ssa-threadupdate.c (create_block_for_threading): Update.
27770         (compute_path_counts): Update.
27771         (update_profile): Update.
27772         (recompute_probabilities): Update.
27773         (update_joiner_offpath_counts): Update.
27774         (estimated_freqs_path): Update.
27775         (freqs_to_counts_path): Update.
27776         (clear_counts_path): Update.
27777         (ssa_fix_duplicate_block_edges): Update.
27778         (duplicate_thread_path): Update.
27779         * tree-switch-conversion.c (case_bit_test_cmp): Update.
27780         (struct switch_conv_info): Update.
27781         * tree-tailcall.c (decrease_profile): Update.
27782         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Update.
27783         * tree-vect-loop.c (scale_profile_for_vect_loop): Update.
27784         * value-prof.c (check_counter): Update.
27785         (gimple_divmod_fixed_value): Update.
27786         (gimple_mod_pow2): Update.
27787         (gimple_mod_subtract): Update.
27788         (gimple_ic_transform): Update.
27789         (gimple_stringop_fixed_value): Update.
27790         * value-prof.h (gimple_ic): Update.
27791
27792 2017-06-02  Carl Love  <cel@us.ibm.com>
27793
27794         * config/rs6000/rs6000-c: Add support for built-in functions
27795         vector double vec_doublee (vector signed int);
27796         vector double vec_doublee (vector unsigned int);
27797         vector double vec_doublee (vector float);
27798         vector double vec_doubleh (vector signed int);
27799         vector double vec_doubleh (vector unsigned int);
27800         vector double vec_doubleh (vector float);
27801         vector double vec_doublel (vector signed int);
27802         vector double vec_doublel (vector unsigned int);
27803         vector double vec_doublel (vector float);
27804         vector double vec_doubleo (vector signed int);
27805         vector double vec_doubleo (vector unsigned int);
27806         vector double vec_doubleo (vector float);.
27807         * config/rs6000/rs6000-builtin.def: Add definitions for DOUBLEE,
27808         DOUBLEO, DOUBLEH, DOUBLEL, UNS_DOUBLEO, UNS_DOUBLEE, UNS_DOUBLEH,
27809         UNS_DOUBLEL.
27810         * config/rs6000/altivec.md: Add code generator for doublee<mode>2,
27811         unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2, doubleh<mode>2,
27812         unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2, add mode attribute
27813         VS_sxwsp.
27814         * config/rs6000/altivec.h: Add define for vec_doublee, vec_doubleo,
27815         vec_doublel, vec_doubleh.
27816         * doc/extend.texi: Update the built-in documentation file for the
27817         new built-in functions.
27818
27819 2017-06-02  David Malcolm  <dmalcolm@redhat.com>
27820
27821         PR jit/80954
27822         * ipa-inline-analysis.c (free_growth_caches): Set
27823         edge_removal_hook_holder to NULL after removing it.
27824
27825 2017-06-02  Sudakshina Das  <sudi.das@arm.com>
27826
27827         * config/aarch64/aarch64.c (aarch64_select_cc_mode): Return CC_SWP for
27828         comparision with zero.
27829
27830 2017-06-02  Will Schmidt  <will_schmidt@vnet.ibm.com>
27831         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
27832         for early expansion of vec_min and vec_max builtins.
27833         (builtin_function_type): Add min/max unsigned variants to those
27834         identified as having unsigned arguments.
27835
27836 2017-06-02  Olivier Hainque  <hainque@adacore.com>
27837
27838         * config/vx-common.h (DWARF_UNWIND_INFO): Switch #define to 1.
27839
27840 2017-06-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
27841
27842         * config/aarch64/aarch64-simd.md (*aarch64_simd_vec_copy_lane<mode>):
27843         Use VALL_F16 iterator rather than VALL.
27844
27845 2017-06-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
27846
27847         * config/aarch64/aarch64.c (aarch64_split_compare_and_swap):
27848         Emit CBNZ inside loop when doing a strong exchange and comparing
27849         against zero.  Generate the CC flags after the loop.
27850
27851 2017-06-02  David Edelsohn  <dje.gcc@gmail.com>
27852
27853         * dwarf2out.c (DWARF_INITIAL_LENGTH_SIZE_STR): New.
27854         (dl_section_ref): New.
27855         (dwarf2out_finish): Copy debug_line_section_label to dl_section_ref.
27856         On AIX, append an expression to subtract the size of the
27857         section length to dl_section_ref.
27858
27859 2017-06-02  Will Schmidt  <will_schmidt@vnet.ibm.com>
27860
27861         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
27862         for early expansion of vector absolute builtins.
27863
27864 2017-06-02  Richard Biener  <rguenther@suse.de>
27865
27866         * tree-vect-slp.c (vect_detect_hybrid_slp_2): Match up
27867         what we consider a relevant use stmt with vect_detect_hybrid_slp_stmts.
27868
27869 2017-06-02  Richard Biener  <rguenther@suse.de>
27870
27871         PR tree-optimization/80948
27872         * tree-tailcall.c (find_tail_calls): Track stmts to move in
27873         stmt order as well.
27874
27875 2017-06-02  Richard Biener  <rguenther@suse.de>
27876
27877         * tree-vect-loop.c (vect_analyze_loop_operations): Not relevant
27878         PHIs are ok.
27879         * tree-vect-stmts.c (process_use): Do not mark backedge defs
27880         for inductions as relevant.
27881
27882 2017-06-02  Richard Biener  <rguenther@suse.de>
27883
27884         * tree-vect-loop.c (get_initial_def_for_induction): Inline into ...
27885         (vectorizable_induction): ... this.  Remove dead code.
27886
27887 2017-06-02  Eric Botcazou  <ebotcazou@adacore.com>
27888
27889         * builtins. (expand_builtin_alloca): Remove second parameter and
27890         infer its value from the first parameter instead.
27891         (expand_builtin) <BUILT_IN_ALLOCA>: Adjust call to above.
27892
27893 2017-06-02  Jakub Jelinek  <jakub@redhat.com>
27894
27895         PR rtl-optimization/80903
27896         * loop-doloop.c (add_test): Unshare sequence.
27897
27898 2017-06-02  Bernd Edlinger  <bernd.edlinger@hotmail.de>
27899
27900         * doc/invoke.texi: Document the -Wsizeof-pointer-div warning.
27901
27902 2017-06-01  Bernd Edlinger  <bernd.edlinger@hotmail.de>
27903
27904         * config/i386/i386.c (x86_64_ms_sysv_extra_clobbered_registers): Make
27905         static.
27906         (xlogue_layout::get_stack_space_used, xlogue_layout::s_instances,
27907         xlogue_layout::get_instance, logue_layout::xlogue_layout,
27908         sp_valid_at, fp_valid_at, choose_basereg): Formatting.
27909         (xlogue_layout::get_stub_rtx): Make static.
27910         (xlogue_layout::get_stub_name): Avoid const-cast, make static.
27911         (xlogue_layout::compute_stub_managed_regs): Rename to...
27912         (xlogue_layout::count_stub_managed_regs): ...this.
27913         (xlogue_layout::is_stub_managed_reg): New function.
27914         (xlogue_layout::m_stub_names): Rename to...
27915         (xlogue_layout::s_stub_names): ...this, make static.
27916         (xlogue_layout::STUB_INDEX_OFFSET, xlogue_layout::MIN_REGS,
27917         xlogue_layout::MAX_REGS, xlogue_layout::MAX_EXTRA_REGS,
27918         xlogue_layout::VARIANT_COUNT, xlogue_layout::STUB_NAME_MAX_LEN,
27919         xlogue_layout::s_stub_names): Instantiate statics.
27920         (stub_managed_regs): Remove.
27921         (ix86_save_reg): Use xlogue_layout::compute_stub_managed_regs.
27922         (disable_call_ms2sysv_xlogues): Rename to...
27923         (warn_once_call_ms2sysv_xlogues): ...this, and warn only once.
27924         (ix86_initial_elimination_offset, ix86_expand_call): Fix call_ms2sysv
27925         warning logic.
27926         (ix86_static_chain): Make sure that ix86_static_chain_on_stack can't
27927         change after reload_completed.
27928         (ix86_can_use_return_insn_p): Use the ix86_frame data structure
27929         directly.
27930         (ix86_expand_prologue): Likewise.
27931         (ix86_expand_epilogue): Likewise.
27932         (ix86_expand_split_stack_prologue): Likewise.
27933         (ix86_compute_frame_layout): Remove frame parameter ...
27934         (TARGET_COMPUTE_FRAME_LAYOUT): ... and export it as a target hook.
27935         (ix86_finalize_stack_realign_flags): Call ix86_compute_frame_layout
27936         only if necessary.
27937         (ix86_init_machine_status): Don't set use_fast_prologue_epilogue_nregs.
27938         (ix86_frame): Move from here ...
27939         * config/i386/i386.h (ix86_frame): ... to here.
27940         (machine_function): Remove use_fast_prologue_epilogue_nregs, cache the
27941         complete ix86_frame data structure instead.  Remove some_ld_name.
27942
27943 2017-06-01  Pierre-Marie de Rodat  <derodat@adacore.com>
27944
27945         * dwarf2out.c (dwarf2out_late_global_decl): Add locations for
27946         symbols that hold a DECL_VALUE_EXPR.
27947
27948 2017-06-01  Martin Jambor  <mjambor@suse.cz>
27949
27950         PR tree-optimization/80898
27951         * tree-sra.c (process_subtree_disqualification): Removed.
27952         (disqualify_candidate): Do not acll
27953         process_subtree_disqualification.
27954         (subtree_mark_written_and_enqueue): New function.
27955         (propagate_all_subaccesses): Set grp_write of LHS subtree if the
27956         RHS has been disqualified and re-queue LHS if necessary.  Apart
27957         from that, ignore disqualified RHS.
27958
27959 2017-06-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
27960
27961         * config/s390/s390.c (s390_emit_epilogue): Disable early return
27962         address fetch for z10 or later.
27963
27964 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
27965
27966         * config/arc/arc.md (tst_movb): Add guard when splitting.
27967
27968 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
27969
27970         * config/arc/arc.c (arc_can_eliminate): Test against
27971         arc_frame_pointer_needed.
27972
27973 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
27974
27975         * config/arc/arc.c (arc_expand_prologue): Emit a special barrier
27976         to prevent store reordering.
27977         * config/arc/arc.md (UNSPEC_ARC_STKTIE): Define.
27978         (type): Add block type.
27979         (stack_tie): Define special instruction to be used in
27980         expand_prologue.
27981
27982 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
27983
27984         * config/arc/arc.md (commutative_binary_comparison): Remove 'I'
27985         constraint. It is not valid for the pattern.
27986         (noncommutative_binary_comparison): Likewise.
27987
27988 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
27989
27990         * config/arc/simdext.md (movv2hi_insn): Change predicate to avoid
27991         scaled addresses.
27992
27993 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
27994
27995         * config/arc/arc.c (arc_conditional_register_usage): Allow r30 to
27996         be used by the reg-alloc.
27997
27998 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
27999
28000         * config/arc/arc.md (mulsi3): Avoid use of hard registers before
28001         reg-alloc when having mul64 or mul32x16 instructions.
28002         (mulsidi3): Likewise.
28003         (umulsidi3): Likewise.
28004         (mulsi32x16): New pattern.
28005         (mulsi64): Likewise.
28006         (mulsidi64): Likewise.
28007         (umulsidi64): Likewise.
28008         (MUL32x16_REG): Define.
28009         (mul64_600): Use MUL32x16_REG.
28010         (mac64_600): Likewise.
28011         (umul64_600): Likewise.
28012         (umac64_600): Likewise.
28013
28014 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
28015
28016         * config/arc/arc.md (mulsi3_700): Make it commutative.
28017
28018 2017-06-01  Jose E. Marchesi  <jose.marchesi@oracle.com>
28019
28020         * config/sparc/sparc.md (*zero_extendsidi2_insn_sp64): Set insn
28021         type for movstouw.
28022         (*sign_extendsidi2_insn): Likewise for movstosw.
28023
28024 2017-06-01  Pierre-Marie de Rodat  <derodat@adacore.com>
28025
28026         * dwarf2out.c (get_discr_value): Call the get_debug_type hook on
28027         the type of the input discriminant value.  Convert the
28028         discriminant value of signedness vary.
28029
28030 2017-06-01  Volker Reichelt  <v.reichelt@netcologne.de>
28031
28032         * doc/invoke.texi (-Wcatch-value): Document new shortcut.
28033         Add to -Wall section.
28034
28035 2017-06-01  Richard Biener  <rguenther@suse.de>
28036
28037         PR middle-end/66313
28038         * fold-const.c (fold_plusminus_mult_expr): If the factored
28039         factor may be zero use a wrapping type for the inner operation.
28040         * tree-tailcall.c (independent_of_stmt_p): Pass in to_move bitmap
28041         and handle moved defs.
28042         (process_assignment): Properly guard the unary op case.  Return a
28043         tri-state indicating that moving the stmt before the call may allow
28044         to continue.  Pass through to_move.
28045         (find_tail_calls): Handle moving unrelated defs before
28046         the call.
28047
28048 2017-05-31  Segher Boessenkool  <segher@kernel.crashing.org>
28049
28050         PR target/80618
28051         * config/rs6000/vector.md (*vector_uneq<mode>): Write the nor in the
28052         splitter result in the canonical way.
28053
28054 2017-05-31  Uros Bizjak  <ubizjak@gmail.com>
28055
28056         * config/i386/i386.md (*zero_extendsidi2): Enable alternative (?r, *Yj)
28057         also for 32bit target.  Update insn attributes.
28058         (zero-extendsidi2 splitter): Allow all registers for operand 1.
28059
28060 2017-05-31  Sebastian Peryt  <sebastian.peryt@intel.com>
28061
28062         * config/i386/avx512fintrin.h (_mm_mask_max_sd)
28063         (_mm_maskz_max_sd, _mm_mask_max_ss, _mm_maskz_max_ss)
28064         (_mm_mask_min_sd, _mm_maskz_min_sd, _mm_mask_min_ss)
28065         (_mm_maskz_min_ss): New intrinsics.
28066
28067 2017-05-31  Martin Liska  <mliska@suse.cz>
28068
28069         * tree-vect-loop.c (vect_create_epilog_for_reduction):
28070         Change comment style to one we normally use.
28071         (vectorizable_reduction): Likewise.
28072         (vectorizable_induction): Likewise.
28073         * tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
28074         (vectorizable_call): Likewise.
28075         (vectorizable_simd_clone_call): Likewise.
28076         (vectorizable_conversion): Likewise.
28077         (vectorizable_assignment): Likewise.
28078         (vectorizable_shift): Likewise.
28079         (vectorizable_operation): Likewise.
28080         (vectorizable_store): Likewise.
28081         (vectorizable_load): Likewise.
28082         * tree-vectorizer.h: Likewise.
28083
28084 2017-05-31  Alexander Monakov  <amonakov@ispras.ru>
28085
28086         * passes.c (emergency_dump_function): New.
28087         * tree-pass.h (emergency_dump_function): Declare.
28088         * plugin.c (plugins_internal_error_function): Remove.
28089         * plugin.h (plugins_internal_error_function): Remove declaration.
28090         * toplev.c (internal_error_function): New static function.  Use it...
28091         (general_init): ...here.
28092
28093 2017-05-31  Graham Markall  <graham.markall@embecosm.com>
28094
28095         * config/arc/arc.c (arc_print_operand): Handle constant operands.
28096         (arc_rtx_costs): Add costs for new patterns.
28097         * config/arc/arc.md: Additional *add_n and *sub_n patterns.
28098         * config/arc/predicates.md: Add _1_2_3_operand predicate.
28099
28100 2017-05-31  Richard Sandiford  <richard.sandiford@linaro.org>
28101
28102         * tree-ssa-strlen.c (get_next_strinfo): New function.
28103         (get_stridx_plus_constant): Use it.
28104         (zero_length_string): Likewise.
28105         (adjust_related_strinfos): Likewise.
28106         (adjust_last_stmt): Likewise.
28107
28108 2017-05-31  Richard Biener  <rguenther@suse.de>
28109
28110         PR target/80880
28111         * config/i386/i386.c (ix86_expand_builtin): Remove assert
28112         for arg being an SSA name when expanding IX86_BUILTIN_BNDRET.
28113
28114 2017-05-31  Richard Sandiford  <richard.sandiford@linaro.org>
28115
28116         * tree-vect-data-refs.c (vect_find_same_alignment_drs): Remove
28117         loop_vinfo argument and use of dependence distance vectors.
28118         Check instead whether the two references differ only in their
28119         initial value and assume that they have the same alignment if the
28120         difference is a multiple of the vector alignment.
28121         (vect_analyze_data_refs_alignment): Update call accordingly.
28122
28123 2017-05-31  Martin Liska  <mliska@suse.cz>
28124
28125         PR target/79155
28126         * config/i386/cpuid.h: Fix typo in a comment in cpuid.h.
28127
28128 2017-05-31  Bin Cheng  <bin.cheng@arm.com>
28129
28130         * tree-vect-loop-manip.c (create_intersect_range_checks_index)
28131         (create_intersect_range_checks): Move from ...
28132         * tree-data-ref.c (create_intersect_range_checks_index)
28133         (create_intersect_range_checks): ... to here.
28134         (create_runtime_alias_checks): New function factored from ...
28135         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks): ...
28136         here.  Call above function.
28137         * tree-data-ref.h (create_runtime_alias_checks): New function.
28138
28139 2017-05-31  Bin Cheng  <bin.cheng@arm.com>
28140
28141         * tree-data-ref.c (prune_runtime_alias_test_list): Relax minimal
28142         segment length for dr_b and compute it in wide_int.
28143
28144 2017-05-31  Richard Biener  <rguenther@suse.de>
28145
28146         PR tree-optimization/80906
28147         * graphite-isl-ast-to-gimple.c (copy_loop_close_phi_nodes): Get
28148         and pass through iv_map.
28149         (copy_bb_and_scalar_dependences): Adjust.
28150         (translate_pending_phi_nodes): Likewise.
28151         (copy_loop_close_phi_args): Handle code-generating IVs instead
28152         of ICEing.
28153
28154 2017-05-30  David Malcolm  <dmalcolm@redhat.com>
28155
28156         * diagnostic-color.c (color_dict): Add "type-diff".
28157         (parse_gcc_colors): Update comment.
28158         * doc/invoke.texi (Diagnostic Message Formatting Options): Add
28159         -fdiagnostics-show-template-tree and -fno-elide-type.
28160         (GCC_COLORS): Add type-diff to example.
28161         (type-diff=): New.
28162         (-fdiagnostics-show-template-tree): New.
28163         (-fno-elide-type): New.
28164         * pretty-print.c (pp_format): Pass quote and formatters[argno] to
28165         the pp_format_decoder callback.  Call any m_format_postprocessor's
28166         "handle" method.
28167         (pretty_printer::pretty_printer): Initialize
28168         m_format_postprocessor.
28169         (pretty_printer::~pretty_printer): Delete any
28170         m_format_postprocessor.
28171         * pretty-print.h (printer_fn): Add bool and const char ** parameters.
28172         (class format_postprocessor): New class.
28173         (struct pretty_printer::format_decoder): Document the new parameters.
28174         (struct pretty_printer::m_format_postprocessor): New field.
28175         * tree-diagnostic.c (default_tree_printer): Update for new
28176         bool and const char ** params.
28177         * tree-diagnostic.h (default_tree_printer): Likewise.
28178
28179 2017-05-30  Segher Boessenkool  <segher@kernel.crashing.org>
28180
28181         * config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand): Delete.
28182         (lwa_operand): Delete rs6000_gen_cell_microcode test.
28183         * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
28184         rs6000_gen_cell_microcode code.
28185         (rs6000_final_prescan_insn): Delete.
28186         (rs6000_opt_vars): Delete the "gen-cell-microcode" and
28187         "warn-cell-microcode" entries.
28188         * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Delete.
28189         * config/rs6000/rs6000.md: Delete rs6000_gen_cell_microcode tests
28190         throughout.  Change cc_reg_not_micro_cr0_operand to
28191         cc_reg_not_cr0_operand throughout.
28192         (*extendhi<mode>2_noload): Delete.
28193         * config/rs6000/rs6000.opt (mgen-cell-microcode): Replace by stub.
28194         (mwarn-cell-microcode): Delete.
28195         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete
28196         -mgen-cell-microcode and -mwarn-cell-microcode.
28197
28198 2017-05-30  Uros Bizjak  <ubizjak@gmail.com>
28199
28200         PR target/80833
28201         * config/i386/constraints.md (Yd): New constraint.
28202         (Ye): Ditto.
28203         * config/i386/i386.md (*movti_internal): Add (?r, Ye)
28204         and (?Yd, r) alternatives.  Update insn attributes.
28205         * config/i386/i386.md (*movti_internal): Add (?r, *Ye)
28206         and (?*Yd, r) alternatives.  Update insn attributes.
28207         (double-mode inter-unit splitters): Add new GR<->XMM splitters.
28208
28209 2017-05-30  Pierre-Marie de Rodat  <derodat@adacore.com>
28210
28211         * gimplify.c (gimplify_modify_expr): Don't create a
28212         DECL_DEBUG_EXPR link if *FROM_P does not belong to the current
28213         function.
28214
28215 2017-05-30  Wilco Dijkstra  <wdijkstr@arm.com>
28216
28217         * config/arm/arm-builtins.c (arm_expand_builtin): Remove const.
28218
28219 2017-05-30  Richard Biener  <rguenther@suse.de>
28220
28221         * tree-vectorizer.h (struct _stmt_vec_info): Add reduc_type
28222         and reduc_def fields.
28223         (STMT_VINFO_REDUC_TYPE): New define.
28224         (STMT_VINFO_REDUC_DEF): Likewise.
28225         (vect_force_simple_reduction): Adjust prototype.
28226         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Adjust.
28227         (vect_is_simple_reduction): Remove check_reduction argument.
28228         (vect_force_simple_reduction): Adjust and set
28229         STMT_VINFO_REDUC_TYPE and STMT_VINFO_REDUC_DEF.
28230         (vectorizable_reduction): Do not re-do reduction analysis
28231         but use STMT_VINFO_REDUC_TYPE and STMT_VINFO_REDUC_DEF.
28232         * tree-parloops.c (gather_scalar_reductions): Adjust.
28233
28234 2017-05-30  Richard Biener  <rguenther@suse.de>
28235
28236         PR middle-end/80901
28237         * cfgexpand.c (expand_gimple_cond): Match up loop fixup with
28238         split_edge code.
28239
28240 2017-05-24  Robin Dapp  <rdapp@linux.vnet.ibm.com>
28241
28242         * tree-vect-data-refs.c (vect_get_peeling_costs_all_drs):
28243         Introduce unknown_misalignment parameter and remove vf.
28244         (vect_peeling_hash_get_lowest_cost):
28245         Pass unknown_misalignment parameter.
28246         (vect_enhance_data_refs_alignment):
28247         Fix unsupportable data ref treatment.
28248
28249 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
28250
28251         * tree-vect-data-refs.c (vect_get_data_access_cost):
28252         Workaround for SLP handling.
28253         (vect_enhance_data_refs_alignment):
28254         Compute costs for doing no peeling at all, compare to the best
28255         peeling costs so far and avoid peeling if cheaper.
28256
28257 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
28258
28259         * tree-vect-data-refs.c (vect_peeling_hash_choose_best_peeling):
28260         Return peeling info and set costs to zero for unlimited cost
28261         model.
28262         (vect_enhance_data_refs_alignment): Also inspect all datarefs
28263         with unknown misalignment. Compute and costs for unknown
28264         misalignment, compare them to the costs for known misalignment
28265         and choose the cheapest for peeling.
28266
28267 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
28268
28269         * tree-vect-data-refs.c (vect_update_misalignment_for_peel): Rename.
28270         (vect_get_peeling_costs_all_drs): Create function.
28271         (vect_peeling_hash_get_lowest_cost):
28272         Use vect_get_peeling_costs_all_drs.
28273         (vect_peeling_supportable): Create function.
28274         (vect_enhance_data_refs_alignment): Use vect_peeling_supportable.
28275
28276 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
28277
28278         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Create
28279         DR_HAS_NEGATIVE_STEP.
28280         (vect_update_misalignment_for_peel): Define DR_MISALIGNMENT.
28281         (vect_enhance_data_refs_alignment): Use.
28282         (vect_duplicate_ssa_name_ptr_info): Use.
28283         * tree-vectorizer.h (dr_misalignment): Use.
28284         (known_alignment_for_access_p): Use.
28285
28286 2017-05-30  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
28287
28288         PR target/78838
28289         * config/msp430/msp430.c (gen_prefix): Return NULL when section name is
28290         .lowtext.
28291         (has_section_name): New function.
28292
28293 2017-05-30  Martin Liska  <mliska@suse.cz>
28294
28295         PR other/80909
28296         * auto-profile.c (get_function_decl_from_block): Fix
28297         parenthesis.
28298
28299 2017-05-30  Richard Biener  <rguenther@suse.de>
28300
28301         PR middle-end/80876
28302         * cfgexpand.c (expand_gimple_cond): Fixup preserving loops again.
28303
28304 2017-05-30  Martin Liska  <mliska@suse.cz>
28305
28306         * dumpfile.c: Use newly added macro DUMP_FILE_INFO.
28307         * dumpfile.h (struct dump_file_info): Remove ctors.
28308
28309 2017-05-30  Martin Liska  <mliska@suse.cz>
28310
28311         * predict.def: Fix GNU coding style.
28312
28313 2017-05-29  Max Filippov  <jcmvbkbc@gmail.com>
28314
28315         * config/xtensa/xtensa.c (xtensa_initial_elimination_offset):
28316         Mark 'to' argument with ATTRIBUTE_UNUSED.
28317
28318 2017-05-29  Max Filippov  <jcmvbkbc@gmail.com>
28319
28320         * config/xtensa/xtensa.c (xtensa_emit_call): Use
28321         HOST_WIDE_INT_PRINT_HEX instead of 0x%lx format string.
28322         (print_operand): Use HOST_WIDE_INT_PRINT_DEC instead of %ld
28323         format string.
28324
28325 2017-05-29  Eric Botcazou  <ebotcazou@adacore.com>
28326
28327         * doc/install.texi (Options specification): Restore entry of
28328         --enable-sjlj-exceptions.
28329
28330 2017-05-27  Michael Eager  <eager@eagercon.com>
28331
28332         Revert:
28333         2016-01-21  Ajit Agarwal  <ajitkum@xilinx.com>
28334
28335         See https://gcc.gnu.org/ml/gcc/2017-05/msg00221.html.
28336
28337         * config/microblaze/microblaze.h
28338         (FIXED_REGISTERS): Update in macro.
28339         (CALL_USED_REGISTERS): Update in macro.
28340
28341 2017-05-27  François-Xavier Coudett  <fxcoudert@gcc.gnu.org>
28342
28343         * doc/install.texi: Add links to macOS binary distributions.
28344
28345 2017-05-27  Jakub Jelinek  <jakub@redhat.com>
28346
28347         PR bootstrap/80887
28348         Revert:
28349         2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
28350
28351         * match.pd ((A +- CST1) +- CST2): Allow some conversions.
28352
28353 2017-05-26  Martin Liska  <mliska@suse.cz>
28354
28355         * dumpfile.h (enum dump_kind): Renumber TDF_* flags to be contiguous.
28356
28357 2017-05-26  Martin Liska  <mliska@suse.cz>
28358
28359         * cfg.c (check_bb_profile): Do not use TDF_COMMENT and print
28360         always leading ';; '.
28361         (dump_bb_info): Likewise.
28362         (brief_dump_cfg): Likewise.
28363         * cfgrtl.c (print_rtl_with_bb): Do not use TDF_COMMENT.
28364         * dumpfile.c: Remove usage of TDF_VERBOSE.
28365         * dumpfile.h (enum dump_kind): Likewise.
28366         (dump_gimple_bb_header): Do not use TDF_COMMENT.
28367         * print-tree.c (debug_verbose): Remove.
28368         * tree-cfg.c (gimple_dump_cfg): Do not use TDF_COMMENT.
28369         (dump_function_to_file): Remove dumps guarded with TDF_VERBOSE.
28370         * tree-diagnostic.c (default_tree_printer): Replace
28371         TDF_DIAGNOSTIC with TDF_SLIM.
28372
28373 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
28374
28375         * tree-vect-loop-manip.c (create_intersect_range_checks_index): Pass
28376         in parameter loop, rather than loop_vinfo.
28377         (create_intersect_range_checks): Ditto.
28378         (vect_create_cond_for_alias_checks): Update call to above functions.
28379
28380 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
28381
28382         PR tree-optimization/80815
28383         * tree-data-ref.c (prune_runtime_alias_test_list): Simplify condition
28384         for merging runtime alias checks.  Handle negative DR_STEPs.
28385
28386 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
28387
28388         * tree-vect-data-refs.c (Operator==, comp_dr_with_seg_len_pair):
28389         Move from ...
28390         * tree-data-ref.c (Operator==, comp_dr_with_seg_len_pair): To here.
28391         * tree-vect-data-refs.c (vect_prune_runtime_alias_test_list): Factor
28392         out code pruning runtime alias checks.
28393         * tree-data-ref.c (prune_runtime_alias_test_list): New function
28394         factored out from above.
28395         * tree-vectorizer.h (struct dr_with_seg_len, dr_with_seg_len_pair_t):
28396         Move from ...
28397         * tree-data-ref.h (struct dr_with_seg_len, dr_with_seg_len_pair_t):
28398         ... to here.
28399         (prune_runtime_alias_test_list): New decalaration.
28400
28401 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
28402
28403         * tree-vect-data-refs.c (compare_tree): Rename and move ...
28404         * tree-data-ref.c (data_ref_compare_tree): ... to here.
28405         * tree-data-ref.h (data_ref_compare_tree): New decalaration.
28406         * tree-vect-data-refs.c (dr_group_sort_cmp): Update uses.
28407         (operator==, comp_dr_with_seg_len_pair): Ditto.
28408         (vect_prune_runtime_alias_test_list): Ditto.
28409
28410 2017-05-26  Martin Liska  <mliska@suse.cz>
28411
28412         PR ipa/80663
28413         * params.def: Bound partial-inlining-entry-probability param.
28414
28415 2017-05-26  Marek Polacek  <polacek@redhat.com>
28416
28417         PR sanitizer/80875
28418         * fold-const.c (fold_binary_loc) <case MULT_EXPR>: Check if OP1
28419         can be negated.
28420
28421 2017-05-26  Richard Biener  <rguenther@suse.de>
28422
28423         PR tree-optimization/80842
28424         * tree-ssa-ccp.c (set_lattice_value): Always meet with the old
28425         value.
28426
28427 2017-05-26  Richard Biener  <rguenther@suse.de>
28428
28429         PR tree-optimization/80844
28430         * tree-vectorizer.c (adjust_simduid_builtins): Propagate results.
28431
28432 2017-05-25  Sebastian Peryt  <sebastian.peryt@intel.com>
28433
28434         * doc/md.texi (Machine Constraints): Update x86 family
28435         machine constraints section to match 'config/i386/constraints.md'.
28436
28437 2017-05-25  Volker Reichelt  <v.reichelt@netcologne.de>
28438
28439         * doc/invoke.texi (-Wcatch-value=): Document new warning option.
28440
28441 2017-05-25  Nathan Sidwell  <nathan@acm.org>
28442
28443         * doc/invoke.texi (--enable-languages): Update documentation.
28444
28445 2017-05-25  Martin Liska  <mliska@suse.cz>
28446
28447         * dumpfile.c: Add TDF_FOLDING.
28448         * dumpfile.h (enum dump_kind): Likewise.
28449         * genmatch.c (dt_simplify::gen_1): Use it.
28450
28451 2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
28452
28453         * match.pd (view_convert (convert@0 @1)): Handle zero-extension.
28454
28455 2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
28456
28457         * match.pd ((A +- CST1) +- CST2): Allow some conversions.
28458         * tree.c (drop_tree_overflow): Handle COMPLEX_CST and VECTOR_CST.
28459
28460 2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
28461
28462         * fold-const.c (fold_binary_loc) [(A & C) == D]: Remove transformation.
28463         * match.pd (X == C): Rewrite it here.
28464         (with_possible_nonzero_bits, with_possible_nonzero_bits2,
28465         with_certain_nonzero_bits2): New predicates.
28466         * tree-ssanames.c (get_nonzero_bits): Handle INTEGER_CST.
28467
28468 2017-05-24  Nathan Sidwell  <nathan@acm.org>
28469
28470         * lto-streamer-in.c (lto_input_data_block): Adjust T const cast to
28471         avoid warning.
28472
28473         * auto-profile.c (afdo_propagate): Adjust T const cast to avoid
28474         warning.
28475
28476 2017-05-24  Segher Boessenkool  <segher@kernel.crashing.org>
28477
28478         * config/powerpcspe: New port.  Files are copied from the rs6000
28479         port, with "rs6000" in filenames replaced by "powerpcspe".
28480
28481 2017-05-24  Wilco Dijkstra  <wdijkstr@arm.com>
28482
28483         PR rtl-optimization/80754
28484         * lra-remat.c (do_remat): Add overlap checks for dst_regno.
28485
28486 2017-05-24  Sheldon Lobo  <smlobo@sheldon.us.oracle.com>
28487
28488         * config/sparc/sparc.md (length): Return the correct value for -mflat
28489         sibcalls to match output_sibcall.
28490
28491 2017-05-24  Segher Boessenkool  <segher@kernel.crashing.org>
28492
28493         PR bootstrap/80860
28494         PR bootstrap/80843
28495         * config/rs6000/rs6000.c (struct machine_function): Add new field
28496         n_components.
28497         (rs6000_get_separate_components): Init that field, use it.
28498         (rs6000_components_for_bb): Use the field.
28499
28500 2017-05-24  Thomas Preud'homme  <thomas.preudhomme@arm.com>
28501
28502         * config/arm/arm.c (arm_expand_prologue): Fix typo in comment.
28503
28504 2017-05-24  Peter Bergner  <bergner@vnet.ibm.com>
28505
28506         PR middle-end/80823
28507         * tree-cfg.c (group_case_labels_stmt): Delete increment of "i";
28508
28509 2017-05-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
28510
28511         PR target/80725
28512         * config/s390/s390.c (s390_check_qrst_address): Check incoming
28513         address against address_operand predicate.
28514         * config/s390/s390.md ("*indirect_jump"): Swap alternatives.
28515
28516 2017-05-24  Eric Botcazou  <ebotcazou@adacore.com>
28517
28518         * var-tracking.c (track_expr_p): Do not return 0 for tracked record
28519         parameters passed indirectly.
28520
28521 2017-05-23  Uros Bizjak  <ubizjak@gmail.com>
28522
28523         * config/i386/i386.md (*movdi_internal): Remove SSE4
28524         alternative 18 (?r, *v).  Update insn attributes.
28525         (*movsi_internal): Remove SSE4 alternative 13 (?r, *v).
28526         Update insn attributes.
28527         (*zero_extendsidi2): Remove SSE4 alternative (?r, *x).
28528         Update insn attributes.
28529         * config/i386/sse.md (vec_extract<ssevecmodelower>_0): Remove SSE4
28530         alternative 1 (r, v). Remove isa attribute.
28531         * config/i386/i386.c (dimode_scalar_chain::make_vector_copies):
28532         Always move value through stack for !TARGET_INTER_UNIT_MOVES_TO_VEC
28533         and !TARGET_INTER_UNIT_MOVES_TO_VEC targets.
28534
28535 2017-05-23  Tom de Vries  <tom@codesourcery.com>
28536
28537         * doc/sourcebuild.texi (Directives, Verify compiler message): Document
28538         dg-line directive.
28539
28540 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
28541
28542         * cgraphunit.c (symbol_table::process_new_functions): Update.
28543         * ipa-fnsummary.c (pass_data_inline_parameters): Remove.
28544         (inline_generate_summary): Rename to ...
28545         (ipa_fn_summary_generate): ... this one.
28546         (inline_read_summary): Rename to ...
28547         (ipa_fn_summary_read): ... this one.
28548         (inline_write_summary): Rename to ...
28549         (ipa_fn_summary_write): ... this one.
28550         (inline_free_summary): Rename to ...
28551         (ipa_free_fn_summary): ... this one.
28552         (pass_data_local_fn_summary, pass_local_fn_summary,
28553         make_pass_local_fn_summary, pass_data_ipa_free_fn_summary,
28554         pass_ipa_free_fn_summary, make_pass_ipa_free_fn_summary,
28555         pass_data_ipa_fn_summary, pass_ipa_fn_summary,
28556         make_pass_ipa_fn_summary): New.
28557         * ipa-fnsummary.h (inline_generate_summary, inline_read_summary,
28558         inline_write_summary, inline_free_summary): Remove.
28559         (ipa_free_fn_summary) : New.
28560         * ipa-inline.c (ipa_inline): Update.
28561         (pass_ipa_inline): Do not generate summaries.
28562         * ipa.c (pass_data_ipa_free_fn_summary, pass_ipa_free_fn_summary):
28563         Remove.
28564         * passes.def: Replace pass_inline_parameters by pass_local_fn_summary
28565         and add pass_ipa_fn_summary.
28566         * tree-pass.h (make_pass_ipa_fn_summary, make_pass_local_fn_summary):
28567         New.
28568         (make_pass_inline_parameters): Remove.
28569
28570 2017-05-23  Thomas Schwinge  <thomas@codesourcery.com>
28571
28572         * omp-low.c (struct omp_context): Remove "default_kind" member.
28573         Adjust all users.
28574
28575         * omp-offload.c (execute_oacc_device_lower): Remove the
28576         parallelism dimensions function attributes for unparallelized
28577         OpenACC kernels constructs.
28578
28579 2017-05-23  Martin Liska  <mliska@suse.cz>
28580
28581         * cgraph.c (cgraph_node::get_create): Use symtab_node::dump_{asm_,}name
28582         functions.
28583         (cgraph_edge::make_speculative): Likewise.
28584         (cgraph_edge::resolve_speculation): Likewise.
28585         (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
28586         (cgraph_node::dump): Likewise.
28587         * cgraph.h: Likewise.
28588         * cgraphunit.c (analyze_functions): Likewise.
28589         (symbol_table::compile): Likewise.
28590         * ipa-cp.c (print_all_lattices): Likewise.
28591         (determine_versionability): Likewise.
28592         (initialize_node_lattices): Likewise.
28593         (ipcp_verify_propagated_values): Likewise.
28594         (estimate_local_effects): Likewise.
28595         (update_profiling_info): Likewise.
28596         (create_specialized_node): Likewise.
28597         (perhaps_add_new_callers): Likewise.
28598         (decide_about_value): Likewise.
28599         (decide_whether_version_node): Likewise.
28600         (identify_dead_nodes): Likewise.
28601         (ipcp_store_bits_results): Likewise.
28602         * ipa-devirt.c (dump_targets): Likewise.
28603         (ipa_devirt): Likewise.
28604         * ipa-icf.c (sem_item::dump): Likewise.
28605         (sem_function::equals): Likewise.
28606         (sem_variable::equals): Likewise.
28607         (sem_item_optimizer::read_section): Likewise.
28608         (sem_item_optimizer::execute): Likewise.
28609         (congruence_class::dump): Likewise.
28610         * ipa-inline-analysis.c (dump_ipa_call_summary): Likewise.
28611         (dump_inline_summary): Likewise.
28612         (estimate_node_size_and_time): Likewise.
28613         (inline_analyze_function): Likewise.
28614         * ipa-inline-transform.c (inline_call): Likewise.
28615         * ipa-inline.c (report_inline_failed_reason): Likewise.
28616         (want_early_inline_function_p): Likewise.
28617         (edge_badness): Likewise.
28618         (update_edge_key): Likewise.
28619         (inline_small_functions): Likewise.
28620         * ipa-profile.c (ipa_profile): Likewise.
28621         * ipa-prop.c (ipa_print_node_jump_functions): Likewise.
28622         (ipa_make_edge_direct_to_target): Likewise.
28623         (remove_described_reference): Likewise.
28624         (ipa_impossible_devirt_target): Likewise.
28625         (propagate_controlled_uses): Likewise.
28626         (ipa_print_node_params): Likewise.
28627         (ipcp_transform_function): Likewise.
28628         * ipa-pure-const.c (pure_const_read_summary): Likewise.
28629         (propagate_pure_const): Likewise.
28630         * ipa-reference.c (generate_summary): Likewise.
28631         (read_write_all_from_decl): Likewise.
28632         (propagate): Likewise.
28633         (ipa_reference_read_optimization_summary): Likewise.
28634         * ipa-utils.c (ipa_merge_profiles): Likewise.
28635         * ipa.c (walk_polymorphic_call_targets): Likewise.
28636         (symbol_table::remove_unreachable_nodes): Likewise.
28637         (ipa_single_use): Likewise.
28638         * passes.c (execute_todo): Likewise.
28639         * predict.c (drop_profile): Likewise.
28640         * symtab.c (symtab_node::get_dump_name): New function.
28641         (symtab_node::dump_name): Likewise.
28642         (symtab_node::dump_asm_name): Likewise.
28643         (symtab_node::dump_references): Likewise.
28644         (symtab_node::dump_referring): Likewise.
28645         (symtab_node::dump_base): Likewise.
28646         (symtab_node::debug_symtab): Likewise.
28647         * tree-sra.c (convert_callers_for_node): Likewise.
28648         * tree-ssa-structalias.c (ipa_pta_execute): Likewise.
28649         * value-prof.c (init_node_map): Likewise.
28650
28651 2017-05-23  Martin Liska  <mliska@suse.cz>
28652
28653         * cgraph.h: Move symtab_node::dump_table to symbol_table::dump
28654         and symtab_node::debug_symtab to symbol_table::debug.
28655         * cgraphunit.c (analyze_functions): Use the renamed function.
28656         (symbol_table::compile): Likewise.
28657         * ipa-cp.c (ipcp_verify_propagated_values): Likewise.
28658         * ipa-icf.c (sem_item_optimizer::execute): Likewise.
28659         * passes.c (execute_todo): Likewise.
28660         * symtab.c (symbol_table::dump): New function.
28661         * tree-ssa-structalias.c (ipa_pta_execute): Use the renamed function.
28662
28663 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
28664
28665         * ipa-fnsummary.c (estimate_node_size_and_time): Do not sanity check
28666         that nonconst implies exec.
28667
28668 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
28669
28670         * ipa-inline-analysis.c (cgraph_2edge_hook_list, cgraph_edge_hook_list,
28671         inline_edge_removal_hook, inline_edge_duplication_hook): Remove.
28672         (inline_edge_summary_vec): Turn into ...
28673         (ipa_call_summaries): ... this one.
28674         (redirect_to_unreachable, edge_set_predicate,
28675         evaluate_properties_for_edge, inline_summary_alloc,
28676         reset_ipa_call_summary, reset_inline_summary,
28677         inline_summary_t::duplicate): Update.
28678         (inline_edge_duplication_hook): Turn to ...
28679         (ipa_call_summary_t::duplicate): ... this one.
28680         (inline_edge_removal_hook): Turn to ...
28681         (ipa_call_summary_t::remove): ... this one.
28682         (dump_inline_edge_summary): Turn to ...
28683         (dump_ipa_call_summary): ... this one.
28684         (estimate_function_body_sizes): Update.
28685         (inline_update_callee_summaries): Update.
28686         (remap_edge_change_prob): Update.
28687         (remap_edge_summaries): Update.
28688         (inline_merge_summary): Update.
28689         (do_estimate_edge_time): Update.
28690         (inline_generate_summary): Update.
28691         (inline_read_section): Update.
28692         (inline_read_summary): Update.
28693         (inline_free_summary): Update.
28694         * ipa-inline.c (can_inline_edge_p): Update.
28695         (compute_inlined_call_time): Update.
28696         (want_inline_small_function_p): Update.
28697         (edge_badness): Update.
28698         (early_inliner): Update.
28699         * ipa-inline.h (inline_edge_summary): Turn to ...
28700         (ipa_call_summary): ... this one.
28701         (ipa_call_summary_t): New class.
28702         (inline_edge_summary_t, inline_edge_summary_vec): Remove.
28703         (ipa_call_summaries): New.
28704         (inline_edge_summary): Remove.
28705         (estimate_edge_growth): Update.
28706         * ipa-profile.c (ipa_propagate_frequency_1): Update.
28707         * ipa-prop.c (ipa_make_edge_direct_to_target): Update.
28708         * ipa-split.c (execute_split_functions): Update.
28709         * ipa.c (symbol_table::remove_unreachable_nodes): Update.
28710
28711 2017-05-23  Tom de Vries  <tom@codesourcery.com>
28712
28713         * doc/sourcebuild.texi (Effective-Target Keywords, Other hardware
28714         attributes): Document rdrand effective target.
28715
28716 2017-05-23  Tom de Vries  <tom@codesourcery.com>
28717
28718         * doc/sourcebuild.texi (Effective-Target Keywords, Other hardware
28719         attributes): Sort alphabetically.
28720
28721 2017-05-23  Georg-Johann Lay  <avr@gjlay.de>
28722
28723         * config/avr/genmultilib.awk: Use gsub instead of gensub.
28724
28725 2017-05-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
28726
28727         PR target/80718
28728         * config/rs6000/vsx.md (vsx_splat_<mode>, VSX_D iterator): Split
28729         V2DF/V2DI splat into two separate patterns, one that handles
28730         registers, and the other that only handles memory.  Drop support
28731         for splatting from a GPR on ISA 2.07 and then splitting the
28732         splat into direct move and splat.
28733         (vsx_splat_<mode>_reg): Likewise.
28734         (vsx_splat_<mode>_mem): Likewise.
28735
28736 2017-05-22  Segher Boessenkool  <segher@kernel.crashing.org>
28737
28738         * cfgcleanup.c (bb_is_just_return): Allow CLOBBERs.
28739
28740 2017-05-22  Jakub Jelinek  <jakub@redhat.com>
28741
28742         PR middle-end/80809
28743         * omp-low.c (finish_taskreg_remap): New function.
28744         (finish_taskreg_scan): If unit size of ctx->record_type
28745         is non-constant, unshare the size expression and replace
28746         decls in it with possible outer var refs.
28747
28748         PR middle-end/80809
28749         * gimplify.c (omp_add_variable): For GOVD_DEBUG_PRIVATE use
28750         GOVD_SHARED rather than GOVD_PRIVATE with it.
28751         (gimplify_adjust_omp_clauses_1, gimplify_adjust_omp_clauses): Expect
28752         GOVD_SHARED rather than GOVD_PRIVATE with GOVD_DEBUG_PRIVATE.
28753
28754         PR middle-end/80853
28755         * omp-low.c (lower_reduction_clauses): Pass OMP_CLAUSE_PRIVATE
28756         as last argument to build_outer_var_ref for pointer bases of array
28757         section reductions.
28758
28759 2017-05-19  Martin Sebor  <msebor@redhat.com>
28760
28761         * print-tree.c (print_node): Print DECL_READ_P flag.
28762
28763 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
28764
28765         * Makefile.in: Add ipa-fnsummary.o and ipa-fnsummary.h
28766         * auto-profile.c: Replace ipa-inline.h by ipa-fnsummary.h
28767         * cgraph.c: Likewise.
28768         * cgraphunit.c: Likewise.
28769         * gengtype.c: Likewise.
28770         * ipa-cp.c: Likewise.
28771         * ipa-devirt.c: Likewise.
28772         * ipa-icf.c: Likewise.
28773         * ipa-predicate.c: Likewise.
28774         * ipa-profile.c: Likewise.
28775         * ipa-prop.c: Likewise.
28776         * ipa-split.c: Likewise.
28777         * ipa.c: Likewise.
28778         * ipa-inline-analysis.c (inline_summaries, ipa_call_summaries,
28779         edge_predicate_pool, dump_inline_hints,
28780         inline_summary::account_size_time, redirect_to_unreachable,
28781         edge_set_predicate, set_hint_predicate,
28782         evaluate_conditions_for_known_args, evaluate_properties_for_edge,
28783         inline_summary_alloc, ipa_call_summary::reset, inline_summary::reset,
28784         inline_summary_t::remove, remap_hint_predicate_after_duplication,
28785         inline_summary_t::duplicate, ipa_call_summary_t::duplicate,
28786         ipa_call_summary_t::remove, initialize_growth_caches,
28787         free_growth_caches, dump_ipa_call_summary, dump_inline_summary,
28788         debug_inline_summary, dump_inline_summaries, initialize_inline_failed,
28789         mark_modified, unmodified_parm_1, unmodified_parm,
28790         unmodified_parm_or_parm_agg_item, eliminated_by_inlining_prob,
28791         set_cond_stmt_execution_predicate, set_switch_stmt_execution_predicate,
28792         compute_bb_predicates, will_be_nonconstant_expr_predicate,
28793         will_be_nonconstant_predicate, record_modified_bb_info,
28794         get_minimal_bb, record_modified, param_change_prob,
28795         phi_result_unknown_predicate, predicate_for_phi_result,
28796         array_index_predicate, clobber_only_eh_bb_p, fp_expression_p,
28797         estimate_function_body_sizes, compute_inline_parameters,
28798         compute_inline_parameters_for_curren, pass_data_inline_parameters,
28799         estimate_node_size_and_time, estimate_ipcp_clone_size_and_time,
28800         inline_update_callee_summaries, remap_edge_change_prob,
28801         remap_edge_summaries, remap_hint_predicate, inline_merge_summary,
28802         inline_update_overall_summary, inline_indirect_intraprocedural_analysis,
28803         inline_analyze_function, inline_summary_t::insert,
28804         inline_generate_summary, read_ipa_call_summary, inline_read_section,
28805         inline_read_summary, write_ipa_call_summary, inline_write_summary,
28806         inline_free_summary): Move to ipa-fnsummary.h
28807         (predicate_t): Remove.
28808         * ipa-fnsummary.c: New file.
28809         * ipa-inline.h:  Do not include sreal.h and ipa-predicate.h
28810         (enum inline_hints_vals, inline_hints, agg_position_info,
28811         INLINE_SIZE_SCALE, size_time_entry, inline_summary, inline_summary_t,
28812         inline_summaries, ipa_call_summary, ipa_call_summary_t,
28813         ipa_call_summaries, debug_inline_summary, dump_inline_summaries,
28814         dump_inline_summary, dump_inline_hints, inline_generate_summary,
28815         inline_read_summary, inline_write_summary, inline_free_summary,
28816         inline_analyze_function, initialize_inline_failed,
28817         inline_merge_summary, inline_update_overall_summary,
28818         compute_inline_parameters): Move to ipa-fnsummary.h
28819         * ipa-fnsummary.h: New file.
28820         * ipa-inline-transform.h: Include ipa-inline.h.
28821         * ipa-inline.c: LIkewise.
28822
28823 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
28824
28825         * ipa-inline.c (edge_badness): Use inlined_time instead of
28826         inline_summaries->get.
28827
28828 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
28829
28830         * ipa-inline.c (edge_badness): Use estimate_size_after_inlining.
28831
28832 2017-05-22  Nathan Sidwell  <nathan@acm.org>
28833
28834         * doc/invoke.texi (fdump-translation-unit): Delete documentation.
28835         (fdump-lang): Document 'raw' option.
28836         * dumpfile.h (TDI_tu): Delete.
28837         * dumpfile.c (dump_files): Remove translation-unit.
28838         (FIRST_AUTO_NUMBERED_DUMP): Decrement.
28839
28840 2017-05-22  Georg-Johann Lay  <avr@gjlay.de>
28841
28842         * config/avr/t-avr (AWK) [t-multilib]: Remove "-v FORMAT=Makefile"
28843         command option from $(AWK) call.
28844         * config/avr/genmultilib.awk: Simplify and rewrite so that it
28845         generates MULTILIB_REQUIRED instead of MULTILIB_EXCEPTIONS.
28846         [FORMAT]: Remove handling of variable.
28847         * config/avr/t-multilib: Regenerate.
28848
28849 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
28850
28851         * ipa-inline-analysis.c (inline_summary::reset): Do not reset
28852         self_time.
28853         (dump_inline_summary): Do not print self_time.
28854         (estimate_function_body_sizes): Do not set self_time.
28855         (compute_inline_parameters): Likewise.
28856         (inline_read_section, inline_write_summary): Do not stream self_time.
28857         * ipa-inline.h (inline_summary): Drop self_time.
28858
28859 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
28860
28861         * ipa-inline-analysis.c (account_size_time): Rename to ...
28862         (inline_summary::account_size_time): ... this one.
28863         (reset_ipa_call_summary): Turn to ...
28864         (ipa_call_summary::reset): ... this one.
28865         (reset_inline_summary): Turn to ...
28866         (inline_summary::reset): ... this one.
28867         (inline_summary_t::remove): Update.
28868         (inline_summary_t::duplicate): Update.
28869         (ipa_call_summary_t::remove): Update.
28870         (dump_inline_summary): Update.
28871         (estimate_function_body_sizes): Update.
28872         (compute_inline_parameters): Update.
28873         (estimate_node_size_and_time): Update.
28874         (inline_merge_summary): Update.
28875         (inline_update_overall_summary): Update.
28876         (inline_read_section): Update.
28877         (inline_write_summary): Update.
28878         * ipa-inline.h (inline_summary): Rename entry to size_time_table;
28879         add account_size_time and reset member functions.
28880         (ipa_call_summary): Add reset function.
28881         * ipa-predicate.h (predicate::operator &): Constify.
28882
28883 2017-05-22  Richard Biener  <rguenther@suse.de>
28884
28885         * df-scan.c (df_insn_refs_verify): Speedup when not verifying.
28886
28887 2017-05-19  Jason Merrill  <jason@redhat.com>
28888
28889         * tree.c (make_tree_vec_stat, grow_tree_vec_stat): Use size_t.
28890
28891 2017-05-19  Marek Polacek  <polacek@redhat.com>
28892
28893         PR sanitizer/80800
28894         * fold-const.c (extract_muldiv_1) <case TRUNC_DIV_EXPR>: Add
28895         TYPE_OVERFLOW_WRAPS checks.
28896
28897 2017-05-19  Thomas Schwinge  <thomas@codesourcery.com>
28898
28899         * tree-core.h (enum omp_clause_default_kind): Add
28900         "OMP_CLAUSE_DEFAULT_PRESENT".
28901         * tree-pretty-print.c (dump_omp_clause): Handle it.
28902         * gimplify.c (enum gimplify_omp_var_data): Add
28903         "GOVD_MAP_FORCE_PRESENT".
28904         (gimplify_adjust_omp_clauses_1): Map it to
28905         "GOMP_MAP_FORCE_PRESENT".
28906         (oacc_default_clause): Handle "OMP_CLAUSE_DEFAULT_PRESENT".
28907
28908         * gimplify.c (oacc_default_clause): Clarify.
28909
28910 2017-05-19  Nathan Sidwell  <nathan@acm.org>
28911
28912         LANG_HOOK_REGISTER_DUMPS
28913         * toplev.c (general_init): Call register dump lang hook.
28914         * doc/invoke.texi: Document -fdump-lang option family.
28915         * dumpfile.c (dump_files): Remove class dump here.
28916         (FIRST_AUTO_NUMBERED_DUMP): Adjust.
28917         * dumpfile.h (tree_dump_index): Remove TDI_class.
28918         * langhooks-def.h (lhd_register_dumps): Declare.
28919         (LANG_HOOKS_REGISTER_DUMPS): Define.
28920         (LANG_HOOKS_INITIALIZER): Add it.
28921         * langhooks.c (lhd_register_dumps): Define.
28922         * langhooks.h (struct lang_hooks): Add register_dumps.
28923
28924 2017-05-19  Nathan Sidwell  <nathan@acm.org>
28925
28926         * context.h (context::set_passes): New.
28927         * context.c (context::context): Do not create pass manager.
28928         * toplev.c (general_init): Create pass manager here.
28929
28930 2017-05-19  Segher Boessenkool  <segher@kernel.crashing.org>
28931
28932         * config/rs6000/rs6000.md (splitter to load of -1 and mask): Don't
28933         use this splitter if two add or or instructions would also work for
28934         the constant we want to generate.
28935
28936 2017-05-19  Richard Biener  <rguenther@suse.de>
28937
28938         PR build/80821
28939         * genmatch.c (dt_node::gen_kids_1): Add missing scope around
28940         predicate evaluation.
28941
28942 2017-05-19  Jan Hubicka  <hubicka@ucw.cz>
28943
28944         * ipa-inline.h (ipa_call_summary): Turn sizes into signed;
28945         add ctor.
28946         * ipa-inline.c (want_inline_small_function_p): Do not cast to
28947         unsigned.
28948
28949 2017-05-19  Jan Hubicka  <hubicka@ucw.cz>
28950
28951         * ipa-inline-analysis.c (cgraph_2edge_hook_list, cgraph_edge_hook_list,
28952         inline_edge_removal_hook, inline_edge_duplication_hook): Remove.
28953         (inline_edge_summary_vec): Turn into ...
28954         (ipa_call_summaries): ... this one.
28955         (redirect_to_unreachable, edge_set_predicate,
28956         evaluate_properties_for_edge, inline_summary_alloc,
28957         reset_ipa_call_summary, reset_inline_summary,
28958         inline_summary_t::duplicate): Update.
28959         (inline_edge_duplication_hook): Turn to ...
28960         (ipa_call_summary_t::duplicate): ... this one.
28961         (inline_edge_removal_hook): Turn to ...
28962         (ipa_call_summary_t::remove): ... this one.
28963         (dump_inline_edge_summary): Turn to ...
28964         (dump_ipa_call_summary): ... this one.
28965         (estimate_function_body_sizes): Update.
28966         (inline_update_callee_summaries): Update.
28967         (remap_edge_change_prob): Update.
28968         (remap_edge_summaries): Update.
28969         (inline_merge_summary): Update.
28970         (do_estimate_edge_time): Update.
28971         (inline_generate_summary): Update.
28972         (inline_read_section): Update.
28973         (inline_read_summary): Update.
28974         (inline_free_summary): Update.
28975         * ipa-inline.c (can_inline_edge_p): Update.
28976         (compute_inlined_call_time): Update.
28977         (want_inline_small_function_p): Update.
28978         (edge_badness): Update.
28979         (early_inliner): Update.
28980         * ipa-inline.h (inline_edge_summary): Turn to ...
28981         (ipa_call_summary): ... this one.
28982         (ipa_call_summary_t): New class.
28983         (inline_edge_summary_t, inline_edge_summary_vec): Remove.
28984         (ipa_call_summaries): New.
28985         (inline_edge_summary): Remove.
28986         (estimate_edge_growth): Update.
28987         * ipa-profile.c (ipa_propagate_frequency_1): Update.
28988         * ipa-prop.c (ipa_make_edge_direct_to_target): Update.
28989         * ipa-split.c (execute_split_functions): Update.
28990         * ipa.c (symbol_table::remove_unreachable_nodes): Update.
28991
28992 2017-05-19  Richard Biener  <rguenther@suse.de>
28993
28994         PR middle-end/80764
28995         * cfgexpand.c (expand_gimple_cond): Fix loop fixup.
28996
28997 2017-05-18  Segher Boessenkool  <segher@kernel.crashing.org>
28998
28999         * config/rs6000/rs6000.c (struct machine_function): Add field
29000         fpr_is_wrapped_separately.
29001         (rs6000_get_separate_components): Use 64 components.  Handle the
29002         new FPR components.
29003         (rs6000_components_for_bb): Handle the FPR components.
29004         (rs6000_emit_prologue_components): Handle the FPR components.
29005         (rs6000_emit_epilogue_components): Handle the FPR components.
29006         (rs6000_set_handled_components): Handle the FPR components.
29007         (rs6000_emit_prologue): Don't output prologue code for those FPRs
29008         that are already separately shrink-wrapped.
29009         (rs6000_emit_epilogue): Don't output epilogue code for those FPRs
29010         that are already separately shrink-wrapped.
29011
29012 2017-05-18  Michael Meissner  <meissner@linux.vnet.ibm.com>
29013
29014         PR target/80510
29015         * config/rs6000/predicates.md (simple_offsettable_mem_operand):
29016         New predicate.
29017
29018         * config/rs6000/rs6000.md (ALTIVEC_DFORM): New iterator.
29019         (define_peephole2 for Altivec d-form load): Add peepholes to catch
29020         cases where the register allocator uses a move and an offsettable
29021         memory operation to/from a FPR register on ISA 2.06/2.07.
29022         (define_peephole2 for Altivec d-form store): Likewise.
29023
29024 2017-05-18  Uros Bizjak  <ubizjak@gmail.com>
29025
29026         PR target/80799
29027         * config/i386/mmx.md (*mov<mode>_internal): Enable
29028         alternatives 11, 12, 13 and 14 also for 32bit targets.
29029         Remove alternatives 15, 16, 17 and 18.
29030         * config/i386/sse.md (vec_concatv2di): Change
29031         alternative (!x, *y) to (x, ?!*Yn).
29032
29033 2017-05-18  Paolo Carlini  <paolo.carlini@oracle.com>
29034
29035         * dumpfile.h (enum dump_kind): Remove stray comma.
29036
29037 2017-05-18  Jan Hubicka  <hubicka@ucw.cz>
29038
29039         * Makefile.in: Add ipa-predicate.o and ipa-predicate.h
29040         * ipa-inline-analysis.c (NUM_CONDITIONS): turn into
29041         predicate::num_conditions
29042         (IS_NOT_CONSTANT): turn into predicate::is_not_constant.
29043         (CHANGED): turn into predicate::changed.
29044         (agg_position_info): Move to ipa-predicate.h
29045         (add_condition, predicate::add_clause, predicate::operator &=,
29046         predicate::or_with, predicate::evaluate, predicate::probability,
29047         dump_condition, dump_clause, predicate::dump,
29048         predicate::remap_after_duplication, predicate::remap_after_inlining,
29049         predicate::stream_in, predicate::stream_out): Move to ipa-predicate.c
29050         (evaluate_conditions_for_known_args): Update.
29051         (set_cond_stmt_execution_predicate): Update.
29052         * ipa-inline.h: Include ipa-predicate.h
29053         (condition, inline_param_summary, conditions, agg_position_info,
29054         predicate): Move to ipa-predicate.h
29055         * ipa-predicate.c: New file.
29056         * ipa-predicate.h: New file.
29057
29058 2017-05-18  Wilco Dijkstra  <wdijkstr@arm.com>
29059
29060         * final.c (leaf_function_p): Check we are not in a sequence.
29061
29062 2017-05-18  Martin Liska  <mliska@suse.cz>
29063
29064         * cfgrtl.c (rtl_verify_edges): Remove usage of TDF_RTL.
29065         * dumpfile.c (dump_register): Use new enum dump_kind.
29066         (get_dump_file_name): Likewise.
29067         (dump_enable_all): Likewise.
29068         (dump_switch_p_1): Likewise.
29069         (enable_rtl_dump_file): Remove usage of TDF_RTL.
29070         * dumpfile.h (enum dump_kind): New enum type.
29071         (struct dump_file_info): Create constructor and
29072         format fields and comments.
29073         * passes.c (pass_manager::register_one_dump_file):
29074         Use num dump_kind.
29075         * statistics.c (statistics_early_init): Likewise.
29076         * tree-ssa-loop-prefetch.c (dump_mem_details): Replace
29077         TDF_TREE with TDF_SLIM.
29078         (gather_memory_references_ref): Likewise.
29079
29080 2017-05-18  Martin Liska  <mliska@suse.cz>
29081
29082         * vec.h (struct vnull): Use it.
29083
29084 2017-05-18  Jan Hubicka  <hubicka@ucw.cz>
29085
29086         * ipa-inline-analysis.c (predicate_conditions): Move to ipa-inline.h
29087         (true_predicate, false_predicate, true_predicate_p,
29088         false_predicate_p): Remove.
29089         (single_cond_predicate, not_inlined_predicate): Turn to member function
29090         in ipa-inline.h
29091         (add_condition): Update.
29092         (add_clause): Turn to...
29093         (predicate::add_clause): ... this one; update; allow passing NULL
29094         as parameter.
29095         (and_predicates): Turn to ...
29096         (predicate::operator &=): ... this one.
29097         (predicates_equal_p): Move to predicate::operator == in ipa-inline.h
29098         (or_predicates): Turn to ...
29099         (predicate::or_with): ... this one.
29100         (evaluate_predicate): Turn to ...
29101         (predicate::evaluate): ... this one.
29102         (predicate_probability): Turn to ...
29103         (predicate::probability): ... this one.
29104         (dump_condition): Update.
29105         (dump_predicate): Turn to ...
29106         (predicate::dump): ... this one.
29107         (account_size_time): Update.
29108         (edge_set_predicate): Update.
29109         (set_hint_predicate): UPdate.
29110         (evaluate_conditions_for_known_args): Update.
29111         (evaluate_properties_for_edge): Update.
29112         (remap_predicate_after_duplication): Turn to...
29113         (predicate::remap_after_duplication): ... this one.
29114         (remap_hint_predicate_after_duplication): Update.
29115         (inline_summary_t::duplicate): UPdate.
29116         (dump_inline_edge_summary): Update.
29117         (dump_inline_summary): Update.
29118         (set_cond_stmt_execution_predicate): Update.
29119         (set_switch_stmt_execution_predicate): Update.
29120         (compute_bb_predicates): Update.
29121         (will_be_nonconstant_expr_predicate): Update.
29122         (will_be_nonconstant_predicate): Update.
29123         (phi_result_unknown_predicate): Update.
29124         (predicate_for_phi_result): Update.
29125         (array_index_predicate): Update.
29126         (estimate_function_body_sizes): Update.
29127         (estimate_node_size_and_time): Update.
29128         (estimate_ipcp_clone_size_and_time): Update.
29129         (remap_predicate): Rename to ...
29130         (predicate::remap_after_inlining): ... this one.
29131         (remap_hint_predicate): Update.
29132         (inline_merge_summary): Update.
29133         (inline_update_overall_summary): Update.
29134         (estimate_size_after_inlining): Update.
29135         (read_predicate): Rename to ...
29136         (predicate::stream_in): ... this one.
29137         (read_inline_edge_summary): Update.
29138         (write_predicate): Rename to ...
29139         (predicate::stream_out): ... this one.
29140         (write_inline_edge_summary): Update.
29141         * ipa-inline.h (MAX_CLAUSES): Turn to predicate::max_clauses.
29142         (clause_t): Turn to uint32_t
29143         (predicate): Turn to class; implement constructor and operators
29144         ==, !=, &
29145         (size_time_entry): Update.
29146         (inline_summary): Update.
29147         (inline_edge_summary): Update.
29148
29149 2017-05-18  Marc Glisse  <marc.glisse@inria.fr>
29150
29151         * fold-const.c (fold_binary_loc): Move transformation...
29152         * match.pd (C - X CMP X): ... here.
29153
29154 2017-05-18  Sheldon Lobo  <sheldon.lobo@oracle.com>
29155
29156         * config/sparc/sparc.c (sparc_option_override): Set function
29157         alignment for -mcpu=niagara7 to 64 to match the I$ line.
29158         * config/sparc/sparc.h (BRANCH_COST): Set the SPARC M7 branch
29159         latency to 1.
29160         * config/sparc/sparc.h (BRANCH_COST): Set the SPARC T4 branch
29161         latency to 2.
29162         * config/sparc/sol2.h: Fix a ASM_CPU32_DEFAULT_SPEC typo.
29163
29164 2017-05-18  Marek Polacek  <polacek@redhat.com>
29165
29166         PR sanitizer/80797
29167         * ubsan.c (instrument_null): Unwrap ADDR_EXPRs.
29168         (pass_ubsan::execute): Call gimple_assign_single_p instead of
29169         gimple_assign_load_p.
29170
29171 2017-05-17  Segher Boessenkool  <segher@kernel.crashing.org>
29172
29173         PR middle-end/80692
29174         * real.c (do_compare): Give decimal_do_compare preference over
29175         comparing just the signs.
29176
29177 2017-05-17  Uros Bizjak  <ubizjak@gmail.com>
29178
29179         * doc/md.texi (Canonicalization of Instructions): Describe the
29180         canonical form of instructions that inherently set a condition
29181         code register.
29182
29183 2017-05-17  Peter Bergner  <bergner@vnet.ibm.com>
29184
29185         PR middle-end/80775
29186         * tree-cfg.c: Move deletion of unreachable case statements to after
29187         the merging of consecutive case labels.
29188
29189 2017-05-17  Thomas Preud'homme  <thomas.preudhomme@arm.com>
29190
29191         * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Refer
29192         readers to __gnu_cmse_nonsecure_call libcall for saving, clearing and
29193         restoring of callee-saved registers.
29194
29195 2017-05-17  Eric Botcazou  <ebotcazou@adacore.com>
29196
29197         * compare-elim.c (equivalent_reg_at_start): Adjust outdated comment.
29198         * config/visium/visium.c (single_set_and_flags): Likewise.
29199         * config/visium/visium.md (Substitutions): Likewise.
29200
29201 2017-05-17  Martin Liska  <mliska@suse.cz>
29202
29203         * cfg.c: Introduce dump_flags_t type and
29204         use it instead of int type.
29205         * cfg.h: Likewise.
29206         * cfghooks.c: Likewise.
29207         * cfghooks.h (struct cfg_hooks): Likewise.
29208         * cfgrtl.c: Likewise.
29209         * cfgrtl.h: Likewise.
29210         * cgraph.c (cgraph_node::get_body): Likewise.
29211         * coretypes.h: Likewise.
29212         * domwalk.c: Likewise.
29213         * domwalk.h: Likewise.
29214         * dumpfile.c (struct dump_option_value_info): Likewise.
29215         (dump_enable_all): Likewise.
29216         (dump_switch_p_1): Likewise.
29217         (opt_info_switch_p): Likewise.
29218         * dumpfile.h (enum tree_dump_index): Likewise.
29219         (struct dump_file_info): Likewise.
29220         * genemit.c: Likewise.
29221         * generic-match-head.c: Likewise.
29222         * gengtype.c (open_base_files): Likewise.
29223         * gimple-pretty-print.c: Likewise.
29224         * gimple-pretty-print.h: Likewise.
29225         * graph.c (print_graph_cfg): Likewise.
29226         * graphite-scop-detection.c (dot_all_sese): Likewise.
29227         * ipa-devirt.c (build_type_inheritance_graph): Likewise.
29228         * loop-unroll.c (report_unroll): Likewise.
29229         * passes.c (pass_manager::register_one_dump_file): Likewise.
29230         * print-tree.c: Likewise.
29231         * statistics.c: Likewise.
29232         * tree-cfg.c: Likewise.
29233         * tree-cfg.h: Likewise.
29234         * tree-dfa.c: Likewise.
29235         * tree-dfa.h: Likewise.
29236         * tree-dump.c (dump_function): Likewise.
29237         * tree-dump.h (struct dump_info): Likewise.
29238         * tree-pretty-print.c: Likewise.
29239         * tree-pretty-print.h: Likewise.
29240         * tree-ssa-live.c: Likewise.
29241         * tree-ssa-live.h: Likewise.
29242         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Likewise.
29243         * tree-vect-loop.c: Likewise.
29244         * tree-vect-slp.c: Likewise.
29245
29246 2017-05-16  James Greenhalgh  <james.greenhalgh@arm.com>
29247             Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
29248
29249         PR tree-optimization/80457
29250         * tree-vect-stmts.c (vect_model_simple_cost): Model the cost
29251         of all arguments to a statement as scalar_to_vec operations.
29252         (vectorizable_call): Adjust call to vect_model_simple_cost for
29253         new parameter.
29254         (vectorizable_conversion): Likewise.
29255         (vectorizable_assignment): Likewise.
29256         (vectorizable_shift): Likewise.
29257         (vectorizable_operation): Likewise.
29258         (vectorizable_comparison): Likewise.
29259         (vect_is_simple_cond): Record the def types for operands.
29260         (vectorizable_condition): Likewise, call vect_model_simple_cost.
29261         * tree-vectorizer.h (vect_model_simple_cost): Add new parameter
29262         for statement argument count.
29263
29264 2017-05-16  Carl Love  <cel@us.ibm.com>
29265
29266         * config/rs6000/rs6000-c: Add support for built-in functions
29267         vector unsigned long long vec_bperm (vector unsigned long long,
29268                                              vector unsigned char)
29269         vector signed long long vec_mule (vector signed int,
29270                                           vector signed int)
29271         vector unsigned long long vec_mule (vector unsigned int,
29272                                             vector unsigned int)
29273         vector signed long long vec_mulo (vector signed int,
29274                                           vector signed int)
29275         vector unsigned long long vec_mulo (vector unsigned int,
29276                                             vector unsigned int)
29277         vector signed char vec_sldw (vector signed char,
29278                                      vector signed char,
29279                                      const int)
29280         vector unsigned char vec_sldw (vector unsigned char,
29281                                        vector unsigned char,
29282                                        const int)
29283         vector signed short vec_sldw (vector signed short,
29284                                       vector signed short,
29285                                       const int)
29286         vector unsigned short vec_sldw (vector unsigned short,
29287                                         vector unsigned short,
29288                                         const int)
29289         vector signed int vec_sldw (vector signed int,
29290                                     vector signed int,
29291                                     const int)
29292         vector unsigned int vec_sldw (vector unsigned int,
29293                                       vector unsigned int,
29294                                       const int)
29295         vector signed long long vec_sldw (vector signed long long,
29296                                           vector signed long long,
29297                                           const int)
29298         vector unsigned long long vec_sldw (vector unsigned long long,
29299                                             vector unsigned long long,
29300                                             const int)
29301         * config/rs6000/rs6000-c: Add support for built-in functions
29302         * config/rs6000/rs6000-builtin.def: Add definition for SLDW.
29303         * config/rs6000/altivec.h: Add defintion for vec_sldw.
29304         * doc/extend.texi: Update the built-in documentation for the
29305         new built-in functions.
29306
29307 2017-05-16  Marek Polacek  <polacek@redhat.com>
29308
29309         PR sanitizer/80536
29310         PR sanitizer/80386
29311         * tree.c (save_expr): Don't fold the expression.
29312
29313 2017-05-16  Uros Bizjak  <ubizjak@gmail.com>
29314
29315         * config/i386/i386.md (*movsi_internal): Split (?rm,*y) alternative
29316         to (?r,*Yn) and (?m,*y) alternatives, and (?*y,rm) to (?*Ym,r)
29317         and (?*y,m).  Update insn attributes.
29318
29319 2017-05-16  Martin Liska  <mliska@suse.cz>
29320
29321         * cgraph.c (cgraph_edge::resolve_speculation): Add default value for
29322         flags argument of print_gimple_stmt, print_gimple_expr,
29323         print_generic_stmt and print_generic_expr.
29324         * cgraphclones.c (symbol_table::materialize_all_clones): Likewise.
29325         * coretypes.h: Likewise.
29326         * except.c (dump_eh_tree): Likewise.
29327         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise.
29328         * gimple-pretty-print.h: Likewise.
29329         * gimple-ssa-backprop.c (dump_usage_prefix): Likewise.
29330         (backprop::push_to_worklist): Likewise.
29331         (backprop::pop_from_worklist): Likewise.
29332         (backprop::process_use): Likewise.
29333         (backprop::intersect_uses): Likewise.
29334         (note_replacement): Likewise.
29335         * gimple-ssa-store-merging.c
29336         (pass_store_merging::terminate_all_aliasing_chains): Likewise.
29337         (imm_store_chain_info::coalesce_immediate_stores): Likewise.
29338         (pass_store_merging::execute): Likewise.
29339         * gimple-ssa-strength-reduction.c (dump_candidate): Likewise.
29340         (ssa_base_cand_dump_callback): Likewise.
29341         (dump_incr_vec): Likewise.
29342         (replace_refs): Likewise.
29343         (replace_mult_candidate): Likewise.
29344         (create_add_on_incoming_edge): Likewise.
29345         (create_phi_basis): Likewise.
29346         (insert_initializers): Likewise.
29347         (all_phi_incrs_profitable): Likewise.
29348         (introduce_cast_before_cand): Likewise.
29349         (replace_one_candidate): Likewise.
29350         * gimplify.c (gimplify_expr): Likewise.
29351         * graphite-isl-ast-to-gimple.c (is_valid_rename): Likewise.
29352         (set_rename): Likewise.
29353         (rename_uses): Likewise.
29354         (copy_loop_phi_nodes): Likewise.
29355         (add_close_phis_to_merge_points): Likewise.
29356         (copy_loop_close_phi_args): Likewise.
29357         (copy_cond_phi_args): Likewise.
29358         (graphite_copy_stmts_from_block): Likewise.
29359         (translate_pending_phi_nodes): Likewise.
29360         * graphite-poly.c (print_pdr): Likewise.
29361         (dump_gbb_cases): Likewise.
29362         (dump_gbb_conditions): Likewise.
29363         (print_scop_params): Likewise.
29364         * graphite-scop-detection.c (build_cross_bb_scalars_def): Likewise.
29365         (build_cross_bb_scalars_use): Likewise.
29366         (gather_bbs::before_dom_children): Likewise.
29367         * hsa-dump.c (dump_hsa_immed): Likewise.
29368         * ipa-cp.c (print_ipcp_constant_value): Likewise.
29369         (get_replacement_map): Likewise.
29370         * ipa-inline-analysis.c (dump_condition): Likewise.
29371         (estimate_function_body_sizes): Likewise.
29372         * ipa-polymorphic-call.c (check_stmt_for_type_change): Likewise.
29373         (ipa_polymorphic_call_context::get_dynamic_type): Likewise.
29374         * ipa-prop.c (ipa_dump_param): Likewise.
29375         (ipa_print_node_jump_functions_for_edge): Likewise.
29376         (ipa_modify_call_arguments): Likewise.
29377         (ipa_modify_expr): Likewise.
29378         (ipa_dump_param_adjustments): Likewise.
29379         (ipa_dump_agg_replacement_values): Likewise.
29380         (ipcp_modif_dom_walker::before_dom_children): Likewise.
29381         * ipa-pure-const.c (check_stmt): Likewise.
29382         (pass_nothrow::execute): Likewise.
29383         * ipa-split.c (execute_split_functions): Likewise.
29384         * omp-offload.c (dump_oacc_loop_part): Likewise.
29385         (dump_oacc_loop): Likewise.
29386         * trans-mem.c (tm_log_emit): Likewise.
29387         (tm_memopt_accumulate_memops): Likewise.
29388         (dump_tm_memopt_set): Likewise.
29389         (dump_tm_memopt_transform): Likewise.
29390         * tree-cfg.c (gimple_verify_flow_info): Likewise.
29391         (print_loop): Likewise.
29392         * tree-chkp-opt.c (chkp_print_addr): Likewise.
29393         (chkp_gather_checks_info): Likewise.
29394         (chkp_get_check_result): Likewise.
29395         (chkp_remove_check_if_pass): Likewise.
29396         (chkp_use_outer_bounds_if_possible): Likewise.
29397         (chkp_reduce_bounds_lifetime): Likewise.
29398         * tree-chkp.c (chkp_register_addr_bounds): Likewise.
29399         (chkp_mark_completed_bounds): Likewise.
29400         (chkp_register_incomplete_bounds): Likewise.
29401         (chkp_mark_invalid_bounds): Likewise.
29402         (chkp_maybe_copy_and_register_bounds): Likewise.
29403         (chkp_build_returned_bound): Likewise.
29404         (chkp_get_bound_for_parm): Likewise.
29405         (chkp_build_bndldx): Likewise.
29406         (chkp_get_bounds_by_definition): Likewise.
29407         (chkp_generate_extern_var_bounds): Likewise.
29408         (chkp_get_bounds_for_decl_addr): Likewise.
29409         * tree-chrec.c (chrec_apply): Likewise.
29410         * tree-data-ref.c (dump_data_reference): Likewise.
29411         (dump_subscript): Likewise.
29412         (dump_data_dependence_relation): Likewise.
29413         (analyze_overlapping_iterations): Likewise.
29414         * tree-inline.c (expand_call_inline): Likewise.
29415         (tree_function_versioning): Likewise.
29416         * tree-into-ssa.c (dump_defs_stack): Likewise.
29417         (dump_currdefs): Likewise.
29418         (dump_names_replaced_by): Likewise.
29419         (dump_update_ssa): Likewise.
29420         (update_ssa): Likewise.
29421         * tree-object-size.c (pass_object_sizes::execute): Likewise.
29422         * tree-parloops.c (build_new_reduction): Likewise.
29423         (try_create_reduction_list): Likewise.
29424         (ref_conflicts_with_region): Likewise.
29425         (oacc_entry_exit_ok_1): Likewise.
29426         (oacc_entry_exit_single_gang): Likewise.
29427         * tree-pretty-print.h: Likewise.
29428         * tree-scalar-evolution.c (set_scalar_evolution): Likewise.
29429         (get_scalar_evolution): Likewise.
29430         (add_to_evolution): Likewise.
29431         (get_loop_exit_condition): Likewise.
29432         (analyze_evolution_in_loop): Likewise.
29433         (analyze_initial_condition): Likewise.
29434         (analyze_scalar_evolution): Likewise.
29435         (instantiate_scev): Likewise.
29436         (number_of_latch_executions): Likewise.
29437         (gather_chrec_stats): Likewise.
29438         (final_value_replacement_loop): Likewise.
29439         (scev_const_prop): Likewise.
29440         * tree-sra.c (dump_access): Likewise.
29441         (disqualify_candidate): Likewise.
29442         (create_access): Likewise.
29443         (reject): Likewise.
29444         (maybe_add_sra_candidate): Likewise.
29445         (create_access_replacement): Likewise.
29446         (analyze_access_subtree): Likewise.
29447         (analyze_all_variable_accesses): Likewise.
29448         (sra_modify_assign): Likewise.
29449         (initialize_constant_pool_replacements): Likewise.
29450         (find_param_candidates): Likewise.
29451         (decide_one_param_reduction): Likewise.
29452         (replace_removed_params_ssa_names): Likewise.
29453         * tree-ssa-ccp.c (ccp_fold_stmt): Likewise.
29454         * tree-ssa-copy.c (dump_copy_of): Likewise.
29455         (copy_prop_visit_cond_stmt): Likewise.
29456         * tree-ssa-dce.c (mark_operand_necessary): Likewise.
29457         * tree-ssa-dom.c (pass_dominator::execute): Likewise.
29458         (record_equivalences_from_stmt): Likewise.
29459         * tree-ssa-dse.c (compute_trims): Likewise.
29460         (delete_dead_call): Likewise.
29461         (delete_dead_assignment): Likewise.
29462         * tree-ssa-forwprop.c (forward_propagate_into_gimple_cond): Likewise.
29463         (forward_propagate_into_cond): Likewise.
29464         (pass_forwprop::execute): Likewise.
29465         * tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise.
29466         * tree-ssa-loop-im.c (invariantness_dom_walker::before_dom_children):
29467         Likewise.
29468         (move_computations_worker): Likewise.
29469         (execute_sm): Likewise.
29470         * tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Likewise.
29471         (remove_exits_and_undefined_stmts): Likewise.
29472         (remove_redundant_iv_tests): Likewise.
29473         * tree-ssa-loop-ivopts.c (dump_use): Likewise.
29474         (adjust_iv_update_pos): Likewise.
29475         * tree-ssa-math-opts.c (bswap_replace): Likewise.
29476         * tree-ssa-phiopt.c (factor_out_conditional_conversion): Likewise.
29477         (value_replacement): Likewise.
29478         * tree-ssa-phiprop.c (phiprop_insert_phi): Likewise.
29479         * tree-ssa-pre.c (print_pre_expr): Likewise.
29480         (get_representative_for): Likewise.
29481         (create_expression_by_pieces): Likewise.
29482         (insert_into_preds_of_block): Likewise.
29483         (eliminate_insert): Likewise.
29484         (eliminate_dom_walker::before_dom_children): Likewise.
29485         (eliminate): Likewise.
29486         (remove_dead_inserted_code): Likewise.
29487         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
29488         * tree-ssa-reassoc.c (get_rank): Likewise.
29489         (eliminate_duplicate_pair): Likewise.
29490         (eliminate_plus_minus_pair): Likewise.
29491         (eliminate_not_pairs): Likewise.
29492         (undistribute_ops_list): Likewise.
29493         (eliminate_redundant_comparison): Likewise.
29494         (update_range_test): Likewise.
29495         (optimize_range_tests_var_bound): Likewise.
29496         (optimize_vec_cond_expr): Likewise.
29497         (rewrite_expr_tree): Likewise.
29498         (rewrite_expr_tree_parallel): Likewise.
29499         (linearize_expr): Likewise.
29500         (break_up_subtract): Likewise.
29501         (linearize_expr_tree): Likewise.
29502         (attempt_builtin_powi): Likewise.
29503         (attempt_builtin_copysign): Likewise.
29504         (transform_stmt_to_copy): Likewise.
29505         (transform_stmt_to_multiply): Likewise.
29506         (dump_ops_vector): Likewise.
29507         * tree-ssa-sccvn.c (vn_nary_build_or_lookup_1): Likewise.
29508         (print_scc): Likewise.
29509         (set_ssa_val_to): Likewise.
29510         (visit_reference_op_store): Likewise.
29511         (visit_use): Likewise.
29512         (sccvn_dom_walker::before_dom_children): Likewise.
29513         (run_scc_vn): Likewise.
29514         * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr):
29515         Likewise.
29516         (expr_hash_elt::print): Likewise.
29517         (const_and_copies::pop_to_marker): Likewise.
29518         (const_and_copies::record_const_or_copy_raw): Likewise.
29519         * tree-ssa-structalias.c (compute_dependence_clique): Likewise.
29520         * tree-ssa-uninit.c (collect_phi_def_edges): Likewise.
29521         (dump_predicates): Likewise.
29522         (find_uninit_use): Likewise.
29523         (warn_uninitialized_phi): Likewise.
29524         (pass_late_warn_uninitialized::execute): Likewise.
29525         * tree-ssa.c (verify_vssa): Likewise.
29526         (verify_ssa): Likewise.
29527         (maybe_optimize_var): Likewise.
29528         * tree-vrp.c (dump_value_range): Likewise.
29529         (dump_all_value_ranges): Likewise.
29530         (dump_asserts_for): Likewise.
29531         (register_edge_assert_for_2): Likewise.
29532         (vrp_visit_cond_stmt): Likewise.
29533         (vrp_visit_switch_stmt): Likewise.
29534         (vrp_visit_stmt): Likewise.
29535         (vrp_visit_phi_node): Likewise.
29536         (simplify_cond_using_ranges_1): Likewise.
29537         (fold_predicate_in): Likewise.
29538         (evrp_dom_walker::before_dom_children): Likewise.
29539         (evrp_dom_walker::push_value_range): Likewise.
29540         (evrp_dom_walker::pop_value_range): Likewise.
29541         (execute_early_vrp): Likewise.
29542
29543 2017-05-16  Richard Biener  <rguenther@suse.de>
29544
29545         * dwarf2out.c (loc_list_from_tree_1): Do not create
29546         DW_OP_GNU_variable_value for DECL_IGNORED_P decls.
29547
29548 2017-05-16  Richard Biener  <rguenther@suse.de>
29549
29550         * dwarf2out.c (resolve_variable_value_in_expr): Lookup DIE
29551         just generated.
29552         (note_variable_value_in_expr): If we resolved the decl ref
29553         do not push to the stack.
29554
29555 2017-05-16  Matthew Wahab  <matthew.wahab@arm.com>
29556
29557         * config/arm/arm_neon.h (vadd_f16): Use standard arithmetic
29558         operations in fast-math mode.
29559         (vaddq_f16): Likewise.
29560         (vmul_f16): Likewise.
29561         (vmulq_f16): Likewise.
29562         (vsub_f16): Likewise.
29563         (vsubq_f16): Likewise.
29564         * config/arm/neon.md (add<mode>3): New.
29565         (sub<mode>3): New.
29566         (fma:<VH:mode>3): New.  Also remove outdated comment.
29567         (mul<mode>3): New.
29568
29569 2017-05-16  Martin Liska  <mliska@suse.cz>
29570
29571         PR ipa/79849.
29572         PR ipa/79850.
29573         * ipa-devirt.c (warn_types_mismatch): Fix typo.
29574         (odr_types_equivalent_p): Likewise.
29575
29576 2017-05-15  Sylvestre Ledru  <sylvestre@debian.org>
29577
29578         * plugin.c (try_init_one_plugin): Fix ressource leaks (CID 726637).
29579
29580 2017-05-15  Uros Bizjak  <ubizjak@gmail.com>
29581
29582         PR target/80425
29583         * config/i386.i386.md (*zero_extendsidi2): Do not penalize
29584         non-interunit SSE move alternatives with '?'.
29585         (zero-extendsidi peephole2): New peephole to skip intermediate
29586         general register in SSE zero-extend sequence.
29587
29588 2017-05-15  Jeff Law  <law@redhat.com>
29589
29590         * reorg.c (relax_delay_slots): Create a new variable to hold
29591         the temporary target rather than clobbering TARGET_LABEL.
29592
29593         * config/tilegx/tilegx.c (tilegx_expand_unaligned_load): Add
29594         missing argument to extract_bit_field call.
29595         * config/tilepro/tilepro.c (tilepro_expand_unaligned_load): Likewise.
29596
29597 2017-05-15  Martin Liska  <mliska@suse.cz>
29598
29599         PR driver/31468
29600         * gcc.c (process_command): Do not allow empty argument of -o option.
29601
29602 2017-05-15  Renlin Li  <renlin.li@arm.com>
29603
29604         * config/aarch64/aarch64-protos.h (aarch64_expand_call): Declare.
29605         * config/aarch64/aarch64.c (aarch64_expand_call): Define.
29606         * config/aarch64/constraints.md (Usf): Add long call check.
29607         * config/aarch64/aarch64.md (call): Use aarch64_expand_call.
29608         (call_value): Likewise.
29609         (sibcall): Likewise.
29610         (sibcall_value): Likewise.
29611         (call_insn): New.
29612         (call_value_insn): New.
29613         (sibcall_insn): Update rtx pattern.
29614         (sibcall_value_insn): Likewise.
29615         (call_internal): Remove.
29616         (call_value_internal): Likewise.
29617         (sibcall_internal): Likewise.
29618         (sibcall_value_internal): Likewise.
29619         (call_reg): Likewise.
29620         (call_symbol): Likewise.
29621         (call_value_reg): Likewise.
29622         (call_value_symbol): Likewise.
29623
29624 2017-05-14  Krister Walfridsson  <krister.walfridsson@gmail.com>
29625
29626         PR target/80600
29627         * config/netbsd.h (NETBSD_LIBGCC_SPEC): Always add -lgcc.
29628
29629 2017-05-14  Uros Bizjak  <ubizjak@gmail.com>
29630
29631         * config/i386.i386.c (ix86_cc_modes_compatible): CCNOmode is
29632         compatible with CCGOCmode and with CCZmode.
29633
29634 2017-05-14  Martin Sebor  <msebor@redhat.com>
29635
29636         PR middle-end/77671
29637         * gimple-fold.c (gimple_fold_builtin_sprintf): Make extern.
29638         (gimple_fold_builtin_snprintf): Same.
29639         * gimple-fold.h (gimple_fold_builtin_sprintf): Declare.
29640         (gimple_fold_builtin_snprintf): Same.
29641         * gimple-ssa-sprintf.c (get_format_string): Correct the detection
29642         of character types.
29643         (is_call_safe): New function.
29644         (try_substitute_return_value): Call it.
29645         (try_simplify_call): New function.
29646         (pass_sprintf_length::handle_gimple_call): Call it.
29647
29648 2017-05-14  Martin Sebor  <msebor@redhat.com>
29649
29650         PR middle-end/80669
29651         * builtins.c (expand_builtin_stpncpy): Simplify.
29652
29653 2017-05-14  Daniel Santos  <daniel.santos@pobox.com>
29654
29655         * config/i386/i386.opt: Add option -mcall-ms2sysv-xlogues.
29656         * config/i386/i386.h
29657         (x86_64_ms_sysv_extra_clobbered_registers): Change type to unsigned.
29658         (NUM_X86_64_MS_CLOBBERED_REGS): New macro.
29659         (struct machine_function): Add new members call_ms2sysv,
29660         call_ms2sysv_pad_in, call_ms2sysv_pad_out and call_ms2sysv_extra_regs.
29661         (struct machine_frame_state): New fields sp_realigned and
29662         sp_realigned_offset.
29663         * config/i386/i386.c
29664         (enum xlogue_stub): New enum.
29665         (enum xlogue_stub_sets): New enum.
29666         (class xlogue_layout): New class.
29667         (struct ix86_frame): New fields stack_realign_allocate_offset,
29668         stack_realign_offset and outlined_save_offset.  Modify comments to
29669         detail stack layout when using out-of-line stubs.
29670         (ix86_target_string): Add -mcall-ms2sysv-xlogues option.
29671         (ix86_option_override_internal): Add sorry() for TARGET_SEH and
29672         -mcall-ms2sysv-xlogues.
29673         (stub_managed_regs): New static variable.
29674         (ix86_save_reg): Add new parameter ignore_outlined to optionally omit
29675         registers managed by out-of-line stub.
29676         (disable_call_ms2sysv_xlogues): New function.
29677         (ix86_compute_frame_layout): Modify re-alignment calculations, disable
29678         m->call_ms2sysv when appropriate and compute frame layout for
29679         out-of-line stubs.
29680         (sp_valid_at, fp_valid_at): New inline functions.
29681         (choose_basereg): New function.
29682         (choose_baseaddr): Add align parameter, use choose_basereg and modify
29683         all callers.
29684         (ix86_emit_save_reg_using_mov, ix86_emit_restore_sse_regs_using_mov):
29685         Use align parameter of choose_baseaddr to generated aligned SSE movs
29686         when possible.
29687         (pro_epilogue_adjust_stack): Modify to track
29688         machine_frame_state::sp_realigned.
29689         (ix86_nsaved_regs): Modify to accommodate changes to ix86_save_reg.
29690         (ix86_nsaved_sseregs): Likewise.
29691         (ix86_emit_save_regs): Likewise.
29692         (ix86_emit_save_regs_using_mov): Likewise.
29693         (ix86_emit_save_sse_regs_using_mov): Likewise.
29694         (get_scratch_register_on_entry): Likewise.
29695         (gen_frame_set): New function.
29696         (gen_frame_load): Likewise.
29697         (gen_frame_store): Likewise.
29698         (emit_outlined_ms2sysv_save): Likewise.
29699         (emit_outlined_ms2sysv_restore): Likewise.
29700         (ix86_expand_prologue): Modify stack re-alignment code and call
29701         emit_outlined_ms2sysv_save when appropriate.
29702         (ix86_emit_leave): Clear machine_frame_state::sp_realigned.  Add
29703         parameter rtx_insn *insn, which allows the function to be used to only
29704         generate the notes.
29705         (ix86_expand_epilogue): Modify validity checks of frame and stack
29706         pointers, and call emit_outlined_ms2sysv_restore when appropriate.
29707         (ix86_expand_call): Modify to enable m->call_ms2sysv when appropriate.
29708         * config/i386/predicates.md
29709         (save_multiple): New predicate.
29710         (restore_multiple): Likewise.
29711         * config/i386/sse.md
29712         (save_multiple<mode>): New pattern.
29713         (save_multiple_realign<mode>): Likewise.
29714         (restore_multiple<mode>): Likewise.
29715         (restore_multiple_and_return<mode>): Likewise.
29716         (restore_multiple_leave_return<mode>): Likewise.
29717         * Makefile.in: Export HOSTCXX and HOSTCXXFLAGS to site.exp
29718
29719 2017-05-14  Julia Koval  <julia.koval@intel.com>
29720
29721         * config/i386/i386-builtin-types.def (VOID_FTYPE_INT_INT64): New type.
29722         * config/i386/i386-builtin.def (__builtin_ia32_xgetbv)
29723         (__builtin_ia32_xsetbv): New builtins.
29724         * config/i386/i386.c (ix86_expand_special_args_builtin):
29725         Process new types.
29726         (ix86_expand_builtin): Special expand for new intrinsics.
29727         * config/i386/i386.md (UNSPECV_XGETBV, UNSPECV_XSETBV): New.
29728         (xsetbv, xsetbv_rex64, xgetbv, xgetbv_rex64): New insn patterns.
29729         * config/i386/xsaveintrin.h (_xsetbv, _getbv): New intrinsics.
29730
29731 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
29732
29733         * cfganal.c (inverted_post_order_compute): Change argument type
29734         to vec *.
29735         * cfganal.h (inverted_post_order_compute): Adjust prototype.
29736         * df-core.c (rest_of_handle_df_initialize): Adjust.
29737         (rest_of_handle_df_finish): Likewise.
29738         (df_analyze_1): Likewise.
29739         (df_analyze): Likewise.
29740         (loop_inverted_post_order_compute): Change argument to be a vec *.
29741         (df_analyze_loop): Adjust.
29742         (df_get_n_blocks): Likewise.
29743         (df_get_postorder): Likewise.
29744         * df.h (struct df_d): Change field to be a vec.
29745         * lcm.c (compute_laterin): Adjust.
29746         (compute_available): Likewise.
29747         * lra-lives.c (lra_create_live_ranges_1): Likewise.
29748         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
29749         * tree-ssa-pre.c (compute_antic): Likewise.
29750
29751 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
29752
29753         * cfganal.c (connect_infinite_loops_to_exit): Adjust.
29754         (depth_first_search::depth_first_search): Change structure init
29755         function to this constructor.
29756         (depth_first_search::add_bb): Rename function to this member.
29757         (depth_first_search::execute): Likewise.
29758         (flow_dfs_compute_reverse_finish): Adjust.
29759
29760 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
29761
29762         * ddg.c (find_nodes_on_paths): Use auto_sbitmap.
29763         (longest_simple_path): Likewise.
29764         * shrink-wrap.c (spread_components): Likewise.
29765         (disqualify_problematic_components): Likewise.
29766         (emit_common_heads_for_components): Likewise.
29767         (emit_common_tails_for_components): Likewise.
29768         (insert_prologue_epilogue_for_components): Likewise.
29769
29770 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
29771
29772         * tree-ssa-dse.c (dse_dom_walker): Make m_live_byes a
29773         auto_sbitmap.
29774
29775 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
29776
29777         * df-core.c (df_set_blocks): Start using auto_bitmap.
29778         (df_compact_blocks): Likewise.
29779         * df-problems.c (df_rd_confluence_n): Likewise.
29780         * df-scan.c (df_insn_rescan_all): Likewise.
29781         (df_process_deferred_rescans): Likewise.
29782         (df_update_entry_block_defs): Likewise.
29783         (df_update_exit_block_uses): Likewise.
29784         (df_entry_block_bitmap_verify): Likewise.
29785         (df_exit_block_bitmap_verify): Likewise.
29786         (df_scan_verify): Likewise.
29787         * lra-constraints.c (lra_constraints): Likewise.
29788         (undo_optional_reloads): Likewise.
29789         (lra_undo_inheritance): Likewise.
29790         * lra-remat.c (calculate_gen_cands): Likewise.
29791         (do_remat): Likewise.
29792         * lra-spills.c (assign_spill_hard_regs): Likewise.
29793         (spill_pseudos): Likewise.
29794         * tree-ssa-pre.c (bitmap_set_and): Likewise.
29795         (bitmap_set_subtract_values): Likewise.
29796
29797 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
29798
29799         * haifa-sched.c (estimate_shadow_tick): Replace manual bitmap
29800         management with auto_bitmap.
29801         (fix_inter_tick): Likewise.
29802         (fix_recovery_deps): Likewise.
29803         * ira.c (add_store_equivs): Likewise.
29804         (find_moveable_pseudos): Likewise.
29805         (split_live_ranges_for_shrink_wrap): Likewise.
29806         * print-rtl.c (rtx_reuse_manager::rtx_reuse_manager): Likewise.
29807         (rtx_reuse_manager::seen_def_p): Likewise.
29808         (rtx_reuse_manager::set_seen_def): Likewise.
29809         * print-rtl.h (class rtx_reuse_manager): Likewise.
29810
29811 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
29812
29813         * bt-load.c (combine_btr_defs): Use auto_bitmap to manage bitmap
29814         lifetime.
29815         (migrate_btr_def): Likewise.
29816         * cfgloop.c (get_loop_body_in_bfs_order): Likewise.
29817         * df-core.c (loop_post_order_compute): Likewise.
29818         (loop_inverted_post_order_compute): Likewise.
29819         * hsa-common.h: Likewise.
29820         * hsa-gen.c (hsa_bb::~hsa_bb): Likewise.
29821         * init-regs.c (initialize_uninitialized_regs): Likewise.
29822         * ipa-inline.c (resolve_noninline_speculation): Likewise.
29823         (inline_small_functions): Likewise.
29824         * ipa-reference.c (ipa_reference_write_optimization_summary): Likewise.
29825         * ira.c (combine_and_move_insns): Likewise.
29826         (build_insn_chain): Likewise.
29827         * loop-invariant.c (find_invariants): Likewise.
29828         * lower-subreg.c (propagate_pseudo_copies): Likewise.
29829         * predict.c (tree_predict_by_opcode): Likewise.
29830         (predict_paths_leading_to): Likewise.
29831         (predict_paths_leading_to_edge): Likewise.
29832         (estimate_loops_at_level): Likewise.
29833         (estimate_loops): Likewise.
29834         * shrink-wrap.c (try_shrink_wrapping): Likewise.
29835         (spread_components): Likewise.
29836         * tree-cfg.c (remove_edge_and_dominated_blocks): Likewise.
29837         * tree-loop-distribution.c (rdg_build_partitions): Likewise.
29838         * tree-predcom.c (tree_predictive_commoning_loop): Likewise.
29839         * tree-ssa-coalesce.c (coalesce_ssa_name): Likewise.
29840         * tree-ssa-phionlycprop.c (pass_phi_only_cprop::execute): Likewise.
29841         * tree-ssa-pre.c (remove_dead_inserted_code): Likewise.
29842         * tree-ssa-sink.c (nearest_common_dominator_of_uses): Likewise.
29843         * tree-ssa-threadupdate.c (compute_path_counts): Likewise.
29844         (mark_threaded_blocks): Likewise.
29845         (thread_through_all_blocks): Likewise.
29846         * tree-ssa.c (verify_ssa): Likewise.
29847         (execute_update_addresses_taken): Likewise.
29848         * tree-ssanames.c (verify_ssaname_freelists): Likewise.
29849
29850 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
29851
29852         * cfganal.c (mark_dfs_back_edges): Replace manual stack with
29853         auto_vec.
29854         (post_order_compute): Likewise.
29855         (inverted_post_order_compute): Likewise.
29856         (pre_and_rev_post_order_compute_fn): Likewise.
29857
29858 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
29859
29860         * genrecog.c (int_set::int_set): Explicitly construct our
29861         auto_vec base class.
29862         * vec.h (auto_vec::auto_vec): New constructor.
29863
29864 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
29865
29866         * bitmap.h (class auto_bitmap): New constructor taking
29867         bitmap_obstack * argument.
29868
29869 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
29870
29871         * bitmap.h (class auto_bitmap): Change type of m_bits to
29872         bitmap_head, and adjust ctor / dtor and member operators.
29873
29874 2017-05-13  Uros Bizjak  <ubizjak@gmail.com>
29875
29876         * compare-elim.c (equivalent_reg_at_start): Return NULL_RTX
29877         when returned register mode doesn't match original mode.
29878
29879 2017-05-12  Jeff Law  <law@redhat.com>
29880             Jakub Jelinek  <jakub@redhat.com>
29881
29882         * config/mn10300/mn10300.c (mn10300_match_ccmode): Fix where
29883         we look for cc setter after the compare-elim changes.
29884         * config/mn10300/mn10300.md (addsi3_flags): Fix order of patterns
29885         within the vector to match what compare-elim now expects.
29886         (subsi3_flags, andsi3_flags, iorsi3_flags): Likewise.
29887         (xorsi3_flags, one_cmplsi2_flags): Likewise.
29888
29889         * config/rx/rx.c (rx_match_ccmode): Fix where we look cc setter
29890         after the compare-elim changes.
29891         * config/rx/rx.md (abssi2_flags): Fix order of patterns within
29892         the vector to match what compare-elim now expects.
29893         (addsi3_flags, adc_flags, addsi3_flags peepholes): Likewise.
29894         (andsi3_flags, negsi2_flags, one_cmplsi2_flags): Likewise.
29895         (iorsi3_flags, rotlsi3_flags, rotrsi3_flags): Likewise.
29896         (ashrsi3_flags, lshrsi3_flags, ashlsi3_flags): Likewise.
29897         (ssaddsi3, subsi3_flags, sbb_flags, xorsi3_flags): Likewise.
29898
29899         * config/visium/visium.c (single_set_and_flags): Fix where
29900         we look for cc setter after the compare-elim changes.
29901         * config/visium/visium.md (flags_subst_logic): Fix order of patterns
29902         with the vector to match what compare-elim now expects.
29903         (flags_subst_arith, add<mode>3_insn_set_carry): Likewise.
29904         (add<mode>3_insn_set_overflow, addsi3_insn_set_carry): Likewise.
29905         (addsi3_insn_set_overflow, sub<mode>3_insn_set_carry): Likewise.
29906         (sub<mode>3_insn_set_overflow, subsi3_insn_set_carry): Likewise.
29907         (subsi3_insn_set_overflow, negsi2_insn_set_carry): Likewise.
29908         (neg<mode>2_insn_set_overflow): Likewise.
29909
29910 2017-05-12  Jim Wilson  <jim.wilson@linaro.org>
29911
29912         PR middle-end/79794
29913         * expmed.c (extract_bit_field_1): Add alt_rtl argument.  Before
29914         maybe_expand_insn call, set ops[0].target.  If still set after call,
29915         set alt_rtl.  Add extra arg to recursive calls.
29916         (extract_bit_field): Add alt_rtl argument.  Pass to
29917         extract_bit_field.
29918         * expmed.h (extract_bit_field): Fix prototype.
29919         * expr.c (emit_group_load_1, copy_blkmode_from_reg)
29920         (copy_blkmode_to_reg, read_complex_part, store_field): Pass extra NULL
29921         to extract_bit_field_calls.
29922         (expand_expr_real_1): Pass alt_rtl to expand_expr_real instead of 0.
29923         Pass alt_rtl to extract_bit_field calls.
29924         * calls.c (store_unaligned_arguments_into_psuedos)
29925         load_register_parameters): Pass extra NULL to extract_bit_field calls.
29926         * optabs.c (maybe_legitimize_operand): Clear op->target when call
29927         gen_reg_rtx.
29928         * optabs.h (struct expand_operand): Add target bitfield.
29929
29930 2017-05-12  Uros Bizjak  <ubizjak@gmail.com>
29931
29932         * compare-elim.c (try_eliminate_compare): Canonicalize
29933         operation with embedded compare to
29934         [(set (reg:CCM) (compare:CCM (operation) (immediate)))
29935          (set (reg) (operation)].
29936
29937         * config/i386/i386.c (TARGET_FLAGS_REGNUM): New define.
29938
29939 2017-05-12  Uros Bizjak  <ubizjak@gmail.com>
29940
29941         PR target/80723
29942         * config/i386/i386.c (ix86_rtx_cost) [case PLUS]: Ignore the
29943         cost of adding a carry flag for ADC instruction.
29944         [case MINUS]: Ignore the cost of subtracting a carry flag
29945         for SBB instruction.
29946
29947 2017-05-12  Steven Munroe  <munroesj@gcc.gnu.org>
29948
29949         * config.gcc (powerpc*-*-*): Add bmi2intrin.h, bmiintrin.h,
29950         and x86intrin.h
29951         * config/rs6000/bmiintrin.h: New file.
29952         * config/rs6000/bmi2intrin.h: New file.
29953         * config/rs6000/x86intrin.h: New file.
29954
29955 2017-05-12  Jeff Law  <law@redhat.com>
29956
29957         * tree-vrp.c (vrp_dom_walker::before_dom_children): Push unwinding
29958         markers.
29959
29960 2017-05-12  Peter Bergner  <bergner@vnet.ibm.com>
29961
29962         PR middle-end/80707
29963         * tree-cfg.c: Remove cfg edges of unreachable case statements.
29964
29965 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
29966
29967         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling for
29968         early expansion of vector divide builtins.
29969         (builtin_function_type): Add VSX_BUILTIN_UDIV_V2DI to the list of
29970         builtins identified as having unsigned arguments.
29971
29972 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
29973
29974         * config/rs6000/rs6000.c (gimple-fold.h): New #include.
29975         (rs6000_gimple_fold_builtin): Add handling for early GIMPLE
29976         expansion of vector logical operations (and, andc, or, xor,
29977         nor, orc, nand).
29978
29979 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
29980
29981         * gimple-fold.c (create_tmp_reg_or_ssa_name): Remove static declaration.
29982         * gimple-fold.h (create_tmp_reg_or_ssa_name): New prototype.
29983
29984 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
29985
29986         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling for
29987         early GIMPLE expansion of vector multiplies.
29988
29989 2017-05-12  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
29990
29991         * config/arm/arm.md (movsi): Add TARGET_32BIT in addition to the
29992         TARGET_HAVE_MOVT conditional.
29993         (movt splitter): Likewise.
29994
29995 2017-05-12  Richard Biener  <rguenther@suse.de>
29996
29997         * tree-ssa-sccvn.h (has_VN_INFO): Declare.
29998         * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
29999         Fold all stmts not inplace.
30000
30001 2017-05-12  Richard Biener  <rguenther@suse.de>
30002
30003         PR tree-optimization/80713
30004         * tree-ssa-pre.c (remove_dead_inserted_code): Clear
30005         inserted_exprs bit for not removed stmts.
30006
30007 2017-05-12  Thomas Schwinge  <thomas@codesourcery.com>
30008
30009         PR middle-end/69921
30010         * tree-parloops.c (create_parallel_loop): Set "oacc kernels
30011         parallelized" attribute for parallelized OpenACC kernels.
30012         * omp-offload.c (execute_oacc_device_lower): Use it.
30013
30014         * omp-expand.c (expand_omp_target) <GF_OMP_TARGET_KIND_OACC_KERNELS>:
30015         Set "oacc kernels" attribute.
30016         * omp-general.c (oacc_set_fn_attrib): Remove is_kernel formal
30017         parameter.  Adjust all users.
30018         (oacc_fn_attrib_kernels_p): Remove function.
30019         * omp-offload.c (execute_oacc_device_lower): Look for "oacc
30020         kernels" attribute instead of calling oacc_fn_attrib_kernels_p.
30021         * tree-ssa-loop.c (gate_oacc_kernels): Likewise.
30022         * tree-parloops.c (create_parallel_loop): If oacc_kernels_p,
30023         assert "oacc kernels" attribute is set.
30024
30025 2017-05-11  Carl Love  <cel@us.ibm.com>
30026
30027         * config/rs6000/rs6000-c: Add support for built-in functions
30028         vector unsigned char vec_popcnt (vector signed char)
30029         vector unsigned char vec_popcnt (vector unsigned char)
30030         vector unsigned short vec_popcnt (vector signed short)
30031         vector unsigned short vec_popcnt (vector unsigned short)
30032         vector unsigned int vec_popcnt (vector signed int)
30033         vector unsigned int vec_popcnt (vector unsigned int)
30034         vector unsigned long long vec_popcnt (vector signed long long)
30035         vector unsigned long long vec_popcnt (vector unsigned long long)
30036         vector signed long long vec_slo (vector signed long long,
30037                                          vector signed char)
30038         vector signed long long vec_slo (vector signed long long,
30039                                          vector unsigned char)
30040         vector unsigned long long vec_slo (vector unsigned long long,
30041                                            vector signed char)
30042         vector unsigned long long vec_slo (vector unsigned long long,
30043                                            vector unsigned char)
30044         * config/rs6000/rs6000-builtin.def: Add definitions for VPOPCNTUB,
30045         VPOPCNTUH, VPOPCNTUW, and VPOPCNTUD overloads.
30046         * config/rs6000/altivec.h: Add define for vec_popcnt, vec_popcntb,
30047         vec_popcnth, vec_popcntw and vec_popcntd built-in functions.
30048         * doc/extend.texi: Update the built-in documentation file for the
30049         new built-in functions.
30050
30051 2017-05-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
30052
30053         * attribs.h (sorted_attr_string): Move machine independent
30054         functions for target clone support from the i386 port to common
30055         code.  Rename ix86_function_versions to common_function_versions.
30056         Rename make_name to make_unique_name.
30057         (common_function_versions): Likewise.
30058         (make_unique_name): Likewise.
30059         (make_dispatcher_decl): Likewise.
30060         (is_function_default_version): Likewise.
30061         * attribs.c (attr_strcmp): Likewise.
30062         (sorted_attr_string): Likewise.
30063         (common_function_versions): Likewise.
30064         (make_unique_name): Likewise.
30065         (make_dispatcher_decl): Likewise.
30066         (is_function_default_version): Likewise.
30067         * config/i386/i386.c (attr_strcmp): Likewise.
30068         (sorted_attr_string): Likewise.
30069         (ix86_function_versions): Likewise.
30070         (make_name): Likewise.
30071         (make_dispatcher_decl): Likewise.
30072         (is_function_default_version): Likewise.
30073         (TARGET_OPTION_FUNCTION_VERSIONS): Update target function hook.
30074
30075 2017-05-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
30076
30077         PR target/80695
30078         * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost):
30079         Account for direct move costs for vec_construct of integer
30080         vectors.
30081
30082 2017-05-11  Uros Bizjak  <ubizjak@gmail.com>
30083
30084         PR target/80706
30085         * config/i386/sync.md (UNSPEC_LDX_ATOMIC): New unspec.
30086         (UNSPEC_STX_ATOMIC): Ditto.
30087         (loaddi_via_sse): New insn.
30088         (storedi_via_sse): Ditto.
30089         (atomic_loaddi_fpu): Emit loaddi_via_sse and storedi_via_sse.
30090         Update corresponding peephole2 patterns.
30091         (atomic_storedi_fpu): Ditto.
30092
30093 2017-05-11  Julia Koval  <julia.koval@intel.com>
30094
30095         * config/i386/avx512fintrin.h (_mm_mask_rsqrt14_sd)
30096         (_mm_maskz_rsqrt14_sd, _mm_mask_rsqrt14_ss, _mm_maskz_rsqrt14_ss):
30097         New intrinsics.
30098         * config/i386/i386-builtin.def (__builtin_ia32_rsqrt14sd_mask)
30099         (__builtin_ia32_rsqrt14ss_mask): New builtins.
30100         * config/i386/sse.md (rsqrt14_<mode>_mask): New pattern.
30101
30102 2017-05-11  Nathan Sidwell  <nathan@acm.org>
30103
30104         * graphite-poly.c: Include dumpfile.h.
30105
30106         * dumpfle.h (dump_function): Declare here ...
30107         * tree-dump.h (dump_function): ... not here.
30108         * dumpfile.c: #include tree-cfg.h.
30109         (dump_function): Move here from ...
30110         * tree-dump.c (dump_function): ... here.
30111         * gimplify.c: #include splay-tree.h, not tree-dump.h.
30112         * graphite-poly.c: Don't include tree-dump.h.
30113         * cgraphclones.c: Include dumpfile.h not tree-dump.h.
30114         * print-tree.c: Likewise.
30115         * stor-layout.c: Likewise.
30116         * tree-nested.c: Likewise.
30117
30118         * dumpfile.c (dump_start): Use TDF_FLAGS.
30119         (dump_enable_all): Fix TDF_KIND check thinko.
30120
30121 2017-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
30122
30123         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
30124         array entries to represent two legal parameterizations of the
30125         overloaded __builtin_cmpb function, as represented by the
30126         P6_OV_BUILTIN_CMPB constant.
30127         (altivec_resolve_overloaded_builtin): Add special case handling
30128         for the __builtin_cmpb function, as represented by the
30129         P6_OV_BUILTIN_CMPB constant.
30130         * config/rs6000/rs6000-builtin.def (BU_P6_2): New macro.
30131         (BU_P6_64BIT_2): New macro.
30132         (BU_P6_OVERLOAD_2): New macro
30133         (CMPB_32): Add 32-bit compare-bytes support for 32-bit only targets.
30134         (CMPB): Add 64-bit compare-bytes support for 32-bit and 64-bit targets.
30135         (CMPB): Add overload support to represent both 32-bit and 64-bit
30136         compare-bytes function.
30137         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add
30138         support for TARGET_CMPB.
30139         * config/rs6000/rs6000.h: Add support for RS6000_BTM_CMPB.
30140         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Add
30141         documentation of the __builtin_cmpb overloaded built-in function.
30142
30143 2017-05-11  Richard Biener  <rguenther@suse.de>
30144
30145         PR tree-optimization/80705
30146         * tree-vect-data-refs.c (vect_analyze_data_refs): DECL_NONALIASED
30147         bases are not vectorizable.
30148
30149 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30150
30151         * tree-ssa-loop-ivopts.c (determine_set_costs): Skip non-interger
30152         when counting register pressure.
30153
30154 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30155
30156         * tree-ssa-loop-ivopts.c (compare_cost_pair): New.
30157         (iv_ca_more_deps): Renamed to ...
30158         (iv_ca_compare_deps): ... this.
30159         (iv_ca_extend): Extend iv_ca if NEW_CP is cheaper than OLD_CP.
30160
30161 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30162
30163         * tree-ssa-loop-ivopts.c (find_interesting_uses): Move inv vars dump
30164         to ...
30165         (determine_group_iv_costs): ... here.
30166         (find_inv_vars_cb): Record inv var if it's not recorded before.
30167
30168 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30169
30170         * tree-ssa-loop-ivopts.c (allow_ip_end_pos_p): Refine comments.
30171         (get_shiftadd_cost): Ditto.
30172
30173 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30174
30175         * tree-ssa-address.c: Include header file.
30176         (move_hint_to_base): Return TRUE if BASE_HINT is moved to memory
30177         address.
30178         (add_to_parts): Refactor.
30179         (addr_to_parts): New parameter.  Update use of move_hint_to_base.
30180         (create_mem_ref): Update use of addr_to_parts.  Re-associate addr
30181         in new order.
30182
30183 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30184
30185         PR tree-optimization/53090
30186         * tree-ssa-loop-ivopts.c (enum comp_iv_rewrite): New enum value
30187         COMP_IV_EXPR_2.
30188         (extract_cond_operands): Detect condition with IV on both sides
30189         and return COMP_IV_EXPR_2.
30190         (find_interesting_uses_cond): Add iv_use for both IVs in condition.
30191         (rewrite_use_compare): Simplify by removing call to function
30192         extract_cond_operands.
30193
30194 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30195
30196         * tree-ssa-loop-ivopts.c (enum comp_iv_rewrite): New.
30197         (extract_cond_operands): Detect condition comparing against non-
30198         invariant bound and return appropriate enum value.
30199         (find_interesting_uses_cond): Update use of extract_cond_operands.
30200         Handle its return value accordingly.
30201         (determine_group_iv_cost_cond, rewrite_use_compare): Ditto.
30202
30203 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30204
30205         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Re-associate
30206         nonlinear iv_use computation in loop invariant sensitive way.
30207
30208 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30209
30210         * tree-ssa-loop-ivopts.c (relate_compare_use_with_all_cands): New.
30211         (find_iv_candidates): Call relate_compare_use_with_all_cands.
30212
30213 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30214
30215         * tree-ssa-loop-ivopts.c (struct iv_cand): New field inv_exprs.
30216         (dump_cand): Support iv_cand.inv_exprs.
30217         (add_candidate_1): Record invariant exprs in iv_cand.inv_exprs
30218         for candidates.
30219         (iv_ca_set_no_cp, iv_ca_set_cp, free_loop_data): Support
30220         iv_cand.inv_exprs.
30221
30222 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30223
30224         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Move
30225         from ...
30226         * tree-ssa-address.c (multiplier_allowed_in_address_p): ... to here
30227         as local function.  Include necessary header files.
30228         * tree-ssa-loop-ivopts.h (multiplier_allowed_in_address_p): Delete.
30229
30230 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30231
30232         * tree-ssa-loop-ivopts.c (autoinc_possible_for_pair): Simplify.
30233
30234 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30235
30236         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Handle more
30237         operators: TRUNC_DIV_EXPR, BIT_AND_EXPR, BIT_IOR_EXPR, LSHIFT_EXPR,
30238         RSHIFT_EXPR and BIT_NOT_EXPR.
30239
30240 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30241
30242         * tree-ssa-loop-ivopts.c (get_loop_invariant_expr): Simplify.
30243         (adjust_setup_cost): New parameter supporting round up adjustment.
30244         (struct address_cost_data): Delete.
30245         (force_expr_to_var_cost): Don't bound cost with spill_cost.
30246         (split_address_cost, ptr_difference_cost): Delete.
30247         (difference_cost, compare_aff_trees, record_inv_expr): Delete.
30248         (struct ainc_cost_data): New struct.
30249         (get_address_cost_ainc): New function.
30250         (get_address_cost, get_computation_cost): Reimplement.
30251         (determine_group_iv_cost_address): Record inv_expr for all uses of
30252         a group.
30253         (determine_group_iv_cost_cond): Call get_loop_invariant_expr.
30254         (iv_ca_has_deps): Reimplemented to ...
30255         (iv_ca_more_deps): ... this.  Check if NEW_CP introduces more deps
30256         than OLD_CP.
30257         (iv_ca_extend): Call iv_ca_more_deps.
30258
30259 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30260
30261         * tree-ssa-address.c (struct mem_address): Move to header file.
30262         (valid_mem_ref_p, move_fixed_address_to_symbol): Make it global.
30263         * tree-ssa-address.h (struct mem_address): Move from C file.
30264         (valid_mem_ref_p, move_fixed_address_to_symbol): Declare.
30265
30266 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30267
30268         * tree-affine.h (aff_combination_type): New interface.
30269         (aff_combination_zero_p): Remove static.
30270         (aff_combination_const_p): New interface.
30271         (aff_combination_singleton_var_p): New interfaces.
30272
30273 2017-05-11  Richard Biener  <rguenther@suse.de>
30274
30275         * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
30276         Skip unreachable blocks and destinations.
30277         (eliminate): Move stmt removal and fixup ...
30278         (fini_eliminate): ... here.  Skip inserted exprs.
30279         (pass_pre::execute): Move fini_pre after fini_eliminate.
30280         * tree-ssa-tailmerge.c: Include tree-cfgcleanup.h.
30281         (tail_merge_optimize): Run cleanup_tree_cfg if requested by
30282         PRE to get rid of dead code that has invalid SSA form and
30283         split critical edges again.
30284
30285 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
30286
30287         * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
30288
30289 2017-05-11  Richard Biener  <rguenther@suse.de>
30290
30291         * passes.c (execute_function_todo): Verify loops if they are
30292         said to be up-to-date.
30293         * cfgexpand.c (pass_expand::execute): Discard loops for -dx.
30294         * trans-mem.c (pass_tm_edges::execute): Mark loops for fixup.
30295
30296 2017-05-10  John David Anglin  <danglin@gcc.gnu.org>
30297
30298         PR target/80090
30299         * config/pa/pa.c (pa_assemble_integer): When outputting a SYMBOL_REF,
30300         handle calling assemble_external ourself.
30301
30302         PR target/79027
30303         * config/pa/pa.c (pa_cannot_change_mode_class): Reject changes to/from
30304         modes with zero size.  Enhance comment.
30305
30306 2017-05-10  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
30307
30308         * config/rs6000/rs6000.c (altivec_init_builtins): Define POWER8
30309         built-ins for vec_xl and vec_xst with short and char pointer
30310         arguments.
30311
30312 2017-05-10  Sebastian Peryt  <sebastian.peryt@intel.com>
30313
30314         * config/i386/avx512fintrin.h (_mm_mask_max_round_sd)
30315         (_mm_maskz_max_round_sd, _mm_mask_max_round_ss)
30316         (_mm_maskz_max_round_ss, _mm_mask_min_round_sd)
30317         (_mm_maskz_min_round_sd, _mm_mask_min_round_ss)
30318         (_mm_maskz_min_round_ss): New intrinsics.
30319         * config/i386/i386-builtin-types.def (V2DF, V2DF, V2DF, V2DF, UQI, INT)
30320         (V4SF, V4SF, V4SF, V4SF, UQI, INT): New function type aliases.
30321         * config/i386/i386-builtin.def (__builtin_ia32_maxsd_mask_round)
30322         (__builtin_ia32_maxss_mask_round, __builtin_ia32_minsd_mask_round)
30323         (__builtin_ia32_minss_mask_round): New builtins.
30324         * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
30325         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types.
30326         * config/i386/sse.md (<sse>_vm<code><mode>3<round_saeonly_name>):
30327         Rename to ...
30328         (<sse>_vm<code><mode>3<mask_name><round_saeonly_name>): ... this.
30329         (v<maxmin_float><ssescalarmodesuffix>\t{<round_saeonly_op3>%2, %1, %0|%0, %1, %<iptr>2<round_saeonly_op3>}):
30330         Change to ...
30331         (v<maxmin_float><ssescalarmodesuffix>\t{<round_saeonly_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_saeonly_mask_op3>}):
30332         ... this.
30333
30334 2017-05-10  Sebastian Peryt  <sebastian.peryt@intel.com>
30335
30336         * config/i386/avx512fintrin.h (_mm_mask_mul_round_sd)
30337         (_mm_maskz_mul_round_sd, _mm_mask_mul_round_ss)
30338         (_mm_maskz_mul_round_ss, _mm_mask_div_round_sd)
30339         (_mm_maskz_div_round_sd, _mm_mask_div_round_ss)
30340         (_mm_maskz_div_round_ss, _mm_mask_mul_sd, _mm_maskz_mul_sd)
30341         (_mm_mask_mul_ss, _mm_maskz_mul_ss, _mm_mask_div_sd)
30342         (_mm_maskz_div_sd, _mm_mask_div_ss, _mm_maskz_div_ss): New intrinsics.
30343         * config/i386/i386-builtin-types.def (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
30344         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): New function type aliases.
30345         * config/i386/i386-builtin.def (__builtin_ia32_divsd_mask_round)
30346         (__builtin_ia32_divss_mask_round, __builtin_ia32_mulsd_mask_round)
30347         (__builtin_ia32_mulss_mask_round): New builtins.
30348         * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
30349         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types.
30350         * config/i386/sse.md (<sse>_vm<multdiv_mnemonic><mode>3<round_name>):
30351         Rename to ...
30352         (<sse>_vm<multdiv_mnemonic><mode>3<mask_name><round_name>): ... this.
30353         (v<multdiv_mnemonic><ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|%0, %1, %<iptr>2<round_op3>}):
30354         Change to ...
30355         (v<multdiv_mnemonic><ssescalarmodesuffix>\t{<round_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}):
30356         ... this.
30357
30358 2017-05-10  Julia Koval  <julia.koval@intel.com>
30359
30360         * config/i386/avxintrin.h (_mm256_set_m128, _mm256_set_m128d)
30361         (_mm256_set_m128i, _mm256_setr_m128, _mm256_setr_m128d)
30362         (_mm256_setr_m128i): New intrinsics.
30363
30364 2017-05-10  Julia Koval  <julia.koval@intel.com>
30365
30366         * config/i386/avx512fintrin.h (_mm_mask_rcp14_sd)
30367         (_mm_maskz_rcp14_sd, _mm_mask_rcp14_ss)
30368         (_mm_maskz_rcp14_ss): New intrinsics.
30369         * config/i386/i386-builtin.def (__builtin_ia32_rcp14sd_mask)
30370         (__builtin_ia32_rcp14ss_mask): New builtins.
30371         * config/i386/sse.md (srcp14<mode>_mask): New pattern.
30372
30373 2017-05-10  Peter Bergner  <bergner@vnet.ibm.com>
30374
30375         PR tree-optimization/51513
30376         * tree-cfg.c (gimple_seq_unreachable_p): New function.
30377         (assert_unreachable_fallthru_edge_p): Use it.
30378         (group_case_labels_stmt): Likewise.
30379         * tree-cfg.h: Prototype it.
30380         * stmt.c: Include cfghooks.h and tree-cfg.h.
30381         (emit_case_dispatch_table) <gap_label>: New local variable.
30382         Use it to fill dispatch table gaps.
30383         Test for default_label before updating probabilities.
30384         (expand_case) <default_label>: Remove unneeded initialization.
30385         Test for unreachable default case statement and remove its edge.
30386         Set default_label accordingly.
30387         * tree-ssa-ccp.c (optimize_unreachable): Update comment.
30388
30389 2017-05-10  Carl Love  <cel@us.ibm.com>
30390
30391         * config/rs6000/rs6000-c: Add support for built-in functions
30392         vector signed char      vec_neg (vector signed char)
30393         vector signed short int vec_neg (vector short int)
30394         vector signed int       vec_neg (vector signed int)
30395         vector signed long long vec_neg (vector signed long long)
30396         vector float            vec_neg (vector float)
30397         vector double           vec_neg (vector double)
30398         * config/rs6000/rs6000-builtin.def: Add definitions for NEG function
30399         overload.
30400         * config/rs6000/altivec.h: Add define for vec_neg
30401         * doc/extend.texi: Update the built-in documentation for the
30402         new built-in functions.
30403
30404 2017-05-10  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
30405
30406         PR tree-optimization/77644
30407         * match.pd (sqrt(x) cmp sqrt(y) -> x cmp y): New pattern.
30408
30409 2017-05-10  Nathan Sidwell  <nathan@acm.org>
30410
30411         * dumpfile.h (TDI_lang_all): New.
30412         (TDF_KIND): New. Renumber others
30413         (TDF_LANG, TDF_TREE, TDF_RTL, TDF_IPA): Enumerate value, rather
30414         than bits.
30415         * dumpfile.c (dump_files): Mark language dumps as TDF_LANG.  add
30416         lang-all.
30417         (get_dump_file_name): Adjust suffix generation.
30418         (dump_enable_all): Use TDF_KIND.
30419         * doc/invoke.texi (-fdump-lang-all): Document.
30420
30421         * dumpfile.h: Tabify.
30422
30423 2017-05-10  Wilco Dijkstra  <wdijkstr@arm.com>
30424
30425         PR target/80671
30426         * config/aarch64/cortex-a57-fma-steering.c (merge_forest):
30427         Move member access before delete.
30428
30429 2017-05-10  Alexandre Oliva  <aoliva@redhat.com>
30430
30431         * tree-inline.c (expand_call_inline): Split block at stmt
30432         before the call.
30433
30434 2017-05-09  Michael Meissner  <meissner@linux.vnet.ibm.com>
30435
30436         PR target/68163
30437         * config/rs6000/rs6000.md (f32_lr): Delete mode attributes that
30438         are now unused after splitting mov{sf,sd}_hardfloat.
30439         (f32_lr2): Likewise.
30440         (f32_lm): Likewise.
30441         (f32_lm2): Likewise.
30442         (f32_li): Likewise.
30443         (f32_li2): Likewise.
30444         (f32_lv): Likewise.
30445         (f32_sr): Likewise.
30446         (f32_sr2): Likewise.
30447         (f32_sm): Likewise.
30448         (f32_sm2): Likewise.
30449         (f32_si): Likewise.
30450         (f32_si2): Likewise.
30451         (f32_sv): Likewise.
30452         (f32_dm): Likewise.
30453         (f32_vsx): Likewise.
30454         (f32_av): Likewise.
30455         (mov<mode>_hardfloat): Split into separate movsf and movsd pieces.
30456         For movsf, order stores so the VSX stores occur before the GPR
30457         store which encourages the register allocator to use a traditional
30458         FPR instead of a GPR.  For movsd, order the stores so that the GPR
30459         store comes before the VSX stores to allow the power6 to work.
30460         This is due to the power6 not having a 32-bit integer store
30461         instruction from a FPR.
30462         (movsf_hardfloat): Likewise.
30463         (movsd_hardfloat): Likewise.
30464
30465 2017-05-09  Martin Sebor  <msebor@redhat.com>
30466
30467         PR translation/80280
30468         * config/sol2-c.c (cmn_err_flag_specs): Initialize new data member
30469         added in r247778.
30470
30471         PR translation/80280
30472         * config/i386/msformat-c.c (ms_printf_flag_specs): Initialize new
30473         data member added in r247778.
30474         (ms_scanf_flag_specs, ms_strftime_flag_specs): Same.
30475
30476 2017-05-09  Nathan Sidwell  <nathan@acm.org>
30477
30478         * tree.h (tree_fits_shwi_p, tree_fits_uhwi_p): Unconditionally pure.
30479
30480         * ipa-devirt.c (default_hash_traits<type_pair>): Skip struct-scope
30481         typedefs.
30482
30483 2017-05-09  Marek Polacek  <polacek@redhat.com>
30484
30485         * doc/invoke.texi: Fix typo.
30486
30487 2017-05-09  Richard Biener  <rguenther@suse.de>
30488
30489         * tree-vrp.c (vrp_val_is_max): Adjust comment.
30490         (vrp_val_is_min): Likewise.
30491         (set_value_range_to_value): Likewise.
30492         (set_value_range_to_nonnegative): Likewise.
30493         (gimple_assign_nonzero_p): Likewise.
30494         (gimple_stmt_nonzero_p): Likewise.
30495         (vrp_int_const_binop): Likewise.  Remove unreachable case.
30496         (adjust_range_with_scev): Adjust comments.
30497         (compare_range_with_value): Likewise.
30498         (extract_range_from_phi_node): Likewise.
30499         (test_for_singularity): Likewise.
30500
30501 2017-05-09  Richard Biener  <rguenther@suse.de>
30502
30503         * tree-vrp.c (get_single_symbol): Add assert that we don't
30504         get overflowed constants as invariant part.
30505         (compare_values_warnv): Add comment before the TREE_NO_WARNING
30506         checks.  Use wi::cmp instead of recursing for integer constants.
30507         (compare_values): Just ignore whether we assumed undefined
30508         overflow instead of failing the compare.
30509         (extract_range_for_var_from_comparison_expr): Add comment before the
30510         TREE_NO_WARNING sets.
30511         (test_for_singularity): Likewise.
30512         (extract_range_from_comparison): Do not disable optimization
30513         when we assumed undefined overflow.
30514         (extract_range_basic): Remove init of unused var.
30515
30516 2017-05-09  Richard Biener  <rguenther@suse.de>
30517
30518         * tree-vrp.c (vrp_int_const_binop): Use wide-ints and simplify.
30519         (extract_range_from_multiplicative_op_1): Adjust.
30520         (extract_range_from_binary_expr_1): Use int_const_binop.
30521
30522 2017-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
30523
30524         PR target/80101
30525         * config/rs6000/power6.md: Replace store_data_bypass_p calls with
30526         rs6000_store_data_bypass_p in seven define_bypass directives and
30527         in several comments.
30528         * config/rs6000/rs6000-protos.h: Add prototype for
30529         rs6000_store_data_bypass_p function.
30530         * config/rs6000/rs6000.c (rs6000_store_data_bypass_p): New
30531         function implements slightly different (rs6000-specific) semantics
30532         than store_data_bypass_p, returning false rather than aborting
30533         with assertion error when arguments do not satisfy the
30534         requirements of store data bypass.
30535         (rs6000_adjust_cost): Replace six calls of store_data_bypass_p with
30536         rs6000_store_data_bypass_p.
30537
30538 2017-05-08  Max Filippov  <jcmvbkbc@gmail.com>
30539
30540         * config/xtensa/xtensa-protos.h
30541         (xtensa_initial_elimination_offset): New declaration.
30542         * config/xtensa/xtensa.c (xtensa_initial_elimination_offset):
30543         New function. Move its body from the INITIAL_ELIMINATION_OFFSET
30544         macro definition, add case for FRAME_POINTER_REGNUM when
30545         FRAME_GROWS_DOWNWARD.
30546         * config/xtensa/xtensa.h (FRAME_GROWS_DOWNWARD): New macro definition.
30547         (INITIAL_ELIMINATION_OFFSET): Replace body with call to
30548         xtensa_initial_elimination_offset.
30549
30550 2017-05-08  Nathan Sidwell  <nathan@acm.org>
30551
30552         * doc/invoke.texi: Alphabetize -fdump options.
30553
30554 2017-05-08  Martin Sebor  <msebor@redhat.com>
30555
30556         PR translation/80280
30557         * config/sol2-c.c (solaris_pragma_align): Correct quoting.
30558
30559 2017-05-08  Bernd Edlinger  <bernd.edlinger@hotmail.de>
30560
30561         * target.def (compute_frame_layout): New optional target hook.
30562         * doc/tm.texi.in (TARGET_COMPUTE_FRAME_LAYOUT): Add hook.
30563         * doc/tm.texi (TARGET_COMPUTE_FRAME_LAYOUT): Add documentation.
30564         * lra-eliminations.c (update_reg_eliminate): Call compute_frame_layout
30565         target hook.
30566         * reload1.c (verify_initial_elim_offsets): Likewise.
30567         * config/arm/arm.c (TARGET_COMPUTE_FRAME_LAYOUT): Define.
30568         (use_simple_return_p): Call arm_compute_frame_layout if needed.
30569         (arm_get_frame_offsets): Split up into this ...
30570         (arm_compute_frame_layout): ... and this function.
30571
30572 2017-05-08  Richard Sandiford  <richard.sandiford@arm.com>
30573
30574         * config/aarch64/constraints.md (Usa): New constraint.
30575         * config/aarch64/aarch64.md (*movsi_aarch64, *movdi_aarch64): Use it.
30576
30577 2017-05-08  Thomas Preud'homme  <thomas.preudhomme@arm.com>
30578
30579         * config.gcc (arm*-*-*): Set TM_MULTILIB_CONFIG from
30580         with_multilib_list after it has been checked.
30581
30582 2017-05-08  Richard Biener  <rguenther@suse.de>
30583
30584         * tree-ssa-pre.c (bitmap_set_and): Avoid bitmap copy.
30585         (bitmap_set_subtract_values): Likewise.
30586
30587 2017-05-08  Richard Biener  <rguenther@suse.de>
30588
30589         * tree-vrp.c (gimple_assign_nonzero_warnv_p): Rename to ...
30590         (gimple_assign_nonzero): ... this and remove strict_overflow_p
30591         argument.
30592         (gimple_stmt_nonzero_warnv_p): Rename to ...
30593         (gimple_stmt_nonzero_p): ... this and remove strict_overflow_p
30594         argument.
30595         (vrp_stmt_computes_nonzero): Remove strict_overflow_p argument.
30596         (extract_range_basic): Adjust, do not disable propagation on
30597         strict overflow sensitive simplification.
30598         (vrp_visit_cond_stmt): Likewise.
30599
30600 2017-05-05  Jan Hubicka  <hubicka@ucw.cz>
30601
30602         * ipa-inline-analysis.c (estimate_function_body_sizes): Recompute
30603         body size unconditionally.
30604
30605 2017-05-07  Jeff Law  <law@redhat.com>
30606
30607         Revert:
30608         2017-05-06  Jeff Law  <law@redhat.com>
30609         PR tree-optimization/78496
30610         * tree-vrp.c (simplify_assert_expr_using_ranges): Remove debugging
30611         code.
30612
30613         PR tree-optimization/78496
30614         * tree-vrp.c (simplify_assert_expr_using_ranges): New function.
30615         (simplify_stmt_using_ranges): Call it.
30616         (vrp_dom_walker::before_dom_children): Extract equivalences
30617         from an ASSERT_EXPR with an equality comparison against a
30618         constant.
30619
30620 2017-05-06  Jeff Law  <law@redhat.com>
30621
30622         PR tree-optimization/78496
30623         * tree-vrp.c (simplify_assert_expr_using_ranges): Remove debugging
30624         code.
30625
30626         PR tree-optimization/78496
30627         * tree-vrp.c (simplify_assert_expr_using_ranges): New function.
30628         (simplify_stmt_using_ranges): Call it.
30629         (vrp_dom_walker::before_dom_children): Extract equivalences
30630         from an ASSERT_EXPR with an equality comparison against a
30631         constant.
30632
30633 2017-05-06  Richard Sandiford  <richard.sandiford@linaro.org>
30634
30635         * lra-constraints.c (lra_copy_reg_equiv): New function.
30636         (split_reg): Use it to copy equivalence information from the
30637         original register to the spill register.
30638
30639 2017-05-06  Richard Sandiford  <richard.sandiford@linaro.org>
30640
30641         PR rtl-optimization/75964
30642         * simplify-rtx.c (simplify_const_relational_operation): Remove
30643         invalid handling of comparisons of integer ABS.
30644
30645 2017-05-06  Uros Bizjak  <ubizjak@gmail.com>
30646
30647         * config/i386/i386.c (ext_80387_constant_init): Do not explicitly
30648         initialize to zero.
30649         (init_regs): Remove declaration.
30650         (function_arg_advance_32): Initialize error_p as boolean variable.
30651
30652 2017-05-05  Nathan Sidwell  <nathan@acm.org>
30653
30654         * store-motion.c (remove_reachable_equiv_notes): Reformat long
30655         lines.  Use for (;;).
30656
30657 2017-05-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
30658
30659         * config/rs6000/rs6000.c (rs6000_vect_nonmem): New static var.
30660         (rs6000_init_cost): Initialize rs6000_vect_nonmem.
30661         (rs6000_add_stmt_cost): Update rs6000_vect_nonmem.
30662         (rs6000_finish_cost): Avoid vectorizing simple copy loops with
30663         VF=2 that require versioning.
30664
30665 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
30666
30667         * diagnostic.h (CARET_LINE_MARGIN): Convert from macro to const
30668         int.
30669
30670 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
30671
30672         * diagnostic.h (diagnostic_override_option_index): Convert from
30673         macro to inline function.
30674
30675 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
30676
30677         * diagnostic.c (last_module_changed_p): New function.
30678         (set_last_module): New function.
30679         (diagnostic_report_current_module): Convert macro usage to
30680         the above functions.
30681         * diagnostic.h (diagnostic_context::last_module): Strengthen
30682         from const line_map * to const line_map_ordinary *.
30683         (diagnostic_last_module_changed): Delete macro.
30684         (diagnostic_set_last_module): Delete macro.
30685
30686 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
30687
30688         * diagnostic.c (diagnostic_impl): Replace report_diagnostic
30689         with diagnostic_report_diagnostic.
30690         (diagnostic_n_impl_richloc): Likewise.
30691         * diagnostic.h (report_diagnostic): Delete macro.
30692         * rtl-error.c (diagnostic_for_asm): Replace report_diagnostic
30693         with diagnostic_report_diagnostic.
30694         * substring-locations.c (format_warning_va): Likewise.
30695
30696 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
30697
30698         * diagnostic.c (diagnostic_report_diagnostic): Eliminate
30699         save/restor of format_spec.  Move option-printing code to...
30700         (print_option_information): ...this new function, and
30701         reimplement by simply printing to the pretty_printer,
30702         rather than appending to the format string.
30703
30704 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
30705
30706         * diagnostic.c (diagnostic_report_diagnostic): Split out pragma
30707         handling logic into...
30708         (update_effective_level_from_pragmas): ...this new function.
30709
30710 2017-05-04  Andrew Waterman  <andrew@sifive.com>
30711
30712         * config/riscv/riscv.opt (mstrict-align): New option.
30713         * config/riscv/riscv.h (STRICT_ALIGNMENT): Use it.  Update comment.
30714         (SLOW_UNALIGNED_ACCESS): Define.
30715         (riscv_slow_unaligned_access): Declare.
30716         * config/riscv/riscv.c (riscv_tune_info): Add slow_unaligned_access
30717         field.
30718         (riscv_slow_unaligned_access): New variable.
30719         (rocket_tune_info): Set slow_unaligned_access to true.
30720         (optimize_size_tune_info): Set slow_unaligned_access to false.
30721         (riscv_cpu_info_table): Add entry for optimize_size_tune_info.
30722         (riscv_valid_lo_sum_p): Use TARGET_STRICT_ALIGN.
30723         (riscv_option_override): Set riscv_slow_unaligned_access.
30724         * doc/invoke.texi: Add -mstrict-align to RISC-V.
30725
30726 2017-05-04  Kito Cheng  <kito.cheng@gmail.com>
30727
30728         * config/riscv/riscv.md: Unify indentation.
30729
30730 2017-05-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
30731
30732         PR target/79038
30733         PR target/79202
30734         PR target/79203
30735         * config/rs6000/rs6000.md (u code attribute): Add FIX and
30736         UNSIGNED_FIX.
30737         (extendsi<mode>2): Add support for doing sign extension via
30738         VUPKHSW and XXPERMDI if the value is in Altivec registers and we
30739         don't have ISA 3.0 instructions.
30740         (extendsi<mode>2 splitter): Likewise.
30741         (fix_trunc<mode>si2): If we are at ISA 2.07 (VSX small integer),
30742         generate the normal insns since SImode can now go in vector
30743         registers.  Disallow the special UNSPECs needed for previous
30744         machines to hide SImode being used.  Add new insns
30745         fctiw{,w}_<mode>_smallint if SImode can go in vector registers.
30746         (fix_trunc<mode>si2_stfiwx): Likewise.
30747         (fix_trunc<mode>si2_internal): Likewise.
30748         (fixuns_trunc<mode>si2): Likewise.
30749         (fixuns_trunc<mode>si2_stfiwx): Likewise.
30750         (fctiw<u>z_<mode>_smallint): Likewise.
30751         (fctiw<u>z_<mode>_mem): New combiner pattern to prevent conversion
30752         of floating point to 32-bit integer from doing a direct move to
30753         the GPR registers to do a store.
30754         (fctiwz_<mode>): Break long line.
30755
30756 2017-05-05  Bin Cheng  <bin.cheng@arm.com>
30757
30758         * Makefile.in (GTFILES): Add tree-ssa-loop-ivopts.c.
30759         * tree-ssa-loop-ivopts.c (compute_max_addr_offset): Delete.
30760         (addr_list, addr_offset_valid_p): New.
30761         (split_address_groups): Check offset validity with above function.
30762         (gt-tree-ssa-loop-ivopts.h): Include header file.
30763
30764 2017-05-05  Nathan Sidwell  <nathan@acm.org>
30765
30766         * config.gcc (arm*-*-*): Add missing 'fi'.
30767
30768 2017-05-05  Steve Ellcey  <sellcey@cavium.com>
30769
30770         * doc/invoke.texi (-fopt-info): Explicitly say order of options
30771         included in -fopt-info does not matter.
30772         * doc/optinfo.texi (-fopt-info): Fix description of default
30773         behavour. Explicitly say order of options included in -fopt-info
30774         does not matter.
30775
30776 2017-05-05  Thomas Preud'homme  <thomas.preudhomme@arm.com>
30777
30778         * config.gcc: Allow combinations of aprofile and rmprofile values for
30779         --with-multilib-list.
30780         * config/arm/t-multilib: New file.
30781         * config/arm/t-aprofile: Remove initialization of MULTILIB_*
30782         variables.  Remove setting of ISA and floating-point ABI in
30783         MULTILIB_OPTIONS and MULTILIB_DIRNAMES.  Set architecture and FPU in
30784         MULTI_ARCH_OPTS_A and MULTI_ARCH_DIRS_A rather than MULTILIB_OPTIONS
30785         and MULTILIB_DIRNAMES respectively.  Add comment to introduce all
30786         matches.  Add architecture matches for marvel-pj4 and generic-armv7-a
30787         CPU options.
30788         * config/arm/t-rmprofile: Likewise except for the matches changes.
30789         * doc/install.texi (--with-multilib-list): Document the combination of
30790         aprofile and rmprofile values and warn about pitfalls in doing that.
30791
30792 2017-05-05  Wilco Dijkstra  <wdijkstr@arm.com>
30793
30794         * config/aarch64/aarch64.md (movsi_aarch64): Remove '*' from r=w.
30795         (movdi_aarch64): Likewise.
30796
30797 2017-05-05  Jakub Jelinek  <jakub@redhat.com>
30798
30799         PR tree-optimization/80632
30800         * tree-switch-conversion.c (struct switch_conv_info): Add target_vop
30801         field.
30802         (build_arrays): Initialize it for virtual phis.
30803         (fix_phi_nodes): Use it for virtual phis.
30804
30805         PR tree-optimization/80558
30806         * tree-vrp.c (extract_range_from_binary_expr_1): Optimize
30807         [x, y] op z into [x op, y op z] for op & or | if conditions
30808         are met.
30809
30810 2017-05-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
30811             Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
30812
30813         PR target/71607
30814         * config/arm/arm.md (use_literal_pool): Remove.
30815         (64-bit immediate split): No longer takes cost into consideration
30816         if arm_disable_literal_pool is enabled.
30817         * config/arm/arm.c (arm_tls_referenced_p): Add diagnostic if TLS is
30818         used when arm_disable_literal_pool is enabled.
30819         (arm_max_const_double_inline_cost): Remove use of
30820         arm_disable_literal_pool.
30821         (push_minipool_fix): Add assert.
30822         (arm_reorg): Add return if arm_disable_literal_pool is enabled.
30823         * config/arm/vfp.md (no_literal_pool_df_immediate): New.
30824         (no_literal_pool_sf_immediate): New.
30825
30826 2017-05-05  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
30827
30828         PR tree-optimization/80613
30829         * tree-ssa-dce.c (propagate_necessity): Remove cases for
30830         BUILT_IN_STRDUP and BUILT_IN_STRNDUP.
30831
30832 2017-05-05  Richard Biener  <rguenther@suse.de>
30833
30834         * tree-ssa-pre.c (get_or_alloc_expr_for): Simplify.
30835
30836 2017-05-05  Georg-Johann Lay  <avr@gjlay.de>
30837
30838         * config/avr/avr.md [flag_strict_overflow]: Remove any occurence
30839         of this flag from insn conditions due to removal from r247495.
30840
30841 2017-05-05  Wilco Dijkstra  <wdijkstr@arm.com>
30842
30843         * config/arm/aarch-common.c (arm_early_load_addr_dep_ptr):
30844         New function.
30845         (arm_early_store_addr_dep_ptr): Likewise.
30846         * config/arm/aarch-common-protos.h
30847         (arm_early_load_addr_dep_ptr): Add prototype.
30848         (arm_early_store_addr_dep_ptr): Likewise.
30849         * config/arm/cortex-a53.md: Add new bypasses.
30850
30851 2017-05-05  Jakub Jelinek  <jakub@redhat.com>
30852
30853         * tree.c (next_type_uid): Change type to unsigned.
30854         (type_hash_canon): Decrement back next_type_uid if
30855         freeing a type node with the highest TYPE_UID.  For INTEGER_TYPEs
30856         also ggc_free TYPE_MIN_VALUE, TYPE_MAX_VALUE and TYPE_CACHED_VALUES
30857         if possible.
30858
30859 2017-05-04  Martin Sebor  <msebor@redhat.com>
30860
30861         * builtins.c: Fix a trivial typo in a comment.
30862
30863         PR middle-end/79234
30864         * builtins.c (check_sizes): Adjust to handle reading past the end.
30865         Avoid printing excessive upper bound of ranges.  Use %E to print
30866         tree nodes instead of converting them to %wu.
30867         (expand_builtin_memchr): New function.
30868         (compute_dest_size): Rename...
30869         (compute_objsize): ...to this.
30870         (expand_builtin_memcpy): Adjust.
30871         (expand_builtin_mempcpy): Adjust.
30872         (expand_builtin_strcat): Adjust.
30873         (expand_builtin_strcpy): Adjust.
30874         (check_strncat_sizes): Adjust.
30875         (expand_builtin_strncat): Adjust.
30876         (expand_builtin_strncpy): Adjust and simplify.
30877         (expand_builtin_memset): Adjust.
30878         (expand_builtin_bzero): Adjust.
30879         (expand_builtin_memcmp): Adjust.
30880         (expand_builtin): Handle memcmp.
30881         (maybe_emit_chk_warning): Check strncat just once.
30882
30883 2017-05-04  Martin Sebor  <msebor@redhat.com>
30884
30885         PR preprocessor/79214
30886         PR middle-end/79222
30887         PR middle-end/79223
30888         * builtins.c (check_sizes): Add inlining context and issue
30889         warnings even when -Wno-system-headers is set.
30890         (check_strncat_sizes): Same.
30891         (expand_builtin_strncat): Same.
30892         (expand_builtin_memmove): New function.
30893         (expand_builtin_stpncpy): Same.
30894         (expand_builtin): Handle memmove and stpncpy.
30895
30896 2017-05-04  Bin Cheng  <bin.cheng@arm.com>
30897
30898         * tree-ssa-loop-ivopts.c (struct cost_pair): Remove field inv_expr
30899         which is not used any more.
30900
30901 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
30902
30903         * config/aarch64/aarch64.c (generic_tunings): Update prefetch model.
30904
30905 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
30906
30907         * config/aarch64/aarch64.c (cortexa35_tunings): Set jump alignment to 4.
30908         (cortexa53_tunings): Likewise.
30909         (cortexa57_tunings): Likewise.
30910         (cortexa72_tunings): Likewise.
30911         (cortexa73_tunings): Likewise.
30912
30913 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
30914
30915         * config/aarch64/aarch64.c (generic_tunings): Set jump alignment to 4.
30916         Set loop alignment to 8.
30917
30918 2017-05-04  Martin Sebor  <msebor@redhat.com>
30919
30920         PR translation/80280
30921         * builtins.c (expand_builtin_object_size): Add missing quoting to
30922         %D and like directives.
30923         * hsa-gen.c (hsa_type_for_scalar_tree_type): Same.
30924         (hsa_type_for_tree_type): Same.
30925         (verify_function_arguments): Same.
30926         * symtab.c (symbol_table::change_decl_assembler_name): Same.
30927         * varasm.c (get_section): Same.
30928         (mark_weak): Same.
30929
30930 2017-05-04  Martin Sebor  <msebor@redhat.com>
30931
30932         PR translation/80280
30933         * config/i386/i386.c (ix86_function_versions): Quote a %D directive.
30934
30935 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
30936
30937         * config/aarch64/aarch64.c (generic_addrcost_table):
30938         Change HI/TI mode setting.
30939
30940 2017-05-04  Martin Jambor  <mjambor@suse.cz>
30941
30942         PR tree-optimization/80622
30943         * tree-sra.c (comes_initialized_p): New function.
30944         (build_accesses_from_assign): Only set write lazily when
30945         comes_initialized_p is false.
30946         (analyze_access_subtree): Use comes_initialized_p.
30947         (propagate_subaccesses_across_link): Assert !comes_initialized_p
30948         instead of testing for PARM_DECL.
30949
30950 2017-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
30951
30952         * config/aarch64/aarch64.md (prefetch); Adjust predicate and
30953         constraint on operand 0 to allow more general addressing modes.
30954         Adjust output template.
30955         * config/aarch64/aarch64.c (aarch64_address_valid_for_prefetch_p):
30956         New function.
30957         * config/aarch64/aarch64-protos.h
30958         (aarch64_address_valid_for_prefetch_p): Declare prototype.
30959         * config/aarch64/constraints.md (Dp): New address constraint.
30960         * config/aarch64/predicates.md (aarch64_prefetch_operand): New
30961         predicate.
30962
30963 2017-05-04  Jan Hubicka  <hubicka@ucw.cz>
30964
30965         * ipa-cp.c (perform_estimation_of_a_value): Drop base_time parameter;
30966         update use of estimate_ipcp_clone_size_and_time.
30967         (estimate_local_effects): Update use of
30968         estimate_ipcp_clone_size_and_time and perform_estimation_of_a_value.
30969         * ipa-inline.h (estimate_ipcp_clone_size_and_time): Update prototype.
30970         * ipa-inline-analysis.c (estimate_ipcp_clone_size_and_time):
30971         Return nonspecialized time.
30972
30973 2017-05-04  Richard Biener  <rguenther@suse.de>
30974
30975         * tree-ssa-alias.c (get_continuation_for_phi): Improve looking
30976         for the last VUSE which def dominates the PHI.  Directly call
30977         maybe_skip_until.
30978         (get_continuation_for_phi_1): Remove.
30979
30980 2017-05-04  Richard Sandiford  <richard.sandiford@linaro.org>
30981
30982         * tree-ssa-loop-manip.c (niter_for_unrolled_loop): Add commentary
30983         to explain the use of truncating division.  Cap the number of
30984         iterations to the maximum given by nb_iterations_upper_bound,
30985         if defined.
30986
30987 2017-05-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
30988
30989         * configure.ac (--enable-mingw-wildcard): Add new configurable feature.
30990         * configure: Regenerate.
30991         * config.in: Regenerate.
30992         * config/i386/driver-mingw32.c: new file.
30993         * config/i386/x-mingw32: Add rule to build driver-mingw32.o.
30994         * config.host: Link driver-mingw32.o on MinGW host.
30995         * doc/install.texi: Document new --enable-mingw-wildcard configure
30996         option.
30997
30998 2017-05-04  Marek Polacek  <polacek@redhat.com>
30999
31000         PR tree-optimization/80612
31001         * calls.c (get_size_range): Check for INTEGRAL_TYPE_P.
31002
31003 2017-05-04  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
31004             Andre Simoes Dias Vieira  <andre.simoesdiasvieira@arm.com>
31005
31006         * config/arm/arm.md (movsi): Change TARGET_32BIT to TARGET_HAVE_MOVT.
31007         (movt splitter): Likewise.
31008         * config/arm/arm.c (arm_option_check_internal): Change arm_arch_thumb2
31009         to TARGET_HAVE_MOVT, and merge with -mslow-flash-data check.
31010         (const_ok_for_arm): Change else to else if (TARGET_THUMB2) and add else
31011         block for Thumb-1 with MOVT.
31012         (thumb2_legitimate_address_p): Move code block ...
31013         (can_avoid_literal_pool_for_label_p): ... into this new function.
31014         (thumb1_legitimate_address_p): Add check for TARGET_HAVE_MOVT and
31015         literal pool.
31016         (thumb_legitimate_constant_p): Add conditional on TARGET_HAVE_MOVT
31017         * doc/invoke.texi (-mpure-code): Change "ARMv7-M targets" for
31018         "M-profile targets with the MOVT instruction".
31019
31020 2017-05-04  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
31021
31022         * config/arm/arm-builtins.c (arm_init_builtins): Rename
31023         __builtin_arm_ldfscr to __builtin_arm_get_fpscr, and rename
31024         __builtin_arm_stfscr to __builtin_arm_set_fpscr.
31025
31026 2017-05-04  Martin Liska  <mliska@suse.cz>
31027
31028         * tree-vrp.c (simplify_cond_using_ranges_2): Remove unused
31029         variable cond_code.
31030
31031 2017-05-04  Richard Biener  <rguenther@suse.de>
31032
31033         * tree.c (array_at_struct_end_p): Handle arrays at struct
31034         end with flexarrays more conservatively.  Refactor and treat
31035         arrays of arrays or aggregates more strict.  Fix
31036         VIEW_CONVERT_EXPR handling.  Remove allow_compref argument.
31037         * tree.c (array_at_struct_end_p): Adjust prototype.
31038         * emit-rtl.c (set_mem_attributes_minus_bitpos): Adjust.
31039         * gimple-fold.c (get_range_strlen): Likewise.
31040         * tree-chkp.c (chkp_may_narrow_to_field): Likewise.
31041
31042 2017-05-04  Richard Biener  <rguenther@suse.de>
31043
31044         PR tree-optimization/31130
31045         * tree-vrp.c (needs_overflow_infinity): Remove as always returning
31046         false.
31047         (supports_overflow_infinity): Likewise.
31048         (is_negative_overflow_infinity): Likewise.
31049         (is_positive_overflow_infinity): Likewise.
31050         (is_overflow_infinity): Likewise.
31051         (stmt_overflow_infinity): Likewise.
31052         (overflow_infinity_range_p): Likewise.
31053         (usable_range_p): Remove as always returning true.
31054         (make_overflow_infinity): Remove.
31055         (negative_overflow_infinity): Likewise.
31056         (positive_overflow_infinity): Likewise.
31057         (avoid_overflow_infinity): Likewise.
31058         (set_value_range): Adjust accordingly.
31059         (set_value_range_to_nonnegative): Likewise, remove now unused
31060         overflow_infinity arg.
31061         (vrp_operand_equal_p): Adjust.
31062         (update_value_range): Likewise.
31063         (range_int_cst_singleton_p): Likewise.
31064         (operand_less_p): Likewise.
31065         (compare_values_warnv): Likewise.
31066         (extract_range_for_var_from_comparison_expr): Likewise.
31067         (vrp_int_const_binop): Likewise.
31068         (zero_nonzero_bits_from_vr): Likewise.
31069         (extract_range_from_multiplicative_op_1): Likewise.
31070         (extract_range_from_binary_expr_1): Likewise.
31071         (extract_range_from_unary_expr): Likewise.
31072         (extract_range_from_comparison): Likewise.
31073         (extract_range_basic): Likewise.
31074         (adjust_range_with_scev): Likewise.
31075         (compare_ranges): Likewise.
31076         (compare_range_with_value): Likewise.
31077         (dump_value_range): Likewise.
31078         (test_for_singularity): Likewise, remove strict_overflow_p parameter
31079         never used.
31080         (simplify_cond_using_ranges): Adjust.
31081
31082 2017-05-04  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
31083
31084         * brig-builtins.def: Added a builtin for class_f64.
31085         * builtin-types.def: Added a builtin type needed by class_f64.
31086
31087 2017-05-03  Jason Merrill  <jason@redhat.com>
31088
31089         * timevar.def: Add TV_CONSTEXPR.
31090
31091 2017-05-03  David Malcolm  <dmalcolm@redhat.com>
31092
31093         * common.opt (fdiagnostics-parseable-fixits): Fix typo.
31094
31095 2017-05-03  Martin Jambor  <mjambor@suse.cz>
31096
31097         * ipa-prop.c (ipa_update_after_lto_read): Removed.
31098         * ipa-prop.h (ipa_update_after_lto_read): Remove declaration.
31099         * ipa-cp.c (ipcp_propagate_stage): Do not call
31100         ipa_update_after_lto_read.
31101         * ipa-inline.c (ipa_inline): Likewise.
31102
31103 2017-05-03  Martin Jambor  <mjambor@suse.cz>
31104
31105         * ipa-prop.h (ipa_edge_args): Make a class.  Mark with for_user GTY
31106         tag.  Added a default constructor and a destructor.
31107         (ipa_edge_args_sum_t): New class;
31108         (ipa_edge_args_sum): Declare.
31109         (ipa_edge_args_vector): Remove declaration.
31110         (IPA_EDGE_REF): Use ipa_edge_args_sum.
31111         (ipa_free_edge_args_substructures): Remove declaration.
31112         (ipa_check_create_edge_args): Use ipa_edge_args_sum.
31113         (ipa_edge_args_info_available_for_edge_p): Likewise.
31114         * ipa-prop.c (ipa_edge_args_vector): Removed.
31115         (edge_removal_hook_holder): Likewise.
31116         (edge_duplication_hook_holder): Likewise.
31117         (ipa_edge_args_sum): New variable.
31118         (ipa_propagate_indirect_call_infos): Test ipa_edge_args_sum instead of
31119         ipa_edge_args_vector.
31120         (ipa_free_edge_args_substructures): Likewise.
31121         (ipa_free_all_edge_args): Free ipa_edge_args_sum instead of
31122         ipa_edge_args_vector.
31123         (ipa_edge_removal_hook): Turned into method
31124         ipa_edge_args_sum_t::remove.
31125         (ipa_edge_duplication_hook): Turned into method
31126         ipa_edge_args_sum_t::duplicate.
31127         (ipa_register_cgraph_hooks): Create ipa_edge_args_sum instead of
31128         registering edge hooks.
31129         (ipa_unregister_cgraph_hooks): Do not unregister edge hooks.
31130         * ipa-inline-analysis.c (estimate_function_body_sizes): Test
31131         ipa_edge_args_sum instead of ipa_edge_args_vector.
31132         * ipa-profile.c (ipa_profile): Likewise.
31133
31134 2017-05-03  Martin Jambor  <mjambor@suse.cz>
31135
31136         * symbol-summary.h (function_summary): New method exists.
31137         (function_summary::symtab_removal): Deallocate through release.
31138         (call_summary): New class.
31139         (gt_ggc_mx): New overload.
31140         (gt_pch_nx): Likewise.
31141         (gt_pch_nx): Likewise.
31142
31143 2017-05-03  Jeff Law  <law@redhat.com>
31144
31145         PR tree-optimization/78496
31146         * tree-vrp.c (simplify_cond_using_ranges_1): Renamed
31147         from simplify_cond_using_ranges.  Split off code to walk
31148         backwards through casts into ...
31149         (simplify_cond_using_ranges_2): New function.
31150         (simplify_stmt_using_ranges): Call simplify_cond_using_ranges_1.
31151         (execute_vrp): After identifying jump threads, call
31152         simplify_cond_using_ranges_2.
31153
31154 2017-05-03  Jan Hubicka  <hubicka@ucw.cz>
31155
31156         PR bootstrap/80609
31157         * ipa-inline.h (inline_summary): Add ctor.
31158         (create_ggc): Do not use ggc_cleared_alloc.
31159
31160 2017-05-03  Jeff Downs  <heydowns@somuchpressure.net>
31161             Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
31162
31163         * gcc.c (handle_braces): Support escaping in switch matching
31164         text.
31165         * doc/invoke.texi (Spec Files): Document it.
31166         Remove superfluous @code markup in items.
31167
31168 2017-05-03  David Malcolm  <dmalcolm@redhat.com>
31169
31170         * diagnostic-show-locus.c (struct column_range): New struct.
31171         (get_affected_columns): New function.
31172         (get_printed_columns): New function.
31173         (struct correction): New struct.
31174         (correction::ensure_capacity): New function.
31175         (correction::ensure_terminated): New function.
31176         (struct line_corrections): New struct.
31177         (line_corrections::~line_corrections): New dtor.
31178         (line_corrections::add_hint): New function.
31179         (layout::print_trailing_fixits): Reimplement in terms of the new
31180         classes.
31181         (selftest::test_overlapped_fixit_printing): New function.
31182         (selftest::diagnostic_show_locus_c_tests): Call it.
31183
31184 2017-05-03  Nathan Sidwell  <nathan@acm.org>
31185
31186         Canonicalize canonical type hashing
31187         * tree.h (type_hash_canon_hash): Declare.
31188         * tree.c (type_hash_list, attribute_hash_list): Move into
31189         type_hash_canon_hash.
31190         (build_type_attribute_qual_variant): Break out hash code calc into
31191         type_hash_canon_hash.
31192         (type_hash_canon_hash): New.  Generic type hash computation.
31193         (build_range_type_1, build_array_type_1, build_function_type,
31194         build_method_type_directly, build_offset_type, build_complex_type,
31195         make_vector_type): Call it.
31196
31197 2017-05-03  Richard Biener  <rguenther@suse.de>
31198
31199         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
31200         When all DRs have unknown misaligned do not always peel
31201         when there is a store but apply the same costing model as if
31202         there were only loads.
31203
31204 2017-05-03  Richard Biener  <rguenther@suse.de>
31205
31206         Revert
31207         PR tree-optimization/80492
31208         * tree-ssa-alias.c (decl_refs_may_alias_p): Handle
31209         compare_base_decls returning dont-know properly.
31210
31211 2017-05-03  Thomas Preud'homme  <thomas.preudhomme@arm.com>
31212
31213         * config/arm/iterators.md (CCSI): New mode iterator.
31214         (arch): New mode attribute.
31215         * config/arm/sync.md (atomic_compare_and_swap<mode>_1): Rename into ...
31216         (atomic_compare_and_swap<CCSI:arch><NARROW:mode>_1): This and ...
31217         (atomic_compare_and_swap<CCSI:arch><SIDI:mode>_1): This.  Use CCSI
31218         code iterator for success result mode.
31219         * config/arm/arm.c (arm_expand_compare_and_swap): Adapt code to use
31220         the corresponding new insn generators.
31221
31222 2017-05-03  Bin Cheng  <bin.cheng@arm.com>
31223
31224         Revert r247509
31225         2017-05-02  Bin Cheng  <bin.cheng@arm.com>
31226         * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
31227
31228 2017-05-03  Richard Sandiford  <richard.sandiford@linaro.org>
31229
31230         * tree-data-ref.h (SUB_CONFLICTS_IN_A): Wrap SUB argument in brackets.
31231         (SUB_CONFLICTS_IN_B, SUB_LAST_CONFLICT, SUB_DISTANCE): Likewise.
31232         (DDR_A): Wrap DDR argument in brackets.
31233         (DDR_B, DDR_AFFINE_P, DDR_ARE_DEPENDENT, DDR_SUBSCRIPTS): Likewise.
31234         (DDR_LOOP_NEST, DDR_INNER_LOOP, DDR_SELF_REFERENCE): Likewise.
31235         (DDR_REVERSED_P): Likewise.
31236
31237 2017-05-03  Jakub Jelinek  <jakub@redhat.com>
31238
31239         PR tree-optimization/79472
31240         * tree-switch-conversion.c (struct switch_conv_info): Add
31241         contiguous_range and default_case_nonstandard fields.
31242         (collect_switch_conv_info): Compute contiguous_range and
31243         default_case_nonstandard fields, don't clear final_bb if
31244         contiguous_range and only the default case doesn't have the required
31245         structure.
31246         (check_all_empty_except_final): Set default_case_nonstandard instead
31247         of failing if contiguous_range and the default case doesn't have empty
31248         block.
31249         (check_final_bb): Add SWTCH argument, don't fail if contiguous_range
31250         and only the default case doesn't have the required constants.  Skip
31251         virtual phis.
31252         (gather_default_values): Skip virtual phis.  Allow non-NULL CASE_LOW
31253         if default_case_nonstandard.
31254         (build_constructors): Build constant 1 just once.  Assert that default
31255         values aren't inserted in between cases if contiguous_range.  Skip
31256         virtual phis.
31257         (build_arrays): Skip virtual phis.
31258         (prune_bbs): Add DEFAULT_BB argument, don't remove that bb.
31259         (fix_phi_nodes): Don't add e2f phi arg if default_case_nonstandard.
31260         Handle virtual phis.
31261         (gen_inbound_check): Handle default_case_nonstandard case.
31262         (process_switch): Adjust check_final_bb caller.  Call
31263         gather_default_values with the first non-default case instead of
31264         default case if default_case_nonstandard.
31265
31266 2017-05-02  Nathan Sidwell  <nathan@acm.org>
31267
31268         * ggc-page.c (move_ptes_to_front): Replace unsigned >0 with i--
31269         check.  Fix formatting.
31270
31271 2017-05-02  Jan Hubicka  <hubicka@ucw.cz>
31272
31273         * ipa-inline-analysis.c (estimate_node_size_and_time): Allow roundoff
31274         errors when comparing specialized and unspecialized times.
31275
31276 2017-05-02  David Malcolm  <dmalcolm@redhat.com>
31277
31278         * diagnostic-show-locus.c
31279         (layout::should_print_annotation_line_p): Make private.
31280         (layout::print_annotation_line): Make private.
31281         (layout::annotation_line_showed_range_p): Make private.
31282         (layout::show_ruler): Make private.
31283         (layout::print_source_line): Make private.  Pass in line and
31284         line_width, rather than calling location_get_source_line.  Drop
31285         returned value.
31286         (layout::print_leading_fixits): New method.
31287         (layout::print_any_fixits): Rename to...
31288         (layout::print_trailing_fixits): ...this, and make private.
31289         Don't print newline fixits.
31290         (diagnostic_show_locus): Move logic for printing one row into...
31291         (layout::print_line): ...this new function.  Move the
31292         location_get_source_line call and error-handling from
31293         print_source_line to here.  Call print_leading_fixits, and rename
31294         print_any_fixits to print_trailing_fixits.
31295         (selftest::test_fixit_insert_containing_newline): Update now that
31296         newlines are partially supported.
31297         (selftest::test_fixit_insert_containing_newline_2): New test.
31298         (selftest::test_fixit_replace_containing_newline): Update comments.
31299         (selftest::diagnostic_show_locus_c_tests): Call the new test.
31300         * edit-context.c (class added_line): New class.
31301         (class edited_line): Describe newline handling in comment.
31302         (edited_line::actually_edited_p): New method.
31303         (edited_line::print_content): Delete redundant decl.
31304         (edited_line::m_predecessors): New field.
31305         (edited_file::print_content): Call edited_line::print_content.
31306         (edited_file::print_diff): Update to support newlines.
31307         (edited_file::print_diff_hunk): Likewise.
31308         (edited_file::print_run_of_changed_lines): New function.
31309         (edited_file::print_diff_line): Convert to...
31310         (print_diff_line): ...this.
31311         (edited_file::get_effective_line_count): New function.
31312         (edited_line::edited_line): Initialize new field m_predecessors.
31313         (edited_line::~edited_line): Clean up m_predecessors.
31314         (edited_line::apply_fixit): Handle newlines.
31315         (edited_line::get_effective_line_count): New function.
31316         (edited_line::print_content): New function.
31317         (edited_line::print_diff_lines): New function.
31318         (selftest::test_applying_fixits_insert_containing_newline): New
31319         test.
31320         (selftest::test_applying_fixits_replace_containing_newline): New
31321         test.
31322         (selftest::insert_line): New function.
31323         (selftest::test_applying_fixits_multiple_lines): Add example of
31324         inserting a line.
31325         (selftest::edit_context_c_tests): Call the new tests.
31326
31327 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
31328
31329         * tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at): Delete
31330         parameter cand.  Update dump information.
31331         (get_computation_cost): Update uses.
31332
31333 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
31334
31335         * tree-ssa-loop-ivopts.c (get_computation_aff_1): New.
31336         (get_computation_aff): Reorder parameters.  Use get_computation_aff_1.
31337         (get_computation_at, rewrite_use_address): Update use of
31338         get_computation_aff.
31339
31340 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
31341
31342         * tree-ssa-loop-ivopts.c (get_computation_at): Reorder parameters.
31343         (get_computation): Delete.
31344         (get_computation_cost): Implement like get_computation_cost_at.
31345         Use get_computation_at.
31346         (get_computation_cost_at): Delete.
31347         (rewrite_use_nonlinear_expr): Use get_computation_at.
31348         (rewrite_use_compare, remove_unused_ivs): Ditto.
31349
31350 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
31351
31352         * tree-ssa-loop-ivopts.c (rewrite_use_address): Simple refactor.
31353
31354 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
31355
31356         * tree-ssa-loop-ivopts.c (struct iv_ca): Rename n_regs to n_invs.
31357         (ivopts_global_cost_for_size): Rename parameter and update uses.
31358         (iv_ca_recount_cost): Update uses.
31359         (iv_ca_set_remove_invs, iv_ca_set_no_cp): Record invariants and
31360         candidates seperately in n_invs and n_cands.
31361         (iv_ca_set_add_invs, iv_ca_set_cp, iv_ca_new): Ditto.
31362
31363 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
31364
31365         * tree-ssa-loop-ivopts.c (struct walk_tree_data): New.
31366         (find_inv_vars_cb): New.
31367         (find_depends): Renamed to ...
31368         (find_inv_vars): ... this.
31369         (add_candidate_1, force_var_cost): Call find_inv_vars.
31370         (split_address_cost, determine_group_iv_cost_cond): Ditto.
31371
31372 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
31373
31374         * tree-ssa-loop-ivopts.c (struct cost_pair): Rename depends_on to
31375         inv_vars.  Add inv_exprs.
31376         (struct iv_cand): Rename depends_on to inv_vars.
31377         (struct ivopts_data): Rename max_inv_id/n_invariant_uses to
31378         max_inv_var_id/n_inv_var_uses.  Move max_inv_expr_id around.
31379         Refactor field used_inv_exprs from has_map to array n_inv_expr_uses.
31380         (dump_cand): Dump inv_vars.
31381         (tree_ssa_iv_optimize_init): Support inv_vars and inv_exprs.
31382         (record_invariant, find_depends, add_candidate_1): Ditto.
31383         (set_group_iv_cost, force_var_cost): Ditto.
31384         (split_address_cost, ptr_difference_cost, difference_cost): Ditto.
31385         (get_computation_cost_at, get_computation_cost): Ditto.
31386         (determine_group_iv_cost_generic): Ditto.
31387         (determine_group_iv_cost_address): Ditto.
31388         (determine_group_iv_cost_cond, autoinc_possible_for_pair): Ditto.
31389         (determine_group_iv_costs): Ditto.
31390         (iv_ca_recount_cost): Update call to ivopts_global_cost_for_size.
31391         (iv_ca_set_remove_invariants): Renamed to ...
31392         (iv_ca_set_remove_invs): ... this.  Support inv_vars and inv_exprs.
31393         (iv_ca_set_no_cp): Use iv_ca_set_remove_invs.
31394         (iv_ca_set_add_invariants):  Renamed to ...
31395         (iv_ca_set_add_invs): ... this.  Support inv_vars and inv_exprs.
31396         (iv_ca_set_cp): Use iv_ca_set_add_invs.
31397         (iv_ca_has_deps): Support inv_vars and inv_exprs.
31398         (iv_ca_new, iv_ca_free, iv_ca_dump, free_loop_data): Ditto.
31399         (create_new_ivs): Remove useless dump.
31400
31401 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
31402
31403         * tree-ssa-loop-ivopts.c (get_computation_cost_at): Remove pseudo
31404         iv_cand code.
31405         (determine_group_iv_cost_cond, determine_iv_cost): Ditto.
31406         (iv_ca_set_no_cp, create_new_iv): Ditto.
31407
31408 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
31409
31410         * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
31411
31412 2017-05-02  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
31413
31414         * tree.h (EXPR_CILK_SPAWN): Use macro TREE_CHECK2 instead of
31415         function tree_check2.
31416
31417 2017-05-02  Martin Liska  <mliska@suse.cz>
31418
31419         * doc/gcov.texi: Add missing preposition.
31420         * gcov.c (function_info::function_info): Properly fill up
31421         all member variables.
31422
31423 2017-05-02  Tamar Christina  <tamar.christina@arm.com>
31424
31425         * expr.c (expand_expr_real_2): Re-cost if previous costs are the same.
31426
31427 2017-05-02  Tamar Christina  <tamar.christina@arm.com>
31428
31429         * simplify-rtx.c (simplify_binary_operation_1): Add LSHIFTRT case.
31430
31431 2017-05-02  Martin Liska  <mliska@suse.cz>
31432
31433         PR lto/77954.
31434         * lto-streamer-in.c (lto_read_tree_1): Remove
31435         LTO_STREAMER_DEBUG.
31436         * lto-streamer.c (struct tree_hash_entry): Likewise.
31437         (struct tree_entry_hasher): Likewise.
31438         (tree_entry_hasher::hash): Likewise.
31439         (tree_entry_hasher::equal): Likewise.
31440         (lto_streamer_init): Likewise.
31441         (lto_orig_address_map): Likewise.
31442         (lto_orig_address_get): Likewise.
31443         (lto_orig_address_remove): Likewise.
31444         * lto-streamer.h: Likewise.
31445         * tree-streamer-in.c (streamer_alloc_tree): Likewise.
31446         * tree-streamer-out.c (streamer_write_tree_header): Likewise.
31447
31448 2017-05-02  Sebastian Peryt  <sebastian.peryt@intel.com>
31449
31450         * config/i386/avx512fintrin.h (_mm_mask_add_round_sd)
31451         (_mm_maskz_add_round_sd, _mm_mask_add_round_ss)
31452         (mm_maskz_add_round_ss, _mm_mask_sub_round_sd)
31453         (mm_maskz_sub_round_sd, _mm_mask_sub_round_ss)
31454         (mm_maskz_sub_round_ss, _mm_mask_add_sd)
31455         (mm_maskz_add_sd, _mm_mask_add_ss, _mm_maskz_add_ss)
31456         (mm_mask_sub_sd, _mm_maskz_sub_sd, _mm_mask_sub_ss)
31457         (mm_maskz_sub_ss): New intrinsics.
31458         * config/i386/i386-builtin-types.def (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
31459         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): New function type aliases.
31460         * config/i386/i386-builtin.def (__builtin_ia32_addsd_mask_round)
31461         (__builtin_ia32_addss_mask_round, __builtin_ia32_subsd_mask_round)
31462         (__builtin_ia32_subss_mask_round): New builtins.
31463         * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
31464         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types.
31465         * config/i386/sse.md (<sse>_vm<plusminus_insn><mode>3<round_name>):
31466         Renamed to ...
31467         (<sse>_vm<plusminus_insn><mode>3<mask_name><round_name>): ... this.
31468         (v<plusminus_mnemonic><ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|%0, %1, %<iptr>2<round_op3>}):
31469         Changed to ...
31470         (v<plusminus_mnemonic><ssescalarmodesuffix>\t{<round_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}):
31471         ... this.
31472
31473 2017-05-02  Martin Jambor  <mjambor@suse.cz>
31474
31475         PR tree-optimization/78687
31476         * tree-sra.c (access): New field parent.
31477         (process_subtree_disqualification): New function.
31478         (disqualify_candidate): Call it.
31479         (build_accesses_from_assign): Reset write flag if creating an
31480         assighnment link.
31481         (build_access_subtree): Fill in parent field and also prpagate
31482         down grp_write flag.
31483         (create_artificial_child_access): New parameter set_grp_write, set
31484         grp_write to its value.
31485         (propagate_subaccesses_across_link): Also propagate grp_write flag
31486         values.
31487         (propagate_all_subaccesses): Push the closest parent back to work
31488         queue if add_access_to_work_queue returned true.
31489
31490 2017-05-02  Richard Biener  <rguenther@suse.de>
31491
31492         * common.opt (fstrict-overflow): Alias negative to fwrapv.
31493         * doc/invoke.texi (fstrict-overflow): Remove all traces of
31494         -fstrict-overflow documentation.
31495         * tree.h (TYPE_OVERFLOW_UNDEFINED): Do not test flag_strict_overflow.
31496         (POINTER_TYPE_OVERFLOW_UNDEFINED): Test !flag_wrapv instead of
31497         flag_strict_overflow.
31498         * ipa-inline.c (can_inline_edge_p): Do not test flag_strict_overflow.
31499         * lto-opts.c (lto_write_options): Do not stream it.
31500         * lto-wrapper.c (merge_and_complain): Do not handle it.
31501         * opts.c (default_options_table): Do not set -fstrict-overflow.
31502         (finish_options): Likewise do not clear it when sanitizing.
31503         * simplify-rtx.c (simplify_const_relational_operation): Do not
31504         test flag_strict_overflow.
31505
31506 2017-05-02  Uros Bizjak  <ubizjak@gmail.com>
31507
31508         * config/alpha/alpha.md (*add<mode>3_ieee): Merge to add<mode>3
31509         using enabled attribute.
31510         (*sub<mode>3_ieee): Merge to sub<mode>3 using enabled attribute.
31511         (*mul<mode>3_ieee): Merge to mul<mode>3 using enabled attribute.
31512         (*div<mode>3_ieee): Merge to div<mode>3 using enabled attribute.
31513         (*sqrt<mode>2_ieee): Merge to sqrt<mode>2 using enabled attribute.
31514         (*fix_truncdfdi_ieee): Merge to *fix_truncdfdi2 using enabled attribute.
31515         (*fix_truncsfdi_ieee): Merge to *fix_truncsfdi2 using enabled attribute.
31516         (*floatdisf_ieee): Merge to floatdisf2 using enabled attribute.
31517         (*floatdidf_ieee): Merge to floatdidf2 using enabled attribute.
31518         (*truncdfsf2_ieee): Merge to truncdfsf2 using enabled attribute.
31519         (*cmpdf_ieee): Merge to *cmpdf_internal using enabled attribute.
31520
31521 2017-05-02  Uros Bizjak  <ubizjak@gmail.com>
31522
31523         * config/i386/i386.c (ix86_code_end): Use {FIRST,LAST}_INT_REG.
31524
31525 2017-05-02  Richard Biener  <rguenther@suse.de>
31526
31527         PR tree-optimization/80591
31528         Revert
31529         2017-04-10  Richard Biener  <rguenther@suse.de>
31530
31531         * tree-ssa-structalias.c (find_func_aliases): Properly handle
31532         asm inputs.
31533
31534 2017-05-02  Richard Biener  <rguenther@suse.de>
31535
31536         PR tree-optimization/80549
31537         * tree-cfgcleanup.c (mfb_keep_latches): New helper.
31538         (cleanup_tree_cfg_noloop): Create forwarders to known loop
31539         headers if they do not have a preheader.
31540
31541 2017-05-02  Martin Liska  <mliska@suse.cz>
31542
31543         PR other/80589
31544         * common.opt: Fix typo.
31545         * doc/invoke.texi: Likewise.
31546
31547 2017-05-01  Jan Beulich  <jbeulich@suse.com>
31548
31549         * config/i386/sse.md (xop_vpermil2<mode>3): Do not allow operand
31550         swapping, add (x,x,m,x,n) alternative.
31551
31552 2017-05-01  Nathan Sidwell  <nathan@acm.org>
31553
31554         * calls.c (combine_pending_stack_adjustment_and_call): Remove
31555         unnecessary unadjusted_alignment check.
31556
31557 2017-05-01  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
31558
31559         PR c++/80038
31560         * cilk_common.c (expand_builtin_cilk_detach): Move pedigree
31561         operations here.
31562         * gimplify.c (gimplify_cilk_detach): New function.
31563         (gimplify_call_expr, gimplify_modify_expr): Call it as needed.
31564         * tree-core.h: Document EXPR_CILK_SPAWN.
31565         * tree.h (EXPR_CILK_SPAWN): Define.
31566
31567 2017-05-01  David Malcolm  <dmalcolm@redhat.com>
31568
31569         * diagnostic-show-locus.c (layout::get_expanded_location): Rewrite
31570         to use new fixit_hint representation, using the "replace" logic.
31571         (get_line_span_for_fixit_hint): Likewise.
31572         (layout::print_any_fixits): Likewise.
31573         (selftest::test_one_liner_many_fixits): Rename to...
31574         (selftest::test_one_liner_many_fixits_1): ...this, and update
31575         comment and expected output to reflect that the multiple fix-it
31576         hints are now consolidated into one insertion.
31577         (selftest::test_one_liner_many_fixits_2): New test.
31578         (selftest::test_diagnostic_show_locus_one_liner): Update for
31579         above.
31580         (selftest::test_fixit_consolidation): Update for fix-it API
31581         change.
31582         * diagnostic.c (print_parseable_fixits): Likewise.
31583         * edit-context.c (edited_line::m_line_events): Convert from
31584         auto_vec <line_event *> to auto_vec <line_event>.
31585         (class line_event): Convert from abstract base class to a concrete
31586         class, taking over the role of replace_event.
31587         (class insert_event): Delete.
31588         (class replace_event): Rename to class line_event.  Convert to
31589         half-open range.
31590         (edit_context::add_fixits): Reimplement.
31591         (edit_context::apply_insert): Delete.
31592         (edit_context::apply_replace): Rename to...
31593         (edit_context::apply_fixit): ...this.  Convert to half-open range.
31594         (edited_file::apply_insert): Delete.
31595         (edited_file::apply_replace): Rename to...
31596         (edited_file::apply_fixit): ...this.
31597         (edited_line::~edited_line): Drop deletion of events.
31598         (edited_line::apply_insert): Delete.
31599         (edited_line::apply_replace): Rename to...
31600         (edited_line::apply_fixit): ...this.  Convert to half-open range.
31601         Update for change to type of m_line_events.
31602         * edit-context.h (edit_context::apply_insert): Delete.
31603         (edit_context::apply_replace): Rename to...
31604         (edit_context::apply_fixit): ...this.
31605
31606 2017-05-01  Martin Sebor  <msebor@redhat.com>
31607
31608         * gimple-ssa-sprintf.c (format_integer): Set knownrange when it's
31609         known.
31610
31611 2017-05-01  Uros Bizjak  <ubizjak@gmail.com>
31612
31613         PR target/68491
31614         * config/i386/cpuid.h (__get_cpuid): Always return 0 when
31615         __get_cpuid_max returns 0.
31616         (__get_cpuid_count): Ditto.
31617
31618 2017-05-01  Eric Botcazou  <ebotcazou@adacore.com>
31619
31620         * tree.c (substitute_in_expr) <tcc_vl_exp>: Also inline a call if the
31621         replacement expression is another instance of one of its arguments.
31622
31623 2017-05-01  Jakub Jelinek  <jakub@redhat.com>
31624
31625         PR target/79430
31626         * rtlanal.c (reg_set_p): If reg is a stack_pointer_rtx, also
31627         check for stack push/pop autoinc.
31628         * config/i386/i386.c (ix86_agi_dependent): Return false
31629         if the only reason why modified_in_p returned true is that
31630         addr is SP based and set_insn is a push or pop.
31631
31632 2017-04-29  Jan Hubicka  <hubicka@ucw.cz>
31633
31634         * ipa-inline.c (compute_inlined_call_time): Remove now unnecesary
31635         overflow check.
31636
31637 2017-04-29  Jan Hubicka  <hubicka@ucw.cz>
31638
31639         PR ipa/79224
31640         * ipa-inline-analysis.c (dump_predicate): Add optional parameter NL.
31641         (account_size_time): Use two predicates - exec_pred and
31642         nonconst_pred_ptr.
31643         (evaluate_conditions_for_known_args): Compute both clause and
31644         nonspec_clause.
31645         (evaluate_properties_for_edge): Evaulate both clause and nonspec_clause.
31646         (inline_summary_t::duplicate): Update.
31647         (estimate_function_body_sizes): Caluculate exec and nonconst predicates
31648         separately.
31649         (compute_inline_parameters): Likewise.
31650         (estimate_edge_size_and_time): Update caluclation of time.
31651         (estimate_node_size_and_time): Compute both time and nonspecialized
31652         time.
31653         (estimate_ipcp_clone_size_and_time): Update.
31654         (inline_merge_summary): Update.
31655         (do_estimate_edge_time): Update.
31656         (do_estimate_edge_size): Update.
31657         (do_estimate_edge_hints): Update.
31658         (inline_read_section, inline_write_summary): Stream both new predicates.
31659         * ipa-inline.c (compute_uninlined_call_time): Take uninlined_call_time
31660         as argument.
31661         (compute_inlined_call_time): Cleanup.
31662         (big_speedup_p): Update.
31663         (edge_badness): Update.
31664         * ipa-inline.h (INLINE_TIME_SCALE): Remove.
31665         (size_time_entry): Replace predicate by exec_predicate and
31666         nonconst_predicate.
31667         (edge_growth_cache_entry): Cache both time nad nonspecialized time.
31668         (estimate_edge_time): Return also nonspec_time.
31669         (reset_edge_growth_cache): Update.
31670
31671 2017-04-29  Jakub Jelinek  <jakub@redhat.com>
31672
31673         PR rtl-optimization/80491
31674         * ifcvt.c (noce_process_if_block): When looking for x setter
31675         with missing else_bb, don't check only the insn right before
31676         cond_earliest, but look for the last insn that x is modified in
31677         within the same bb.
31678
31679         PR rtl-optimization/80491
31680         * alias.c (memory_modified_in_insn_p): Return true for CALL_INSNs.
31681
31682 2017-04-29  Marc Glisse  <marc.glisse@inria.fr>
31683
31684         PR tree-optimization/80487
31685         * tree-ssa-alias.c (stmt_kills_ref_p): Handle stpncpy and strncpy.
31686
31687 2017-04-29  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
31688
31689         PR tree-optimization/79697
31690         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Check if callee
31691         is BUILT_IN_STRDUP, BUILT_IN_STRNDUP, BUILT_IN_REALLOC.
31692         (propagate_necessity): Check if def_callee is BUILT_IN_STRDUP or
31693         BUILT_IN_STRNDUP.
31694         * gimple-fold.c (gimple_fold_builtin_realloc): New function.
31695         (gimple_fold_builtin): Call gimple_fold_builtin_realloc.
31696
31697 2017-04-28  Martin Sebor  <msebor@redhat.com>
31698
31699         PR tree-optimization/80523
31700         * gimple-ssa-sprintf.c (target_to_host_charmap): New global variable.
31701         (init_target_to_host_charmap, target_to_host, target_strtol10): New
31702         functions.
31703         (maybe_warn, format_directive, parse_directive): Use new functions.
31704         (pass_sprintf_length::execute): Call init_target_to_host_charmap.
31705
31706 2017-04-28  Marc Glisse  <marc.glisse@inria.fr>
31707
31708         * match.pd (X+Z OP Y+Z, X-Z OP Y-Z, Z-X OP Z-Y): New transformations.
31709
31710 2017-04-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
31711
31712         * configure.ac (SYSTEM_HEADER_DIR, BUILD_SYSTEM_HEADER_DIR,
31713         target_header_dir): Set correctly.
31714         * configure: Regenerated.
31715         * Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe.
31716         (LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR
31717         instead of SYSTEM_HEADER_DIR.
31718
31719 2017-04-28  Jan Hubicka  <hubicka@ucw.cz>
31720
31721         * ipa-cp.c (perform_estimation_of_a_value): Turn time to sreal.
31722         (estimate_local_effects): Likewise.
31723         * ipa-inline.c (compute_inlined_call_time, want_inline_small_function_p,
31724         edge_badness, inline_small_functions, dump_overall_stats): LIkewise.
31725         * ipa-inline.h (edge_growth_cache_entry, estimate_time_after_inlining,
31726         estimate_ipcp_clone_size_and_time, do_estimate_edge_time,
31727         do_estimate_edge_time, estimate_edge_time): Likewise.
31728         * ipa-inline-analysis.c (estimate_node_size_and_time,
31729         estimate_ipcp_clone_size_and_time, do_estimate_edge_time): Likewise.
31730         (estimate_time_after_inlining): Remove.
31731
31732 2017-04-28  Martin Liska  <mliska@suse.cz>
31733
31734         * doc/gcov.texi: Enhance documentation of gcov.
31735
31736 2017-04-28  Martin Liska  <mliska@suse.cz>
31737
31738         * doc/gcov.texi: Sort options in alphabetic order.
31739         * doc/gcov-dump.texi: Likewise.
31740         * doc/gcov-tool.texi: Likewise.
31741         * gcov.c (print_usage): Likewise.
31742         * gcov-dump.c (print_usage): Likewise.
31743         * gcov-tool.c (print_merge_usage_message): Likewise.
31744         (print_rewrite_usage_message): Likewise.
31745         (print_overlap_usage_message): Likewise.
31746
31747 2017-04-28  Martin Liska  <mliska@suse.cz>
31748
31749         PR gcov-profile/53915
31750         * gcov.c (format_gcov): Print 'NAN %' when top > bottom.
31751
31752 2017-04-28  Martin Liska  <mliska@suse.cz>
31753
31754         PR gcov-profile/79891
31755         * gcov.c (add_line_counts): Assign BBs to lines just if the BB
31756         is marked by compiler as living on a line.
31757         (get_cycles_count): Remove usage of the union.
31758         (output_intermediate_file): Likewise.
31759         (find_source): Fix GNU coding style.
31760         (accumulate_line_counts): Remove old non-all block mode.
31761         (output_lines): Remove usage of the union.
31762         * profile.c (output_location): Include all BBs, even if
31763         belonging to a same line (and file) as a previous BB.
31764
31765 2017-04-28  Martin Liska  <mliska@suse.cz>
31766
31767         * gcov.c (process_args): Handle new argument 'w'.
31768         (read_graph_file): Assign ID to BBs.
31769         (output_branch_count): Display BB # if verbose flag is set.
31770         (output_lines): Likewise for arcs.
31771         (print_usage): Add '--verbose' option help.
31772         * doc/gcov.texi: Document --verbose (-w) option.
31773
31774 2017-04-28  Martin Liska  <mliska@suse.cz>
31775
31776         * gcov.c (struct block_location_info): New struct.
31777         (process_file): Fill up the new structure.
31778         (read_graph_file): Replace usage of encoding by the newly added
31779         struct.
31780         (add_line_counts): Likewise.
31781         (accumulate_line_counts): Remove usage of the union.
31782         (function_info::function_info): New function.
31783         (function_info::~function_info): Likewise.
31784         (process_file): Call delete instead of release_function.
31785         (release_function): Release the function.
31786         (release_structures): Call delete instead of release_function.
31787         (solve_flow_graph): Replace usage of num_blocks.
31788         (find_exception_blocks): Likewise.
31789         (output_lines): Fix GNU coding style.
31790
31791 2017-04-28  Martin Liska  <mliska@suse.cz>
31792
31793         PR driver/56469
31794         * coverage.c (coverage_remove_note_file): New function.
31795         * coverage.h: Declare the function.
31796         * toplev.c (finalize): Clean if an error has been seen.
31797
31798 2017-04-28  Martin Liska  <mliska@suse.cz>
31799
31800         PR gcov-profile/80031
31801         * gcov-dump.c (tag_blocks): Just print number of basic blocks.
31802         * gcov-io.h (GCOV_TAG_BLOCKS_NUM): Remove unused macro.
31803         * gcov.c (read_graph_file): Read just number of blocks.
31804         * profile.c (branch_prob): Do not stream 0 flags per a basic
31805         block.
31806
31807 2017-04-28  Martin Liska  <mliska@suse.cz>
31808
31809         * gcov-dump.c (tag_*): Add new argument to declarations.
31810         (dump_gcov_file): Likewise.
31811         (tag_blocks): Add and use new argument depth.
31812         (tag_arcs): Likewise.
31813         (tag_lines): Likewise.
31814         (tag_counters): Likewise.
31815         (tag_summary): Likewise.
31816         (dump_working_sets): Use depth to do a proper indentation.
31817
31818 2017-04-28  Jakub Jelinek  <jakub@redhat.com>
31819
31820         PR bootstrap/80531
31821         * cgraph.h (symtab_node::debug_symtab): No longer inline.
31822         * symtab.c (symtab_node::debug_symtab): Move definition here.
31823
31824 2017-04-28  Richard Biener  <rguenther@suse.de>
31825
31826         * lto-streamer.h (LTO_major_version): Bump to 7.
31827
31828 2017-04-28  Richard Biener  <rguenther@suse.de>
31829
31830         * tree-vrp.c (assert_info): New struct.
31831         (add_assert_info): New helper.
31832         (register_edge_assert_for_2): Refactor to add asserts to a vector
31833         of assert_info.
31834         (register_edge_assert_for_1): Likewise.
31835         (register_edge_assert_for): Likewise.
31836         (finish_register_edge_assert_for): New helper actually registering
31837         asserts where live on edge.
31838         (find_conditional_asserts): Adjust.
31839         (find_switch_asserts): Likewise.
31840         (evrp_dom_walker::try_find_new_range): Generalize.
31841         (evrp_dom_walker::before_dom_children): Use register_edge_assert_for.
31842
31843 2017-04-27  Marek Polacek  <polacek@redhat.com>
31844
31845         PR sanitizer/80349
31846         * fold-const.c (fold_binary_loc) <case EQ_EXPR, NE_EXPR>: Convert
31847         arg10 and arg11 to itype.
31848
31849 2017-04-27  Jonathan Wakely  <jwakely@redhat.com>
31850
31851         * doc/extend.texi (Object Size Checking): Improve grammar.
31852
31853 2017-04-27  Richard Earnshaw  <rearnsha@arm.com>
31854
31855         PR target/80530
31856         * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Ensure
31857         that the logic for permitting reciprocal estimates matches that
31858         in use_rsqrt_p.
31859
31860 2017-04-27  Jakub Jelinek  <jakub@redhat.com>
31861
31862         PR c++/80534
31863         * tree.c (type_cache_hasher::equal): Only compare
31864         TYPE_TYPELESS_STORAGE flag on non-aggregate element types.
31865         (build_array_type_1): Only hash TYPE_TYPELESS_STORAGE flag on
31866         non-aggregate element types.
31867         * tree.h (TYPE_TYPELESS_STORAGE): Fix comment typo, add more details
31868         about the flag on ARRAY_TYPEs in the comment, formatting fix.
31869
31870 2017-04-27  Richard Biener  <rguenther@suse.de>
31871
31872         PR middle-end/80533
31873         * emit-rtl.c (set_mem_attributes_minus_bitpos): When
31874         stripping ARRAY_REFs from MEM_EXPR make sure we're not
31875         keeping a reference to a trailing array.
31876
31877 2017-04-27  Richard Biener  <rguenther@suse.de>
31878
31879         PR middle-end/80539
31880         * tree-chrec.c (chrec_fold_plus_poly_poly): Deal with not
31881         being in loop-closed SSA form conservatively.
31882         (chrec_fold_multiply_poly_poly): Likewise.
31883
31884 2017-04-27  Tamar Christina  <tamar.christina@arm.com>
31885
31886         PR middle-end/79665
31887         * expr.c (expand_expr_real_2): Move TRUNC_MOD_EXPR, FLOOR_MOD_EXPR,
31888         CEIL_MOD_EXPR, ROUND_MOD_EXPR cases.
31889
31890 2017-04-27  Jakub Jelinek  <jakub@redhat.com>
31891
31892         PR target/77728
31893         * config/aarch64/aarch64.c (struct aarch64_fn_arg_alignment): Remove.
31894         (aarch64_function_arg_alignment): Return unsigned int again, but still
31895         ignore TYPE_FIELDS chain decls other than FIELD_DECLs.
31896         (aarch64_layout_arg): Adjust aarch64_function_arg_alignment caller.
31897         Don't emit -Wpsabi note.
31898         (aarch64_function_arg_boundary): Likewise.
31899         (aarch64_gimplify_va_arg_expr): Adjust aarch64_function_arg_alignment
31900         caller.
31901
31902 2017-04-26  Nathan Sidwell  <nathan@acm.org>
31903
31904         * tree.h (crc32_unsigned_n): Declare.
31905         (crc32_unsigned, crc32_unsigned): Make inline.
31906         * tree.c (crc32_unsigned_bits): Replace with ...
31907         (crc32_unsigned_n): ... this.
31908         (crc32_unsigned, crc32_byte): Remove.
31909         (crc32_string): Remove unnecessary braces.
31910
31911 2017-04-25  Jan Hubicka  <hubicka@ucw.cz>
31912
31913         * ipa-cp.c (estimate_local_effects): Convert sreal to int.
31914         * ipa-inline-analysis.c (MAX_TIME): Remove.
31915         (account_size_time): Use sreal for time.
31916         (dump_inline_summary): Update.
31917         (estimate_function_body_sizes): Update.
31918         (estimate_edge_size_and_time): Update.
31919         (estimate_calls_size_and_time): Update.
31920         (estimate_node_size_and_time): Update.
31921         (inline_merge_summary): Update.
31922         (inline_update_overall_summary): Update.
31923         (estimate_time_after_inlining): Update.
31924         (inline_read_section): Update.
31925         (inline_write_summary): Update.
31926         * ipa-inline.c (compute_uninlined_call_time): Update.
31927         (compute_inlined_call_time): Update.
31928         (recursive_inlining): Update.
31929         (inline_small_functions): Update.
31930         (dump_overall_stats): Update.
31931         * ipa-inline.h: Include sreal.h.
31932         (size_time_entry): Turn time to sreal.
31933         (inline_summary): Turn self_time nad time to sreal.
31934
31935 2017-04-25  Jan Hubicka  <hubicka@ucw.cz>
31936
31937         * sreal.c: Include backend.h, tree.h, gimple.h, cgraph.h and
31938         data-streamer.h
31939         (sreal::stream_out, sreal::stream_in): New.
31940         * sreal.h (sreal::stream_out, sreal::stream_in): Declare.
31941
31942 2017-04-25  Jakub Jelinek  <jakub@redhat.com>
31943
31944         * Makefile.in (s-options): Invoke opt-gather.awk with LC_ALL=C in the
31945         environment.
31946
31947 2017-04-25  Uros Bizjak  <ubizjak@gmail.com>
31948
31949         PR target/70799
31950         * config/i386/i386.c (dimode_scalar_to_vector_candidate_p):
31951         Handle ASHIFTRT.
31952         (dimode_scalar_chain::compute_convert_gain): Ditto.
31953         (dimode_scalar_chain::make_vector_copies): Ditto.
31954         (dimode_scalar_chain::convert_reg): Ditto.
31955         (dimode_scalar_chain::convert_insn): Ditto.
31956         * config/i386/sse.md (VI24_AVX512BW_1): Remove mode iterator.
31957         (VI248_AVX512BW_1): New mode iterator.
31958         (<mask_codefor>ashr<mode>3<mask_name>): Merge insn pattern with
31959         <mask_codefor>ashrv2di3<mask_name> insn using VI248_AVX512BW_1
31960         mode iterator.
31961
31962 2017-04-25  Martin Sebor  <msebor@redhat.com>
31963
31964         PR tree-optimization/80497
31965         * gimple-ssa-sprintf.c (get_int_range): Avoid assuming all integer
31966         constants are representable in HOST_WIDE_INT.
31967         (parse_directive): Ditto.
31968
31969 2017-04-25  Martin Sebor  <msebor@redhat.com>
31970
31971         PR bootstrap/80486
31972         * dominance.c (dom_info::m_n_basic_blocks): Change type to unsigned.
31973         (new_zero_array): Adjust signature.
31974         (dom_info::dom_init): Used unsigned rather that size_t.
31975         (dom_info::dom_info): Same.
31976
31977 2017-04-25  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
31978             Jakub Jelinek  <jakub@redhat.com>
31979
31980         PR target/77728
31981         * config/arm/arm.c: Include gimple.h.
31982         (aapcs_layout_arg): Emit -Wpsabi note if arm_needs_doubleword_align
31983         returns negative, increment ncrn only if it returned positive.
31984         (arm_needs_doubleword_align): Return int instead of bool,
31985         ignore DECL_ALIGN of non-FIELD_DECL TYPE_FIELDS chain
31986         members, but if there is any such non-FIELD_DECL
31987         > PARM_BOUNDARY aligned decl, return -1 instead of false.
31988         (arm_function_arg): Emit -Wpsabi note if arm_needs_doubleword_align
31989         returns negative, increment nregs only if it returned positive.
31990         (arm_setup_incoming_varargs): Likewise.
31991         (arm_function_arg_boundary): Emit -Wpsabi note if
31992         arm_needs_doubleword_align returns negative, return
31993         DOUBLEWORD_ALIGNMENT only if it returned positive.
31994
31995 2017-04-25  Marek Polacek  <polacek@redhat.com>
31996
31997         PR sanitizer/80349
31998         * fold-const.c (fold_binary_loc) <case BIT_IOR_EXPR>: Convert arg0's
31999         first argument to type.
32000
32001 2017-04-25  Bill Seurer  <seurer@linux.vnet.ibm.com>
32002
32003         PR target/80482
32004         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Change
32005         type checks to test for compatibility instead of equality.
32006
32007 2017-04-25  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
32008             Jakub Jelinek  <jakub@redhat.com>
32009
32010         PR target/77728
32011         * config/aarch64/aarch64.c (struct aarch64_fn_arg_alignment): New
32012         type.
32013         (aarch64_function_arg_alignment): Return aarch64_fn_arg_alignment
32014         struct.  Ignore DECL_ALIGN of decls other than FIELD_DECL for
32015         the alignment computation, but return their maximum in warn_alignment.
32016         (aarch64_layout_arg): Adjust aarch64_function_arg_alignment caller.
32017         Emit a -Wpsabi note if warn_alignment is 16 bytes, but alignment
32018         is smaller.
32019         (aarch64_function_arg_boundary): Likewise.  Simplify using MIN/MAX.
32020         (aarch64_gimplify_va_arg_expr): Adjust aarch64_function_arg_alignment
32021         caller.
32022
32023 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32024
32025         * config/arc/simdext.md (dmpyh): Fix typo.
32026
32027 2017-04-25  Richard Biener  <rguenther@suse.de>
32028
32029         PR tree-optimization/80492
32030         * alias.c (compare_base_decls): Handle registers with asm
32031         specification conservatively.
32032         * tree-ssa-alias.c (decl_refs_may_alias_p): Handle
32033         compare_base_decls returning dont-know properly.
32034
32035 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32036
32037         * config/arc/arc.c (LEGITIMATE_OFFSET_ADDRESS_P): Delete macro.
32038         (legitimate_offset_address_p): New function.
32039         (arc_legitimate_address_p): Use above function.
32040
32041 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32042
32043         * config/arc/arc.c (arc_output_mi_thunk): Emit PIC calls.
32044
32045 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32046
32047         * config/arc/arc.c (arc_conditional_register_usage): Use ACCL,
32048         ACCH registers whenever they are available.
32049
32050 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32051
32052         * config/arc/arc.c (arc_conditional_register_usage): Make D0, D1
32053         double regs fix when not used.
32054
32055 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32056
32057         * config/arc/arc.h (REGNO_OK_FOR_BASE_P): Consider also extension
32058         core registers.
32059         (REG_OK_FOR_INDEX_P_NONSTRICT): Likewise.
32060         (REG_OK_FOR_BASE_P_NONSTRICT): Likewise.
32061
32062 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32063
32064         * config/arc/arc.c (arc_output_addsi): Check for h-register class
32065         when emitting short ADD instructions.
32066
32067 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
32068
32069         * config/arc/arc.md (cmpsi_cc_insn_mixed): Use 'h' register
32070         constraint.
32071         (cmpsi_cc_c_insn): Likewise.
32072         (cbranchsi4_scratch): Compute proper instruction length using
32073         compact_hreg_operand.
32074         * config/arc/predicates.md (compact_hreg_operand): New predicate.
32075
32076 2017-04-25  Richard Biener  <rguenther@suse.de>
32077
32078         PR middle-end/80509
32079         * passes.c (pass_manager::pass_manager): Initialize
32080         m_name_to_pass_map.
32081
32082 2017-04-25  Richard Biener  <rguenther@suse.de>
32083
32084         PR tree-optimization/79201
32085         * tree-ssa-sink.c (statement_sink_location): Handle calls.
32086
32087 2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
32088
32089         PR target/80464
32090         * config/s390/vector.md: Split MEM->GPR vector moves for
32091         non-s_operand addresses.
32092
32093 2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
32094
32095         PR target/79895
32096         * config/s390/predicates.md (reload_const_wide_int_operand): New
32097         predicate.
32098         * config/s390/s390.md ("movti"): Remove d/P alternative.
32099         ("movti_bigconst"): New pattern definition.
32100
32101 2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
32102
32103         PR target/80080
32104         * s390-protos.h (s390_expand_cs_hqi): Removed.
32105         (s390_expand_cs, s390_expand_atomic_exchange_tdsi): New prototypes.
32106         * config/s390/s390.c (s390_emit_compare_and_swap): Handle all integer
32107         modes as well as CCZ1mode and CCZmode.
32108         (s390_expand_atomic_exchange_tdsi, s390_expand_atomic): Adapt to new
32109         signature of s390_emit_compare_and_swap.
32110         (s390_expand_cs_hqi): Likewise, make static.
32111         (s390_expand_cs_tdsi): Generate an explicit compare before trying
32112         compare-and-swap, in some cases.
32113         (s390_expand_cs): Wrapper function.
32114         (s390_expand_atomic_exchange_tdsi): New backend specific expander for
32115         atomic_exchange.
32116         (s390_match_ccmode_set): Allow CCZmode <-> CCZ1 mode.
32117         * config/s390/s390.md ("atomic_compare_and_swap<mode>"): Merge the
32118         patterns for small and large integers.  Forbid symref memory operands.
32119         Move expander to s390.c.  Require cc register.
32120         ("atomic_compare_and_swap<DGPR:mode><CCZZ1:mode>_internal")
32121         ("*atomic_compare_and_swap<TDI:mode><CCZZ1:mode>_1")
32122         ("*atomic_compare_and_swapdi<CCZZ1:mode>_2")
32123         ("*atomic_compare_and_swapsi<CCZZ1:mode>_3"): Use s_operand to forbid
32124         symref memory operands.  Remove CC mode and call s390_match_ccmode
32125         instead.
32126         ("atomic_exchange<mode>"): Allow and implement all integer modes.
32127
32128 2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
32129
32130         * config/s390/s390.md (define_peephole2): New peephole to help
32131         combining the load-and-test pattern with volatile memory.
32132
32133 2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
32134
32135         * config/s390/s390.md ("cstorecc4"): Use load-on-condition and deal
32136         with CCZmode for TARGET_Z196.
32137
32138 2017-04-25  Jakub Jelinek  <jakub@redhat.com>
32139
32140         PR rtl-optimization/80501
32141         * combine.c (make_compound_operation_int): Set subreg_code to SET
32142         even for AND with mask of the sign bit of mode.
32143
32144         PR rtl-optimization/80500
32145         * loop-unroll.c (combine_var_copies_in_loop_exit): Call copy_rtx on
32146         sum's initial value.
32147
32148 2017-04-25  Julian Brown  <julian@codesourcery.com>
32149             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
32150
32151         * config/aarch64/thunderx2t99.md (thunderx2t99_crc): New Reservation.
32152
32153 2017-04-25  Marc Glisse  <marc.glisse@inria.fr>
32154
32155         * fold-const.c (tree_single_nonzero_warnv_p): Handle SSA_NAME.
32156
32157 2017-04-25  Julian Brown  <julian@codesourcery.com>
32158             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
32159
32160         * config/aarch64/thunderx2t99.md (thunderx2t99_aes): New Reservation.
32161         (thunderx2t99_sha): New Reservation.
32162
32163 2017-04-25  Julian Brown  <julian@codesourcery.com>
32164             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
32165
32166         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Fix
32167         type for 1-element load.
32168
32169 2017-04-24  Marc Glisse  <marc.glisse@inria.fr>
32170
32171         * match.pd (X/[ex]C CMP Y/[ex]C): New transformation.
32172
32173 2017-04-24  Martin Jambor  <mjambor@suse.cz>
32174
32175         PR tree-optimization/80293
32176         * tree-sra.c (scalarizable_type_p): New parameter const_decl, make
32177         char arrays not totally scalarizable if it is false.
32178         (analyze_all_variable_accesses): Pass correct value in the new
32179         parameter.  Add a statistics counter.
32180
32181 2017-04-24  Jan Hubicka  <hubicka@ucw.cz>
32182
32183         PR middle-end/79931
32184         * ipa-devirt.c (dump_possible_polymorphic_call_targets): Fix ICE.
32185
32186 2017-04-24  Richard Biener  <rguenther@suse.de>
32187
32188         PR tree-optimization/80494
32189         * tree-scalar-evolution.c (analyze_scalar_evolution_1): Bail
32190         out for complex types.
32191
32192 2017-04-24  Richard Biener  <rguenther@suse.de>
32193
32194         * tree-ssa-sccvn.h (run_scc_vn): Adjust prototype.
32195         * tree-ssa-sccvn.c (print_scc): Print SCC size.
32196         (extract_and_process_scc_for_name): Never fail but drop SCC to varying.
32197         (DFS): Adjust and never fail.
32198         (sccvn_dom_walker::fail): Remove.
32199         (sccvn_dom_walker::before_dom_children): Adjust.
32200         (run_scc_vn): Likewise and never fail.
32201         * tree-ssa-pre.c (pass_pre::execute): Adjust.
32202         (pass_fre::execute): Likewise.
32203
32204 2017-04-24  Richard Biener  <rguenther@suse.de>
32205
32206         PR tree-optimization/79725
32207         * tree-ssa-sink.c (statement_sink_location): Return whether
32208         failure reason was zero uses.  Move that check later.
32209         (sink_code_in_bb): Deal with zero uses by removing the stmt
32210         if possible.
32211
32212 2017-04-24  Richard Biener  <rguenther@suse.de>
32213
32214         PR c++/2972
32215         * tree-ssa-uninit.c (warn_uninitialized_vars): Handle some
32216         pointer-based references.
32217
32218 2017-04-24  Richard Biener  <rguenther@suse.de>
32219
32220         PR bootstrap/79814
32221         * pass_manager.h (pass_manager::operator new): Remove.
32222         (pass_manager::operator delete): Likewise.
32223         * passes.c (pass_manager::operator new): Remove.
32224         (pass_manager::operator delete): Likewise.
32225         (pass_manager::pass_manager): Zero individual pass members.
32226
32227 2017-04-23  Uros Bizjak  <ubizjak@gmail.com>
32228
32229         PR target/70799
32230         * config/i386/i386.c (dimode_scalar_to_vector_candidate_p)
32231         <case ASHIFT, case LSHIFTRT>: Also consider variable shifts.
32232         Check "XEXP (src, 1)" operand here.
32233         <case PLUS, case MINUS, case IOR, case XOR, case AND>:
32234         Check "XEXP (src, 1)" operand here.
32235         (dimode_scalar_chain::make_vector_copies): Detect count register
32236         of a shift instruction.  Zero extend count register from QImode
32237         to DImode to satisfy vector shift pattern count operand predicate.
32238         Substitute vector shift count operand with a DImode copy.
32239         (dimode_scalar_chain::convert_reg): Ditto, zero-extend from
32240         vector register.
32241
32242 2017-04-21  Uros Bizjak  <ubizjak@gmail.com>
32243
32244         * config/i386/i386.md (*extzvqi_mem_rex64): Move above *extzv<mode>.
32245         Remove UNSPEC_NOREX_MEM tag.  Update corresponding peephole2 pattern.
32246         (*insvqi_1_mem_rex64): Move above insv<mode>_1.  Remove
32247         UNSPEC_NOREX_MEM tag.  Update corresponding peephole2 pattern.
32248         (UNSPEC_NOREX_MEM): Remove definition.
32249
32250 2017-04-21  Richard Biener  <rguenther@suse.de>
32251
32252         PR tree-optimization/79547
32253         * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
32254         Handle strlen, strcmp, strncmp, strcasecmp, strncasecmp, memcmp,
32255         bcmp, strspn, strcspn, __builtin_object_size and __builtin_constant_p
32256         without any constraints.
32257
32258 2017-04-21  Richard Biener  <rguenther@suse.de>
32259
32260         PR tree-optimization/78847
32261         * fold-const.c (split_tree): Handle POINTER_PLUS_EXPR.
32262
32263 2017-04-21  Richard Biener  <rguenther@suse.de>
32264
32265         * tree.h (build_qualified_type): Annotate with CXX_MEM_STAT_INFO.
32266         (build_distinct_type_copy): Likewise.
32267         (build_variant_type_copy): Likewise.
32268         * tree.c (build_qualified_type): Pass down mem-stat info.
32269         (build_distinct_type_copy): Likewise.
32270         (build_variant_type_copy): Likewise.
32271
32272 2017-04-21  Richard Biener  <rguenther@suse.de>
32273
32274         PR tree-optimization/80237
32275         * tree-ssa-pre.c (find_leader_in_sets): Add third set argument,
32276         defaulted to NULL.
32277         (phi_translate_1): Also allow a leader in AVAIL_OUT of pred
32278         for a simplified result.
32279
32280 2016-04-21  Richard Biener  <rguenther@suse.de>
32281
32282         * tree-ssa-loop-ivcanon.c (constant_after_peeling): Do not require
32283         sth as strict as a simple_iv but a chrec without symbols and an
32284         operand defined in the loop we are peeling (and not some subloop).
32285         (propagate_constants_for_unrolling): Propagate all constants.
32286
32287 2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
32288
32289         PR target/79804
32290         * config/i386/i386.c (print_reg): Remove assert for disalowed
32291         regno values, call output_operand_lossage instead.
32292
32293 2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
32294
32295         PR target/78090
32296         * config/i386/constraints.md (Yc): New register constraint.
32297         * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
32298         Use Yc constraint for alternative 2 of operand 0.  Remove
32299         preferred_for_speed attribute.
32300
32301 2017-04-20  Alexander Monakov  <amonakov@ispras.ru>
32302
32303         * omp-low.c (lower_lastprivate_clauses): Correct handling of linear and
32304         lastprivate clauses in SIMT case.
32305
32306 2017-04-20  Volker Reichelt  <v.reichelt@netcologne.de>
32307
32308         * doc/invoke.texi (-Wextra-semi): Document new warning option.
32309
32310 2017-04-20  Richard Biener  <rguenther@suse.de>
32311
32312         PR tree-optimization/57796
32313         * tree-vect-stmts.c (vect_model_store_cost): Cost scatters
32314         as N scalar stores.
32315         (vect_model_load_cost): Cost gathers as N scalar loads.
32316
32317 2017-04-20  Richard Biener  <rguenther@suse.de>
32318
32319         * ggc-page.c (ggc_allocated_p): Rename to ...
32320         (safe_lookup_page_table_entry): ... this and return the lookup
32321         result.
32322         (gt_ggc_m_S): Use safe_lookup_page_table_entry.
32323
32324 2017-04-20  Richard Biener  <rguenther@suse.de>
32325
32326         PR tree-optimization/80453
32327         * tree-ssa-sccvn.h (struct vn_phi_s): Add cclhs and ccrhs members.
32328         * tree-ssa-sccvn.c (cond_stmts_equal_p): Use recorded lhs and rhs
32329         from the conditions.
32330         (vn_phi_eq): Pass them down.
32331         (vn_phi_lookup): Record them.
32332         (vn_phi_insert): Likewise.
32333
32334 2017-04-20  Matthew Fortune  <matthew.fortune@imgtec.com>
32335
32336         * config/mips/mips.c (mips_expand_vec_perm_const): Re-fix
32337         uninitialized variable warning to avoid buffer overrun.
32338
32339 2017-04-20  Alexander Monakov  <amonakov@ispras.ru>
32340
32341         PR other/71250
32342         * doc/invoke.texi (-Wmissing-field-initializers): Mention that warning
32343         is suppressed for '{ 0 }' in C.
32344
32345 2017-04-20  Jakub Jelinek  <jakub@redhat.com>
32346
32347         * BASE-VER: Set to 8.0.0.
32348
32349 2017-04-20  Thomas Preud'homme  <thomas.preudhomme@arm.com>
32350
32351         * config/arm/arm.c (arm_elf_asm_cdtor): Create non-default
32352         priority .init_array and .fini_array section with SECTION_NOTYPE
32353         flag.
32354
32355 2017-04-20  Jakub Jelinek  <jakub@redhat.com>
32356
32357         PR middle-end/80423
32358         * tree.h (build_array_type): Add typeless_storage default argument.
32359         * tree.c (type_cache_hasher::equal): Also compare
32360         TYPE_TYPELESS_STORAGE flag for ARRAY_TYPEs.
32361         (build_array_type): Add typeless_storage argument, set
32362         TYPE_TYPELESS_STORAGE to it, if shared also hash it, and pass to
32363         recursive call.
32364         (build_nonshared_array_type): Adjust build_array_type_1 caller.
32365         (build_array_type): Likewise.  Add typeless_storage argument.
32366
32367 2017-04-19  Eric Botcazou  <ebotcazou@adacore.com>
32368             Jakub Jelinek  <jakub@redhat.com>
32369
32370         PR tree-optimization/80426
32371         * tree-vrp.c (extract_range_from_binary_expr_1): For an additive
32372         operation on symbolic operands, also compute the overflow for the
32373         invariant part when the operation degenerates into a negation.
32374
32375 2017-04-19  Jakub Jelinek  <jakub@redhat.com>
32376
32377         PR debug/80461
32378         * dwarf2out.c (modified_type_die, gen_type_die_with_usage):
32379         Check for t with zero TYPE_QUALS_NO_ADDR_SPACE.
32380
32381         PR debug/80436
32382         * tree-ssa-loop-manip.c (find_uses_to_rename_def): Ignore debug uses.
32383
32384 2017-04-19  Georg-Johann Lay  <avr@gjlay.de>
32385
32386         PR target/80462
32387         * config/avr/avr.c (tree.h): Include it.
32388         (cgraph.h): Include it.
32389         (avr_encode_section_info): Don't warn for uninitialized progmem
32390         variable if it's just an alias.
32391
32392 2017-04-19  Richard Biener  <rguenther@suse.de>
32393
32394         PR ipa/65972
32395         * auto-profile.c (afdo_vpt_for_early_inline): Update SSA
32396         when needed by AutoPGO.
32397
32398 2017-04-19  Paulo J. Matos  <paulo@matos-sorge.com>
32399
32400         PR lto/50345
32401         * doc/lto.texi: Remove an extra 'that'.
32402
32403 2017-04-19  Segher Boessenkool  <segher@kernel.crashing.org>
32404
32405         PR rtl-optimization/80429
32406         * ira.c (split_live_ranges_for_shrink_wrap): Don't split regs that
32407         are only used in debug insns.
32408
32409 2017-04-19  Eric Botcazou  <ebotcazou@adacore.com>
32410             Vladimir Makarov  <vmakarov@redhat.com>
32411
32412         * config/sparc/predicates.md (input_operand): Add comment.  Return
32413         true for any memory operand when LRA is in progress.
32414         * config/sparc/sparc.c (sparc_expand_move): Minor formatting fix.
32415
32416 2017-04-18  Jeff Law  <law@redhat.com>
32417
32418         PR target/74563
32419         * mips.md ({return,simple_return}_internal): Do not overwrite
32420         operands[0].
32421
32422 2017-04-18  Jakub Jelinek  <jakub@redhat.com>
32423
32424         PR tree-optimization/80443
32425         * tree-vrp.c (intersect_ranges): For signed 1-bit precision type,
32426         instead of adding 1, subtract -1 and similarly instead of subtracting
32427         1 add -1.
32428
32429 2017-04-18  Richard Sandiford  <richard.sandiford@arm.com>
32430
32431         PR rtl-optimization/80357
32432         * haifa-sched.c (tmp_bitmap): New variable.
32433         (model_recompute): Handle duplicate use records.
32434         (alloc_global_sched_pressure_data): Initialize tmp_bitmap.
32435         (free_global_sched_pressure_data): Free it.
32436
32437 2017-04-18  Bernd Edlinger  <bernd.edlinger@hotmail.de>
32438
32439         Revert:
32440         2017-02-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>
32441         * Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe.
32442         (LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR
32443         instead of SYSTEM_HEADER_DIR.
32444
32445 2017-04-18  Jeff Law  <law@redhat.com>
32446
32447         PR middle-end/80422
32448         * cfgcleanup.c (try_crossjump_to_edge): Verify SRC1 and SRC2 have
32449         predecessors after walking up the insn chain.
32450
32451 2017-04-18  Jakub Jelinek  <jakub@redhat.com>
32452
32453         PR debug/80263
32454         * dwarf2out.c (modified_type_die): Try harder not to emit internal
32455         sizetype type into debug info.
32456
32457 2017-04-18  Michael Meissner  <meissner@linux.vnet.ibm.com>
32458
32459         PR target/80099
32460         * config/rs6000/rs6000.c (rs6000_expand_vector_extract): Eliminate
32461         unneeded test for TARGET_UPPER_REGS_SF.
32462         * config/rs6000/vsx.md (vsx_extract_v4sf_var): Likewise.
32463
32464 2017-04-18  Jakub Jelinek  <jakub@redhat.com>
32465
32466         PR sanitizer/80444
32467         * sancov.c (sancov_pass): Use gsi_start_nondebug_after_labels_bb
32468         instead of gsi_after_labels.
32469
32470 2017-04-18  Jeff Law  <law@redhat.com>
32471
32472         * regcprop.c (maybe_mode_change): Avoid creating copies of the
32473         stack pointer.
32474
32475         Revert:
32476         2017-04-13  Jeff Law  <law@redhat.com>
32477         * config/mips.mips.md (zero_extendsidi2): Do not allow SP to appear
32478         in operands[1] if it is a MEM and TARGET_MIPS16 is active.
32479
32480 2017-04-18  Georg-Johann Lay  <avr@gjlay.de>
32481
32482         PR target/79453
32483         * config/avr/avr.c (intl.h): Include it.
32484         (avr_pgm_check_var_decl) [reason]: Wrap diagnostic snippets into _().
32485
32486 2017-04-18  Martin Liska  <mliska@suse.cz>
32487
32488         PR gcov-profile/78783
32489         * gcov-tool.c (gcov_output_files): Validate that destination
32490         file is either removed by the tool or by a user.
32491
32492 2017-04-14  Andrew Burgess  <andrew.burgess@embecosm.com>
32493             Guy Benyei  <guybe@mellanox.com>
32494
32495         * config/arc/arc.c (arc_reorg): Move loop_end_id into a more local
32496         block, and do not negate it, the stored id is already negative.
32497
32498 2017-04-14  Andrew Burgess  <andrew.burgess@embecosm.com>
32499
32500         * config/arc/arc.md (doloop_begin_i): Use @pcl assembler syntax.
32501
32502 2017-04-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
32503
32504         PR target/80098
32505         * config/rs6000/rs6000-cpus.def (OTHER_P9_VECTOR_MASKS): Define
32506         masks of options that should be turned off if the VSX vector
32507         options are turned off.
32508         (OTHER_P8_VECTOR_MASKS): Likewise.
32509         (OTHER_VSX_VECTOR_MASKS): Likewise.
32510         * config/rs6000/rs6000.c (rs6000_option_override_internal): Call
32511         rs6000_disable_incompatible_switches to validate no type switches
32512         like -mvsx.
32513         (rs6000_incompatible_switch): New function to disallow turning on
32514         other vector options if -mno-vsx, -mno-power8-vector, or
32515         -mno-power9-vector are specified.
32516
32517 2017-04-14  Claudiu Zissulescu  <claziss@synopsys.com>
32518
32519         * config/arc/arc.h (CRT_CALL_STATIC_FUNCTION): Use long calls.
32520
32521 2017-04-14  Claudiu Zissulescu  <claziss@synopsys.com>
32522
32523         * config/arc/arc-protos.h (arc_decl_pretend_args): Remove.
32524         * config/arc/arc.c (arc_decl_pretend_args): Likewise.
32525         * config/arc/arc.h (CFA_FRAME_BASE_OFFSET): Likewise.
32526         (ARG_POINTER_CFA_OFFSET): Likewise.
32527
32528 2017-04-14  Claudiu Zissulescu  <claziss@synopsys.com>
32529
32530         * config/arc/arc.c (arc_mode_dependent_address_p): Relax
32531         conditions to take advantage of various optimizations.
32532
32533 2017-04-13  Jeff Law  <law@redhat.com>
32534
32535         * config/mips.mips.md (zero_extendsidi2): Do not allow SP to appear
32536         in operands[1] if it is a MEM and TARGET_MIPS16 is active.
32537         (zero_extendsidi2_dext): Likewise.
32538
32539 2017-04-13  Jakub Jelinek  <jakub@redhat.com>
32540
32541         PR sanitizer/80403
32542         * fold-const.c (fold_ternary_loc): Revert
32543         use op0 instead of fold_convert_loc (loc, type, arg0) part of
32544         2017-04-12 change.
32545
32546 2017-04-13  Vladimir Makarov  <vmakarov@redhat.com>
32547
32548         PR rtl-optimization/80343
32549         * lra-remat.c (update_scratch_ops): Assign original hard reg to
32550         new scratch pseudo.
32551
32552 2017-04-13  Denis Khalikov <d.khalikov@partner.samsung.com>
32553
32554         PR sanitizer/80414
32555         * ubsan.c (ubsan_expand_bounds_ifn): Pass original index
32556         to ubsan_encode_value.
32557
32558 2017-04-13  Jeff Law  <law@redhat.com>
32559
32560         * reload1.c (eliminate_regs_1): Call gen_rtx_raw_SUBREG for SUBREGs
32561         appearing in DEBUG_INSNs.
32562
32563 2017-04-13  Martin Liska  <mliska@suse.cz>
32564
32565         PR gcov-profile/80413
32566         * gcov-io.c (gcov_write_string): Copy to buffer just when
32567         allocated size is greater than zero.
32568
32569 2017-04-13  Jakub Jelinek  <jakub@redhat.com>
32570
32571         PR debug/80321
32572         * dwarf2out.c (decls_for_scope): Ignore declarations of
32573         current_function_decl in BLOCK_NONLOCALIZED_VARS.
32574
32575 2017-04-12  Jan Hubicka  <hubicka@ucw.cz>
32576
32577         PR lto/69953
32578         * ipa-visibility.c (non_local_p): Fix typos.
32579         (localize_node): When localizing symbol in same comdat group,
32580         dissolve the group only when we know external symbols are going
32581         to be privatized.
32582         (function_and_variable_visibility): Do not localize DECL_EXTERNAL.
32583
32584 2017-04-12  Jakub Jelinek  <jakub@redhat.com>
32585
32586         PR tree-optimization/79390
32587         * optabs.c (emit_conditional_move): If the preferred op2/op3 operand
32588         order does not result in usable sequence, retry with reversed operand
32589         order.
32590
32591         PR sanitizer/80403
32592         PR sanitizer/80404
32593         PR sanitizer/80405
32594         * fold-const.c (fold_ternary_loc): Use op1 instead of arg1 as argument
32595         to fold_build2_loc.  Convert TREE_OPERAND (tem, 0) to type.  Use
32596         op0 instead of fold_convert_loc (loc, type, arg0).
32597
32598 2017-04-12  Jeff Law  <law@redhat.com>
32599
32600         * genattrtab.c (write_eligible_delay): Verify DELAY_INSN still
32601         has a delay slot in the generated code.
32602
32603         * config/cris/cris.md (cris_preferred_reload_class): Return
32604         GENNONACR_REGS rather than GENERAL_REGS.
32605
32606 2017-04-12  Jakub Jelinek  <jakub@redhat.com>
32607
32608         PR c/80163
32609         * expr.c <CASE_CONVERT>: For EXPAND_INITIALIZER determine SIGN_EXTEND
32610         vs. ZERO_EXTEND based on signedness of treeop0's type rather than
32611         signedness of the result type.
32612
32613 2017-04-12  Richard Biener  <rguenther@suse.de>
32614             Jeff Law  <law@redhat.com>
32615
32616         PR tree-optimization/80359
32617         * tree-ssa-dse.c (maybe_trim_partially_dead_store): Do not
32618         trim stores to TARGET_MEM_REFs.
32619
32620 2017-04-12  Richard Biener  <rguenther@suse.de>
32621
32622         PR tree-optimization/79390
32623         * gimple-ssa-split-paths.c (is_feasible_trace): Restrict
32624         threading case even more.
32625
32626 2017-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
32627
32628         PR target/80382
32629         * config/rs6000/sync.md (atomic_load<mode>, atomic_store<mode): Test
32630         for quad_address_p for TImode, instead of just not indexed_address.
32631
32632 2017-04-12  Richard Biener  <rguenther@suse.de>
32633             Bernd Edlinger  <bernd.edlinger@hotmail.de>
32634
32635         PR middle-end/79671
32636         * alias.c (component_uses_parent_alias_set_from): Handle
32637         TYPE_TYPELESS_STORAGE.
32638         (get_alias_set): Likewise.
32639         * tree-core.h (tree_type_common): Add typeless_storage flag.
32640         * tree.h (TYPE_TYPELESS_STORAGE): New macro.
32641         * stor-layout.c (place_union_field): Set TYPE_TYPELESS_STORAGE
32642         for types containing members with TYPE_TYPELESS_STORAGE.
32643         (place_field): Likewise.
32644         (layout_type): Likewise for ARRAY_TYPE.
32645         * lto-streamer-out.c (hash_tree): Hash TYPE_TYPELESS_STORAGE.
32646         * tree-streamer-in.c (unpack_ts_type_common_value_fields): Stream
32647         TYPE_TYPELESS_STORAGE.
32648         * tree-streamer-out.c (pack_ts_type_common_value_fields): Likewise.
32649
32650 2017-04-12  Jakub Jelinek  <jakub@redhat.com>
32651
32652         PR sanitizer/80349
32653         * fold-const.c (fold_binary_loc) <case BIT_IOR_EXPR>: Convert arg0's
32654         first argument to type.
32655
32656 2017-04-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
32657
32658         PR target/80376
32659         PR target/80315
32660         * config/rs6000/rs6000.c (rs6000_expand_unop_builtin): Return
32661         CONST0_RTX (mode) rather than const0_rtx where appropriate.
32662         (rs6000_expand_binop_builtin): Likewise.
32663         (rs6000_expand_ternop_builtin): Likewise; also add missing
32664         vsx_xxpermdi_* variants; also fix typo (arg1 => arg2) for
32665         vshasigma built-ins.
32666         * doc/extend.texi: Document that vec_xxpermdi's third argument
32667         must be a constant.
32668
32669 2017-04-11  Uros Bizjak  <ubizjak@gmail.com>
32670
32671         * config/i386/i386.c (dimode_scalar_chain::compute_convert_gain):
32672         Use shift_const cost parameter when calculating gain of STV shifts.
32673
32674 2017-04-11  Vladimir Makarov  <vmakarov@redhat.com>
32675
32676         PR rtl-optimization/70478
32677         * lra-constraints.c (process_alt_operands): Check memory for
32678         disfavoring memory insn operand.
32679
32680 2017-04-11  Jakub Jelinek  <jakub@redhat.com>
32681
32682         PR middle-end/80100
32683         * simplify-rtx.c (simplify_binary_operation_1) <case IOR>: Perform
32684         left shift in unsigned HOST_WIDE_INT type.
32685
32686         PR rtl-optimization/80385
32687         * simplify-rtx.c (simplify_unary_operation_1): Don't transform
32688         (not (neg X)) into (plus X -1) for complex or non-integral modes.
32689
32690         PR libgomp/80394
32691         * omp-low.c (scan_omp_task): Don't optimize away empty tasks
32692         if they have any depend clauses.
32693
32694 2017-04-11  Martin Liska  <mliska@suse.cz>
32695
32696         PR ipa/80212
32697         * cgraph.c (cgraph_node::dump): Dump calls_comdat_local.
32698         * ipa-split.c (split_function): Create a local comdat symbol
32699         if caller is in a comdat group.
32700
32701 2017-04-11  Martin Liska  <mliska@suse.cz>
32702
32703         PR ipa/80212
32704         * ipa-cp.c (determine_versionability): Handle calls_comdat_local
32705         flags.
32706
32707 2017-04-11  Martin Sebor  <msebor@redhat.com>
32708
32709         PR middle-end/80364
32710         * gimple-ssa-sprintf.c (get_int_range): Remove second argument and
32711         always use the int type.  Use INTEGRAL_TYPE_P() rather than testing
32712         for INTEGER_TYPE.
32713         (directive::set_width, directive::set_precision, format_character):
32714         Adjust.
32715         (parse_directive): Use INTEGRAL_TYPE_P() rather than testing for
32716         INTEGER_TYPE.
32717
32718 2017-04-11  Richard Earnshaw  <rearnsha@arm.com>
32719
32720         PR target/80389
32721         * config/arm/arm.c (arm_configure_build_target): When -mcpu and -arch
32722         conflict, set target->arch_name instead of target->cpu_name.
32723
32724 2017-04-11  Richard Biener  <rguenther@suse.de>
32725
32726         PR tree-optimization/80374
32727         * tree-ssa-dom.c (derive_equivalences_from_bit_ior): Use
32728         build_zero_cst, remove fold_convertible_p check again.
32729
32730 2017-04-11  Martin Liska  <mliska@suse.cz>
32731
32732         PR sanitizer/70878
32733         * ubsan.c (instrument_object_size): Do not instrument register
32734         variables.
32735
32736 2017-04-11  Jakub Jelinek  <jakub@redhat.com>
32737
32738         PR target/80381
32739         * config/i386/i386-builtin-types.def
32740         (V16HI_FTYPE_V16HI_INT_V16HI_UHI_COUNT,
32741         V16HI_FTYPE_V16HI_V8HI_V16HI_UHI_COUNT,
32742         V16SI_FTYPE_V16SI_INT_V16SI_UHI_COUNT,
32743         V16SI_FTYPE_V16SI_V4SI_V16SI_UHI_COUNT,
32744         V2DI_FTYPE_V2DI_INT_V2DI_UQI_COUNT,
32745         V2DI_FTYPE_V2DI_V2DI_V2DI_UQI_COUNT,
32746         V32HI_FTYPE_V32HI_INT_V32HI_USI_COUNT,
32747         V32HI_FTYPE_V32HI_V8HI_V32HI_USI_COUNT,
32748         V4DI_FTYPE_V4DI_INT_V4DI_UQI_COUNT,
32749         V4DI_FTYPE_V4DI_V2DI_V4DI_UQI_COUNT,
32750         V4SI_FTYPE_V4SI_INT_V4SI_UQI_COUNT,
32751         V4SI_FTYPE_V4SI_V4SI_V4SI_UQI_COUNT,
32752         V8DI_FTYPE_V8DI_INT_V8DI_UQI_COUNT,
32753         V8DI_FTYPE_V8DI_V2DI_V8DI_UQI_COUNT,
32754         V8HI_FTYPE_V8HI_INT_V8HI_UQI_COUNT,
32755         V8HI_FTYPE_V8HI_V8HI_V8HI_UQI_COUNT,
32756         V8SI_FTYPE_V8SI_INT_V8SI_UQI_COUNT,
32757         V8SI_FTYPE_V8SI_V4SI_V8SI_UQI_COUNT): New function type aliases.
32758         * config/i386/i386-builtin.def (__builtin_ia32_pslld512_mask,
32759         __builtin_ia32_pslldi512_mask, __builtin_ia32_psllq512_mask,
32760         __builtin_ia32_psllqi512_mask, __builtin_ia32_psrad512_mask,
32761         __builtin_ia32_psradi512_mask, __builtin_ia32_psraq512_mask,
32762         __builtin_ia32_psraqi512_mask, __builtin_ia32_psrld512_mask,
32763         __builtin_ia32_psrldi512_mask, __builtin_ia32_psrlq512_mask,
32764         __builtin_ia32_psrlqi512_mask, __builtin_ia32_psllwi128_mask,
32765         __builtin_ia32_pslldi128_mask, __builtin_ia32_psllqi128_mask,
32766         __builtin_ia32_psllw128_mask, __builtin_ia32_pslld128_mask,
32767         __builtin_ia32_psllq128_mask, __builtin_ia32_psllwi256_mask,
32768         __builtin_ia32_psllw256_mask, __builtin_ia32_pslldi256_mask,
32769         __builtin_ia32_pslld256_mask, __builtin_ia32_psllqi256_mask,
32770         __builtin_ia32_psllq256_mask, __builtin_ia32_psradi128_mask,
32771         __builtin_ia32_psrad128_mask, __builtin_ia32_psradi256_mask,
32772         __builtin_ia32_psrad256_mask, __builtin_ia32_psraqi128_mask,
32773         __builtin_ia32_psraq128_mask, __builtin_ia32_psraqi256_mask,
32774         __builtin_ia32_psraq256_mask, __builtin_ia32_psrldi128_mask,
32775         __builtin_ia32_psrld128_mask, __builtin_ia32_psrldi256_mask,
32776         __builtin_ia32_psrld256_mask, __builtin_ia32_psrlqi128_mask,
32777         __builtin_ia32_psrlq128_mask, __builtin_ia32_psrlqi256_mask,
32778         __builtin_ia32_psrlq256_mask, __builtin_ia32_psrawi256_mask,
32779         __builtin_ia32_psraw256_mask, __builtin_ia32_psrawi128_mask,
32780         __builtin_ia32_psraw128_mask, __builtin_ia32_psrlwi256_mask,
32781         __builtin_ia32_psrlw256_mask, __builtin_ia32_psrlwi128_mask,
32782         __builtin_ia32_psrlw128_mask, __builtin_ia32_psllwi512_mask,
32783         __builtin_ia32_psllw512_mask, __builtin_ia32_psrawi512_mask,
32784         __builtin_ia32_psraw512_mask, __builtin_ia32_psrlwi512_mask,
32785         __builtin_ia32_psrlw512_mask): Use _COUNT suffixed function type
32786         aliases.
32787         * config/i386/i386.c (ix86_expand_args_builtin): Rename last_arg_count
32788         flag to second_arg_count, handle 4 argument function type _COUNT
32789         aliases, handle second_arg_count on second argument rather than last.
32790
32791 2017-04-10  Jeff Law  <law@redhat.com>
32792
32793         PR tree-optimization/80374
32794         * tree-ssa-dom.c (derive_equivalences_from_bit_ior): Do not try to
32795         record anything if we can not convert integer_zero_node to the
32796         desired type.
32797
32798 2017-04-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
32799
32800         PR target/80108
32801         * config/rs6000/rs6000.c (rs6000_option_override_internal):
32802         Enhance special handling given to the TARGET_P9_MINMAX option in
32803         relation to certain other options.
32804
32805 2017-04-10  Bin Cheng  <bin.cheng@arm.com>
32806
32807         PR tree-optimization/80153
32808         * tree-ssa-loop-ivopts.c (add_iv_candidate_for_use): Check and
32809         remove POINTER_PLUS_EXPR's base part directly, rather than through
32810         aff_tree.
32811
32812 2017-04-10  Richard Biener  <rguenther@suse.de>
32813             Bin Cheng  <bin.cheng@arm.com>
32814
32815         PR tree-optimization/80153
32816         * tree-affine.c (aff_combination_to_tree): Get base pointer from
32817         the first element of pointer type aff_tree.  Build result expr in
32818         aff_tree's type.
32819         (add_elt_to_tree): Convert to type unconditionally.  Remove other
32820         fold_convert calls.
32821         * tree-ssa-loop-ivopts.c (alloc_iv): Pass in consistent types.
32822         (rewrite_use_nonlinear_expr): Check invariant using iv information.
32823
32824 2017-04-10  Richard Biener  <rguenther@suse.de>
32825
32826         * tree-ssa-structalias.c (find_func_aliases): Properly handle
32827         asm inputs.
32828
32829 2017-04-10  Vladimir Makarov  <vmakarov@redhat.com>
32830
32831         PR rtl-optimization/70478
32832         * lra-constraints.c (curr_small_class_check): New.
32833         (update_and_check_small_class_inputs): New.
32834         (process_alt_operands): Update curr_small_class_check.  Disfavor
32835         alternative insn memory operands.  Check available regs for small
32836         class operands.
32837
32838 2017-03-31  Matthew Fortune  <matthew.fortune@imgtec.com>
32839
32840         PR target/80057
32841         * config/mips/mips.opt (-mvirt): Update description.
32842         * doc/invoke.texi (-mvirt): Likewise.
32843
32844 2017-04-10  Richard Biener  <rguenther@suse.de>
32845
32846         PR middle-end/80362
32847         * fold-const.c (fold_binary_loc): Look at unstripped ops when
32848         looking for NEGATE_EXPR in -A / -B to A / B folding.
32849
32850 2017-04-10  Martin Liska  <mliska@suse.cz>
32851
32852         PR gcov-profile/80224
32853         * gcov.c (print_usage): Fix usage string.
32854         (get_gcov_intermediate_filename): Remove.
32855         (output_gcov_file): Use both for normal and intermediate format.
32856         (generate_results): Do not initialize special file for
32857         intermediate format.
32858
32859 2017-04-10  Richard Biener  <rguenther@suse.de>
32860
32861         PR tree-optimization/80304
32862         * tree-ssa-loop-im.c (ref_indep_loop_p_1): Also recurse
32863         for safelen.
32864
32865 2017-04-10  Nathan Sidwell  <nathan@acm.org>
32866
32867         PR target/79905
32868         * config/rs6000/rs6000.c (rs6000_vector_type): New.
32869         (rs6000_init_builtins): Use it.
32870
32871 2016-04-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
32872
32873         * config/arm/arm.md (<mrc>): Add mode to SET source.
32874         (<mrrc>): Likewise.
32875
32876 2017-04-10  Richard Biener  <rguenther@suse.de>
32877
32878         PR middle-end/80344
32879         * gimplify.c (is_gimple_mem_rhs_or_call): Allow CLOBBERs.
32880
32881 2017-04-10  Jakub Jelinek  <jakub@redhat.com>
32882
32883         PR target/80324
32884         * config/i386/avx512fintrin.h (_mm512_reduce_add_epi32,
32885         _mm512_reduce_mul_epi32, _mm512_reduce_and_epi32,
32886         _mm512_reduce_or_epi32, _mm512_mask_reduce_add_epi32,
32887         _mm512_mask_reduce_mul_epi32, _mm512_mask_reduce_and_epi32,
32888         _mm512_mask_reduce_or_epi32, _mm512_reduce_min_epi32,
32889         _mm512_reduce_max_epi32, _mm512_reduce_min_epu32,
32890         _mm512_reduce_max_epu32, _mm512_mask_reduce_min_epi32,
32891         _mm512_mask_reduce_max_epi32, _mm512_mask_reduce_min_epu32,
32892         _mm512_mask_reduce_max_epu32, _mm512_reduce_add_ps,
32893         _mm512_reduce_mul_ps, _mm512_mask_reduce_add_ps,
32894         _mm512_mask_reduce_mul_ps, _mm512_reduce_min_ps, _mm512_reduce_max_ps,
32895         _mm512_mask_reduce_min_ps, _mm512_mask_reduce_max_ps,
32896         _mm512_reduce_add_epi64, _mm512_reduce_mul_epi64,
32897         _mm512_reduce_and_epi64, _mm512_reduce_or_epi64,
32898         _mm512_mask_reduce_add_epi64, _mm512_mask_reduce_mul_epi64,
32899         _mm512_mask_reduce_and_epi64, _mm512_mask_reduce_or_epi64,
32900         _mm512_reduce_min_epi64, _mm512_reduce_max_epi64,
32901         _mm512_mask_reduce_min_epi64, _mm512_mask_reduce_max_epi64,
32902         _mm512_reduce_min_epu64, _mm512_reduce_max_epu64,
32903         _mm512_mask_reduce_min_epu64, _mm512_mask_reduce_max_epu64,
32904         _mm512_reduce_add_pd, _mm512_reduce_mul_pd, _mm512_mask_reduce_add_pd,
32905         _mm512_mask_reduce_mul_pd, _mm512_reduce_min_pd, _mm512_reduce_max_pd,
32906         _mm512_mask_reduce_min_pd, _mm512_mask_reduce_max_pd): New intrinsics.
32907
32908 2017-04-08  Vladimir Makarov  <vmakarov@redhat.com>
32909
32910         PR rtl-optimization/70478
32911         * lra-constraints.c: Reverse the last patch.
32912
32913 2017-04-08  Andreas Tobler  <andreast@gcc.gnu.org>
32914
32915         * config/aarch64/aarch64-freebsd.h: Define MCOUNT_NAME.
32916         Add comment for WCHAR_T.
32917
32918 2017-04-08  Martin Liska  <mliska@suse.cz>
32919
32920         Revert:
32921         2017-04-07  Martin Liska  <mliska@suse.cz>
32922
32923         PR ipa/80212
32924         * ipa-split.c (split_function): Add function part to a same comdat
32925         group.
32926
32927 2017-04-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
32928
32929         PR target/80358
32930         * config/rs6000/rs6000.c (expand_block_compare): Fix boundary check.
32931
32932 2017-04-07  Pat Haugen  <pthaugen@us.ibm.com>
32933
32934         * rs6000/rs6000.c (vec_load_pendulum): Rename...
32935         (vec_pairing): ...to this.
32936         (power9_sched_reorder2): Rewrite code for pairing vector/vecload insns.
32937         (rs6000_sched_init): Adjust for name change.
32938         (struct rs6000_sched_context): Likewise.
32939         (rs6000_init_sched_context): Likewise.
32940         (rs6000_set_sched_context): Likewise.
32941
32942 2017-04-07  Jakub Jelinek  <jakub@redhat.com>
32943
32944         PR target/80322
32945         PR target/80323
32946         PR target/80325
32947         PR target/80326
32948         * config/i386/avxintrin.h (_mm256_cvtsd_f64, _mm256_cvtss_f32): New
32949         intrinsics.
32950         * config/i386/avx512fintrin.h (_mm512_int2mask, _mm512_mask2int,
32951         _mm512_abs_ps, _mm512_mask_abs_ps, _mm512_abs_pd, _mm512_mask_abs_pd,
32952         _mm512_cvtsd_f64, _mm512_cvtss_f32): Likewise.
32953
32954 2017-04-07  Andreas Tobler  <andreast@gcc.gnu.org>
32955
32956         * config/aarch64/aarch64-freebsd.h: Define WCHAR_TYPE.
32957
32958 2017-04-07  Vladimir Makarov  <vmakarov@redhat.com>
32959
32960         PR rtl-optimization/70703
32961         * ira-color.c (update_conflict_hard_regno_costs): Use
32962         int64_t instead of HOST_WIDE_INT.
32963
32964 2017-04-07  Vladimir Makarov  <vmakarov@redhat.com>
32965
32966         PR rtl-optimization/70478
32967         * lra-constraints.c (process_alt_operands): Disfavor alternative
32968         insn memory operands.
32969
32970 2017-04-07  Jeff Law  <law@redhat.com>
32971
32972         * config/iq2000/iq2000.c (final_prescan_insn): Do not separate a
32973         CALL and NOTE_INSN_CALL_ARG_LOCATION.
32974
32975 2017-04-07  Martin Liska  <mliska@suse.cz>
32976
32977         PR target/79889
32978         * config/aarch64/aarch64.c (aarch64_process_target_attr):
32979         Show error message instead of an ICE.
32980
32981 2017-04-07  Martin Liska  <mliska@suse.cz>
32982
32983         PR ipa/80212
32984         * ipa-split.c (split_function): Add function part to a same comdat
32985         group.
32986
32987 2017-04-07  Richard Biener  <rguenther@suse.de>
32988
32989         PR middle-end/80341
32990         * tree.c (get_unwidened): Also handle ! for_type case for
32991         INTEGER_CSTs.
32992         * convert.c (do_narrow): Split out from ...
32993         (convert_to_integer_1): ... here.  Do not pass final truncation
32994         type to get_unwidened for TRUNC_DIV_EXPR.
32995
32996 2017-04-07  Richard Biener  <rguenther@suse.de>
32997
32998         * tree-affine.c (wide_int_ext_for_comb): Take type rather
32999         than aff_tree.
33000         (aff_combination_const): Adjust.
33001         (aff_combination_scale): Likewise.
33002         (aff_combination_add_elt): Likewise.
33003         (aff_combination_add_cst): Likewise.
33004         (aff_combination_convert): Likewise.
33005         (add_elt_to_tree): Likewise.  Remove unused argument.
33006         (aff_combination_to_tree): Adjust calls to add_elt_to_tree.
33007
33008 2017-04-07  Sebastian Huber  <sebastian.huber@embedded-brains.de>
33009
33010         * config/arm/arm.h (ARM_DEFAULT_SHORT_ENUMS): Provide default
33011         definition.
33012         * config/arm/arm.c (arm_default_short_enums): Use
33013         ARM_DEFAULT_SHORT_ENUMS.
33014         * config/arm/rtems.h (ARM_DEFAULT_SHORT_ENUMS): Define.
33015
33016 2017-04-06  Jakub Jelinek  <jakub@redhat.com>
33017
33018         PR debug/80234
33019         * dwarf2out.c (gen_member_die): Handle C++17 inline static data
33020         members with redundant out-of-class redeclaration.
33021
33022 2017-04-06  Uros Bizjak  <ubizjak@gmail.com>
33023
33024         PR target/80286
33025         * config/i386/sse.md (*vec_extractv4si_0_zext_sse4): New pattern.
33026         * config/i386/i386.md (*zero_extendsidi2):
33027         Add (?*x,*x) and (?*v,*v) alternatives.
33028
33029 2017-04-06  Uros Bizjak  <ubizjak@gmail.com>
33030
33031         PR target/79733
33032         * config/i386/i386.c (ix86_expand_builtin)
33033         <case IX86_BUILTIN_K{,OR}TEST{C,Z}{8,16,32,64}>: Determine insn operand
33034         mode from insn data. Convert operands to insn operand mode.
33035         Copy operands that don't satisfy insn predicate to a register.
33036
33037 2017-04-06  Sam Thursfield  <sam.thursfield@codethink.co.uk>
33038
33039         * config/rs6000/x-aix: Increase memory limit for genautomata on AIX.
33040         Update comments.
33041
33042 2017-04-06  Richard Biener  <rguenther@suse.de>
33043
33044         PR tree-optimization/80334
33045         * tree-ssa-loop-ivopts.c (rewrite_use_address): Properly
33046         preserve alignment of accesses.
33047
33048 2017-04-06  Richard Biener  <rguenther@suse.de>
33049
33050         PR tree-optimization/80262
33051         * tree-sra.c (build_ref_for_offset): Preserve address-space
33052         information.
33053         * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address):
33054         Drop useless address-space information on MEM_REF offsets.
33055
33056 2017-04-05  Andreas Schwab  <schwab@linux-m68k.org>
33057
33058         * builtins.def (BUILT_IN_UPDATE_SETJMP_BUF): Fix type.
33059
33060 2017-04-05  Vladimir Makarov  <vmakarov@redhat.com>
33061
33062         PR rtl-optimization/70703
33063         * ira-color.c (update_conflict_hard_regno_costs): Use
33064         HOST_WIDE_INT instead of long.
33065
33066 2017-04-05  Uros Bizjak  <ubizjak@gmail.com>
33067
33068         PR target/80298
33069         * config/i386/mmintrin.h: Add -msse target option when __SSE__ is
33070         not defined for x86_64 target.  Add -mmmx target option when __SSE2__
33071         is not defined.
33072         * config/i386/mm3dnow.h: Add -msse target when __SSE__ is not defined
33073         for x86_64 target.  Handle -m3dnowa option.
33074
33075 2017-04-05  Vladimir Makarov  <vmakarov@redhat.com>
33076
33077         PR rtl-optimization/70703
33078         * ira-color.c (update_costs_from_allocno): Use the smallest mode.
33079         (update_conflict_hard_regno_costs): Use long instead of unsigned
33080         arithmetic for cost calculation.
33081
33082 2017-04-05  Jakub Jelinek  <jakub@redhat.com>
33083             Bernd Edlinger  <bernd.edlinger@hotmail.de>
33084
33085         PR sanitizer/80308
33086         * asan.c (asan_store_shadow_bytes): Fix location of last_chunk_value
33087         for big endian.
33088
33089 2017-04-05  Eric Botcazou  <ebotcazou@adacore.com>
33090
33091         PR target/78002
33092         * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Replace
33093         ptr_mode with Pmode throughout.
33094         * config/aarch64/aarch64.md (probe_stack_range_<PTR:mode): Rename
33095         into probe_stack_range and use DImode.
33096
33097 2017-04-05  Dominik Vogt  <vogt@linux.vnet.ibm.com>
33098
33099         PR target/79890
33100         * config/s390/s390.c (s390_register_info_gprtofpr): Return if
33101         call_eh_return is true.
33102
33103 2017-04-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
33104
33105         * config/s390/s390-c.c (s390_resolve_overloaded_builtin):
33106         Initialize last_match_fntype_index.
33107
33108 2017-04-05  Jakub Jelinek  <jakub@redhat.com>
33109
33110         PR target/80310
33111         * tree-nvr.c: Include internal-fn.h.
33112         (pass_return_slot::execute): Ignore internal calls without
33113         direct optab.
33114
33115 2017-04-04  Jakub Jelinek  <jakub@redhat.com>
33116             Richard Biener  <rguenther@suse.de>
33117
33118         PR c++/80297
33119         * genmatch.c (capture::gen_transform): For GENERIC unshare_expr
33120         captures used multiple times, except for the last use.
33121         * generic-match-head.c: Include gimplify.h.
33122
33123 2017-04-04  Jakub Jelinek  <jakub@redhat.com>
33124
33125         PR tree-optimization/79390
33126         * target.h (struct noce_if_info): Declare.
33127         * targhooks.h (default_noce_conversion_profitable_p): Declare.
33128         * target.def (noce_conversion_profitable_p): New target hook.
33129         * ifcvt.h (struct noce_if_info): New type, moved from ...
33130         * ifcvt.c (struct noce_if_info): ... here.
33131         (noce_conversion_profitable_p): Renamed to ...
33132         (default_noce_conversion_profitable_p): ... this.  No longer
33133         static nor inline.
33134         (noce_try_store_flag_constants, noce_try_addcc,
33135         noce_try_store_flag_mask, noce_try_cmove, noce_try_cmove_arith,
33136         noce_convert_multiple_sets): Use targetm.noce_conversion_profitable_p
33137         instead of noce_conversion_profitable_p.
33138         * config/i386/i386.c: Include ifcvt.h.
33139         (ix86_option_override_internal): Don't override
33140         PARAM_MAX_RTL_IF_CONVERSION_INSNS default.
33141         (ix86_noce_conversion_profitable_p): New function.
33142         (TARGET_NOCE_CONVERSION_PROFITABLE_P): Redefine.
33143         * config/i386/x86-tune.def (X86_TUNE_ONE_IF_CONV_INSN): Adjust comment.
33144         * doc/tm.texi.in (TARGET_NOCE_CONVERSION_PROFITABLE_P): Add.
33145         * doc/tm.texi: Regenerated.
33146
33147 2017-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
33148
33149         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Grammar
33150         correction.
33151
33152 2017-04-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
33153
33154         PR target/80307
33155         * config/arm/arm.c (thumb1_rtx_costs): Give a cost of 32
33156         instructions for small multiply cores.
33157
33158 2017-04-04  Jeff Law  <law@redhat.com>
33159
33160         * config/mips/mips.c (mips_multi_add): Zero initialize the newly
33161         added member.
33162         (mips_expand_vec_perm_const): Initialize elements in orig_perm
33163         that are not set by the loop over the elements.
33164
33165 2017-04-04  Jakub Jelinek  <jakub@redhat.com>
33166
33167         PR target/80286
33168         * config/i386/i386.c (ix86_expand_args_builtin): If op has scalar
33169         int mode, convert_modes it to mode as unsigned, otherwise use
33170         lowpart_subreg to mode rather than SImode.
33171         * config/i386/sse.md (<mask_codefor>ashr<mode>3<mask_name>,
33172         ashr<mode>3, ashr<mode>3<mask_name>, <shift_insn><mode>3<mask_name>):
33173         Use DImode instead of SImode for the shift count operand.
33174         * config/i386/mmx.md (mmx_ashr<mode>3, mmx_<shift_insn><mode>3):
33175         Likewise.
33176
33177 2017-04-04  Richard Biener  <rguenther@suse.de>
33178
33179         PR middle-end/80281
33180         * match.pd (A + (-B) -> A - B): Make sure to preserve unsigned
33181         arithmetic done for the negate or the plus.  Simplify.
33182         (A - (-B) -> A + B): Likewise.
33183         * fold-const.c (split_tree): Make sure to not negate pointers.
33184
33185 2017-04-04  Segher Boessenkool  <segher@kernel.crashing.org>
33186
33187         PR rtl-optimization/60818
33188         * simplify-rtx.c (simplify_binary_operation_1): Do not replace
33189         a compare of comparisons with the thing compared if this results
33190         in a different machine mode.
33191
33192 2017-04-03  Jonathan Wakely  <jwakely@redhat.com>
33193
33194         * alias.c (base_alias_check): Fix typo in comment.
33195         * cgraph.h (class ipa_polymorphic_call_context): Likewise.
33196         * cgraphunit.c (symbol_table::compile): Likewise.
33197         * collect2.c (maybe_run_lto_and_relink): Likewise.
33198         * config/arm/arm.c (arm_thumb1_mi_thunk): Likewise.
33199         * config/avr/avr-arch.h (avr_arch_info_t): Likewise.
33200         * config/avr/avr.c (avr_map_op_t): Likewise.
33201         * config/cr16/cr16.h (DATA_ALIGNMENT): Likewise.
33202         * config/epiphany/epiphany.c (TARGET_ARG_PARTIAL_BYTES): Likewise.
33203         * config/epiphany/epiphany.md (movcc): Likewise.
33204         * config/i386/i386.c (legitimize_pe_coff_extern_decl): Likewise.
33205         * config/m68k/m68k.c (struct _sched_ib, m68k_sched_variable_issue):
33206         Likewise.
33207         * config/mips/mips.c (mips_save_restore_reg): Likewise.
33208         * config/rx/rx.c (rx_is_restricted_memory_address): Likewise.
33209         * config/s390/s390.c (Z10_EARLYLOAD_DISTANCE): Likewise.
33210         * config/sh/sh.c (sh_rtx_costs): Likewise.
33211         * fold-const.c (fold_truth_andor): Likewise.
33212         * genautomata.c (collapse_flag): Likewise.
33213         * gengtype.h (struct type::u::s): Likewise.
33214         * gensupport.c (has_subst_attribute, add_mnemonic_string): Likewise.
33215         * input.c (FORMAT_AMOUNT): Likewise.
33216         * ipa-cp.c (class ipcp_lattice, agg_replacements_to_vector)
33217         (known_aggs_to_agg_replacement_list): Likewise.
33218         * ipa-inline-analysis.c: Likewise.
33219         * ipa-inline.h (estimate_edge_time, estimate_edge_hints): Likewise.
33220         * ipa-polymorphic-call.c
33221         (ipa_polymorphic_call_context::restrict_to_inner_class): Likewise.
33222         * loop-unroll.c (analyze_insn_to_expand_var): Likewise.
33223         * lra.c (lra_optional_reload_pseudos, lra_subreg_reload_pseudos):
33224         Likewise.
33225         * modulo-sched.c (apply_reg_moves): Likewise.
33226         * omp-expand.c (build_omp_regions_1): Likewise.
33227         * trans-mem.c (struct tm_wrapper_hasher): Likewise.
33228         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Likewise.
33229         * tree-ssa-loop-niter.c (maybe_lower_iteration_bound): Likewise.
33230         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
33231         * value-prof.c: Likewise.
33232         * var-tracking.c (val_reset): Likewise.
33233
33234 2017-04-03  Richard Biener  <rguenther@suse.de>
33235
33236         PR tree-optimization/80275
33237         * fold-const.c (split_address_to_core_and_offset): Handle
33238         POINTER_PLUS_EXPR.
33239
33240 2017-04-03  Eric Botcazou  <ebotcazou@adacore.com>
33241
33242         * tree-nested.c (get_descriptor_type): Make sure that the alignment of
33243         descriptors is at least equal to that of functions.
33244
33245 2017-04-02  Uros Bizjak  <ubizjak@gmail.com>
33246
33247         * config/i386/sse.md (movdi_to_sse): Add missing DONE.
33248
33249 2017-04-02  Uros Bizjak  <ubizjak@gmail.com>
33250
33251         PR target/80250
33252         * config/i386/sse.md (mov<IMOD4:mode>): Remove insn pattern.
33253         (mov<IMOD4:mode>): New expander.
33254         (*mov<IMOD4:mode>_internal): New insn and split pattern.
33255
33256 2017-03-31  Segher Boessenkool  <segher@kernel.crashing.org>
33257
33258         PR rtl-optimization/79405
33259         * fwprop.c (propagations_left): New variable.
33260         (forward_propagate_into): Decrement it.
33261         (fwprop_init): Initialize it.
33262         (fw_prop): If the variable has reached zero, stop propagating.
33263         (fwprop_addr): Ditto.
33264
33265 2017-03-31  Jakub Jelinek  <jakub@redhat.com>
33266
33267         PR debug/79255
33268         * dwarf2out.c (decls_for_scope): If BLOCK_NONLOCALIZED_VAR is
33269         a FUNCTION_DECL, pass it as decl instead of origin to
33270         process_scope_var.
33271
33272 2017-03-31  Alexander Monakov  <amonakov@ispras.ru>
33273
33274         * config/nvptx/nvptx.c (nvptx_output_softstack_switch): Correct format
33275         string.
33276
33277 2017-03-31  Pat Haugen  <pthaugen@us.ibm.com>
33278
33279         PR target/80107
33280         * config/rs6000/rs6000.md (extendhi<mode>2): Add test for
33281         TARGET_VSX_SMALL_INTEGER.
33282
33283 2017-03-31  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
33284
33285         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Add
33286         reference to the OpenPOWER 64-Bit ELF V2 ABI Specification.
33287
33288 2017-03-31  Matthew Fortune  <matthew.fortune@imgtec.com>
33289
33290         * config/mips/mips-msa.md (msa_vec_extract_<msafmt_f>): Update
33291         extraction from odd-numbered MSA register.
33292
33293 2017-03-31  Jakub Jelinek  <jakub@redhat.com>
33294
33295         PR middle-end/80173
33296         * expmed.c (store_bit_field_1): Don't attempt to create
33297         a word subreg out of hard registers wider than word if they
33298         have HARD_REGNO_NREGS of 1 for their mode.
33299
33300         PR middle-end/80163
33301         * varasm.c (initializer_constant_valid_p_1): Disallow sign-extending
33302         conversions to integer types wider than word and pointer.
33303
33304         PR debug/80025
33305         * cselib.h (rtx_equal_for_cselib_1): Add depth argument.
33306         (rtx_equal_for_cselib_p): Pass 0 to it.
33307         * cselib.c (cselib_hasher::equal): Likewise.
33308         (rtx_equal_for_cselib_1): Add depth argument.  If depth
33309         is 128, don't look up VALUE locs and punt.  Increment
33310         depth in recursive calls when walking VALUE locs.
33311
33312 2017-03-31  Bernd Edlinger  <bernd.edlinger@hotmail.de>
33313
33314         * gcov.c (md5sum_to_hex): Fix output of MD5 hex bytes.
33315         (make_gcov_file_name): Use the canonical path name for generating
33316         the MD5 value.
33317         (read_line): Fix handling of files with ascii null bytes.
33318
33319 2017-03-30  Matthew Fortune  <matthew.fortune@imgtec.com>
33320
33321         * config/mips/mips.c (mips_expand_vector_init): Create a const_vector
33322         to initialise a vector register instead
33323         of using a const_int.
33324
33325 2017-03-30  Jakub Jelinek  <jakub@redhat.com>
33326
33327         PR translation/80189
33328         * gimplify.c (omp_default_clause): Use %qs instead of %s in
33329         diagnostic messages.
33330
33331 2017-03-30  Peter Bergner  <bergner@vnet.ibm.com>
33332
33333         PR target/80246
33334         * config/rs6000/dfp.md (dfp_dxex_<mode>): Update mode of operand 0.
33335         (dfp_diex_<mode>): Update mode of operand 1.
33336         * doc/extend.texi (dxex, dxexq): Document change to return type.
33337         (diex, diexq): Document change to argument type.
33338
33339 2017-03-30  Martin Jambor  <mjambor@suse.cz>
33340
33341         PR ipa/77333
33342         * cgraph.h (cgraph_build_function_type_skip_args): Declare.
33343         * cgraph.c (redirect_call_stmt_to_callee): Set gimple fntype so that
33344         it reflects the signature changes performed at the callee side.
33345         * cgraphclones.c (build_function_type_skip_args): Make public, renamed
33346         to cgraph_build_function_type_skip_args.
33347         (build_function_decl_skip_args): Adjust call to the above function.
33348
33349 2017-03-30  Jakub Jelinek  <jakub@redhat.com>
33350
33351         PR target/80206
33352         * config/i386/sse.md
33353         (<extract_type>_vextract<shuffletype><extract_suf>_mask): Use
33354         register as dest whenever it is a MEM not rtx_equal_p to the
33355         corresponding dup operand, and when forcing into reg move the
33356         reg into the memory afterwards.
33357         (<extract_type_2>_vextract<shuffletype><extract_suf_2>_mask):
33358         Likewise.  Use <ssehalfvecmode> instead of <ssequartermode>
33359         for the force_reg mode.
33360         (avx512vl_vextractf128<mode>): Use register as dest either
33361         always when a MEM, or when it is a MEM not rtx_equal_p to the
33362         corresponding dup operand, or even not when it is a CONST_VECTOR
33363         depending on the mode and lo vs. hi.
33364         (avx512dq_vextract<shuffletype>64x2_1_maskm): Remove extraneous
33365         parens.
33366         (avx512f_vextract<shuffletype>32x4_1_maskm): Likewise.
33367         (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name>):
33368         Likewise.  Require that operands[2] is even.
33369         (<mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name>):
33370         Remove extraneous parens.  Require that operands[2] is a multiple
33371         of 4.
33372         (vec_extract_lo_<mode><mask_name>): Don't bother testing if
33373         operands[0] is a MEM if <mask_applied>, the predicates/constraints
33374         disallow memory then.
33375
33376 2017-03-30  Richard Biener  <rguenther@suse.de>
33377
33378         PR tree-optimization/77498
33379         * tree-ssa-pre.c (phi_translate_1): Do not allow simplifications
33380         to non-constants over backedges.
33381
33382 2017-03-29  Segher Boessenkool  <segher@kernel.crashing.org>
33383
33384         PR rtl-optimization/80233
33385         * combine.c (combine_instructions): Only take NONDEBUG_INSN_P insns
33386         as last_combined_insn.  Do not test for BARRIER_P separately.
33387
33388 2017-03-29  Andreas Schwab  <schwab@suse.de>
33389
33390         PR ada/80146
33391         * calls.c (prepare_call_address): Convert funexp to Pmode before
33392         copying to temp reg.
33393
33394 2017-03-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
33395
33396         PR tree-optimization/80158
33397         * gimple-ssa-strength-reduction.c (replace_mult_candidate):
33398         Handle possible future case of more than one alternate
33399         interpretation.
33400         (replace_rhs_if_not_dup): Likewise.
33401         (replace_one_candidate): Likewise.
33402
33403 2017-03-28  Vladimir Makarov  <vmakarov@redhat.com>
33404
33405         PR rtl-optimization/80193
33406         * ira.c (ira): Do not check allocation for LRA.
33407
33408 2017-03-28  Alexander Monakov  <amonakov@ispras.ru>
33409
33410         * config/nvptx/nvptx-protos.h (nvptx_output_simt_enter): Declare.
33411         (nvptx_output_simt_exit): Declare.
33412         * config/nvptx/nvptx.c (nvptx_init_unisimt_predicate): Use
33413         cfun->machine->unisimt_location.  Handle NULL unisimt_predicate.
33414         (init_softstack_frame): Move initialization of crtl->is_leaf to...
33415         (nvptx_declare_function_name): ...here.  Emit declaration of local
33416         memory space buffer for omp_simt_enter insn.
33417         (nvptx_output_unisimt_switch): New.
33418         (nvptx_output_softstack_switch): New.
33419         (nvptx_output_simt_enter): New.
33420         (nvptx_output_simt_exit): New.
33421         * config/nvptx/nvptx.h (struct machine_function): New fields
33422         has_simtreg, unisimt_location, simt_stack_size, simt_stack_align.
33423         * config/nvptx/nvptx.md (UNSPECV_SIMT_ENTER): New unspec.
33424         (UNSPECV_SIMT_EXIT): Ditto.
33425         (omp_simt_enter_insn): New insn.
33426         (omp_simt_enter): New expansion.
33427         (omp_simt_exit): New insn.
33428         * config/nvptx/nvptx.opt (msoft-stack-reserve-local): New option.
33429
33430         * internal-fn.c (expand_GOMP_SIMT_ENTER): New.
33431         (expand_GOMP_SIMT_ENTER_ALLOC): New.
33432         (expand_GOMP_SIMT_EXIT): New.
33433         * internal-fn.def (GOMP_SIMT_ENTER): New internal function.
33434         (GOMP_SIMT_ENTER_ALLOC): Ditto.
33435         (GOMP_SIMT_EXIT): Ditto.
33436         * target-insns.def (omp_simt_enter): New insn.
33437         (omp_simt_exit): Ditto.
33438         * omp-low.c (struct omplow_simd_context): New fields simt_eargs,
33439         simt_dlist.
33440         (lower_rec_simd_input_clauses): Implement SIMT privatization.
33441         (lower_rec_input_clauses): Likewise.
33442         (lower_lastprivate_clauses): Handle SIMT privatization.
33443
33444         * omp-offload.c: Include langhooks.h, tree-nested.h, stor-layout.h.
33445         (ompdevlow_adjust_simt_enter): New.
33446         (find_simtpriv_var_op): New.
33447         (execute_omp_device_lower): Handle IFN_GOMP_SIMT_ENTER,
33448         IFN_GOMP_SIMT_ENTER_ALLOC, IFN_GOMP_SIMT_EXIT.
33449
33450         * tree-inline.h (struct copy_body_data): New field dst_simt_vars.
33451         * tree-inline.c (expand_call_inline): Handle SIMT privatization.
33452         (copy_decl_for_dup_finish): Ditto.
33453
33454         * tree-ssa.c (execute_update_addresses_taken): Handle GOMP_SIMT_ENTER.
33455
33456 2017-03-28  Uros Bizjak  <ubizjak@gmail.com>
33457
33458         PR target/53383
33459         * config/i386/i386.c (ix86_option_override_internal): Always
33460         allow -mpreferred-stack-boundary=3 for 64-bit targets.
33461
33462 2017-03-28  Bin Cheng  <bin.cheng@arm.com>
33463
33464         * tree-vect-loop.c (optimize_mask_stores): Add bb to the right loop.
33465
33466 2017-03-28  Bin Cheng  <bin.cheng@arm.com>
33467
33468         * tree-vect-loop-manip.c (slpeel_add_loop_guard): New param and
33469         mark new edge's irreducible flag accordign to it.
33470         (vect_do_peeling): Check loop preheader edge's irreducible flag
33471         and pass it to function slpeel_add_loop_guard.
33472
33473 2017-03-28  Richard Sandiford  <richard.sandiford@arm.com>
33474
33475         PR tree-optimization/80218
33476         * tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
33477         Update block frequencies and counts.
33478
33479 2017-03-28  Richard Biener  <rguenther@suse.de>
33480
33481         PR tree-optimization/78644
33482         * tree-ssa-ccp.c (evaluate_stmt): When we may not use the value
33483         of a simplification result we may not use it at all.
33484
33485 2017-03-28  Richard Biener  <rguenther@suse.de>
33486
33487         PR ipa/80205
33488         * tree-inline.c (copy_phis_for_bb): Do not create PHI node
33489         without arguments, generate default definition of a SSA name.
33490
33491 2017-03-28  Richard Biener  <rguenther@suse.de>
33492
33493         PR middle-end/80222
33494         * gimple-fold.c (gimple_fold_indirect_ref): Do not touch
33495         TYPE_REF_CAN_ALIAS_ALL references.
33496         * fold-const.c (fold_indirect_ref_1): Likewise.
33497
33498 2017-03-28  Martin Liska  <mliska@suse.cz>
33499
33500         PR ipa/80104
33501         * cgraphunit.c (cgraph_node::expand_thunk): Mark argument of a
33502         thunk call as DECL_GIMPLE_REG_P when vector or complex type.
33503
33504 2017-03-28  Claudiu Zissulescu  <claziss@synopsys.com>
33505             Thomas Petazzoni  <thomas.petazzoni@free-electrons.com>
33506
33507         * config/arc/arc.h (CPP_SPEC): Add subtarget_cpp_spec.
33508         (EXTRA_SPECS): Define.
33509         (SUBTARGET_EXTRA_SPECS): Likewise.
33510         (SUBTARGET_CPP_SPEC): Likewise.
33511         * config/arc/elf.h (EXTRA_SPECS): Renamed to
33512         SUBTARGET_EXTRA_SPECS.
33513         * config/arc/linux.h (SUBTARGET_CPP_SPEC): Define.
33514
33515 2017-03-28  Claudiu Zissulescu  <claziss@synopsys.com>
33516
33517         * config/arc/simdext.md (vst64_insn): Update pattern.
33518         (vld32wh_insn): Likewise.
33519         (vld32wl_insn): Likewise.
33520         (vld64_insn): Likewise.
33521         (vld32_insn): Likewise.
33522
33523 2017-03-28  Marek Polacek  <polacek@redhat.com>
33524
33525         PR sanitizer/80067
33526         * fold-const.c (fold_comparison): Use protected_set_expr_location
33527         instead of SET_EXPR_LOCATION.
33528
33529 2017-03-28  Markus Trippelsdorf  <markus@trippelsdorf.de>
33530
33531         * tree.c (add_expr): Avoid name lookup warning.
33532
33533 2017-03-27  Jeff Law  <law@redhat.com>
33534
33535         PR tree-optimization/80216
33536         * tree-ssa-dom.c (derive_equivalences_from_bit_ior): Fix typo in
33537         function name.  Limit recursion depth.
33538         (record_temporary_equivalences): Corresponding changes.
33539
33540 2017-03-27  Jonathan Wakely  <jwakely@redhat.com>
33541
33542         * doc/invoke.texi (-Wno-narrowing): Reorder so default behavior is
33543         covered first.
33544
33545 2017-03-27  Jakub Jelinek  <jakub@redhat.com>
33546
33547         PR target/80102
33548         * reg-notes.def (REG_CFA_NOTE): Define.  Use it for CFA related
33549         notes.
33550         * cfgcleanup.c (reg_note_cfa_p): New array.
33551         (insns_have_identical_cfa_notes): New function.
33552         (old_insns_match_p): Don't cross-jump in between /f
33553         and non-/f instructions.  If both i1 and i2 are frame related,
33554         verify all CFA notes, their order and content.
33555
33556 2017-03-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
33557
33558         PR target/78543
33559         * config/rs6000/rs6000.md (bswaphi2_extenddi): Combine bswap
33560         HImode and SImode with zero extend to DImode to one insn.
33561         (bswap<mode>2_extenddi): Likewise.
33562         (bswapsi2_extenddi): Likewise.
33563         (bswaphi2_extendsi): Likewise.
33564         (bswaphi2): Combine bswap HImode and SImode into one insn.
33565         Separate memory insns from swapping register.
33566         (bswapsi2): Likewise.
33567         (bswap<mode>2): Likewise.
33568         (bswaphi2_internal): Delete, no longer used.
33569         (bswapsi2_internal): Likewise.
33570         (bswap<mode>2_load): Split bswap HImode/SImode into separate load,
33571         store, and gpr<-gpr swap insns.
33572         (bswap<mode>2_store): Likewise.
33573         (bswaphi2_reg): Register only splitter, combine with the splitter.
33574         (bswaphi2 splitter): Likewise.
33575         (bswapsi2_reg): Likewise.
33576         (bswapsi2 splitter): Likewise.
33577         (bswapdi2): If we have the LDBRX and STDBRX instructions, split
33578         the insns into load, store, and register/register insns.
33579         (bswapdi2_ldbrx): Likewise.
33580         (bswapdi2_load): Likewise.
33581         (bswapdi2_store): Likewise.
33582         (bswapdi2_reg): Likewise.
33583
33584 2017-03-27  Gunther Nikl  <gnikl@users.sourceforge.net>
33585
33586         * system.h (HAVE_DESIGNATED_INITIALIZERS): Fix non C++ case.
33587         (HAVE_DESIGNATED_UNION_INITIALIZERS): Likewise.
33588
33589 2017-03-27  Kelvin Nilsen  <kelvin@gcc.gnu.org>
33590
33591         PR target/80103
33592         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Edit and
33593         add comments.
33594         * config/rs6000/rs6000.c (rs6000_option_override_internal): Add
33595         special handling for target option conflicts between dform
33596         options (-mpower9-dform, -mpower9-dform-vector,
33597         -mpower9-dform-scalar) and -mno-direct-move.
33598
33599 2017-03-27  Richard Biener  <rguenther@suse.de>
33600
33601         PR tree-optimization/80181
33602         * tree-ssa-ccp.c (likely_value): UNDEFINED ^ X is UNDEFINED.
33603
33604 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
33605
33606         * config/arc/predicates.md (move_double_src_operand): Replace the
33607         call to move_double_src_operand with a call to address_operand.
33608
33609 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
33610
33611         * config/arc/elf.h (ARGET_ARC_TP_REGNO_DEFAULT): Define.
33612         * config/arc/linux.h (ARGET_ARC_TP_REGNO_DEFAULT): Likewise.
33613         * config/arc/arc.opt (mtp-regno): Use ARGET_ARC_TP_REGNO_DEFAULT.
33614
33615 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
33616
33617         * config/arc/predicates.md (long_immediate_loadstore_operand):
33618         Consider scaled addresses cases.
33619
33620 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
33621
33622         * config/arc/arc.c (arc_epilogue_uses): BLINK should be also
33623         restored when in interrupt.
33624         * config/arc/arc.md (simple_return): ARCv2 rtie instruction
33625         doesn't have delay slot.
33626
33627 2017-03-27  Richard Biener  <rguenther@suse.de>
33628
33629         PR ipa/79776
33630         * tree-ssa-structalias.c (associate_varinfo_to_alias): Skip
33631         inlined thunk clones.
33632
33633 2017-03-27  Jakub Jelinek  <jakub@redhat.com>
33634
33635         PR sanitizer/80168
33636         * asan.c (instrument_derefs): Copy over last operand from
33637         original COMPONENT_REF to the new COMPONENT_REF with
33638         DECL_BIT_FIELD_REPRESENTATIVE.
33639         * ubsan.c (instrument_object_size): Likewise.
33640
33641 2017-03-27  Richard Biener  <rguenther@suse.de>
33642
33643         PR tree-optimization/80170
33644         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Make
33645         sure DR/SCEV didnt fold in constants we do not see when looking
33646         at the reference base alignment.
33647
33648 2017-03-27  Richard Biener  <rguenther@suse.de>
33649
33650         PR middle-end/80171
33651         * gimple-fold.c (fold_ctor_reference): Properly guard against
33652         NULL return value from canonicalize_constructor_val.
33653
33654 2017-03-25  Uros Bizjak  <ubizjak@gmail.com>
33655
33656         PR target/80180
33657         * config/i386/i386.c (ix86_expand_builtin)
33658         <IX86_BUILTIN_RDSEED{16,32,64}_STEP>: Do not expand arg0 between
33659         flags reg setting and flags reg using instructions.
33660         <IX86_BUILTIN_RDRAND{16,32,64}_STEP>: Ditto.  Use non-flags reg
33661         clobbering instructions to zero extend op2.
33662
33663 2017-03-25  Gerald Pfeifer  <gerald@pfeifer.com>
33664
33665         * doc/install.texi (Configuration) <--with-aix-soname>:
33666         Update link to AIX ld.
33667
33668 2017-03-25  Bernd Schmidt  <bschmidt@redhat.com>
33669
33670         PR rtl-optimization/80160
33671         PR rtl-optimization/80159
33672         * lra-assigns.c (must_not_spill_p): Tighten new test to also take
33673         reg_alternate_class into account.
33674
33675 2017-03-24  Vladimir Makarov  <vmakarov@redhat.com>
33676
33677         PR target/80148
33678         * lra-assigns.c (assign_by_spills): Add spilled non-reload pseudos
33679         to consider in curr_insn_transform.
33680
33681 2017-03-24  Jakub Jelinek  <jakub@redhat.com>
33682
33683         * genrecog.c (validate_pattern): Add VEC_SELECT validation.
33684         * genmodes.c (emit_min_insn_modes_c): Call emit_mode_nunits
33685         and emit_mode_inner.
33686
33687 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
33688
33689         * config/s390/s390-builtins.def: Add VXE builtins.  Add a flags
33690         argument to the overloaded builtin variants.  Use the new flag to
33691         deprecate certain builtin variants.
33692         * config/s390/s390-builtin-types.def: Add new builtin types.
33693         * config/s390/s390-builtins.h: Support new flags field for
33694         overloaded builtins.
33695         * config/s390/s390-c.c (OB_DEF_VAR): New flags field.
33696         (s390_macro_to_expand): Enable vector float data type.
33697         (s390_cpu_cpp_builtins_internal): Indicate support of the new
33698         builtins by incrementing the __VEC__ version number.
33699         (s390_expand_overloaded_builtin): Support expansion of vec_xl and
33700         vec_xst.
33701         (s390_resolve_overloaded_builtin): Emit error messages depending
33702         on the builtin flags.
33703         * config/s390/s390.c (s390_expand_builtin): Support additional
33704         flags argument.  Change error message to match the messages
33705         emitted in s390-c.c.
33706         * config/s390/s390.md: New UNSPEC_* constants.
33707         (op_type): Add new instruction types.
33708         * config/s390/vecintrin.h: Add new builtins and test data class
33709         constants.
33710         * config/s390/vx-builtins.md (V_HW_32_64): Add V4SF.
33711         (V_HW_4, VEC_HW, VECF_HW): New mode iterators.
33712         (VEC_INEXACT, VEC_NOINEXACT): New constants.
33713         ("vec_splats<mode>", "vec_insert<mode>", "vec_promote<mode>")
33714         ("vec_insert_and_zero<mode>", "vec_mergeh<mode>")
33715         ("vec_mergel<mode>"): V_HW -> VEC_HW.
33716
33717         ("vlrlrv16qi", "vstrlrv16qi", "vbpermv16qi", "vec_msumv2di")
33718         ("vmslg", "*vftci<mode>_cconly", "vftci<mode>_intcconly")
33719         ("*vftci<mode>", "vftci<mode>_intcc", "vec_double_s64")
33720         ("vec_double_u64", "vfmin<mode>", "vfmax<mode>"): New definition.
33721
33722         ("and_av2df3", "and_cv2df3", "vec_andc_av2df3")
33723         ("vec_andc_cv2df3", "xor_av2df3", "xor_cv2df3", "vec_nor_av2df3")
33724         ("vec_nor_cv2df3", "ior_av2df3", "ior_cv2df3", "vec_nabs")
33725         ("*vftcidb", "*vftcidb_cconly", "vftcidb"): Remove definition.
33726
33727         ("vec_all_<fpcmpcc:code>v2df", "vec_any_<fpcmpcc:code>v2df")
33728         ("vec_scatter_elementv4si_DI", "vec_cmp<fpcmp:code>v2df")
33729         ("vec_di_to_df_s64", "vec_di_to_df_u64", "vec_df_to_di_u64")
33730         ("vfidb", "*vldeb", "*vledb", "*vec_cmp<insn_cmp>v2df_cconly")
33731         ("vec_cmpeqv2df_cc", "vec_cmpeqv2df_cc", "vec_cmphv2df_cc")
33732         ("vec_cmphev2df_cc", "*vec_cmpeqv2df_cc")
33733         ("*vec_cmphv2df_cc", "*vec_cmphev2df_cc"): Enable new modes as ...
33734
33735         ("vec_all_<fpcmpcc:code><mode>", "vec_any_<fpcmpcc:code><mode>")
33736         ("vec_scatter_element<V_HW_4:mode>_DI")
33737         ("vec_cmp<fpcmp:code><mode>", "vcdgb", "vcdlgb", "vclgdb")
33738         ("vec_fpint<mode>", "vflls")
33739         ("vflrd", "*vec_cmp<insn_cmp><mode>_cconly", "vec_cmpeq<mode>_cc")
33740         ("vec_cmpeq<mode>_cc", "vec_cmph<mode>_cc", "vec_cmphe<mode>_cc")
33741         ("*vec_cmpeq<mode>_cc", "*vec_cmph<mode>_cc")
33742         ("*vec_cmphe<mode>_cc"): ... these.
33743
33744         ("vec_ctd_s64", "vec_ctsl", "vec_ctul", "vec_st2f"): Use rounding
33745         mode constant instead of magic value.
33746
33747 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
33748
33749         * config/s390/s390.c (s390_expand_vec_compare): Support other
33750         vector floating point modes than just V2DF.
33751         (s390_expand_vcond): Likewise.
33752         (s390_hard_regno_mode_ok): Allow SFmode values in VRs.
33753         (s390_cannot_change_mode_class): Prevent mode changes between TF
33754         and V1TF in vector registers.
33755         * config/s390/s390.md (DF, SF): New mode attributes.
33756         ("*cmp<mode>_ccs", "add<mode>3", "sub<mode>3", "mul<mode>3")
33757         ("fma<mode>4", "fms<mode>4", "div<mode>3", "*neg<mode>2"): Add
33758         SFmode support for VRs.
33759         * config/s390/vector.md (V_HW, V_HW2, VT_HW, ti*, nonvec): Add new
33760         vector fp modes.
33761         (VFT, VF_HW): New mode iterators.
33762         (vw, sdx): New mode attributes.
33763         ("addv2df3", "subv2df3", "mulv2df3", "divv2df3", "sqrtv2df2")
33764         ("fmav2df4","fmsv2df4", "negv2df2", "absv2df2", "*negabsv2df2")
33765         ("smaxv2df3", "sminv2df3", "*vec_cmp<VFCMP_HW_OP:code>v2df_nocc")
33766         ("vec_cmpuneqv2df", "vec_cmpltgtv2df", "vec_orderedv2df")
33767         ("vec_unorderedv2df"): Adjust the v2df only patterns to support
33768         also the new vector floating point modes.  Renaming to ...
33769
33770         ("add<mode>3", "sub<mode>3", "mul<mode>3", "div<mode>3")
33771         ("sqrt<mode>2", "fma<mode>4", "fms<mode>4", "neg<mode>2")
33772         ("abs<mode>2", "negabs<mode>2", "smax<mode>3")
33773         ("smin<mode>3", "*vec_cmp<VFCMP_HW_OP:code><mode>_nocc")
33774         ("vec_cmpuneq<mode>", "vec_cmpltgt<mode>", "vec_ordered<mode>")
33775         ("vec_unordered<mode>"): ... these.
33776
33777         ("neg_fma<mode>4", "neg_fms<mode>4", "*smax<mode>3_vxe")
33778         ("*smin<mode>3_vxe", "*sminv2df3_vx", "*vec_extendv4sf")
33779         ("*vec_extendv2df"): New insn definitions.
33780
33781 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
33782
33783         * config/s390/s390.md ("*adddi3_sign", "*subdi3_sign", "mulditi3")
33784         ("mulditi3_2", "*muldi3_sign"): New patterns.
33785         ("muldi3", "*muldi3", "mulsi3", "*mulsi3"): Add an expander and
33786         rename the pattern definition.
33787
33788 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
33789
33790         * config/s390/s390.md ("indirect_jump"): Turn insn definition into
33791         expander.
33792         ("*indirect_jump", "*indirect2_jump"): New pattern definitions.
33793
33794 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
33795
33796         * config/s390/s390.c (s390_expand_vec_init): Use vllezl
33797         instruction if possible.
33798         * config/s390/vector.md (vec_halfnumelts): New mode
33799         attribute.
33800         ("*vec_vllezlf<mode>"): New pattern.
33801
33802 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
33803
33804         * config/s390/vector.md ("popcountv16qi2", "popcountv8hi2")
33805         ("popcountv4si2", "popcountv2di2"): Rename to ...
33806         ("popcount<mode>2", "popcountv8hi2_vx", "popcountv4si2_vx")
33807         ("popcountv2di2_vx"): ... these and add !TARGET_VXE to the
33808         condition.
33809         ("popcount<mode>2_vxe"): New pattern.
33810
33811 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
33812
33813         * common/config/s390/s390-common.c (processor_flags_table): Add
33814         arch12.
33815         * config.gcc: Add arch12.
33816         * config/s390/driver-native.c (s390_host_detect_local_cpu):
33817         Default to arch12 for unknown CPU model numbers.
33818         * config/s390/s390-builtins.def: Add B_VXE builtin flag.
33819         * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Adjust
33820         PROCESSOR_max sanity check.
33821         * config/s390/s390-opts.h (enum processor_type): Add
33822         PROCESSOR_ARCH12.
33823         * config/s390/s390.c (processor_table): Add arch12.
33824         (s390_expand_builtin): Add check for B_VXE flag.
33825         (s390_issue_rate): Add PROCESSOR_ARCH12.
33826         (s390_get_sched_attrmask): Likewise.
33827         (s390_get_unit_mask): Likewise.
33828         (s390_sched_score): Enable z13 scheduling for arch12.
33829         (s390_sched_reorder): Likewise.
33830         (s390_sched_variable_issue): Likewise.
33831         * config/s390/s390.h (enum processor_flags): Add PF_ARCH12 and
33832         PF_VXE.
33833         (s390_tune_attr): Use z13 scheduling also for arch12.
33834         (TARGET_CPU_ARCH12, TARGET_CPU_ARCH12_P, TARGET_CPU_VXE)
33835         (TARGET_CPU_VXE_P, TARGET_ARCH12, TARGET_ARCH12_P, TARGET_VXE)
33836         (TARGET_VXE_P): New macros.
33837         * config/s390/s390.md: Add arch12 to cpu attribute.  Add arch12
33838         and vxe to cpu_facility.  Add arch12 and vxe to enabled attribute.
33839         * config/s390/s390.opt: Add arch12 as processor_type.
33840
33841 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
33842
33843         * config/s390/s390.md
33844         ("fixuns_truncdddi2", "fixuns_trunctddi2")
33845         ("fixuns_trunc<BFP:mode><GPR:mode>2"): Merge into ...
33846         ("fixuns_trunc<FP:mode><GPR:mode>2"): New expander.
33847
33848         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fixuns_trunc<mode>si2"):
33849         Rename expanders to ...
33850
33851         ("fixuns_trunc<BFP:mode><GPR:mode>2_emu")
33852         ("fixuns_truncdddi2_emu"): ... these.
33853
33854         ("fixuns_trunc<mode>si2_emu"): New expander.
33855
33856         ("*fixuns_truncdfdi2_z13"): Rename to ...
33857         ("*fixuns_truncdfdi2_vx"): ... this.
33858
33859 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
33860
33861         * config/s390/2964.md: Remove the single element vector compare
33862         instructions which are no longer used.
33863         * config/s390/s390.c (s390_select_ccmode): Remove handling of
33864         vector CCmodes.
33865         (s390_canonicalize_comparison): Remove handling of DFmode
33866         compares.
33867         (s390_expand_vec_compare_scalar): Remove function.
33868         (s390_emit_compare): Don't call s390_expand_vec_compare_scalar.
33869         * config/s390/s390.md ("*vec_cmp<insn_cmp>df_cconly"): Remove
33870         pattern.
33871         ("*cmp<mode>_ccs"): Add wfcdb instruction.
33872
33873 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
33874
33875         * config/s390/s390.md ("mov<mode>_64dfp" DD_DF): Use vleig for loading a
33876         FP zero.
33877         ("*mov<mode>_64" DD_DF): Remove the vector instructions. These
33878         will anyway by matched by mov<mode>_64dfp.
33879
33880 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
33881
33882         * config/s390/s390.md ("mov<mode>" SD_SF): Change vleg/vsteg to
33883         vlef/vstef.  Add missing operand to vleif.
33884
33885 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
33886
33887         * config/s390/s390.c (s390_expand_vec_init): Enable vector load
33888         pair for all vector types with 64 bit elements.
33889         * config/s390/vx-builtins.md (V_HW_64): Move mode iterator to ...
33890         * config/s390/vector.md (V_HW_64): ... here.
33891         (V_128_NOSINGLE): New mode iterator.
33892         ("vec_init<V_HW:mode>"): Use V_128 as mode iterator.
33893         ("*vec_splat<mode>"): Use V_128_NOSINGLE mode iterator.
33894         ("*vec_tf_to_v1tf", "*vec_ti_to_v1ti"): New pattern definitions.
33895         ("*vec_load_pairv2di"): Change to ...
33896         ("*vec_load_pair<mode>"): ... this one.
33897
33898 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
33899
33900         * config/s390/constraints.md: Add comments.
33901         (jKK): Reject element sizes > 8 bytes.
33902         * config/s390/s390.c (s390_split_ok_p): Enable splitting also for
33903         s_operands.
33904         * config/s390/s390.md: Add the s_operand checks formerly in
33905         s390_split_ok_p to various splitters where they are still
33906         required.
33907         * config/s390/vector.md ("mov<mode>" V_128): Add GPR alternatives
33908         for 128 bit vectors.  Plus two splitters.
33909
33910 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
33911
33912         * config/s390/s390.md: Rename the cpu facilty vec to vx throughout
33913         the file.
33914
33915 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
33916
33917         PR target/79893
33918         * config/s390/s390-c.c (s390_adjust_builtin_arglist): Issue an
33919         error if the boundary argument is not constant.
33920
33921 2017-03-24  Jakub Jelinek  <jakub@redhat.com>
33922
33923         PR rtl-optimization/80112
33924         * loop-doloop.c (doloop_condition_get): Don't check condition
33925         if cmp isn't SET with IF_THEN_ELSE src.
33926
33927 2017-03-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
33928
33929         PR tree-optimization/80158
33930         * gimple-ssa-strength-reduction.c (replace_mult_candidate): When
33931         replacing a candidate statement, also replace it for the
33932         candidate's alternate interpretation.
33933         (replace_rhs_if_not_dup): Likewise.
33934         (replace_one_candidate): Likewise.
33935
33936 2017-03-24  Richard Biener  <rguenther@suse.de>
33937
33938         PR tree-optimization/80167
33939         * graphite-isl-ast-to-gimple.c
33940         (translate_isl_ast_to_gimple::is_valid_rename): Handle default-defs
33941         properly.
33942         (translate_isl_ast_to_gimple::get_rename): Likewise.
33943
33944 2017-03-23  Kelvin Nilsen  <kelvin@gcc.gnu.org>
33945
33946         * config/rs6000/rs6000.c (rs6000_option_override_internal): Change
33947         handling of certain combinations of target options, including the
33948         combinations -mpower8-vector vs. -mno-vsx, -mpower9-vector vs.
33949         -mno-power8-vector, and -mpower9_dform vs. -mno-power9-vector.
33950
33951 2017-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33952
33953         PR target/71436
33954         * config/arm/arm.md (*load_multiple): Add reload_completed to
33955         matching condition.
33956
33957 2017-03-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
33958             Richard Biener  <rguenth@suse.de>
33959
33960         PR tree-optimization/79908
33961         PR tree-optimization/80136
33962         * tree-stdarg.c (expand_ifn_va_arg_1): For a VA_ARG whose LHS has
33963         been cast away, gimplify_and_add suffices.
33964
33965 2017-03-23  Markus Trippelsdorf  <markus@trippelsdorf.de>
33966
33967         * tree-vrp.c (identify_jump_threads): Delete avail_exprs.
33968
33969 2017-03-23  Richard Biener  <rguenther@suse.de>
33970
33971         PR tree-optimization/80032
33972         * gimplify.c (gimple_push_cleanup): Forced unconditional
33973         cleanups still have to go to the conditional_cleanups
33974         sequence.
33975
33976 2017-03-22  Jakub Jelinek  <jakub@redhat.com>
33977
33978         PR tree-optimization/80072
33979         * tree-ssa-reassoc.c (struct operand_entry): Change id field type
33980         to unsigned int.
33981         (next_operand_entry_id): Change type to unsigned int.
33982         (sort_by_operand_rank): Make sure to return the right return value
33983         even if unsigned fields are bigger than INT_MAX.
33984         (struct oecount): Change cnt and id type to unsigned int.
33985         (oecount_hasher::equal): Formatting fix.
33986         (oecount_cmp): Make sure to return the right return value
33987         even if unsigned fields are bigger than INT_MAX.
33988         (undistribute_ops_list): Change next_oecount_id type to unsigned int.
33989
33990         PR c++/80129
33991         * gimplify.c (gimplify_modify_expr_rhs) <case COND_EXPR>: Clear
33992         TREE_READONLY on result if writing it more than once.
33993
33994         PR sanitizer/80110
33995         * doc/invoke.texi (-fsanitize=thread): Document that with
33996         -fnon-call-exceptions atomics are not able to throw
33997         exceptions.
33998
33999         PR sanitizer/80110
34000         * tsan.c: Include tree-eh.h.
34001         (instrument_builtin_call): Call maybe_clean_eh_stmt or
34002         maybe_clean_or_replace_eh_stmt where needed.
34003         (instrument_memory_accesses): Add cfg_changed argument.
34004         Call gimple_purge_dead_eh_edges on each block and set *cfg_changed
34005         if it returned true.
34006         (tsan_pass): Adjust caller.  Return TODO_cleanup_cfg if cfg_changed.
34007
34008         PR rtl-optimization/63191
34009         * config/i386/i386.c (ix86_delegitimize_address): Turn into small
34010         wrapper function, moved the whole old content into ...
34011         (ix86_delegitimize_address_1): ... this.  New inline function.
34012         (ix86_find_base_term): Use ix86_delegitimize_address_1 with
34013         true as last argument instead of ix86_delegitimize_address.
34014
34015 2017-03-22  Wilco Dijkstra  <wdijkstr@arm.com>
34016
34017         * config/aarch64/aarch64.c (generic_branch_cost): Copy
34018         cortexa57_branch_cost.
34019
34020 2017-03-22  Wilco Dijkstra  <wdijkstr@arm.com>
34021
34022         * config/aarch64/aarch64.c (generic_tunings): Add AES fusion.
34023
34024 2017-03-21  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
34025
34026         PR target/80123
34027         * doc/md.texi (Constraints): Document wA constraint.
34028         * config/rs6000/constraints.md (wA): New.
34029         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Add wA reg_class.
34030         (rs6000_init_hard_regno_mode_ok): Init wA constraint.
34031         * config/rs6000/rs6000.h (RS6000_CONSTRAINT_wA): New.
34032         * config/rs6000/vsx.md (vsx_splat_<mode>): Use wA constraint.
34033
34034 2017-03-22  Cesar Philippidis  <cesar@codesourcery.com>
34035
34036         PR c++/80029
34037         * gimplify.c (is_oacc_declared): New function.
34038         (oacc_default_clause): Use it to set default flags for acc declared
34039         variables inside parallel regions.
34040         (gimplify_scan_omp_clauses): Strip firstprivate pointers for acc
34041         declared variables.
34042         (gimplify_oacc_declare): Gimplify the declare clauses.  Add the
34043         declare attribute to any decl as necessary.
34044
34045 2017-03-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
34046
34047         PR target/80082
34048         * config/arm/arm-isa.h (isa_bit_lpae): New feature bit.
34049         (ISA_ARMv7ve): Add isa_bit_lpae to the definition.
34050         * config/arm/arm-protos.h (arm_arch7ve): Rename into ...
34051         (arm_arch_lpae): This.
34052         * config/arm/arm.c (arm_arch7ve): Rename into ...
34053         (arm_arch_lpae): This.  Define it in term of isa_bit_lpae.
34054         * config/arm/arm.h (TARGET_HAVE_LPAE): Redefine in term of
34055         arm_arch_lpae.
34056
34057 2017-03-22  Martin Liska  <mliska@suse.cz>
34058
34059         PR target/79906
34060         * config/rs6000/rs6000.c (rs6000_inner_target_options): Show
34061         error message instead of an ICE.
34062
34063 2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34064
34065         * doc/extend.texi (6.11 Additional Floating Types): Revise.
34066
34067 2017-03-21  Kelvin Nilsen  <kelvin@gcc.gnu.org>
34068
34069         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Add
34070         comments.
34071         * config/rs6000/rs6000.c (rs6000_option_override_internal): Add
34072         comments.
34073
34074 2017-03-21  Martin Sebor  <msebor@redhat.com>
34075
34076         * doc/extend.texi: Use "cannot" instead of "can't."
34077         * doc/hostconfig.texi: Same.
34078         * doc/install.texi: Same.
34079         * doc/invoke.texi: Same.
34080         * doc/loop.texi: Same.
34081         * doc/md.texi: Same.
34082         * doc/objc.texi: Same.
34083         * doc/rtl.texi: Same.
34084         * doc/tm.texi: Same.
34085         * doc/tm.texi.in: Same.
34086         * doc/trouble.texi: Same.
34087
34088 2017-03-21  Alexandre Oliva  <aoliva@redhat.com>
34089
34090         PR debug/63238
34091         * dwarf2out.c (struct checksum_attributes): Add at_alignment.
34092         (collect_checksum_attributes): Set it.
34093         (die_checksum_ordered): Use it.
34094
34095 2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34096
34097         PR tree-optimization/79908
34098         * tree-stdarg.c (expand_ifn_va_arg_1): Revert the following
34099         change: For a VA_ARG whose LHS has been cast away, use
34100         force_gimple_operand to construct the side effects.
34101
34102 2017-03-21  David Malcolm  <dmalcolm@redhat.com>
34103
34104         PR translation/80001
34105         * omp-offload.c (oacc_loop_fixed_partitions): Make diagnostics
34106         more amenable to translation.
34107         (oacc_loop_auto_partitions): Likewise.
34108
34109 2017-03-21  Marek Polacek  <polacek@redhat.com>
34110             Martin Sebor  <msebor@redhat.com>
34111
34112         PR tree-optimization/80109
34113         * gimple-ssa-warn-alloca.c (alloca_call_type): Only call get_range_info
34114         on INTEGRAL_TYPE_P.
34115
34116 2017-03-21  Jakub Jelinek  <jakub@redhat.com>
34117             Segher Boessenkool  <segher@kernel.crashing.org>
34118
34119         PR target/80125
34120         * combine.c (can_combine_p): Revert the 2017-03-20 change, only
34121         check reg_used_between_p between insn and one of succ or succ2
34122         depending on if succ is artificial insn not inserted into insn
34123         stream.
34124
34125 2017-03-21  Martin Liska  <mliska@suse.cz>
34126
34127         PR gcov-profile/80081
34128         * Makefile.in: Add gcov-dump and fix installation of gcov-tool.
34129         * doc/gcc.texi: Include gcov-dump stuff.
34130         * doc/gcov-dump.texi: New file.
34131
34132 2017-03-21  Toma Tabacu  <toma.tabacu@imgtec.com>
34133
34134         PR rtl-optimization/79150
34135         * config/mips/mips.c (mips_block_move_loop): Emit a NOP after the
34136         conditional jump, if the jump is the last insn of the loop.
34137
34138 2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34139             Richard Biener  <rguenth@suse.de>
34140
34141         PR tree-optimization/79908
34142         * tree-stdarg.c (expand_ifn_va_arg_1): For a VA_ARG whose LHS has
34143         been cast away, use force_gimple_operand to construct the side
34144         effects.
34145
34146 2017-03-21  Martin Liska  <mliska@suse.cz>
34147
34148         PR libfortran/79956
34149         * simplify-rtx.c (simplify_immed_subreg): Initialize a variable
34150         to NULL.
34151
34152 2017-03-21  Brad Spengler <spender@grsecurity.net>
34153
34154         PR plugins/80094
34155         * plugin.c (htab_hash_plugin): New function.
34156         (add_new_plugin): Use it and adjust.
34157         (parse_plugin_arg_opt): Adjust.
34158         (init_one_plugin): Likewise.
34159
34160 2017-03-21  Richard Biener  <rguenther@suse.de>
34161
34162         PR tree-optimization/80032
34163         * gimplify.c (gimple_push_cleanup): Add force_uncond parameter,
34164         if set force the cleanup to happen unconditionally.
34165         (gimplify_target_expr): Push inserted clobbers with force_uncond
34166         to avoid them being removed by control-dependent DCE.
34167
34168 2017-03-21  Richard Biener  <rguenther@suse.de>
34169
34170         PR tree-optimization/80122
34171         * tree-inline.c (copy_bb): Do not expans va-arg packs or
34172         va_arg_pack_len when the inlined call stmt requires pack
34173         expansion itself.
34174         * tree-inline.h (struct copy_body_data): Make call_stmt a gcall *.
34175
34176 2017-03-21  Jakub Jelinek  <jakub@redhat.com>
34177
34178         PR sanitizer/78158
34179         * tsan.c (instrument_builtin_call): If the memory model argument
34180         is not a constant, assume it is valid.
34181
34182         PR c/67338
34183         * fold-const.c (round_up_loc): Negate divisor in unsigned type to
34184         avoid UB.
34185
34186 2017-03-20  Segher Boessenkool  <segher@kernel.crashing.org>
34187
34188         PR rtl-optimization/79910
34189         * combine.c (can_combine_p): Do not allow combining an I0 or I1
34190         if its dest is used by an insn before I2 (other than the combined
34191         insns themselves, which are properly handled already).
34192
34193 2017-03-20  Segher Boessenkool  <segher@kernel.crashing.org>
34194
34195         Revert:
34196         2017-03-17  Bernd Schmidt  <bschmidt@redhat.com>
34197
34198         * combine.c (record_used_regs): New static function.
34199         (try_combine): Handle situations where there is an additional
34200         instruction between I2 and I3 which needs to have a LOG_LINK
34201         updated.
34202
34203         Revert:
34204         2017-03-17  Jim Wilson  <jim.wilson@linaro.org>
34205
34206         * combine.c (try_combine): Delete redundant i1 test.  Call
34207         prev_nonnote_nondebug_insn instead of prev_nonnote_insn.
34208
34209 2017-03-20  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
34210
34211         PR target/80083
34212         * config/rs6000/rs6000.md (*movsi_internal1): Fix constraints for
34213         alternatives 13/14.
34214
34215 2017-03-20  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34216
34217         PR tree-optimization/80054
34218         * gimple-ssa-strength-reduction.c (all_phi_incrs_profitable): Fail
34219         the optimization if a PHI or any of its arguments is not dominated
34220         by the candidate's basis.  Use gphi* rather than gimple* as
34221         appropriate.
34222         (replace_profitable_candidates): Clean up a gimple* variable that
34223         should be a gphi* variable.
34224
34225 2017-03-20  Martin Sebor  <msebor@redhat.com>
34226
34227         PR c++/52477
34228         * doc/extend.texi (attribute constructor): Document present limitation.
34229
34230 2017-03-20  Kelvin Nilsen  <kelvin@gcc.gnu.org>
34231
34232         PR target/79963
34233         * config/rs6000/altivec.h (vec_all_ne): Under __cplusplus__ and
34234         __POWER9_VECTOR__ #ifdef control, change template definition to
34235         use Power9-specific built-in function.
34236         (vec_any_eq): Likewise.
34237         * config/rs6000/vector.md (vector_ae_v2di_p): Change the flag used
34238         to control outcomes from this test.
34239         (vector_ae_<mode>p): For VEC_F modes, likewise.
34240
34241 2017-03-20  Ian Lance Taylor  <iant@google.com>
34242
34243         * config/i386/i386.c (ix86_function_regparm): Save an extra
34244         register for -fsplit-stack with DECL_STATIC_CHAIN.
34245
34246 2017-03-17  Palmer Dabbelt  <palmer@dabbelt.com>
34247
34248         PR target/79912
34249         * config/riscv/riscv.c (riscv_preferred_reload_class): Remove.
34250         (TARGET_PREFERRED_RELOAD_CLASS): Likewise.
34251
34252 2017-03-17  Palmer Dabbelt  <palmer@dabbelt.com>
34253
34254         * config/riscv/riscv.c (riscv_print_operand): Use "fence
34255         iorw,ow".
34256         * config/riscv/sync.mc (mem_thread_fence_1): Use "fence
34257         iorw,iorw".
34258
34259 2017-03-20  Marek Polacek  <polacek@redhat.com>
34260
34261         PR sanitizer/80063
34262         * asan.c (DEF_SANITIZER_BUILTIN): Use do { } while (0).
34263
34264 2017-03-20  Richard Biener  <rguenther@suse.de>
34265
34266         PR tree-optimization/80113
34267         * graphite-isl-ast-to-gimple.c (copy_loop_phi_nodes): Do not
34268         allocate extra SSA name for PHI def.
34269         (add_close_phis_to_outer_loops): Likewise.
34270         (add_close_phis_to_merge_points): Likewise.
34271         (copy_loop_close_phi_args): Likewise.
34272         (copy_cond_phi_nodes): Likewise.
34273
34274 2017-03-20  Martin Liska  <mliska@suse.cz>
34275
34276         PR middle-end/79753
34277         * tree-chkp.c (chkp_build_returned_bound): Do not build
34278         returned bounds for a LHS that's not a BOUNDED_P type.
34279
34280 2017-03-20  Martin Liska  <mliska@suse.cz>
34281
34282         PR target/79769
34283         PR target/79770
34284         * tree-chkp.c (chkp_find_bounds_1): Handle REAL_CST,
34285         COMPLEX_CST and VECTOR_CST.
34286
34287 2017-03-20  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34288
34289         PR target/78857
34290         * config/s390/s390.md ("cmp<mode>_ccs_0"): Add a clobber of the
34291         target operand.  A new splitter adds the clobber statement in case
34292         the target operand is dead anyway.
34293
34294 2017-03-19  Gerald Pfeifer  <gerald@pfeifer.com>
34295
34296         * doc/install.texi (Specific) <sparc-*-linux*>: No longer refer
34297         to age-old versions of binutils and glibc.
34298
34299 2017-03-18  Segher Boessenkool  <segher@kernel.crashing.org>
34300
34301         * doc/contrib.texi (Contributors): Remove duplicate entry for myself.
34302
34303 2017-03-18  Gerald Pfeifer  <gerald@pfeifer.com>
34304
34305         * doc/contrib.texi (Contributors): Add Segher Boessenkool.
34306
34307 2017-03-18  Gerald Pfeifer  <gerald@pfeifer.com>
34308
34309         * doc/install.texi (Specific) <arm-*-eabi>: Remove old
34310         requirement for binutils 2.13.
34311
34312 2017-03-17  Jim Wilson  <jim.wilson@linaro.org>
34313
34314         * combine.c (try_combine): Delete redundant i1 test.  Call
34315         prev_nonnote_nondebug_insn instead of prev_nonnote_insn.
34316
34317 2017-03-17  Palmer Dabbelt  <palmer@dabbelt.com
34318
34319         * doc/install.texi (Specific) <riscv32-*-elf>: Add riscv32-*-elf,
34320         riscv32-*-linux, riscv64-*-elf, riscv64-*-linux to the table of
34321         contents.
34322         <riscv64-*-elf>: Re-arrange section
34323         <riscv32-*-elf>: Add a note about requiring binutils 2.28.
34324         <riscv32-*-linux>: Likewise.
34325         <riscv64-*-elf>: Likewise
34326         <riscv64-*-linux>: Likewise.
34327
34328 2017-03-17  Richard Earnshaw  <rearnsha@arm.com>
34329
34330         PR target/80052
34331         * aarch64.opt(verbose-cost-dump): Fix typo.
34332
34333 2017-03-17  Pat Haugen  <pthaugen@us.ibm.com>
34334
34335         PR target/79951
34336         * config/rs6000/rs6000.md (copysign<mode>3_fcpsgn): Test
34337         for VECTOR_UNIT_VSX_P (<MODE>mode) too.
34338
34339 2017-03-17  Bernd Schmidt  <bschmidt@redhat.com>
34340
34341         * reload.c (find_reloads): When reloading a nonoffsettable address,
34342         use RELOAD_OTHER for it and its address reloads.
34343
34344         PR rtl-optimization/79910
34345         * combine.c (record_used_regs): New static function.
34346         (try_combine): Handle situations where there is an additional
34347         instruction between I2 and I3 which needs to have a LOG_LINK
34348         updated.
34349
34350 2017-03-17  Jeff Law  <law@redhat.com>
34351
34352         PR tree-optimization/71437
34353         * tree-vrp.c (simplify_stmt_for_jump_threading): Lookup the
34354         conditional in the hash table first.
34355         (vrp_dom_walker::before_dom_children): Extract condition from
34356         ASSERT_EXPR.  Record condition, its inverion and any implied
34357         conditions as well.
34358
34359 2017-03-17  Marek Polacek  <polacek@redhat.com>
34360             Markus Trippelsdorf  <markus@trippelsdorf.de>
34361
34362         PR tree-optimization/80079
34363         * gimple-ssa-store-merging.c (class pass_store_merging): Initialize
34364         m_stores_head.
34365
34366 2017-03-17  Richard Biener  <rguenther@suse.de>
34367
34368         PR middle-end/80075
34369         * tree-eh.c (stmt_could_throw_1_p): Only handle gimple assigns.
34370         Properly verify the LHS before the RHS possibly claims to be
34371         handled.
34372         (stmt_could_throw_p): Hande gimple conds fully here.  Clobbers
34373         do not throw.
34374
34375 2017-03-17  Martin Jambor  <mjambor@suse.cz>
34376
34377         * doc/invoke.texi (Option Options): Include -fipa-vrp in the list.
34378         (List of -O2 options): Likewise.
34379         (-fipa-bit-cp): Replace "ipa" with "interprocedural."
34380         (-fipa-vrp) New.
34381
34382 2017-03-17  Tom de Vries  <tom@codesourcery.com>
34383
34384         * gcov-dump.c (print_usage): Print bug_report_url.
34385
34386 2017-03-17  Richard Biener  <rguenther@suse.de>
34387
34388         PR middle-end/80050
34389         * genmatch.c (parser::next): Remove pointless check for CPP_EOF.
34390         (parser::peek): Likewise.
34391
34392 2017-03-17  Richard Biener  <rguenther@suse.de>
34393
34394         PR tree-optimization/80048
34395         * sese.c (free_sese_info): Properly release rename_map and
34396         copied_bb_map elements.
34397
34398 2017-03-16  Alexandre Oliva  <aoliva@redhat.com>
34399
34400         * gimple-ssa-store-merging.c (struct imm_store_chain_info):
34401         Add linked-list forward and backlinks.  Insert on
34402         construction, remove on destruction.
34403         (class pass_store_merging): Add m_stores_head field.
34404         (pass_store_merging::terminate_and_process_all_chains):
34405         Iterate over m_stores_head list.
34406         (pass_store_merging::terminate_all_aliasing_chains):
34407         Likewise.
34408         (pass_store_merging::execute): Check for debug stmts first.
34409         Push new chains onto the m_stores_head stack.
34410
34411 2017-03-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
34412
34413         PR target/71294
34414         * config/rs6000/vsx.md (vsx_splat_<mode>, VSX_D iterator): Allow a
34415         SPLAT operation on ISA 2.07 64-bit systems that have direct move,
34416         but no MTVSRDD support, by doing MTVSRD and XXPERMDI.
34417
34418 2017-03-16  Jeff Law  <law@redhat.com>
34419
34420         PR tree-optimization/71437
34421         * tree-ssa-dom.c (dom_opt_dom_walker): Remove thread_across_edge
34422         member function.  Implementation moved into after_dom_children
34423         member function and into the threader's thread_outgoing_edges
34424         function.
34425         (dom_opt_dom_walker::after_dom_children): Simplify by moving
34426         some code into new thread_outgoing_edges.
34427         * tree-ssa-threadedge.c (thread_across_edge): Make static and simplify
34428         definition.  Simplify marker handling (do it here).   Assume we always
34429         have the available expression and the const/copies tables.
34430         (thread_outgoing_edges): New function extracted from tree-ssa-dom.c
34431         and tree-vrp.c
34432         * tree-ssa-threadedge.h (thread_outgoing_edges): Declare.
34433         * tree-vrp.c (equiv_stack): No longer file scoped.
34434         (vrp_dom_walker): New class.
34435         (vrp_dom_walker::before_dom_children): New member function.
34436         (vrp_dom_walker::after_dom_children): Likewise.
34437         (identify_jump_threads):  Setup domwalker.  Use it rather than
34438         walking edges in a random order by hand.  Simplify setup/finalization.
34439         (finalize_jump_threads): Remove.
34440         (vrp_finalize): Do not call identify_jump_threads here.
34441         (execute_vrp): Do it here instead and call thread_through_all_blocks
34442         here too.
34443
34444         PR tree-optimization/71437
34445         * tree-ssa-dom.c (pfn_simplify): Add basic_block argument.  All
34446         callers changed.
34447         (simplify_stmt_for_jump_threading): Add basic_block argument.  All
34448         callers changed.
34449         (lhs_of_dominating_assert): Moved from here into tree-vrp.c.
34450         (dom_opt_dom_walker::thread_across_edge): Remove
34451         handle_dominating_asserts argument.  All callers changed.
34452         (record_temporary_equivalences_from_stmts_at_dest): Corresponding
34453         changes.  Remove calls to lhs_of_dominating_assert.  Other
34454         uses of handle_dominating_asserts turn into unconditional code
34455         (simplify_control_stmt_condition_1): Likewise.
34456         (simplify_control_stmt_condition): Likewise.
34457         (thread_through_normal_block, thread_across_edge): Likewise.
34458         * tree-ssa-threadedge.h (thread_across_edge): Corresponding changes.
34459         * tree-vrp.c (lhs_of_dominating_assert): Move here.  Return original
34460         object if it is not an SSA_NAME.
34461         (simplify_stmt_for_jump_threading): Call lhs_of_dominating_assert
34462         before calling into the VRP specific simplifiers.
34463         (identify_jump_threads): Remove handle_dominating_asserts
34464         argument.
34465
34466 2017-03-16  Jakub Jelinek  <jakub@redhat.com>
34467
34468         PR fortran/79886
34469         * tree-diagnostic.c (default_tree_printer): No longer static.
34470         * tree-diagnostic.h (default_tree_printer): New prototype.
34471
34472 2017-03-16  Tamar Christina  <tamar.christina@arm.com>
34473
34474         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>)
34475         Change ins into fmov.
34476
34477 2017-03-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
34478
34479         * config/aarch64/iterators.md (h_con): Return "x" for V4HF and V8HF.
34480         * config/aarch64/aarch64-simd.md (*aarch64_fma4_elt_from_dup<mode>):
34481         Use h_con constraint for operand 1.
34482         (*aarch64_fnma4_elt_from_dup<mode>): Likewise.
34483         (*aarch64_mulx_elt_from_dup<mode>): Likewise for operand 2.
34484
34485 2017-03-15  Jeff Law  <law@redhat.com>
34486
34487         PR tree-optimization/71437
34488         * tree-ssa-dom.c (derive_equivalences_from_bit_ior): New function.
34489         (record_temporary_equivalences): Use it.
34490
34491         PR tree-optimization/71437
34492         * tree-ssa-dom.c (struct cond_equivalence): Moved from here into
34493         tree-ssa-scopedtables.
34494         (lookup_avail_expr, build_and_record_new_cond): Likewise.
34495         (record_conditions, record_cond, vuse_eq): Likewise.
34496         (record_edge_info): Adjust to API tweak of record_conditions.
34497         (simplify_stmt_for_jump_threading): Similarly for lookup_avail_expr.
34498         (record_temporary_equivalences, optimize_stmt): Likewise.
34499         (eliminate_redundant_computations): Likewise.
34500         (record_equivalences_from_stmt): Likewise.
34501         * tree-ssa-scopedtables.c: Include options.h and params.h.
34502         (vuse_eq): New function, moved from tree-ssa-dom.c
34503         (build_and_record_new_cond): Likewise.
34504         (record_conditions): Likewise.  Accept vector of conditions rather
34505         than edge_equivalence structure for first argument.
34506         for the first argument.
34507         (avail_exprs_stack::lookup_avail_expr): New member function, moved
34508         from tree-ssa-dom.c.
34509         (avail_exprs_stack::record_cond): Likewise.
34510         * tree-ssa-scopedtables.h (struct cond_equivalence): Moved here
34511         from tree-ssa-dom.c.
34512         (avail_exprs_stack): Add new member functions lookup_avail_expr
34513         and record_cond.
34514         (record_conditions): Declare.
34515
34516 2017-03-15  Vladimir Makarov  <vmakarov@redhat.com>
34517
34518         PR target/80017
34519         * lra-constraints.c (process_alt_operands): Increase reject for
34520         reloading an input/output operand.
34521
34522 2017-03-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
34523
34524         PR target/79038
34525         * config/rs6000/rs6000.md (float<QHI:mode><IEEE128:mode>2): Define
34526         insns to convert from signed/unsigned char/short to IEEE 128-bit
34527         floating point.
34528         (floatuns<QHI:mode><IEEE128:mode>2): Likewise.
34529
34530 2017-03-15  Uros Bizjak  <ubizjak@gmail.com>
34531
34532         PR target/80019
34533         * config/i386/i386.c (ix86_vector_duplicate_value): Create
34534         subreg of inner mode for values already in registers.
34535
34536 2017-03-15  Bernd Schmidt  <bschmidt@redhat.com>
34537
34538         * config/c6x/c6x.c (hwloop_optimize): Handle case where the old
34539         iteration reg is used after the loop.
34540
34541 2017-03-14  Martin Sebor  <msebor@redhat.com>
34542
34543         PR tree-optimization/79800
34544         * gimple-ssa-sprintf.c (format_floating: Add argument.  Handle
34545         precision in negative-positive range.
34546         (format_floating): Call non-const overload with adjusted precision.
34547
34548 2017-03-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
34549
34550         PR target/79947
34551         * config/rs6000/rs6000.h (TARGET_FRSQRTES): Add check for
34552         -mpowerpc-gfxopt.
34553
34554 2017-03-14  Martin Sebor  <msebor@redhat.com>
34555
34556         PR middle-end/80020
34557         * builtin-attrs.def (ATTR_ALLOC_SIZE_2_NOTHROW_LIST): New macro.
34558         * builtins.def (aligned_alloc): Use it.
34559
34560         PR c/79936
34561         * Makefile.in (GTFILES): Add calls.c.
34562         * calls.c: Include "gt-calls.h".
34563
34564 2017-03-14  Bernd Schmidt  <bschmidt@redhat.com>
34565
34566         PR rtl-optimization/79728
34567         * regs.h (struct target_regs): New field
34568         x_contains_allocatable_regs_of_mode.
34569         (contains_allocatable_regs_of_mode): New macro.
34570         * reginfo.c (init_reg_sets_1): Initialize it, and change
34571         contains_reg_of_mode so it includes global regs as well.
34572         * reload.c (push_reload): Use contains_allocatable_regs_of_mode
34573         rather than contains_regs_of_mode.
34574
34575 2017-03-14  Martin Liska  <mliska@suse.cz>
34576
34577         * doc/invoke.texi: Document options that can't be combined with
34578         -fcheck-pointer-bounds.
34579
34580 2017-03-14  Martin Liska  <mliska@suse.cz>
34581
34582         PR middle-end/79831
34583         * doc/invoke.texi (-Wchkp): Document the option.
34584
34585 2017-03-14  Martin Liska  <mliska@suse.cz>
34586
34587         * Makefile.in: Install gcov-dump.
34588
34589 2017-03-14  Martin Liska  <mliska@suse.cz>
34590
34591         * multiple_target.c (expand_target_clones): Bail out for
34592         an invalid attribute.
34593
34594 2017-03-14  Richard Biener  <rguenther@suse.de>
34595
34596         * alias.c (struct alias_set_entry): Pack properly.
34597         * cfgloop.h (struct loop): Likewise.
34598         * cse.c (struct set): Likewise.
34599         * ipa-utils.c (struct searchc_env): Likewise.
34600         * loop-invariant.c (struct invariant): Likewise.
34601         * lra-remat.c (struct cand): Likewise.
34602         * recog.c (struct change_t): Likewise.
34603         * rtl.h (struct address_info): Likewise.
34604         * symbol-summary.h (function_summary): Likewise.
34605         * tree-loop-distribution.c (struct partition): Likewise.
34606         * tree-object-size.c (struct object_size_info): Likewise.
34607         * tree-ssa-loop-ivopts.c (struct cost_pair): Likewise.
34608         * tree-ssa-threadupdate.c (struct ssa_local_info_t): Likewise.
34609         * tree-vect-data-refs.c (struct _vect_peel_info): Likewise.
34610         * tree-vect-slp.c (struct _slp_oprnd_info): Likewise.
34611         * tree-vect-stmts.c (struct simd_call_arg_info): Likewise.
34612         * tree-vectorizer.h (struct _loop_vec_info): Likewise.
34613         (struct _stmt_vec_info): Likewise.
34614
34615 2017-03-14  Martin Liska  <mliska@suse.cz>
34616
34617         PR target/79892
34618         * multiple_target.c (create_dispatcher_calls): Check that
34619         a target can create a function dispatcher.
34620
34621 2017-03-14  Martin Liska  <mliska@suse.cz>
34622
34623         PR lto/66295
34624         * multiple_target.c (expand_target_clones): Drop local.local
34625         flag for default implementation.
34626
34627 2017-03-14  Richard Biener  <rguenther@suse.de>
34628
34629         PR tree-optimization/80030
34630         * tree-vect-stmts.c (vectorizable_store): Plug memleak.
34631
34632 2017-03-13  Kito Cheng  <kito.cheng@gmail.com>
34633
34634         * config/riscv/riscv.c (riscv_emit_float_compare>: Use
34635         gcc_fallthrough() instead of __attribute__((fallthrough));
34636
34637 2017-03-13  Gerald Pfeifer  <gerald@pfeifer.com>
34638
34639         * doc/gcc.texi: Remove "up" link to (DIR).
34640         * doc/gccint.texi: Ditto.
34641
34642 2017-03-13  Gerald Pfeifer  <gerald@pfeifer.com>
34643
34644         * doc/install.texi (Specific) <avr>: Remove reference to
34645         binutils 2.13.
34646
34647 2017-03-13  Jeff Law  <law@redhat.com>
34648
34649         * config/riscv/riscv.c (riscv_emit_float_compare): Use fallthru
34650         attribute rather than comments.
34651
34652         * config/pdp11/pdp11.md (movmemhi): Adjust operand numbers to
34653         match_scratch operand is highest.
34654
34655 2017-03-13  Martin Liska  <mliska@suse.cz>
34656
34657         PR middle-end/78339
34658         * ipa-pure-const.c (warn_function_noreturn): If the declarations
34659         is a CHKP clone, use original declaration.
34660
34661 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
34662
34663         * config/arc/arc.c (arc_init): Use multiplier whenever we have it.
34664         (arc_conditional_register_usage): Use a different allocation order
34665         when optimizing for size.
34666         * common/config/arc/arc-common.c (arc_option_optimization_table):
34667         Section anchors default on when optimizing for size.
34668
34669 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
34670
34671         * config/arc/arc.md (*tst_bitfield_tst): Fix pattern.
34672
34673 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
34674
34675         * config/arc/arc.c (arc_output_addsi): Emit code density adds.
34676         * config/arc/arc.md (cpu_facility): Add cd variant.
34677         (*movqi_insn): Add code density variant.
34678         (*movhi_insn): Likewise.
34679         (*movqi_insn): Likewise.
34680         (*addsi3_mixed): Likewise.
34681         (subsi3_insn): Likewise.
34682
34683 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
34684
34685         * config/arc/arc.md (movsi_cond_exec): Update constraint.
34686
34687 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
34688
34689         * config/arc/arc.c (arc_legitimize_pic_address): Handle PIC
34690         expressions with MINUS and UNARY ops.
34691
34692 2017-03-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
34693
34694         PR target/79911
34695         * config/arm/neon.md (vec_sel_widen_ssum_lo<VQI:mode><VW:mode>3):
34696         Rename to...
34697         (vec_sel_widen_ssum_lo<mode><V_half>3): ... This. Avoid mismatch
34698         between vec_select and vector argument.
34699         (vec_sel_widen_ssum_hi<VQI:mode><VW:mode>3): Rename to...
34700         (vec_sel_widen_ssum_hi<mode><V_half>3): ... This. Likewise.
34701         (vec_sel_widen_usum_lo<VQI:mode><VW:mode>3): Rename to...
34702         (vec_sel_widen_usum_lo<mode><V_half>3): ... This.
34703         (vec_sel_widen_usum_hi<VQI:mode><VW:mode>3): Rename to...
34704         (vec_sel_widen_usum_hi<mode><V_half>3): ... This.
34705
34706 2017-03-13  Richard Biener  <rguenther@suse.de>
34707
34708         PR other/79991
34709         * params.def (vect-max-peeling-for-alignment): Fix typo.
34710
34711 2017-03-12  Gerald Pfeifer  <gerald@pfeifer.com>
34712
34713         * doc/install.texi (Specific) <mips-*-*>: Remove description of
34714         issue that only occurred with binutils below 2.18.
34715
34716 2017-03-12  Gerald Pfeifer  <gerald@pfeifer.com>
34717
34718         * doc/install.texi (Specific) <cris-axis-elf>: No longer
34719         refer to binutils 2.11/2.12 minimum.
34720
34721 2017-03-12  Gerald Pfeifer  <gerald@pfeifer.com>
34722
34723         * doc/install.texi (Specific) <powerpc-*-*>: Remove link to
34724         ftp.kernel.org and simplify binutils requirement.
34725
34726 2017-03-11  Gerald Pfeifer  <gerald@pfeifer.com>
34727
34728         * doc/invoke.texi (Warning Options): Fix spelling of link-time
34729         optimization.
34730         (Optimize Options): Ditto.  Also remove redundancy.
34731
34732 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
34733
34734         PR translation/79848
34735         * ipa-devirt.c (warn_types_mismatch): Simplify uses of "%<%s%>" to
34736         "%qs".
34737         * ipa-pure-const.c (suggest_attribute): Likewise.  Convert _
34738         to G_ to avoid double translation.
34739
34740 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
34741
34742         PR translation/79923
34743         * auto-profile.c (get_combined_location): Convert leading
34744         character of diagnostics to lower case and remove trailing period.
34745         (read_profile): Likewise for various diagnostics.
34746         * config/arm/arm.c (arm_option_override): Remove trailing period
34747         from various diagnostics.
34748         * config/msp430/msp430.c (msp430_expand_delay_cycles): Likewise.
34749         (msp430_expand_delay_cycles): Likewise.
34750
34751 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
34752
34753         PR target/79925
34754         * config/aarch64/aarch64.c (aarch64_validate_mcpu): Quote the
34755         full command-line argument, rather than just "str".
34756         (aarch64_validate_march): Likewise.
34757         (aarch64_validate_mtune): Likewise.
34758
34759 2017-03-10  Bernd Schmidt  <bschmidt@redhat.com>
34760
34761         PR rtl-optimization/78911
34762         * lra-assigns.c (must_not_spill_p): New function.
34763         (spill_for): Use it.
34764
34765 2017-03-10  Jakub Jelinek  <jakub@redhat.com>
34766
34767         PR tree-optimization/79981
34768         * tree-vrp.c (extract_range_basic): Handle IMAGPART_EXPR of
34769         ATOMIC_COMPARE_EXCHANGE ifn result.
34770         (stmt_interesting_for_vrp, vrp_visit_stmt): Handle
34771         IFN_ATOMIC_COMPARE_EXCHANGE.
34772
34773 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
34774
34775         PR driver/79875
34776         * opts.c (parse_sanitizer_options): Add missing question mark to
34777         "did you mean" message.
34778
34779 2017-03-10  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34780
34781         * config/rs6000/rs6000-builtin.def (VMULEUB_UNS): Remove orphaned
34782         built-in.
34783         (VMULEUH_UNS): Likewise.
34784         (VMULOUB_UNS): Likewise.
34785         (VMULOUH_UNS): Likewise.
34786         * config/rs6000/rs6000.c (builtin_function_type): Remove
34787         references to ALTIVEC_BUILTIN_VMUL[EO]U[BH]_UNS.
34788
34789 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
34790
34791         PR bootstrap/79952
34792         * read-rtl-function.c (function_reader::read_rtx_operand): Update
34793         x with result of extra_parsing_for_operand_code_0.
34794         (function_reader::extra_parsing_for_operand_code_0): Convert
34795         return type from void to rtx, returning x.  When reading
34796         SYMBOL_REF with SYMBOL_FLAG_HAS_BLOCK_INFO, reallocate x to the
34797         larger size containing struct block_symbol.
34798
34799 2017-03-10  Segher Boessenkool  <segher@kernel.crashing.org>
34800
34801         * config/rs6000/rs6000.c (rs6000_option_override_internal): Disallow
34802         -mfloat128-hardware without -m64.
34803
34804 2017-03-10  Will Schmidt <will_schmidt@vnet.ibm.com>
34805
34806         PR target/79941
34807         * config/rs6000/rs6000.c (builtin_function_type): Add VMUL*U[HB]
34808         entries to the case statement that marks unsigned arguments to
34809         overloaded functions.
34810
34811 2017-03-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
34812
34813         * config/rs6000/rs6000.c (rs6000_option_override_internal): Fix
34814         two typographic errors in the handling of TARGET_UPPER_REGS_DI.
34815
34816 2017-03-10  Pat Haugen  <pthaugen@us.ibm.com>
34817
34818         PR target/79907
34819         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Test
34820         TARGET_UPPER_REGS_DI when setting 'wi' constraint regclass.
34821
34822 2017-03-10  Martin Liska  <mliska@suse.cz>
34823
34824         PR target/65705
34825         PR target/69804
34826         * toplev.c (process_options): Enable MPX with LSAN and UBSAN.
34827         * tree-chkp.c (chkp_walk_pointer_assignments): Verify that
34828         FIELD != NULL.
34829
34830 2017-03-10  Olivier Hainque  <hainque@adacore.com>
34831
34832         * tree-switch-conversion (array_value_type): Start by resetting
34833         candidate type to it's main variant.
34834
34835 2017-03-10  Jakub Jelinek  <jakub@redhat.com>
34836
34837         PR rtl-optimization/79909
34838         * combine.c (try_combine): Use simplify_replace_rtx on individual
34839         CALL_INSN_FUNCTION_USAGE elements instead of replace_rtx on copy_rtx
34840         of the whole CALL_INSN_FUNCTION_USAGE.
34841
34842         PR tree-optimization/79972
34843         * gimple-ssa-warn-alloca.c (alloca_call_type): Only call
34844         get_range_info on SSA_NAMEs.  Formatting fixes.
34845
34846 2017-03-10  Richard Biener  <rguenther@suse.de>
34847             Jakub Jelinek  <jakub@redhat.com>
34848
34849         PR tree-optimization/77975
34850         * tree-ssa-loop-niter.c (get_base_for): Allow phi argument from latch
34851         edge to be constant.
34852         (get_val_for): For constant x return it.  Formatting fix.
34853         (loop_niter_by_eval): Avoid pointless looping if the next iteration
34854         would use the same bases as the current one.
34855
34856 2017-03-09  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34857
34858         * config/rs6000/rs6000.c (rs6000_gen_le_vsx_permute): Use rotate
34859         instead of vec_select for V1TImode.
34860         * conifg/rs6000/vsx.md (VSX_LE): Remove mode iterator that is no
34861         longer needed.
34862         (VSX_LE_128): Add V1TI to this mode iterator.
34863         (*vsx_le_perm_load_<mode>): Change to use VSX_D mode iterator.
34864         (*vsx_le_perm_store_<mode>): Likewise.
34865         (pre-reload splitter for VSX stores): Likewise.
34866         (post-reload splitter for VSX stores): Likewise.
34867         (*vsx_xxpermdi2_le_<mode>): Likewise.
34868         (*vsx_lxvd2x2_le_<mode>): Likewise.
34869         (*vsx_stxvd2x2_le_<mode>): Likewise.
34870
34871 2017-03-09  Michael Eager  <eager@eagercon.com>
34872
34873         Correct failures with --enable-checking=yes,rtl.
34874
34875         * config/microblaze/microblaze.c (microblaze_expand_shift):
34876         Replace GET_CODE test with CONST_INT_P and INTVAL test with
34877         test for const0_rtx.
34878         * config/microblaze/microblaze.md (ashlsi3_byone, ashrsi3_byone,
34879         lshrsi3_byone): Replace INTVAL with test for const1_rtx.
34880
34881 2017-03-09  Richard Biener  <rguenther@suse.de>
34882
34883         PR tree-optimization/79977
34884         * graphite-scop-detection.c (scop_detection::merge_sese):
34885         Handle the case of extra exits to blocks dominating the entry.
34886
34887 2017-03-09  Toma Tabacu  <toma.tabacu@imgtec.com>
34888
34889         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
34890         Document rdynamic.
34891
34892 2017-03-09  Vladimir Makarov  <vmakarov@redhat.com>
34893
34894         PR rtl-optimization/79949
34895         * lra-constraints.c (process_alt_operands): Check memory when
34896         trying to predict a cycle.  Print about the overall increase.
34897
34898 2017-03-09  Richard Biener  <rguenther@suse.de>
34899
34900         PR middle-end/79971
34901         * gimple-expr.c (useless_type_conversion_p): Preserve
34902         TYPE_SATURATING for fixed-point types.
34903
34904 2017-03-09  Richard Biener  <rguenther@suse.de>
34905
34906         PR ipa/79970
34907         * ipa-prop.c (ipa_modify_formal_parameters): Avoid changing
34908         alignment of BLKmode params.
34909
34910 2017-03-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
34911
34912         PR target/79913
34913         * config/aarch64/iterators.md (VALL_F16_NO_V2Q): New mode iterator.
34914         (VALL_NO_V2Q): Likewise.
34915         (VDQF_DF): Delete.
34916         * config/aarch64/aarch64-simd.md
34917         (aarch64_dup_lane_<vswap_width_name><mode>): Use VALL_F16_NO_V2Q
34918         iterator.
34919         (*aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Use
34920         VALL_NO_V2Q mode iterator.
34921         (*aarch64_vgetfmulx<mode>): Use VDQF iterator.
34922
34923 2017-03-09  Martin Liska  <mliska@suse.cz>
34924
34925         PR tree-optimization/79631
34926         * tree-chkp-opt.c (chkp_is_constant_addr): Call
34927         tree_int_cst_sign_bit just for INTEGER constants.
34928
34929 2017-03-09  Martin Liska  <mliska@suse.cz>
34930
34931         PR target/65705
34932         PR target/69804
34933         * toplev.c (process_options): Disable -fcheck-pointer-bounds with
34934         sanitizers.
34935
34936 2017-03-09  Marek Polacek  <polacek@redhat.com>
34937
34938         PR c++/79672
34939         * tree.c (inchash::add_expr): Handle TREE_VEC.
34940
34941 2017-03-09  Martin Liska  <mliska@suse.cz>
34942
34943         PR ipa/79764
34944         (chkp_narrow_size_and_offset): New function.
34945         (chkp_parse_array_and_component_ref): Support BIT_FIELD_REF.
34946         (void chkp_parse_bit_field_ref): New function.
34947         (chkp_make_addressed_object_bounds): Add case for BIT_FIELD_REF.
34948         (chkp_process_stmt): Use chkp_parse_bit_field_ref.
34949
34950 2017-03-09  Martin Liska  <mliska@suse.cz>
34951
34952         PR ipa/79761
34953         * tree-chkp.c (chkp_get_bound_for_parm): Get bounds for a param.
34954         (chkp_find_bounds_1): Remove gcc_unreachable.
34955
34956 2017-03-09  Jakub Jelinek  <jakub@redhat.com>
34957
34958         PR sanitizer/79944
34959         * asan.c (get_mem_refs_of_builtin_call): For BUILT_IN_ATOMIC* and
34960         BUILT_IN_SYNC*, determine the access type from the size suffix and
34961         always build a MEM_REF with that type.  Handle forgotten
34962         BUILT_IN_SYNC_FETCH_AND_NAND_16 and BUILT_IN_SYNC_NAND_AND_FETCH_16.
34963
34964         PR target/79932
34965         * config/i386/avx512vlintrin.h (_mm256_cmpge_epi32_mask,
34966         _mm256_cmpge_epi64_mask, _mm256_cmpge_epu32_mask,
34967         _mm256_cmpge_epu64_mask, _mm256_cmple_epi32_mask,
34968         _mm256_cmple_epi64_mask, _mm256_cmple_epu32_mask,
34969         _mm256_cmple_epu64_mask, _mm256_cmplt_epi32_mask,
34970         _mm256_cmplt_epi64_mask, _mm256_cmplt_epu32_mask,
34971         _mm256_cmplt_epu64_mask, _mm256_cmpneq_epi32_mask,
34972         _mm256_cmpneq_epi64_mask, _mm256_cmpneq_epu32_mask,
34973         _mm256_cmpneq_epu64_mask, _mm256_mask_cmpge_epi32_mask,
34974         _mm256_mask_cmpge_epi64_mask, _mm256_mask_cmpge_epu32_mask,
34975         _mm256_mask_cmpge_epu64_mask, _mm256_mask_cmple_epi32_mask,
34976         _mm256_mask_cmple_epi64_mask, _mm256_mask_cmple_epu32_mask,
34977         _mm256_mask_cmple_epu64_mask, _mm256_mask_cmplt_epi32_mask,
34978         _mm256_mask_cmplt_epi64_mask, _mm256_mask_cmplt_epu32_mask,
34979         _mm256_mask_cmplt_epu64_mask, _mm256_mask_cmpneq_epi32_mask,
34980         _mm256_mask_cmpneq_epi64_mask, _mm256_mask_cmpneq_epu32_mask,
34981         _mm256_mask_cmpneq_epu64_mask, _mm_cmpge_epi32_mask,
34982         _mm_cmpge_epi64_mask, _mm_cmpge_epu32_mask, _mm_cmpge_epu64_mask,
34983         _mm_cmple_epi32_mask, _mm_cmple_epi64_mask, _mm_cmple_epu32_mask,
34984         _mm_cmple_epu64_mask, _mm_cmplt_epi32_mask, _mm_cmplt_epi64_mask,
34985         _mm_cmplt_epu32_mask, _mm_cmplt_epu64_mask, _mm_cmpneq_epi32_mask,
34986         _mm_cmpneq_epi64_mask, _mm_cmpneq_epu32_mask, _mm_cmpneq_epu64_mask,
34987         _mm_mask_cmpge_epi32_mask, _mm_mask_cmpge_epi64_mask,
34988         _mm_mask_cmpge_epu32_mask, _mm_mask_cmpge_epu64_mask,
34989         _mm_mask_cmple_epi32_mask, _mm_mask_cmple_epi64_mask,
34990         _mm_mask_cmple_epu32_mask, _mm_mask_cmple_epu64_mask,
34991         _mm_mask_cmplt_epi32_mask, _mm_mask_cmplt_epi64_mask,
34992         _mm_mask_cmplt_epu32_mask, _mm_mask_cmplt_epu64_mask,
34993         _mm_mask_cmpneq_epi32_mask, _mm_mask_cmpneq_epi64_mask,
34994         _mm_mask_cmpneq_epu32_mask, _mm_mask_cmpneq_epu64_mask): Move
34995         definitions outside of __OPTIMIZE__ guarded section.
34996
34997         PR target/79932
34998         * config/i386/avx512bwintrin.h (_mm512_packs_epi32,
34999         _mm512_maskz_packs_epi32, _mm512_mask_packs_epi32,
35000         _mm512_packus_epi32, _mm512_maskz_packus_epi32,
35001         _mm512_mask_packus_epi32): Move definitions outside of __OPTIMIZE__
35002         guarded section.
35003
35004 2017-03-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35005
35006         * config/s390/vx-builtins.md ("vfee<mode>", "vfeez<mode>")
35007         ("vfenez<mode>"): Add missing constraints.
35008
35009 2017-03-08  Martin Sebor  <msebor@redhat.com>
35010
35011         PR target/79928
35012         * config/nds32/nds32.c (nds32_option_override):
35013         Fix misspelled diagnostic.
35014
35015 2017-03-08  Jakub Jelinek  <jakub@redhat.com>
35016
35017         PR c/79940
35018         * gimplify.c (gimplify_omp_for): Replace index var in outer
35019         taskloop statement with an artificial variable and add
35020         OMP_CLAUSE_PRIVATE clause for it.
35021
35022 2017-03-08  Richard Biener  <rguenther@suse.de>
35023
35024         PR tree-optimization/79955
35025         * tree-ssa-uninit.c (warn_uninitialized_vars): Do not warn
35026         for accesses that are completely outside of the variable.
35027
35028 2017-03-08  Andrew Haley  <aph@redhat.com>
35029
35030         PR tree-optimization/79943
35031         * tree-ssa-loop-split.c (compute_new_first_bound): When
35032         calculating the new upper bound, (END-BEG) should be added, not
35033         subtracted.
35034
35035 2017-03-08  Jakub Jelinek  <jakub@redhat.com>
35036
35037         * config/avr/avr.md (setmemhi): Make sure match_dup
35038         operand number comes before match_scratch.
35039
35040 2017-03-08  Richard Biener  <rguenther@suse.de>
35041
35042         PR tree-optimization/79920
35043         * tree-vect-slp.c (vect_create_mask_and_perm): Remove and inline
35044         with ncopies == 1 to ...
35045         (vect_transform_slp_perm_load): ... here.  Properly compute
35046         all element loads by iterating VF times over the group.  Do
35047         not handle ncopies (computed in a broken way) in
35048         vect_create_mask_and_perm.
35049
35050 2017-03-08  Jakub Jelinek  <jakub@redhat.com>
35051
35052         PR sanitizer/79904
35053         * internal-fn.c (expand_vector_ubsan_overflow): If arg0 or arg1
35054         is a uniform vector, use uniform_vector_p return value instead of
35055         building ARRAY_REF on folded VIEW_CONVERT_EXPR to array type.
35056
35057 2017-03-07  Marek Polacek  <polacek@redhat.com>
35058
35059         PR middle-end/79809
35060         * gimple-ssa-warn-alloca.c (pass_walloca::gate): Use HOST_WIDE_INT.
35061         (alloca_call_type): Likewise.
35062
35063 2017-03-07  Martin Liska  <mliska@suse.cz>
35064
35065         * gcov.c (process_args): Put comment to correct location.
35066
35067 2017-03-07  Martin Liska  <mliska@suse.cz>
35068
35069         PR middle-end/68270
35070         * tree-chkp.c (chkp_may_narrow_to_field): Add new argument ref.
35071         Use array_at_struct_end_p instead of DECL_CHAIN (field).
35072         (chkp_narrow_bounds_for_field): Likewise.
35073         (chkp_parse_array_and_component_ref): Pass one more argument to
35074         call.
35075
35076 2017-03-07  Richard Biener  <rguenther@suse.de>
35077
35078         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Preserve
35079         preheaders.
35080
35081 2017-03-07  Segher Boessenkool  <segher@kernel.crashing.org>
35082
35083         * config/i386/i386.c (ix86_local_alignment): Align most aggregates
35084         of 16 bytes and more to 16 bytes, not those of 16 bits and more.
35085
35086 2017-03-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35087
35088         PR c/79855
35089         * params.def (PARAM_STORE_MERGING_ALLOW_UNALIGNED): Add full stop
35090         to end of description.
35091         (PARAM_MAX_STORES_TO_MERGE): Likewise.
35092
35093 2017-03-07  Jakub Jelinek  <jakub@redhat.com>
35094
35095         PR rtl-optimization/79901
35096         * config/i386/sse.md (*avx512bw_<code><mode>3<mask_name>): Renamed to
35097         ...
35098         (*avx512f_<code><mode>3<mask_name>): ... this.
35099         (<code><mode>3 with maxmin code iterator): Use VI8_AVX2_AVX512F
35100         iterator instead of VI8_AVX2_AVX512BW.
35101
35102         PR rtl-optimization/79901
35103         * expr.c (expand_expr_real_2): For vector MIN/MAX, if there is no
35104         min/max expander, expand it using expand_vec_cond_expr.
35105
35106         PR sanitizer/79897
35107         * ubsan.c (ubsan_encode_value): Call mark_addressable on the
35108         temporary.
35109
35110 2017-03-06  Jakub Jelinek  <jakub@redhat.com>
35111
35112         PR c++/79821
35113         * dwarf2out.h (dw_vec_const): Change array type from unsigned char *
35114         to void * for PCH reasons.
35115         * dwarf2out.c (output_loc_operands, output_die): Cast
35116         v.val_vec.array to unsigned char *.
35117
35118 2017-03-06  John David Anglin  <danglin@gcc.gnu.org>
35119
35120         PR target/77850
35121         * config/pa/pa-64.h (PAD_VARARGS_DOWN): Don't pad down complex and
35122         vector types.
35123
35124 2017-03-06  Vladimir Makarov  <vmakarov@redhat.com>
35125
35126         PR rtl-optimization/79571
35127         * lra-constraints.c (process_alt_operands): Calculate static
35128         reject and subtract it from overall when only addresses will be
35129         reloaded.
35130
35131 2017-03-06  Julia Koval  <julia.koval@intel.com>
35132
35133         PR target/79793
35134         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): Set
35135         incoming stack boundary to 128 for 64-bit targets.
35136
35137 2017-03-06  Richard Biener  <rguenther@suse.de>
35138
35139         PR tree-optimization/79894
35140         * tree-vectorizer.c (vectorize_loops): Set loop_vectorized_call
35141         to NULL after folding it.
35142
35143 2017-03-06  Richard Biener  <rguenther@suse.de>
35144
35145         PR tree-optimization/79824
35146         * tree-vect-stmts.c (get_group_load_store_type): Fix alignment
35147         check disabling peeling for gaps.
35148
35149 2017-03-06  Toma Tabacu  <toma.tabacu@imgtec.com>
35150
35151         * doc/sourcebuild.texi (Effective-Target Keywords, Environment
35152         attributes): Document gettimeofday.
35153
35154 2017-03-06  Robin Dapp  <rdapp@linux.vnet.ibm.com>
35155
35156         * config/s390/s390.c (s390_option_override_internal): Set
35157         PARAM_MIN_VECT_LOOP_BOUND
35158
35159 2017-03-06  Robin Dapp  <rdapp@linux.vnet.ibm.com>
35160
35161         * config/s390/s390.c (s390_asm_output_function_label): Use nopr %r0.
35162         * config/s390/s390.md: Likewise.
35163
35164 2017-03-06  Jakub Jelinek  <jakub@redhat.com>
35165
35166         PR target/79812
35167         * config/i386/sse.md (VI8F_256_512): Remove mode iterator.
35168         (<avx2_avx512>_perm<mode>): Rename to ...
35169         (avx2_perm<mode>): ... this.  Use VI8F_256 iterator instead
35170         of VI8F_256_512.
35171         (<avx512>_perm<mode>_mask): Rename to ...
35172         (avx512vl_perm<mode>_mask): ... this.  Use VI8F_256 iterator instead
35173         of VI8F_256_512.
35174         (<avx2_avx512>_perm<mode>_1<mask_name>): Rename to ...
35175         (avx2_perm<mode>_1<mask_name): ... this.  Use VI8F_256 iterator
35176         instead of VI8F_256_512.
35177         (avx512f_perm<mode>): New define_expand.
35178         (avx512f_perm<mode>_mask): Likewise.
35179         (avx512f_perm<mode>_1<mask_name>): New define_insn.
35180         (<avx512>_vec_dup<mode>_1): Fix up vec_select mode.
35181
35182 2017-03-06  Prachi Godbole  <prachi.godbole@imgtec.com>
35183
35184         * config/mips/mips-msa.md (msa_fmax_a_<msafmt>, msa_fmin_a_<msafmt>,
35185         msa_max_a_<msafmt>, msa_min_a_<msafmt>): Introduce mode interator for
35186         if_then_else.
35187         (smin<mode>3, smax<mode>3): Change operand print code from 'B' to 'E'.
35188
35189 2017-03-06  Martin Liska  <mliska@suse.cz>
35190
35191         PR sanitize/79783
35192         * asan.c (asan_expand_poison_ifn): Do not expand ASAN_POISON
35193         when having a SSA NAME w/o VAR_DECL assigned to it.
35194
35195 2017-03-06  Prachi Godbole  <prachi.godbole@imgtec.com>
35196
35197         * config/mips/mips-msa.md (msa_dotp_<su>_d, msa_dpadd_<su>_d,
35198         msa_dpsub_<su>_d): Fix MODE for vec_select.
35199
35200 2017-03-06  Prachi Godbole  <prachi.godbole@imgtec.com>
35201
35202         * config/mips/mips.c (mips_gen_const_int_vector): Change type of last
35203         argument.
35204         * config/mips/mips-protos.h (mips_gen_const_int_vector): Likewise.
35205
35206 2017-03-06  Richard Biener  <rguenther@suse.de>
35207
35208         * lto-streamer.c (lto_check_version): Use %qs in diagnostics.
35209         * plugin.c (register_plugin_info): Likewise.
35210         * tree-chkp.c (chkp_make_static_const_bounds): Likewise.
35211
35212 2017-03-05  Jakub Jelinek  <jakub@redhat.com>
35213
35214         * config/i386/sse.md (sse_storehps, sse_storelps,
35215         avx_<castmode><avxsizesuffix>_<castmode>,
35216         avx512f_<castmode><avxsizesuffix>_<castmode>,
35217         avx512f_<castmode><avxsizesuffix>_256<castmode>): Require
35218         in condition that at least one operand is not a MEM.
35219
35220 2017-03-03  Jakub Jelinek  <jakub@redhat.com>
35221
35222         PR middle-end/79805
35223         * internal-fn.def (ATOMIC_BIT_TEST_AND_SET, ATOMIC_BIT_TEST_AND_RESET,
35224         ATOMIC_BIT_TEST_AND_COMPLEMENT, ATOMIC_COMPARE_EXCHANGE): Remove
35225         ECF_NOTHROW.
35226         * gimple-fold.c (fold_builtin_atomic_compare_exchange): Set
35227         gimple_call_nothrow_p flag based on whether original builtin can throw.
35228         If it can, emit following stmts on the fallthrough edge.
35229         * tree-ssa-ccp.c (optimize_atomic_bit_test_and): Similarly, except
35230         don't create new bb if inserting just debug stmts on the edge, try to
35231         insert them on the fallthru bb or just reset debug stmts.
35232
35233 2017-03-03  Segher Boesssenkool  <segher@kernel.crashing.org>
35234
35235         PR target/43763
35236         * config/rs6000/rs6000.c (rs6000_final_prescan_insn): Save and
35237         restore recog_data (including the operand rtxes inside it) around
35238         the call to get_insn_template.
35239
35240 2017-03-03  Martin Sebor  <msebor@redhat.com>
35241
35242         PR tree-optimization/79699
35243         * context.c (context::~context): Free MPFR caches to avoid
35244         a memory leak on program exit.
35245
35246 2017-03-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35247
35248         * config/aarch64/aarch64.c (aarch64_float_const_representable_p):
35249         Use wide_int::ulow () instead of .elt (0).
35250
35251 2017-03-03  Uros Bizjak  <ubizjak@gmail.com>
35252
35253         * config/i386/i386.md (*pushtf): Change *roF constraint to *roC.
35254         (*pushxf): Limit oF constraint to 32bit targets and add oC
35255         constraint for 64bit targets.
35256         (pushxf splitter): Use PUSH_ROUNDING to calculate stack adjustment.
35257         (*pushdf): Change rmF constraint to rmC.
35258
35259 2017-03-03  Martin Liska  <mliska@suse.cz>
35260
35261         * tree-ssa-loop-prefetch.c (pass_loop_prefetch::execute):
35262         Remove unused variable.
35263
35264 2017-03-03  Jakub Jelinek  <jakub@redhat.com>
35265
35266         PR target/79807
35267         * config/i386/i386.c (ix86_expand_multi_arg_builtin): If target
35268         is a memory operand, increase num_memory.
35269         (ix86_expand_args_builtin): Likewise.
35270
35271 2017-03-03  Jan Hubicka  <jh@suse.cz>
35272
35273         PR lto/79760
35274         * ipa-devirt.c (maybe_record_node): Properly handle
35275         __cxa_pure_virtual visibility.
35276
35277 2017-03-03  Martin Liska  <mliska@suse.cz>
35278
35279         PR tree-optimization/79803
35280         * tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Remove
35281         assert.
35282         (pass_loop_prefetch::execute): Disabled optimization if an
35283         assumption about L1 cache size is not met.
35284
35285 2017-03-03  Martin Liska  <mliska@suse.cz>
35286
35287         PR rtl-optimization/79574
35288         * gcse.c (struct gcse_expr): Use HOST_WIDE_INT instead of int.
35289         (hash_scan_set): Likewise.
35290         (dump_hash_table): Likewise.
35291         (hoist_code): Likewise.
35292
35293 2017-03-03  Richard Biener  <rguenther@suse.de>
35294
35295         * fixed-value.c (fixed_from_string): Restore use of elt (1)
35296         in place of uhigh ().
35297         (fixed_convert_from_real): Likewise.
35298
35299 2017-03-03  Uros Bizjak  <ubizjak@gmail.com>
35300
35301         PR target/79514
35302         * config/i386/i386.md (*pushxf_rounded): Use Pmode instead of DImode.
35303
35304 2017-03-03  Richard Biener  <rguenther@suse.de>
35305
35306         PR middle-end/79818
35307         * match.pd ( X +- C1 CMP C2 -> X CMP C2 -+ C1): Add missing
35308         TYPE_OVERFLOW_UNDEFINED check.
35309
35310 2017-03-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
35311
35312         * config/rs6000/vector.md (vector_ne_<mode>_p): Correct operand
35313         numbers.
35314         (vector_ae_<mode>_p): Likewise.
35315         (vector_nez_<mode>_p): Likewise.
35316         (vector_ne_v2di_p): Likewise.
35317         (vector_ae_v2di_p): Likewise.
35318         (vector_ne_<mode>_p): Likewise.
35319         * config/rs6000/vsx.md (vsx_tsqrt<mode>2_fg): Correct operand
35320         numbers.
35321         (vsx_tsqrt<mode>2_fe): Likewise.
35322
35323 2017-03-02  Uros Bizjak  <ubizjak@gmail.com>
35324
35325         PR target/79514
35326         * config/i386/i386.md (*pushxf_rounded): New insn_and_split pattern.
35327
35328 2017-03-02  Jakub Jelinek  <jakub@redhat.com>
35329
35330         PR rtl-optimization/79780
35331         * cprop.c (one_cprop_pass): When second and further conditional trap
35332         in a single basic block is turned into an unconditional trap, turn it
35333         into a deleted note to avoid RTL verification failures.
35334
35335 2017-03-02  Richard Biener  <rguenther@suse.de>
35336
35337         * fold-const.c (const_binop): Use ulow () instead of elt (0).
35338
35339 2017-03-02  Richard Biener  <rguenther@suse.de>
35340
35341         PR tree-optimization/79345
35342         PR c++/42000
35343         * tree-ssa-alias.c (walk_aliased_vdefs_1): Take a limit
35344         param and abort the walk, returning -1 if it is hit.
35345         (walk_aliased_vdefs): Take a limit param and pass it on.
35346         * tree-ssa-alias.h (walk_aliased_vdefs): Add a limit param,
35347         defaulting to 0 and return a signed int.
35348         * tree-ssa-uninit.c (struct check_defs_data): New struct.
35349         (check_defs): New helper.
35350         (warn_uninitialized_vars): Use walk_aliased_vdefs to warn
35351         about uninitialized memory.
35352         * fixed-value.c (fixed_from_string): Use ulow/uhigh to avoid
35353         bogus uninitialized warning.
35354         (fixed_convert_from_real): Likewise.
35355
35356 2017-03-02  Bin Cheng  <bin.cheng@arm.com>
35357
35358         PR tree-optimization/66768
35359         * tree-ssa-loop-ivopts.c (find_interesting_uses_address): Skip addr
35360         iv_use if base object can't be determined.
35361
35362 2017-03-02  Jakub Jelinek  <jakub@redhat.com>
35363
35364         PR tree-optimization/79345
35365         * gensupport.h (struct pattern_stats): Add min_scratch_opno field.
35366         * gensupport.c (get_pattern_stats_1) <case MATCH_SCRATCH>: Update it.
35367         (get_pattern_stats): Initialize it.
35368         * genemit.c (gen_expand): Verify match_scratch numbers come after
35369         match_operand/match_dup numbers.
35370         * config/i386/i386.md (<s>mul<mode>3_highpart): Swap match_dup and
35371         match_scratch numbers.
35372         * config/i386/sse.md (avx2_gathersi<mode>, avx2_gatherdi<mode>):
35373         Likewise.
35374         * config/s390/s390.md (trunctdsd2): Likewise.
35375
35376 2017-03-02  Richard Biener  <rguenther@suse.de>
35377
35378         * wide-int.h (wide_int_storage::operator=): Implement in terms
35379         of wi::copy.
35380
35381 2017-03-02  Richard Biener  <rguenther@suse.de>
35382
35383         PR tree-optimization/79777
35384         * tree-ssa-pre.c (eliminate_insert): Give up if we simplify
35385         the to insert expression to sth existing.
35386
35387 2017-03-01  Martin Sebor  <msebor@redhat.com>
35388
35389         PR middle-end/79692
35390         * gimple-ssa-sprintf.c
35391         (directive::known_width_and_precision): New function.
35392         (format_integer): Use it.
35393         (get_mpfr_format_length): Consider the full range of precision
35394         when computing %g output with the # flag.  Set the likely byte
35395         count to 3 rather than 1 when precision is indeterminate.
35396         (format_floating): Correct the lower bound of precision.
35397
35398 2017-03-01  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
35399
35400         * doc/invoke.texi: Document default code model for 64-bit Linux.
35401
35402 2017-03-01  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
35403
35404         PR target/79752
35405         * config/rs6000/rs6000.md (peephole2 for udiv/umod): Should emit
35406         udiv rather than div since input pattern is unsigned.
35407
35408 2017-03-01  Uros Bizjak  <ubizjak@gmail.com>
35409
35410         * config/i386/i386.c (print_reg): Warn for values of
35411         unsupported size in integer register.
35412
35413 2017-03-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
35414
35415         PR target/79439
35416         * config/rs6000/predicates.md (current_file_function_operand): Do
35417         not allow self calls to be local if the function is replaceable.
35418
35419 2017-03-01  Kelvin Nilsen  <kelvin@gcc.gnu.org>
35420
35421         PR target/79395
35422         * config/rs6000/altivec.h (vec_ctz and others): Change the
35423         preprocessor macro that controls conditional compilation from
35424         _ARCH_PWR9 to __POWER9_VECTOR__.
35425         (vec_all_ne): Change parameterization of __altivec_scalar_pred
35426         macro expansion under preprocessor #ifdef __POWER9_VECTOR__
35427         control (instead of _ARCH_PWR9 control) so that template
35428         definition uses power9-specific function.
35429         (vec_any_eq): Likewise.
35430         (vec_all_ne): Change macro definition to use a power9-specific
35431         expansion under #ifdef __POWER9_VECTOR__ control (instead of
35432         _ARCH_PWR9 control).
35433         (vec_any_eq) Likewise.
35434         * config/rs6000/rs6000-builtin.def (CMPNEF): Remove BU_P9V_AV_2
35435         expansion for CMPNEF to remove support for xvcmpnesp instruction.
35436         (CMPNED): Remove BU_P9V_AV2 expansion for CMPNED to remove
35437         support for xvcmpnedp instruction.
35438         (VCMPNEB_P): Replace BU_P9V_AV_P macro expansion with BU_P9V_AV_2
35439         macro expansion so that Power9 implementation of vec_all_ne does
35440         not use the AltiVec predicate framework.
35441         (VCMPNEH_P): Likewise.
35442         (VCMPNEW_P): Likewise.
35443         (VCMPNED_P): Likewise.
35444         (VCMPNEFP_P): Likewise.
35445         (VCMPNEDP_P): Likewise.
35446         (VCMPAEB_P): Add BU_P9V_AV_2 macro expansion to change
35447         implementation of vec_any_eq to not use AltiVec predicate
35448         framework.
35449         (VCMPAEH_P): Likewise.
35450         (VCMPAEW_P): Likewise.
35451         (VCMPAED_P): Likewise.
35452         (VCMPAEFP_P): Likewise.
35453         (VCMPAEDP_P): Likewise.
35454         (VCMPNE_P): Replace BU_P9V_OVERLOAD_P macro expansion with
35455         BU_P9V_OVERLOAD_2 so that Power9 implementation of vec_all_ne does
35456         not use the AltiVec predicate framework.
35457         (VCMPAE_P): Add BU_P9V_OVERLOAD_2 macro to change implementation
35458         of vec_any_eq to not use AltiVec predicate framework.
35459         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Add
35460         support for predefined __POWER9_VECTOR__ macro to indicate that
35461         Power9 instruction selection is enabled.
35462         (altivec_overloaded_builtins): Remove extraneous
35463         ALTIVEC_BUILTIN_VEC_CMPNE entry for overloaded
35464         function argument types RS6000_BTI_bool_V16QI and
35465         RS6000_BTI_bool_V16QI.  Remove erroneous ALTIVEC_BUILTIN_VEC_CMPNE
35466         entry for overloaded function argument types RS6000_BTI_bool_V4SI
35467         andRS6000_BTI_bool_V4SI, mapping to P9V_BUILTIN_CMPNEB.  Remove
35468         two entries mapping to P9V_BUITIN_CMPNED and one entry mapping to
35469         P9V_BUILTIN_CMPNEF to force use of instructions not specific to
35470         Power9 for implementations of vec_cmpne.  Change the signature for
35471         all definitions of the overloaded P9V_BUILTIN_VEC_CMPNE_P function
35472         (representing vec_all_ne) to remove the previously described first
35473         argument of type RS6000_BTI_INTSI, as this was an artifact of
35474         reliance on the AltiVec predicate framework, which is no longer
35475         used in the implementation of these functions.  Add
35476         P9V_BUILTIN_VEC_VCMPAE_P entries (representing the vec_anyeq
35477         function) to match all of the P9V_BUILTIN_VEC_VCMNE_P entries
35478         since, unlike the AltiVec predicate framework implementation, we
35479         do not share function descriptors between vec_alle and vec_anyeq.
35480         (altivec_resolve_overloaded_builtin): Add SFmode and DFmode to the
35481         set of modes that receive special treatment even when
35482         TARGET_P9_VECTOR is true.  The special treatment emits code that
35483         does not depend on Power9 instructions.
35484         * config/rs6000/vector.md (vector_ne_<mode>_p): Change this
35485         define_expand to not rely on AltiVec predicate framework.
35486         (vector_ae_<mode>p): New define_expand to represent vec_any_eq
35487         function.
35488         (vector_ne_v2di_p): Change this define_expand to not rely on
35489         AltiVec predicate framework.
35490         (vector_ae_v2di_p): New define_expand to represent vec_any_eq
35491         function.
35492         (vector_ne_<mode>_p): Change this define_expand to not rely on
35493         AltiVec predicate framework.
35494         (vector_ae_<mode>p): New define_expand to represent vec_any_eq
35495         function.
35496         * config/rs6000/vsx.md (*vsx_ne_<mode>_p): For modes VSX_EXTRACT_I
35497         (V16QI, V8HI, V4SI), correct a typo in the code emitted for this
35498         define_insn pattern.
35499         (*vsx_ne_<mode>_p): For modes VSX_F (V4SF and V2DF), remove this
35500         define_insn pattern because the xvcmpne<VSs>. instruction is not
35501         supported.
35502         (vcmpne<VSs>): Remove this define_insn because xvcmpne<VSs>
35503         instruction is not supported.
35504
35505 2017-03-01  Jakub Jelinek  <jakub@redhat.com>
35506
35507         * config/nvptx/nvptx.c: Include intl.h.
35508
35509 2017-03-01  Martin Jambor  <mjambor@suse.cz>
35510
35511         PR lto/78140
35512         * ipa-prop.h (ipa_bits): Removed field known.
35513         (ipa_jump_func): Removed field vr_known.  Changed fields bits and m_vr
35514         to pointers.  Adjusted their comments to warn about their sharing.
35515         (ipcp_transformation_summary): Change bits to a vector of pointers.
35516         (ipa_check_create_edge_args): Moved to ipa-prop.c, declare.
35517         (ipa_get_ipa_bits_for_value): Declare.
35518         * tree-vrp.h (value_range): Mark as GTY((for_user)).
35519         * ipa-prop.c (ipa_bit_ggc_hash_traits): New.
35520         (ipa_bits_hash_table): Likewise.
35521         (ipa_vr_ggc_hash_traits): Likewise.
35522         (ipa_vr_hash_table): Likewise.
35523         (ipa_print_node_jump_functions_for_edge): Adjust for bits and m_vr
35524         being pointers and vr_known being removed.
35525         (ipa_set_jf_unknown): Likewise.
35526         (ipa_get_ipa_bits_for_value): New function.
35527         (ipa_set_jfunc_bits): Likewise.
35528         (ipa_get_value_range): New overloaded functions.
35529         (ipa_set_jfunc_vr): Likewise.
35530         (ipa_compute_jump_functions_for_edge): Use the above functions to
35531         construct bits and vr parts of jump functions.
35532         (ipa_check_create_edge_args): Move here from ipa-prop.h, also allocate
35533         ipa_bits_hash_table and ipa_vr_hash_table if they do not already
35534         exist.
35535         (ipcp_grow_transformations_if_necessary): Also allocate
35536         ipa_bits_hash_table and ipa_vr_hash_table if they do not already
35537         exist.
35538         (ipa_node_params_t::duplicate): Do not copy bits, just pointers to
35539         them.  Fix too long lines.
35540         (ipa_write_jump_function): Adjust for bits and m_vr being pointers and
35541         vr_known being removed.
35542         (ipa_read_jump_function): Use new setter functions to construct bits
35543         and vr parts of jump functions or set them to NULL.
35544         (write_ipcp_transformation_info): Adjust for bits being pointers.
35545         (read_ipcp_transformation_info): Likewise.
35546         (ipcp_update_bits): Likewise.  Fix excessively long lines a trailing
35547         space.
35548         Include gt-ipa-prop.h.
35549         * ipa-cp.c (propagate_bits_across_jump_function): Adjust for bits
35550         being pointers.
35551         (ipcp_store_bits_results): Likewise.
35552         (propagate_vr_across_jump_function): Adjust for m_vr being a pointer.
35553         Do not write to existing jump functions but use a temporary instead.
35554
35555 2017-03-01  Jakub Jelinek  <jakub@redhat.com>
35556
35557         PR c++/79681
35558         * fold-const.c (make_bit_field_ref): If orig_inner is COMPONENT_REF,
35559         attempt to use its first operand as BIT_FIELD_REF base.
35560
35561 2017-03-01  Richard Biener  <rguenther@suse.de>
35562
35563         PR middle-end/79721
35564         * tree-chrec.c (chrec_evaluate): Perform computation of Newtons
35565         interpolating formula in wrapping arithmetic.
35566         (chrec_apply): Convert chrec_evaluate return value to wanted type.
35567
35568 2017-03-01  Jakub Jelinek  <jakub@redhat.com>
35569
35570         PR tree-optimization/79734
35571         * tree-vect-generic.c (expand_vector_condition): Optimize
35572         AVX512 vector boolean VEC_COND_EXPRs into bitwise operations.
35573         Handle VEC_COND_EXPR where comparison has different inner width from
35574         type's inner width.
35575
35576 2017-02-28  Sandra Loosemore  <sandra@codesourcery.com>
35577
35578         * doc/invoke.texi (ARC Options): Copy-edit to fix punctuation,
35579         markup, and similar issues.  Remove @opindex entries for things
35580         that aren't options.  Add missing -mmpy-option entries.
35581
35582 2017-02-28  Jakub Jelinek  <jakub@redhat.com>
35583
35584         PR tree-optimization/79737
35585         * gimple-ssa-store-merging.c (encode_tree_to_bitpos): If bitlen is
35586         a multiple of BITS_PER_UNIT and !BYTES_BIG_ENDIAN, clear
35587         tmpbuf[byte_size - 1].  Call natice_encode_expr with byte_size - 1
35588         instead of byte_size.  Formatting fix.
35589         (shift_bytes_in_array_right): Formatting fix.
35590
35591 2017-02-28  Eric Botcazou  <ebotcazou@adacore.com>
35592
35593         PR target/79749
35594         * config/sparc/sparc.c (sparc_frame_pointer_required): Add missing
35595         condition on optimize for the leaf function test.
35596
35597 2017-02-28  Martin Liska  <mliska@suse.cz>
35598
35599         PR lto/79625
35600         * read-rtl-function.c (function_reader::handle_unknown_directive):
35601         Bail out when one uses -flto.
35602
35603 2017-02-28  Martin Liska  <mliska@suse.cz>
35604
35605         * common.opt: Replace space with tabular for options of <number>
35606         type.
35607         * config/i386/i386.opt: Show <number> value for
35608         -mlarge-data-threshold.
35609         * opts.c (print_filtered_help): Do not display number in hexadecimal
35610         format.
35611
35612 2017-02-28  Martin Liska  <mliska@suse.cz>
35613
35614         * common.opt: Fix --help=option -Q for options which are of
35615         an enum type.
35616
35617 2017-02-28  Uros Bizjak  <ubizjak@gmail.com>
35618
35619         * config/i386/i386.c (print_reg): Error out for values
35620         of 8-bit size in invalid integer register.
35621
35622 2017-02-28  Martin Sebor  <msebor@redhat.com>
35623
35624         PR tree-optimization/79691
35625         * passes.def (pass_all_optimizations_g): Enable pass_sprintf_length.
35626
35627 2017-02-28  Jakub Jelinek  <jakub@redhat.com>
35628
35629         PR target/79729
35630         * config/i386/i386.c (ix86_print_operand) <case 'R'>: Replace
35631         gcc_unreachable with output_operand_lossage.
35632
35633 2017-02-28  Richard Biener  <rguenther@suse.de>
35634
35635         PR tree-optimization/79740
35636         * tree-ssa-sccvn.c (vn_nary_op_insert_into): Allow redundant
35637         inserts.
35638         (visit_nary_op): Insert the nary into the hashtable if we
35639         pattern-matched sth.
35640         * tree-ssa-pre.c (eliminate_insert): Robustify.
35641
35642 2017-02-28  Richard Biener  <rguenther@suse.de>
35643
35644         PR middle-end/79731
35645         * fold-const.c (decode_field_reference): Reject out-of-bound
35646         accesses.
35647
35648 2017-02-28  Jakub Jelinek  <jakub@redhat.com>
35649
35650         * config/i386/i386.c: Include intl.h.
35651         (ix86_option_override_internal): Use cond ? G_("...") : G_("...")
35652         instead of just cond ? "..." : "...".
35653         * config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Likewise.
35654         * coverage.c (read_counts_file): Likewise.
35655         * omp-offload.c: Include intl.h.
35656         (oacc_loop_fixed_partitions): Use cond ? G_("...") : G_("...") instead
35657         of just cond ? "..." : "...".
35658         * gcov.c (read_count_file): Use cond ? N_("...") : N_("...") instead
35659         of just cond ? "..." : "...".
35660
35661 2017-02-28  Richard Earnshaw  <rearnsha@arm.com>
35662
35663         PR target/79742
35664         * config/arm/parsecpu.awk (gen_data): Set tuning target to 'tune for'
35665         entry, if present.
35666         * config/arm/arm-cpus.in (cortex-m0plus.small-multiply): Correct
35667         'tune for' CPU name.
35668         * config/arm/arm-cpu-data.h: Regenerated.
35669
35670 2017-02-28  Richard Biener  <rguenther@suse.de>
35671
35672         PR tree-optimization/79732
35673         * tree-inline.c (expand_call_inline): Do not shadow var.
35674
35675 2017-02-28  Richard Biener  <rguenther@suse.de>
35676
35677         PR tree-optimization/79723
35678         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Preserve
35679         address-space properly.
35680
35681 2017-02-28  Thomas Schwinge  <thomas@codesourcery.com>
35682
35683         * doc/optinfo.texi (Optimization groups): Fix option used for
35684         OPTGROUP_ALL.
35685         * doc/invoke.texi (-fopt-info): Document "omp".
35686         * dumpfile.h: Sort OPTGROUP_OMP before OPTGROUP_VEC.
35687         (OPTGROUP_ALL): Add OPTGROUP_OMP.
35688         * hsa-gen.c (pass_data_gen_hsail): Use OPTGROUP_OMP.
35689         * ipa-hsa.c (pass_data_ipa_hsa): Likewise.
35690         * omp-simd-clone.c (pass_data_omp_simd_clone): Likewise.
35691
35692         * dumpfile.h (OPTGROUP_OPENMP): Rename to OPTGROUP_OMP.  Adjust
35693         all users.
35694         * dumpfile.c (optgroup_options): Instead of "openmp", associate
35695         OPTGROUP_OMP with "omp".
35696
35697 2017-02-27  Pat Haugen  <pthaugen@us.ibm.com>
35698
35699         PR target/79544
35700         * config/rs6000/rs6000-c.c (struct altivec_builtin_types): Use VSRAD
35701         for arithmetic shift of unsigned V2DI.
35702
35703 2017-02-27  Claudiu Zissulescu  <claziss@synopsys.com>
35704
35705         * config.gcc (arc*-): Clean up, use arc/big.h, arc/elf.h, and
35706         arc/linux.h headers.
35707         * config/arc/arc.h (TARGET_OS_CPP_BUILTINS): Remove.
35708         (LINK_SPEC): Likewise.
35709         (ARC_TLS_EXTRA_START_SPEC): Likewise.
35710         (EXTRA_SPECS): Likewise.
35711         (STARTFILE_SPEC): Likewise.
35712         (ENDFILE_SPEC): Likewise.
35713         (LIB_SPEC): Likewise.
35714         (TARGET_SDATA_DEFAULT): Likewise.
35715         (TARGET_MMEDIUM_CALLS_DEFAULT): Likewise.
35716         (MULTILIB_DEFAULTS): Likewise.
35717         (DWARF2_UNWIND_INFO): Likewise.
35718         * config/arc/big.h: New file.
35719         * config/arc/elf.h: Likewise.
35720         * config/arc/linux.h: Likewise.
35721         * config/arc/t-uClibc: Remove.
35722
35723 2017-02-27  Bin Cheng  <bin.cheng@arm.com>
35724
35725         PR tree-optimization/77536
35726         * tree-ssa-loop-manip.c (niter_for_unrolled_loop): New function.
35727         (tree_transform_and_unroll_loop): Use above function to compute the
35728         estimated niter of unrolled loop and use it when scaling profile.
35729         Also use count info rather than frequency if it's non-zero.
35730         * tree-ssa-loop-manip.h niter_for_unrolled_loop(): New declaration.
35731         * tree-vect-loop.c (scale_profile_for_vect_loop): New function.
35732         (vect_transform_loop): Call above function.
35733
35734 2017-02-27  Richard Biener  <rguenther@suse.de>
35735
35736         PR tree-optimization/45397
35737         * tree-ssa-pre.c (eliminate_insert): Handle BIT_AND_EXPR.
35738         * tree-ssa-sccvn.c (valueized_wider_op): New helper.
35739         (visit_nary_op): Add pattern matching for CSEing sign-changed
35740         or truncated operations with wider ones.
35741
35742 2017-02-27  Richard Biener  <rguenther@suse.de>
35743
35744         PR tree-optimization/79690
35745         * tree-vect-stmts.c (vectorizable_store): Use vector type
35746         built from the DR with address-space.
35747
35748 2017-02-26  Gerald Pfeifer  <gerald@pfeifer.com>
35749
35750         * doc/invoke.texi (Optimize Options): Refine the description
35751         of asan-use-after-return.
35752
35753 2017-02-25  Alan Modra  <amodra@gmail.com>
35754
35755         PR rtl-optimization/79584
35756         * lra-constraints.c (base_to_reg): Reload ad->base, the entire
35757         base, not ad->base_term, the reg within base.  Remove assertion
35758         that ad->base == ad->base_term.  Replace gen_int_mode using
35759         bogus mode with const0_rtx.
35760
35761 2017-02-25  Jakub Jelinek  <jakub@redhat.com>
35762
35763         PR middle-end/79396
35764         * tree-eh.c (operation_could_trap_p, stmt_could_throw_1_p): Handle
35765         FMA_EXPR like tcc_binary or tcc_unary.
35766
35767         * tree-ssa-loop-niter.c (number_of_iterations_exit): Simplify warning.
35768
35769         PR debug/77589
35770         * dwarf2out.c (struct dw_loc_list_struct): Add noted_variable_value
35771         bitfield.
35772         (size_of_loc_descr): Handle DW_OP_GNU_variable_value.
35773         (output_loc_operands): Handle DW_OP_call_ref and
35774         DW_OP_GNU_variable_value.
35775         (struct variable_value_struct): New type.
35776         (struct variable_value_hasher): Likewise.
35777         (variable_value_hash): New variable.
35778         (string_types): Remove.
35779         (copy_loc_descr): New function.
35780         (add_loc_descr_to_each): Clarify comment.  Use copy_loc_descr.
35781         (prepend_loc_descr_to_each): New function.
35782         (add_loc_list): Fix comment typo.  Use prepend_loc_descr_to_each
35783         instead of add_loc_descr_to_each if the first argument is single
35784         location list and the second has multiple.
35785         (resolve_args_picking_1): Handle DW_OP_GNU_variable_value.
35786         (loc_list_from_tree_1): For early_dwarf, emit DW_OP_GNU_variable_value
35787         when looking for variable value which doesn't have other location info.
35788         (loc_list_from_tree): Formatting fix.
35789         (gen_array_type_die): Simplify DW_AT_string_length handling.
35790         (adjust_string_types): Remove.
35791         (gen_subprogram_die): Don't call adjust_string_types nor test/set
35792         string_types.  Call resolve_variable_values.
35793         (prune_unused_types_walk_loc_descr): Handle DW_OP_GNU_variable_value.
35794         (resolve_addr_in_expr): Likewise.  Add A argument.
35795         (copy_deref_exprloc): Remove deref argument.  Adjust for the
35796         original expression being DW_OP_GNU_variable_value with optionally
35797         DW_OP_stack_value after it instead of DW_OP_call4 with DW_OP_deref
35798         optionally after it.
35799         (optimize_string_length): Rework for DW_OP_GNU_variable_value.
35800         (resolve_addr): Adjust optimize_string_length and resolve_addr_in_expr
35801         callers.  Set remove_AT_byte_size if removing DW_AT_string_length.
35802         (variable_value_hasher::hash, variable_value_hasher::equal): New
35803         methods.
35804         (resolve_variable_value_in_expr, resolve_variable_value,
35805         resolve_variable_values, note_variable_value_in_expr,
35806         note_variable_value): New functions.
35807         (dwarf2out_early_finish): Call note_variable_value on all toplevel
35808         DIEs.
35809
35810 2017-02-24  Jakub Jelinek  <jakub@redhat.com>
35811
35812         PR c/79677
35813         * opts.h (handle_generated_option): Add GENERATED_P argument.
35814         * opts-common.c (handle_option): Adjust function comment.
35815         (handle_generated_option): Add GENERATED_P argument, pass it to
35816         handle_option.
35817         (control_warning_option): Pass false to handle_generated_option
35818         GENERATED_P.
35819         * opts.c (maybe_default_option): Pass true to handle_generated_option
35820         GENERATED_P.
35821         * optc-gen.awk: Likewise.
35822
35823 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
35824
35825         * config/sh/sh.md (tstsi_t): If operands[0] is a SUBREG instead of
35826         a REG, look at the REG it is a SUBREG of.
35827         (splitter for cmpeqsi_t): Ditto.
35828
35829 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
35830
35831         * config/pa/pa.c (pa_combine_instructions): Do not share RTL.  Make
35832         the special USEs with the pattern of the insn, not the insn itself.
35833
35834 2017-02-24  Matthew Fortune  <matthew.fortune@imgtec.com>
35835
35836         PR target/79473
35837         * doc/invoke.texi: Document -mload-store-pairs.
35838
35839 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
35840             Sandra Loosemore  <sandra@codesourcery.com>
35841
35842         * config/nios2/nios2.c (nios2_simple_const_p): Returns false if the
35843         argument isn't a CONST_INT.
35844         (nios2_alternate_compare_const): Assert op is a CONST_INT.
35845         (nios2_valid_compare_const_p): Assert op is a CONST_INT.
35846         (nios2_validate_compare): Bypass alternate compare logic if *op2
35847         is not a CONST_INT.
35848         (ldstwm_operation_p): Return false if first_base is not a REG or
35849         if first_offset is not a CONST_INT.
35850
35851 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
35852
35853         * config/cris/cris.md: Use correct operand in a define_peephole2.
35854
35855 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
35856
35857         * config/c6x/c6x.c (predicate_insn): Do not incorrectly share RTL.
35858
35859 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
35860
35861         * config/arc/arc.c (arc_ccfsm_advance): Only take the PATTERN of
35862         this_insn if it is an INSN or JUMP_INSN.
35863         (force_offsettable): Look at base, not at addr.
35864         * config/arc/predicates.md (brcc_nolimm_operator): Don't call INTVAL
35865         on things that aren't necessarily CONST_INTs.
35866
35867 2017-02-24  Uros Bizjak  <ubizjak@gmail.com>
35868
35869         * doc/invoke.texi (x86 Options, -mfpmath=sse): Mention that
35870         -mfpmath=sse is the default also for x86-32 targets with SSE2
35871         instruction set when @option{-ffast-math} is enabled
35872
35873 2017-02-24  Jeff Law  <law@redhat.com>
35874
35875         PR rtl-optimizatoin/79286
35876         * ira.c (update_equiv_regs): Drop may_trap_p exception to
35877         dominance test.
35878
35879 2017-02-24  Richard Biener  <rguenther@suse.de>
35880
35881         PR tree-optimization/79389
35882         * gimple-ssa-split-paths.c (is_feasible_trace): Properly skip
35883         debug insns.
35884
35885 2017-02-24  Aldy Hernandez  <aldyh@redhat.com>
35886
35887         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update
35888         function comment to reflect reality.
35889         (loop_exits_before_overflow): Fix typo in function description.
35890
35891 2017-02-24  Richard Biener  <rguenther@suse.de>
35892
35893         PR tree-optimization/79389
35894         * gimple-ssa-split-paths.c (is_feasible_trace): Verify more
35895         properly that a threading opportunity exists.  Detect conditional
35896         copy/constant propagation opportunities.
35897
35898 2017-02-23  Eric Botcazou  <ebotcazou@adacore.com>
35899
35900         * config/visium/visium.md (type): Add trap.
35901         (b): New mode attribute.
35902         (*btst): Rename into...
35903         (*btst<mode>): ...this and adjust.
35904         (*cbranchsi4_btst_insn): Rename into...
35905         (*cbranch<mode>4_btst_insn): ...this and adjust.
35906         (trap): New define_insn.
35907
35908 2017-02-23  Jakub Jelinek  <jakub@redhat.com>
35909
35910         PR tree-optimization/79389
35911         * ifcvt.c (struct noce_if_info): Add rev_cond field.
35912         (noce_reversed_cond_code): New function.
35913         (noce_emit_store_flag): Use rev_cond if non-NULL instead of
35914         reversed_comparison_code.  Formatting fix.
35915         (noce_try_store_flag): Test rev_cond != NULL in addition to
35916         reversed_comparison_code.
35917         (noce_try_store_flag_constants): Likewise.
35918         (noce_try_store_flag_mask): Likewise.
35919         (noce_try_addcc): Use rev_cond if non-NULL instead of
35920         reversed_comparison_code.
35921         (noce_try_cmove_arith): Likewise.  Formatting fixes.
35922         (noce_try_minmax, noce_try_abs): Clear rev_cond.
35923         (noce_find_if_block): Initialize rev_cond.
35924         (find_cond_trap): Call noce_get_condition with then_bb == trap_bb
35925         instead of false as last argument never attempt to reverse it
35926         afterwards.
35927
35928 2017-02-23  Bin Cheng  <bin.cheng@arm.com>
35929
35930         PR tree-optimization/79663
35931         * tree-predcom.c (combine_chains): Process refs in reverse order
35932         only for ZERO length chains, and add explaining comment.
35933
35934 2017-02-23  Jeff Law  <law@redhat.com>
35935
35936         PR tree-optimization/79578
35937         * tree-ssa-dse.c (clear_bytes_written_by): Use OEP_ADDRESS_OF
35938         in call to operand_equal_p.
35939
35940 2017-01-23  Dominique d'Humieres  <dominiq@lps.ens.fr>
35941
35942         PR target/71017
35943         * config/i386/cpuid.h: Fix another undefined behavior.
35944
35945 2017-02-23  Richard Biener  <rguenther@suse.de>
35946
35947         PR tree-optimization/79683
35948         * tree-vect-stmts.c (vect_analyze_stmt): Do not overwrite
35949         vector types for data-refs.
35950
35951 2017-02-23  Martin Liska  <mliska@suse.cz>
35952
35953         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): Change default to 0.
35954
35955 2017-02-23  Jakub Jelinek  <jakub@redhat.com>
35956
35957         PR middle-end/79665
35958         * internal-fn.c (get_range_pos_neg): Moved to ...
35959         * tree.c (get_range_pos_neg): ... here.  No longer static.
35960         * tree.h (get_range_pos_neg): New prototype.
35961         * expr.c (expand_expr_real_2) <case TRUNC_DIV_EXPR>: If both arguments
35962         are known to be in between 0 and signed maximum inclusive, try to
35963         expand both unsigned and signed divmod and use the cheaper one from
35964         those.
35965
35966 2017-02-22  Jeff Law  <law@redhat.com>
35967
35968         PR tree-optimization/79578
35969         * tree-ssa-dse.c (clear_bytes_written_by): Use operand_equal_p
35970         to compare base operands.
35971
35972 2017-02-22  Segher Boessenkool  <segher@kernel.crashing.org>
35973
35974         PR target/79211
35975         * config/rs6000/rs6000.md (*fsel<SFDF:mode><SFDF2:mode>4): Use
35976         gpc_reg_operand instead of fpr_reg_operand.
35977
35978 2017-02-22  Sameera Deshpande  <sameera.deshpande@imgtec.com>
35979
35980         * config/mips/mips.c (mips_return_in_memory): Force FP
35981         vector types to be returned in memory for o32 ABI.
35982
35983 2017-02-22  Jakub Jelinek  <jakub@redhat.com>
35984
35985         * dwarf2out.c (gen_variable_die): For -gdwarf-5, use DW_TAG_variable
35986         instead of DW_TAG_member for static data member declarations and don't
35987         set no_linkage_name for static inline data members.
35988         (gen_member_die): For -gdwarf-5 don't change DW_TAG_variable
35989         to DW_TAG_member.
35990
35991 2017-02-22  Martin Liska  <mliska@suse.cz>
35992
35993         * doc/invoke.texi: Replace inequality signs with square brackets
35994         for -Wnormalized.
35995
35996 2017-02-22  Matthew Fortune  <matthew.fortune@imgtec.com>
35997
35998         PR target/78660
35999         * lra-constraints.c (simplify_operand_subreg): Handle
36000         WORD_REGISTER_OPERATIONS targets.
36001
36002 2017-02-22  Jakub Jelinek  <jakub@redhat.com>
36003
36004         PR target/70465
36005         * reg-stack.c (emit_swap_insn): Treat (float_extend:?F (mem:?F))
36006         and (const_double:?F) like (mem:?F) for the purpose of fxch %st(1)
36007         elimination by swapping fld*.
36008
36009 2017-02-22  Richard Biener  <rguenther@suse.de>
36010
36011         PR tree-optimization/79673
36012         * tree-ssa-pre.c (compute_avail): Use wide_int_to_tree to
36013         convert the [TARGET_]MEM_REF offset INTEGER_CST, scrapping off
36014         irrelevant address-space qualifiers and avoiding a
36015         ADDR_SPACE_CONVERT_EXPR from fold_convert.
36016
36017 2017-02-22  Richard Biener  <rguenther@suse.de>
36018
36019         PR tree-optimization/79666
36020         * tree-vrp.c (extract_range_from_binary_expr_1): Make sure
36021         to not symbolically negate if that may introduce undefined
36022         overflow.
36023
36024 2017-02-22  Martin Liska  <mliska@suse.cz>
36025
36026         PR lto/79587
36027         * data-streamer-in.c (streamer_read_gcov_count): Remove assert.
36028         * data-streamer-out.c (streamer_write_gcov_count_stream):
36029         Likewise.
36030         * value-prof.c (stream_out_histogram_value): Make assert more
36031         precise based on type of counter.
36032
36033 2017-02-21  Uros Bizjak  <ubizjak@gmail.com>
36034
36035         PR target/79593
36036         * config/i386/i386.md (standard_x87sse_constant_load splitter):
36037         Use nonimmediate_operand instead of memory_operand for operand 1.
36038         (float-extend standard_x87sse_constant_load splitter): Ditto.
36039
36040 2017-02-21  Jeff Law  <law@redhat.com>
36041
36042         PR tree-optimization/79621
36043         * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): Ignore
36044         blocks with edges to themselves.
36045
36046 2017-02-21  Jakub Jelinek  <jakub@redhat.com>
36047
36048         PR target/79633
36049         * tree-chkp-opt.c (chkp_optimize_string_function_calls): Use
36050         is_gimple_call instead of comparing gimple_code with GIMPLE_CALL.
36051         Use gimple_call_builtin_p.
36052
36053         PR target/79570
36054         * sel-sched.c (moveup_expr_cached): Don't call sel_bb_head
36055         on temporarily removed DEBUG_INSNs.
36056
36057         PR tree-optimization/79649
36058         * tree-loop-distribution.c (classify_partition): Give up on
36059         non-generic address space loads/stores.
36060
36061 2017-02-21  Aldy Hernandez  <aldyh@redhat.com>
36062
36063         * doc/loop.texi (Loop manipulation): Remove nonexistent
36064         tree_ssa_loop_version from the documentation.
36065         * cfgloopmanip.c (loop_version): Document CONDITION_BB argument.
36066
36067 2017-02-21  Jakub Jelinek  <jakub@redhat.com>
36068
36069         PR target/79494
36070         * config/i386/i386.c (ix86_expand_split_stack_prologue): Call
36071         make_reg_eh_region_note_nothrow_nononlocal on call_insn.
36072         * config/rs6000/rs6000.c: Include except.h.
36073         (rs6000_expand_split_stack_prologue): Call
36074         make_reg_eh_region_note_nothrow_nononlocal on the call insn.
36075
36076 2017-02-21  Martin Jambor  <mjambor@suse.cz>
36077
36078         PR lto/79579
36079         * ipa-prop.c (ipa_prop_write_jump_functions): Bail out if no edges
36080         have been analyzed.
36081
36082 2017-02-21  Martin Jambor  <mjambor@suse.cz>
36083
36084         * common.opt (-fipa-cp-alignment): Mark as ignored and preserved
36085         for backward compatibility only.
36086         * doc/invoke.texi (Option Summary): Remove all references to
36087         -fipa-cp-alignment.
36088
36089 2017-02-21  Matthew Fortune  <matthew.fortune@imgtec.com>
36090
36091         PR target/78660
36092         Revert:
36093         2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
36094
36095         * lra-constraints.c (curr_insn_transform): Handle
36096         WORD_REGISTER_OPERATIONS requirements when reloading SUBREGs.
36097
36098 2017-02-21  Martin Liska  <mliska@suse.cz>
36099
36100         * config/i386/i386.opt: Replace -masm-dialect with -masm.
36101
36102 2017-02-21  Thomas Schwinge  <thomas@codesourcery.com>
36103
36104         PR translation/79638
36105         * config/nvptx/nvptx.c (ENTRY_TEMPLATE): Single out "%ntid.y".
36106
36107 2017-02-21  Eric Botcazou  <ebotcazou@adacore.com>
36108
36109         PR ada/67205
36110         * config/arm/arm.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define.
36111         (arm_function_ok_for_sibcall): Return false for an indirect call by
36112         descriptor if all the argument registers are used.
36113         (arm_relayout_function): Use FUNCTION_ALIGNMENT macro to adjust the
36114         alignment of the function.
36115
36116 2017-02-21  Jakub Jelinek  <jakub@redhat.com>
36117
36118         PR tree-optimization/61441
36119         * simplify-rtx.c (simplify_const_unary_operation): For
36120         -fsignaling-nans and sNaN operand, return NULL_RTX rather than
36121         the sNaN unmodified.
36122
36123 2017-02-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>
36124
36125         * Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe.
36126         (LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR
36127         instead of SYSTEM_HEADER_DIR.
36128
36129 2017-02-20  Gerald Pfeifer  <gerald@pfeifer.com>
36130             Martin LiÅ¡ka  <mliska@suse.cz>
36131
36132         * doc/invoke.texi (use-after-scope-direct-emission-threshold):
36133         Fix typos and grammar, use active voice, and clarify.
36134
36135 2017-02-20  Marek Polacek  <polacek@redhat.com>
36136
36137         PR middle-end/79537
36138         * gimplify.c (gimplify_expr): Handle unused *&&L;.
36139
36140         PR sanitizer/79558
36141         * ubsan.c (ubsan_type_descriptor): Check if TYPE_MAX_VALUE is null.
36142
36143 2017-02-20  Jakub Jelinek  <jakub@redhat.com>
36144
36145         PR target/79568
36146         * config/i386/i386.c (ix86_expand_builtin): Handle
36147         OPTION_MASK_ISA_AVX512VL and OPTION_MASK_ISA_64BIT in
36148         ix86_builtins_isa[fcode].isa as a requirement of those
36149         flags and any other flag in the bitmask.
36150         (ix86_init_mmx_sse_builtins): Use 0 instead of
36151         ~OPTION_MASK_ISA_64BIT as mask.
36152         * config/i386/i386-builtin.def (__builtin_ia32_rdtsc,
36153         __builtin_ia32_rdtscp, __builtin_ia32_pause, __builtin_ia32_bsrsi,
36154         __builtin_ia32_rdpmc, __builtin_ia32_rolqi, __builtin_ia32_rolhi,
36155         __builtin_ia32_rorqi, __builtin_ia32_rorhi): Likewise.
36156
36157 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
36158
36159         PR target/78012
36160         * lra-constraints.c (split_reg): Check requested split mode
36161         is supported by the register.
36162
36163 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
36164
36165         * lra-constraints.c (simplify_operand_subreg): Remove early
36166         return false.
36167
36168 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
36169
36170         PR target/78660
36171         * lra-constraints.c (curr_insn_transform): Tighten condition
36172         for converting SUBREG reloads from OP_OUT to OP_INOUT.
36173
36174 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
36175
36176         PR target/78660
36177         * lra-constraints.c (curr_insn_transform): Handle
36178         WORD_REGISTER_OPERATIONS requirements when reloading SUBREGs.
36179
36180 2017-02-19  Uros Bizjak  <ubizjak@gmail.com>
36181
36182         Revert:
36183         2016-05-30  Uros Bizjak  <ubizjak@gmail.com>
36184
36185         * config/i386/sync.md (mfence_nosse): Use "lock orl $0, -4(%esp)".
36186
36187 2017-02-19  Jonathan Wakely  <jwakely@redhat.com>
36188
36189         PR c++/69523
36190         * doc/invoke.texi (C++ Dialect Options) [-Wliteral-suffix]: Update
36191         description.
36192
36193 2017-02-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
36194
36195         * gimple-pretty-print.c (dump_ternary_rhs): Adjust gimple dump format
36196         for FMA_EXPR.
36197
36198 2017-02-18  Jakub Jelinek  <jakub@redhat.com>
36199
36200         * final.c (last_columnnum, override_columnnum): New variables.
36201         (final_start_function): Set last_columnnum, pass it to begin_prologue
36202         hook and pass 0 to dwarf2out_begin_prologue.
36203         (final_scan_insn): Update override_columnnum.  Pass last_columnnum
36204         to source_line debug hook.
36205         (notice_source_line): Compute last_columnnum and for debug_column_info
36206         return true on column changes.
36207         * debug.h (struct gcc_debug_hooks): Add column argument to
36208         source_line and begin_prologue hooks.
36209         (debug_nothing_int_charstar_int_bool): Remove prototype.
36210         (debug_nothing_int_int_charstar,
36211         debug_nothing_int_int_charstar_int_bool): New prototypes.
36212         (dwarf2out_begin_prologue): Add column argument.
36213         * debug.c (do_nothing_debug_hooks): Adjust source_line and
36214         begin_prologue hooks.
36215         (debug_nothing_int_charstar_int_bool): Remove.
36216         (debug_nothing_int_int_charstar,
36217         debug_nothing_int_int_charstar_int_bool): New functions.
36218         * dwarf2out.c (dwarf2out_begin_prologue): Add column argument, pass it
36219         through to dwarf2out_source_line.
36220         (dwarf2_lineno_debug_hooks): Adjust begin_prologue hook.
36221         (dwarf2out_source_line): Add column argument, emit it if requested.
36222         * sdbout.c (sdbout_source_line, sdbout_begin_prologue): Add column
36223         arguments.
36224         * xcoffout.h (xcoffout_begin_prologue, xcoffout_source_line): Likewise.
36225         * xcoffout.c (xcoffout_begin_prologue, xcoffout_source_line): Likewise.
36226         * vmsdbgout.c (vmsdbgout_begin_prologue): Add column argument, pass it
36227         through to dwarf2out_begin_prologue.
36228         (vmsdbgout_source_line): Add column argument, pass it through to
36229         dwarf2out_source_line.
36230         * dbxout.c (dbxout_begin_prologue): Add column argument, adjust
36231         dbxout_source_line caller.
36232         (dbxout_source_line): Add column argument.
36233
36234         * common.opt (gno-column-info, gcolumn-info): New options.
36235         * dwarf2out.c (dwarf2_lineno_debug_hooks): Formatting fix.
36236         (check_die): Also test for multiple DW_AT_decl_column attributes.
36237         (add_src_coords_attributes, dwarf2out_imported_module_or_decl_1): Add
36238         DW_AT_decl_column if requested.
36239         (gen_subprogram_die): Compare and/or add also DW_AT_decl_column
36240         if requested.
36241         (gen_variable_die): Likewise.
36242         (add_call_src_coords_attributes): Add DW_AT_call_column if requested.
36243         * doc/invoke.texi (-gcolumn-info, -gno-column-info): Document.
36244
36245         PR target/79569
36246         * config/i386/i386.opt (m3dnowa): Replace Undocumented with Report.
36247         * common/config/i386/i386-common.c (OPTION_MASK_ISA_3DNOW_A_SET): Define.
36248         (ix86_handle_option): Handle OPT_m3dnowa.
36249         * doc/invoke.texi (-m3dnowa): Document.
36250         * doc/extend.texi (__builtin_ia32_pmulhuw, __builtin_ia32_pf2iw): Use
36251         -m3dnowa instead of -m3dnow -march=athlon.
36252
36253         PR target/79559
36254         * config/i386/i386.c (ix86_print_operand): Use output_operand_lossage
36255         instead of gcc_assert for K, r and R code checks.  Formatting fixes.
36256
36257 2017-02-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
36258
36259         PR target/79261
36260         * config/rs6000/rs6000.c (rs6000_expand_ternop_builtin): Add
36261         support for CODE_FOR_vsx_xxpermdi_v2d[fi]_be.
36262         * config/rs6000/rs6000.md (reload_gpr_from_vsx<mode>): Call
36263         generator for vsx_xxpermdi_<mode>_be.
36264         * config/rs6000/vsx.md (vsx_xxpermdi_<mode>): Remove logic to
36265         force big-endian semantics.
36266         (vsx_xxpermdi_<mode>_be): New define_expand with same
36267         implementation as previous version of vsx_xxpermdi_<mode>.
36268
36269 2017-02-17  Jakub Jelinek  <jakub@redhat.com>
36270
36271         PR tree-optimization/79327
36272         * gimple-ssa-sprintf.c (format_integer): Remove likely_adjust
36273         variable, its initialization and use.
36274
36275 2017-02-17  Julia Koval  <julia.koval@intel.com>
36276
36277         * common/config/i386/i386-common.c (OPTION_MASK_ISA_RDPID_SET): New.
36278         (OPTION_MASK_ISA_PKU_UNSET): New.
36279         (ix86_handle_option): Handle -mrdpid.
36280         * config/i386/cpuid.h (bit_RDPID): New.
36281         * config/i386/driver-i386.c (host_detect_local_cpu):
36282         Detect RDPID feature.
36283         * config/i386/i386-builtin.def (__builtin_ia32_rdpid): New.
36284         * config/i386/i386-c.c (ix86_target_macros_internal):
36285         Handle RDPID flag.
36286         * config/i386/i386.c (ix86_target_string): Add -mrdpid to isa2_opts.
36287         (ix86_valid_target_attribute_inner_p): Add "rdpid".
36288         (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
36289         * config/i386/i386.h (TARGET_RDPID, TARGET_RDPID_P): New.
36290         * config/i386/i386.md (define_insn "rdpid"): New.
36291         * config/i386/i386.opt Add -mrdpid.
36292         * config/i386/immintrin.h (_rdpid_u32): New.
36293
36294 2017-02-17  Vladimir Makarov  <vmakarov@redhat.com>
36295
36296         PR rtl-optimization/79541
36297         * lra-constraints.c (curr_insn_transform): Remove wrong asm insn
36298         instead of transforming it into USE.
36299
36300 2017-02-17  Segher Boessenkool  <segher@kernel.crashing.org>
36301
36302         * config/rs6000/rs6000.md (extendsfdf2): Remove default arguments.
36303         If HONOR_SNANS (SFmode) force the input to a register.
36304         (*extendsfdf2_fpr): Add !HONOR_SNANS (SFmode) condition.
36305         (*extendsfdf2_snan): New pattern, used when using SNaNs; it generates
36306         an frsp or similar insn.
36307
36308 2017-02-17  Martin Liska  <mliska@suse.cz>
36309
36310         PR rtl-optimization/79577
36311         * params.def (selsched-max-sched-times): Increase minimum to 1.
36312
36313 2017-02-17  Martin Liska  <mliska@suse.cz>
36314
36315         PR rtl-optimization/79574
36316         * gcse.c (want_to_gcse_p): Prevent integer overflow.
36317
36318 2017-02-17  Martin Liska  <mliska@suse.cz>
36319
36320         PR tree-optimization/79529
36321         * tree-ssa-loop-unswitch.c (is_maybe_undefined): Use
36322         ssa_defined_default_def_p to handle cases which are implicitly
36323         defined.
36324         * tree-ssa.c (ssa_defined_default_def_p): New function.
36325         (ssa_undefined_value_p): Use ssa_defined_default_def_p to handle cases
36326         which are implicitly defined.
36327         * tree-ssa.h (ssa_defined_default_def_p): Declare.
36328
36329 2017-02-17  Richard Biener  <rguenther@suse.de>
36330
36331         PR middle-end/79576
36332         * params.def (max-ssa-name-query-depth): Limit to 10.
36333
36334 2017-02-17  Richard Biener  <rguenther@suse.de>
36335
36336         PR tree-optimization/79552
36337         * tree-ssa-structalias.c (visit_loadstore): Properly verify
36338         default defs.
36339
36340 2017-02-17  Richard Biener  <rguenther@suse.de>
36341
36342         PR bootstrap/79567
36343         * genmatch.c (output_line_directive): Handle DIR_SEPARATOR_2.
36344
36345 2017-02-17  Marek Polacek  <polacek@redhat.com>
36346
36347         PR middle-end/79536
36348         * fold-const.c (fold_negate_expr_1): Renamed from fold_negate_expr.
36349         (fold_negate_expr): New wrapper.
36350
36351 2017-02-16  Sandra Loosemore  <sandra@codesourcery.com>
36352
36353         * doc/invoke.texi (C++ Dialect Options) [-Wno-non-template-friend]: 
36354         Correct terminology and de-emphasize pre-standard behavior.
36355
36356 2017-02-16  Alan Modra  <amodra@gmail.com>
36357
36358         PR rtl-optimization/79286
36359         * ira.c (def_dominates_uses): New function.
36360         (update_equiv_regs): Don't create an equivalence for insns that
36361         may trap where the register def does not dominate the use.
36362
36363 2017-02-16  Vladimir Makarov  <vmakarov@redhat.com>
36364
36365         PR rtl-optimization/78127
36366         * lra.c (lra): Call lra_eliminate before finish the loop after
36367         lra_constraint.
36368
36369 2017-02-16  Richard Biener  <rguenther@suse.de>
36370
36371         * graphite.h: Do not include isl/isl_val_gmp.h, instead include
36372         isl/isl_val.h.
36373         * graphite-isl-ast-to-gimple.c (gmp_cst_to_tree): Remove.
36374         (gcc_expression_from_isl_expr_int): Use generic isl_val interface.
36375         * graphite-sese-to-poly.c: Do not include isl/isl_val_gmp.h.
36376         (isl_val_int_from_wi): New function.
36377         (extract_affine_gmp): Rename to ...
36378         (extract_affine_wi): ... this, take a widest_int.
36379         (extract_affine_int): Just wrap extract_affine_wi.
36380         (add_param_constraints): Use isl_val_int_from_wi.
36381         (add_loop_constraints): Likewise, and extract_affine_wi.
36382
36383 2017-02-15  Jeff Law  <law@redhat.com>
36384
36385         PR middle-end/79521
36386         * ira-costs.c (scan_one_insn): Check have_regs_of_mode before calling
36387         ira_init_register_move_cost_if_necessary.
36388
36389 2017-02-15  Martin Sebor  <msebor@redhat.com>
36390
36391         PR middle-end/32003
36392         * doc/invoke.texi (-fdump-final-insns): Replace option accidentally
36393         removed in a prior commit.
36394
36395 2017-02-15  Bin Cheng  <bin.cheng@arm.com>
36396
36397         PR tree-optimization/79347
36398         * tree-vect-loop-manip.c (vect_do_peeling): Maintain profile
36399         counters during peeling.
36400
36401 2017-02-15  Thomas Schwinge  <thomas@codesourcery.com>
36402
36403         * Makefile.in (site.exp): Remove "set ISLVER".
36404
36405 2017-02-15  Jakub Jelinek  <jakub@redhat.com>
36406
36407         PR target/79487
36408         * real.c (real_from_integer): Call real_convert even for decimal.
36409
36410 2017-02-15  Dominik Vogt  <vogt@linux.vnet.ibm.com>
36411
36412         PR target/79421
36413         * config/s390/s390.c: define TARGET_CUSTOM_FUNCTION_DESCRIPTORS.
36414
36415 2017-02-14  Andrew Pinski  <apinski@cavium.com>
36416
36417         * config/aarch64/aarch64-cores.def (thunderx2t99): Move to under 'C"
36418         cores and change the partno/implementer to be correct.
36419         (thunderx2t99p1): New core which replaces thunderx2t99 and still has
36420         the 'B" as the implementer.
36421         * config/aarch64/aarch64-tune.md: Regenerate.
36422
36423 2017-02-14  Carl Love  <cel@us.ibm.com>
36424
36425         * config/rs6000/rs6000.c: Add case statement entry to make the
36426         xvcvuxdsp built-in argument unsigned.
36427         * config/rs6000/vsx.md: Fix the source and return operand types so they
36428         match the instruction definitions from the ISA document.  Fix typo
36429         in the instruction generation for the (define_insn "vsx_xvcvuxdsp"
36430         statement.
36431
36432 2017-02-14  Vladimir Makarov  <vmakarov@redhat.com>
36433
36434         PR target/79282
36435         * lra-int.h (struct lra_operand_data, struct lra_insn_reg): Add
36436         member early_clobber_alts.
36437         * lra-lives.c (reg_early_clobber_p): New.
36438         (process_bb_lives): Use it.
36439         * lra.c (new_insn_reg): New arg early_clobber_alts.  Use it.
36440         (debug_operand_data): Initialize early_clobber_alts.
36441         (setup_operand_alternative): Set up early_clobber_alts.
36442         (collect_non_operand_hard_regs): Ditto.  Pass early clobber
36443         alternatives to new_insn_reg.
36444         (add_regs_to_insn_regno_info): Add arg early_clobber_alts.  Use
36445         it.
36446         (lra_update_insn_regno_info): Pass the new arg.
36447
36448 2017-02-14  Jakub Jelinek  <jakub@redhat.com>
36449
36450         PR middle-end/79505
36451         * omp-offload.c (free_oacc_loop): Release loop->ifns vector.
36452         (new_oacc_loop_raw): Don't clear already cleared fields.
36453
36454         PR target/79481
36455         * config/i386/avx512pfintrin.h (_mm512_prefetch_i32gather_pd,
36456         _mm512_prefetch_i32gather_ps, _mm512_prefetch_i64gather_pd,
36457         _mm512_prefetch_i64gather_ps): New inline functions and macros.
36458
36459 2017-02-14  Uros Bizjak  <ubizjak@gmail.com>
36460
36461         PR target/79495
36462         * config/i386/i386.md (*movxf_internal): Add (o,rC) alternative.
36463
36464 2017-02-14  H.J. Lu  <hongjiu.lu@intel.com>
36465
36466         PR target/79498
36467         * config/i386/i386.c (timode_scalar_chain::convert_insn): Insert
36468         the extra instruction to the right place to store 128-bit constant
36469         when needed.
36470
36471 2017-02-14  Martin Sebor  <msebor@redhat.com>
36472
36473         PR middle-end/79448
36474         * gimple-ssa-sprintf.c (format_directive): Avoid issuing INT_MAX
36475           warning for strings of unknown length.
36476
36477 2017-02-13  Segher Boessenkool  <segher@kernel.crashing.org>
36478
36479         * config.gcc (supported_defaults) [powerpc*-*-*]: Update.
36480
36481 2017-02-14  Jeff Law  <law@redhat.com>
36482
36483         PR target/79404
36484         * ira-costs.c (scan_one_insn): Initialize register move costs
36485         for pseudos seen in USE/CLOBBER insns.
36486
36487         PR tree-optimization/79095
36488         * tree-vrp.c (extract_range_from_binary_expr_1): For EXACT_DIV_EXPR,
36489         if the numerator has the range ~[0,0] make the resultant range ~[0,0].
36490         (extract_range_from_binary_expr): For MINUS_EXPR with no derived range,
36491         if the operands are known to be not equal, then the resulting range
36492         is ~[0,0].
36493         (intersect_ranges): If the new range is ~[0,0] and the old range is
36494         wide, then prefer ~[0,0].
36495         * tree-vrp.c (overflow_comparison_p_1): New function.
36496         (overflow_comparison_p): New function.
36497         * tree-vrp.c (register_edge_assert_for_2): Register additional asserts
36498         if NAME is used in an overflow test.
36499         (vrp_evaluate_conditional_warnv_with_ops): If the ops represent an
36500         overflow check that can be expressed as an equality test, then adjust
36501         ops to be that equality test.
36502
36503 2017-02-14  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
36504
36505         * config/s390/s390-builtin-types.def: Remove flags argument.
36506         * config/s390/s390.c (s390_init_builtins): Likewise.
36507
36508 2017-02-14  Martin Liska  <mliska@suse.cz>
36509
36510         * tree-ssa-loop-unswitch.c (hoist_guard): Release get_loop_body
36511         vector.  Fix trailing white spaces.
36512
36513 2017-02-14  James Greenhalgh  <james.greenhalgh@arm.com>
36514
36515         * config/aarch64/aarch64.c (aarch64_simd_container_mode): Handle
36516         HFmode.
36517
36518 2017-02-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36519
36520         PR rtl-optimization/68664
36521         * config/arm/arm.c (arm_sched_can_speculate_insn):
36522         New function.  Declare prototype.
36523         (TARGET_SCHED_CAN_SPECULATE_INSN): Define.
36524
36525 2017-02-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36526
36527         PR rtl-optimization/68664
36528         * config/aarch64/aarch64.c (aarch64_sched_can_speculate_insn):
36529         New function.
36530         (TARGET_SCHED_CAN_SPECULATE_INSN): Define.
36531
36532 2017-02-14  Amit Pawar  <amit.pawar@amd.com>
36533
36534         * config/i386/i386.c (znver1_cost): Fix the alignment for function and
36535         max skip bytes for function, loop and jump.
36536
36537 2017-02-14  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
36538
36539         * gimple-pretty-print.c (dump_unary_rhs): Adjust dump format for
36540         ABS_EXPR for gimple dump.
36541
36542 2017-02-14  Jakub Jelinek  <jakub@redhat.com>
36543
36544         PR target/79462
36545         * config/sh/sh.c (expand_cbranchdi4): Don't clear operands[4].
36546
36547         PR tree-optimization/79408
36548         * tree-vrp.c (simplify_div_or_mod_using_ranges): Handle also the
36549         case when on TRUNC_MOD_EXPR op0 is INTEGER_CST.
36550         (simplify_stmt_using_ranges): Call simplify_div_or_mod_using_ranges
36551         also if rhs1 is INTEGER_CST.
36552
36553 2017-02-14  Richard Biener  <rguenther@suse.de>
36554
36555         PR middle-end/79432
36556         * tree-into-ssa.c (insert_phi_nodes): When the function can
36557         have abnormal edges rewrite SSA names with broken use-def
36558         dominance out of SSA and register them for PHI insertion.
36559
36560 2017-02-13  Martin Sebor  <msebor@redhat.com>
36561
36562         PR middle-end/79496
36563         * gimple-ssa-sprintf.c (pass_sprintf_length::handle_gimple_call): Avoid
36564         clearing info.nowrite flag when snprintf size argument is a range.
36565
36566 2017-02-13  Jakub Jelinek  <jakub@redhat.com>
36567
36568         * cprop.c (cprop_jump): Add missing space in string literal.
36569         * tree-ssa-structalias.c (rewrite_constraints): Likewise.
36570         (get_constraint_for_component_ref): Likewise.
36571         * df-core.c (df_worklist_dataflow_doublequeue): Likewise.
36572         * tree-outof-ssa.c (insert_partition_copy_on_edge): Likewise.
36573         * lra-constraints.c (process_alt_operands): Likewise.
36574         * ipa-inline.c (inline_small_functions): Likewise.
36575         * tree-ssa-sccvn.c (visit_reference_op_store): Likewise.
36576         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
36577         * trans-mem.c (diagnose_tm_1_op): Likewise.
36578         * omp-grid.c (grid_find_single_omp_among_assignments): Likewise.
36579         (grid_parallel_clauses_gridifiable): Likewise.
36580
36581         * config/nvptx/mkoffload.c (process): Add space in between
36582         , and %d.
36583
36584         * config/i386/i386.h (REG_CLASS_NAMES): Add , in between
36585         "MOD4_SSE_REGS" and "ALL_REGS".
36586
36587         * spellcheck.c (test_data): Add , in between "foo" and "food".
36588
36589 2017-02-13  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
36590
36591         PR target/79449
36592         * config/rs6000/rs6000.c (expand_block_compare): Make sure runtime
36593         boundary crossing check and subsequent code generation agree.
36594
36595 2017-02-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36596
36597         * config/aarch64/aarch64.c (has_memory_op): Delete.
36598         (aarch64_madd_needs_nop): Use contains_mem_rtx_p instead of
36599         has_memory_op.
36600
36601 2017-02-13  Jakub Jelinek  <jakub@redhat.com>
36602
36603         PR rtl-optimization/79388
36604         PR rtl-optimization/79450
36605         * combine.c (distribute_notes): When removing TEM_INSN for which
36606         corresponding dest has last value recorded, invalidate that last
36607         value.
36608
36609 2017-02-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36610
36611         * config/arm/arm.c (arm_print_tune_info): Use ASM_COMMENT_START instead
36612         of explicit '@'.  Add missing assembly comment marker on branch costs
36613         printout.
36614
36615 2017-02-13  Nathan Sidwell  <nathan@acm.org>
36616
36617         * gengtype-lex.l (<in_struct>): Add '/'.
36618
36619 2017-02-13  Martin Liska  <mliska@suse.cz>
36620
36621         PR c/79471
36622         * calls.c (expand_call): Replace XALLOCAVEC with XCNEWVEC.
36623
36624 2017-02-13  Richard Biener  <rguenther@suse.de>
36625
36626         * configure.ac (HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS):
36627         Remove.
36628         * configure: Re-generate.
36629         * config.in: Likewise.
36630         * graphite-dependences.c: Simplify as if
36631         HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS was defined.
36632         * graphite-isl-ast-to-gimple.c: Likewise.
36633         * graphite-optimize-isl.c: Likewise.
36634         * graphite-poly.c: Likewise.
36635         * graphite-sese-to-poly.c: Likewise.
36636         * graphite.h: Likewise.
36637         * toplev.c: Include isl/version.h and use isl_version () for
36638         printing the ISL version.
36639         * doc/install.texi: Update ISL requirement.
36640
36641 2017-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
36642
36643         * doc/standards.texi (Standards): Update reference to
36644         Objective-C 2.0.
36645
36646 2017-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
36647
36648         * doc/extend.texi (Named Address Spaces): sourceware.org now
36649         defaults to https.
36650         * doc/install.texi (Binaries): Ditto.
36651         (Specific): Ditto.
36652
36653 2017-02-11  Sandra Loosemore  <sandra@codesourcery.com>
36654
36655         * doc/cpp.texi: Replace "stringify"/"stringification" with C
36656         standard terminology "stringize"/"stringizing" throughout.
36657         * doc/cppinternals.texi: Likewise.
36658
36659 2017-02-11  Sandra Loosemore  <sandra@codesourcery.com>
36660
36661         * doc/extend.texi: Fix some spelling mistakes and typos.
36662         * doc/invoke.texi: Likewise.
36663
36664 2017-02-11  Jan Hubicka  <hubicka@ucw.cz>
36665
36666         PR ipa/79224
36667         * params.def (inline-min-speedup) Change from 10 to 8.
36668
36669 2017-02-11  Jakub Jelinek  <jakub@redhat.com>
36670
36671         * doc/invoke.texi (fopenmp): Bump OpenMP version from 4.0 to
36672         4.5.
36673
36674 2017-02-11  Jan Hubicka  <hubicka@ucw.cz>
36675
36676         PR ipa/79224
36677         * ipa-inline-analysis.c (get_minimal_bb): New function.
36678         (record_modified): Use it.
36679         (remap_edge_change_prob): Handle also ancestor functions.
36680
36681 2017-02-11  Gerald Pfeifer  <gerald@pfeifer.com>
36682
36683         * doc/contrib.texi (Contributors): Remove broken link into
36684         the Mauve CVS repository.
36685
36686 2017-02-11  Jakub Jelinek  <jakub@redhat.com>
36687
36688         PR middle-end/79454
36689         * internal-fn.c (expand_vector_ubsan_overflow): Use piece-wise
36690         result computation whenever lhs doesn't have vector mode, not
36691         just when it has BLKmode.
36692
36693 2017-02-10  Gerald Pfeifer  <gerald@pfeifer.com>
36694
36695         * doc/makefile.texi (profiledbootstrap): Refer to the
36696         installation instructions only in textual form.
36697
36698 2017-02-10  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
36699
36700         PR target/79295
36701         * config/rs6000/altivec.md (bcd<bcd_add_sub>): Fix constraints.
36702
36703 2017-02-10  Gerald Pfeifer  <gerald@pfeifer.com>
36704
36705         * doc/install.texi (Specific): Use https for blackfin.uclinux.org.
36706         (Specific): Update mingw-w64 reference.
36707         (Binaries): Ditto.
36708         (Specific): Remove broken link to Renesas RX processor.
36709
36710 2017-02-10  Richard Biener  <rguenther@suse.de>
36711
36712         * toplev.c (process_options): Do not mention obsolete graphite
36713         options when printing sorry message about missing graphite support.
36714         Mention -floop-nest-optimize.
36715
36716 2017-02-10  Christophe Lyon  <christophe.lyon@linaro.org>
36717
36718         * config/aarch64/arm_neon.h (vtst_p8): Rewrite without asm.
36719         (vtst_p16): Likewise.
36720         (vtstq_p8): Likewise.
36721         (vtstq_p16): Likewise.
36722         (vtst_p64): New.
36723         (vtstq_p64): Likewise.
36724         * config/arm/arm_neon.h (vgetq_lane_p64): New.
36725         (vset_lane_p64): New.
36726         (vsetq_lane_p64): New.
36727
36728 2017-02-10  Jakub Jelinek  <jakub@redhat.com>
36729
36730         PR tree-optimization/79411
36731         * tree-ssa-reassoc.c (is_reassociable_op): Return false if
36732         stmt operands are SSA_NAMEs used in abnormal phis.
36733         (can_reassociate_p): Return false if op is SSA_NAME used in abnormal
36734         phis.
36735
36736 2017-02-09  Jan Hubicka  <hubicka@ucw.cz>
36737
36738         PR ipa/70795
36739         * cgraphunit.c (cgraph_node::add_new_function): Set externally_visible
36740         flag if needed.
36741
36742 2017-02-09  Jan Hubicka  <hubicka@ucw.cz>
36743
36744         * tree-ssa-loop-unswitch.c (hoist_guard): Update profile.
36745
36746 2017-02-09  Jakub Jelinek  <jakub@redhat.com>
36747
36748         * omp-offload.c (oacc_loop_auto_partitions): Use || instead of |
36749         to avoid warning.
36750
36751         PR c/79413
36752         * gimplify.h (is_gimple_sizepos): Only test for INTEGER_CST constants,
36753         not arbitrary TREE_CONSTANT.
36754
36755         PR c/79431
36756         * gimplify.c (gimplify_adjust_omp_clauses): Ignore
36757         "omp declare target link" attribute unless is_global_var.
36758         * omp-offload.c (find_link_var_op): Likewise.
36759
36760 2017-02-09  Nathan Sidwell  <nathan@codesourcery.com>
36761             Chung-Lin Tang  <cltang@codesourcery.com>
36762
36763         * gimplify.c (gimplify_scan_omp_clauses): No special handling for
36764         OMP_CLAUSE_TILE.
36765         (gimplify_adjust_omp_clauses): Don't delete TILE.
36766         (gimplify_omp_for): Deal with TILE.
36767         * internal-fn.c (expand_GOACC_TILE): New function.
36768         * internal-fn.def (GOACC_DIM_POS): Comment may be overly conservative.
36769         (GOACC_TILE): New.
36770         * omp-expand.c (struct oacc_collapse): Add tile and outer fields.
36771         (expand_oacc_collapse_init): Add LOC paramter.  Initialize tile
36772         element fields.
36773         (expand_oacc_collapse_vars): Add INNER parm, adjust for tiling,
36774         avoid DIV for outermost collapse var.
36775         (expand_oacc_for): Insert tile element loop as needed.  Adjust.
36776         Remove out of date comments, fix whitespace.
36777         * omp-general.c (omp_extract_for_data): Deal with tiling.
36778         * omp-general.h (enum oacc_loop_flags): Add OLF_TILE flag,
36779         adjust OLF_DIM_BASE value.
36780         (struct omp_for_data): Add tiling field.
36781         * omp-low.c (scan_sharing_clauses): Allow OMP_CLAUSE_TILE.
36782         (lower_oacc_head_mark): Add OLF_TILE as appropriate.  Ensure 2 levels
36783         for auto loops.  Remove default auto determining, moved to
36784         oacc_loop_fixed_partitions.
36785         * omp-offload.c (struct oacc_loop): Change 'ifns' to vector of call
36786         stmts, add e_mask field.
36787         (oacc_dim_call): New function, abstracted out from oacc_thread_numbers.
36788         (oacc_thread_numbers): Use oacc_dim_call.
36789         (oacc_xform_tile): New.
36790         (new_oacc_loop_raw): Initialize e_mask, adjust for ifns vector.
36791         (finish_oacc_loop): Adjust for ifns vector.
36792         (oacc_loop_discover_walk): Append loop abstraction sites to list,
36793         add case for GOACC_TILE fns.
36794         (oacc_loop_xform_loop): Delete.
36795         (oacc_loop_process): Iterate over call list directly, and add
36796         handling for GOACC_TILE fns.
36797         (oacc_loop_fixed_partitions): Determine default auto, deal with TILE,
36798         dump partitioning.
36799         (oacc_loop_auto_partitions): Add outer_assign parm. Assign all but
36800         vector partitioning to outer loops.  Assign 2 partitions to loops
36801         when available. Add TILE handling.
36802         (oacc_loop_partition): Adjust oacc_loop_auto_partitions call.
36803         (execite_oacc_device_lower): Process GOACC_TILE fns,
36804         ignore unknown specs.
36805         * tree-nested.c (convert_nonlocal_omp_clauses): Allow OMP_CLAUSE_TILE.
36806         * tree.c (omp_clause_num_ops): Adjust TILE ops.
36807         * tree.h (OMP_CLAUSE_TILE_ITERVAR, OMP_CLAUSE_TILE_COUNT): New.
36808
36809 2017-02-09  Gerald Pfeifer  <gerald@pfeifer.com>
36810
36811         * configure.ac (ACX_BUGURL): Update.
36812         * configure: Regenerate.
36813
36814 2017-02-09  Richard Biener  <rguenther@suse.de>
36815
36816         PR tree-optimization/69823
36817         * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
36818         Properly enumerate all BBs in the region.  Use auto_vec/auto_bitmap.
36819
36820 2017-02-09  Andrew Burgess  <andrew.burgess@embecosm.com>
36821
36822         * config/arc/arc-c.def: Add __NPS400__ definition.
36823         * config/arc/arc.h (CPP_SPEC): Don't define __NPS400__ here.
36824         (TARGET_NPS400): Define.
36825
36826 2017-02-09  Andrew Burgess  <andrew.burgess@embecosm.com>
36827
36828         * config/arc/arc-arch.h (arc_arch_t): Move unchanged to earlier in
36829         file.
36830         (arc_cpu_t): Change base_architecture field, arch, to a arc_arc_t
36831         pointer, arch_info.
36832         (arc_cpu_types): Fill the arch_info field with a pointer into the
36833         arc_arch_types table.
36834         (arc_selected_cpu): Declare.
36835         * config/arc/arc.c (arc_selected_cpu): Make global.
36836         (arc_selected_arch): Delete.
36837         (arc_base_cpu): Delete.
36838         (arc_override_options): Remove references to deleted variables,
36839         update access to arch information.
36840         (ARC_OPT): Update access to arch information.
36841         (ARC_OPTX): Likewise.
36842         * config/arc/arc.h (arc_base_cpu): Remove declaration.
36843         (TARGET_ARC600): Update access to arch information.
36844         (TARGET_ARC601): Likewise.
36845         (TARGET_ARC700): Likewise.
36846         (TARGET_EM): Likewise.
36847         (TARGET_HS): Likewise.
36848         * config/arc/driver-arc.c (arc_cpu_to_as): Update access to arch
36849         information.
36850
36851 2017-02-08  Pat Haugen  <pthaugen@us.ibm.com>
36852
36853         PR target/78604
36854         * config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Invert
36855         condition/operands for integer GE/LE/GEU/LEU operations.
36856
36857 2017-02-08  Segher Boessenkool  <segher@kernel.crashing.org>
36858
36859         PR translation/79397
36860         * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Fix spelling
36861         of AltiVec.
36862
36863 2017-02-08  Martin Jambor  <mjambor@suse.cz>
36864
36865         PR ipa/79375
36866         * ipa-prop.c (ipa_alloc_node_params): Make static, return bool
36867         whether allocation happened.
36868         (ipa_initialize_node_params): Do not call ipa_alloc_node_params if
36869         nothing was allocated.
36870
36871 2017-02-08  Jakub Jelinek  <jakub@redhat.com>
36872
36873         PR tree-optimization/79408
36874         * tree-vrp.c (simplify_div_or_mod_using_ranges): If op1 is not
36875         constant, but SSA_NAME with a known integer range, use the minimum
36876         of that range instead of op1 to determine if modulo can be replaced
36877         with its first operand.
36878
36879 2016-02-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36880
36881         * config/riscv/riscv.c (riscv_build_integer_1): Avoid use of INT16_MAX.
36882
36883 2017-02-08  Richard Biener  <rguenther@suse.de>
36884
36885         PR tree-optimization/71824
36886         * graphite-scop-detection.c (scop_detection::build_scop_breadth):
36887         Check all loops contained in the merged region.
36888
36889 2017-02-07  Andrew Pinski  <apinski@cavium.com>
36890
36891         * config/aarch64/aarch64.md (popcount<mode>2): New pattern.
36892
36893 2017-02-07  Andrew Pinski  <apinski@cavium.com>
36894
36895         * config/aarch64/aarch64-cores.def (thunderx): Disable LSE.
36896         (thunderxt88): Likewise.
36897         (thunderxt81): Disable LSE and change v8.1 to v8.
36898         (thunderxt83): Likewise.
36899
36900 2017-02-07  Jakub Jelinek  <jakub@redhat.com>
36901             Richard Biener  <rguenther@suse.de>
36902
36903         PR middle-end/79399
36904         * ira-int.h (struct target_ira_int): Change x_max_struct_costs_size
36905         type from int to size_t.
36906         * ira-costs.c (struct_costs_size): Change type from int to size_t.
36907
36908 2017-02-07  Jakub Jelinek  <jakub@redhat.com>
36909
36910         PR rtl-optimization/79386
36911         * cprop.c (bypass_conditional_jumps): Initialize
36912         bypass_last_basic_block already before splitting bbs after
36913         unconditional traps...
36914         (bypass_conditional_jumps): ... rather than here.
36915
36916         PR target/79299
36917         * config/i386/sse.md (xtg_mode, gatherq_mode): New mode attrs.
36918         (*avx512f_gathersi<mode>, *avx512f_gathersi<mode>_2,
36919         *avx512f_gatherdi<mode>, *avx512f_gatherdi<mode>_2): Use them,
36920         fix -masm=intel patterns.
36921
36922 2017-02-07  Richard Biener  <rguenther@suse.de>
36923
36924         PR tree-optimization/79256
36925         PR middle-end/79278
36926         * builtins.c (get_object_alignment_2): Use min_align_of_type
36927         to extract alignment for MEM_REFs to honor BIGGEST_FIELD_ALIGNMENT
36928         and ADJUST_FIELD_ALIGN.
36929
36930         * doc/tm.texi.in (ADJUST_FIELD_ALIGN): Adjust to take additional
36931         type parameter.
36932         * doc/tm.texi: Regenerate.
36933         * stor-layout.c (layout_decl): Adjust.
36934         (update_alignment_for_field): Likewise.
36935         (place_field): Likewise.
36936         (min_align_of_type): Likewise.
36937         * config/arc/arc.h (ADJUST_FIELD_ALIGN): Adjust.
36938         * config/epiphany/epiphany.h (ADJUST_FIELD_ALIGN): Likewise.
36939         * config/epiphany/epiphany.c (epiphany_adjust_field_align): Likewise.
36940         * config/frv/frv.h (ADJUST_FIELD_ALIGN): Likewise.
36941         * config/frv/frv.c (frv_adjust_field_align): Likewise.
36942         * config/i386/i386.h (ADJUST_FIELD_ALIGN): Likewise.
36943         * config/i386/i386.c (x86_field_alignment): Likewise.
36944         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
36945         * config/rs6000/darwin.h (ADJUST_FIELD_ALIGN): Likewise.
36946         * config/rs6000/freebsd64.h (ADJUST_FIELD_ALIGN): Likewise.
36947         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
36948         * config/rs6000/sysv4.h (ADJUST_FIELD_ALIGN): Likewise.
36949         * config/rs6000/rs6000.c (rs6000_special_adjust_field_align_p):
36950          Likewise.
36951
36952         Revert
36953         2017-01-30  Richard Biener  <rguenther@suse.de>
36954
36955         PR tree-optimization/79256
36956         * targhooks.c (default_builtin_vector_alignment_reachable): Honor
36957         BIGGEST_FIELD_ALIGNMENT and ADJUST_FIELD_ALIGN to fix up bogus
36958         alignment on TYPE.
36959
36960 2017-02-07  Toma Tabacu  <toma.tabacu@imgtec.com>
36961
36962         * config/mips/mips.c (mips_expand_builtin_insn): Convert the QImode
36963         argument of the pshufh, psllh, psllw, psrah, psraw, psrlh, psrlw
36964         builtins to SImode and emit a zero-extend, if necessary.
36965
36966 2017-02-06  Palmer Dabbelt  <palmer@dabbelt.com>
36967
36968         * docs/invoke.texi (RISC-V Options): Alphabetize.
36969
36970 2017-02-06  Palmer Dabbelt  <palmer@dabbelt.com>
36971
36972         * doc/invoke.texi (RISC-V Options): Use two spaces to separate
36973         options.
36974
36975 2017-02-06  Palmer Dabbelt  <palmer@dabbelt.com>
36976
36977         * config/riscv/riscv.c: New file.
36978         * common/config/riscv/riscv-common.c: Likewise.
36979         * config.gcc: Likewise.
36980         * config/riscv/constraints.md: Likewise.
36981         * config/riscv/elf.h: Likewise.
36982         * config/riscv/generic.md: Likewise.
36983         * config/riscv/linux.h: Likewise.
36984         * config/riscv/multilib-generator: Likewise.
36985         * config/riscv/peephole.md: Likewise.
36986         * config/riscv/pic.md: Likewise.
36987         * config/riscv/predicates.md: Likewise.
36988         * config/riscv/riscv-builtins.c: Likewise.
36989         * config/riscv/riscv-c.c: Likewise.
36990         * config/riscv/riscv-ftypes.def: Likewise.
36991         * config/riscv/riscv-modes.def: Likewise.
36992         * config/riscv/riscv-opts.h: Likewise.
36993         * config/riscv/riscv-protos.h: Likewise.
36994         * config/riscv/riscv.h: Likewise.
36995         * config/riscv/riscv.md: Likewise.
36996         * config/riscv/riscv.opt: Likewise.
36997         * config/riscv/sync.md: Likewise.
36998         * config/riscv/t-elf-multilib: Likewise.
36999         * config/riscv/t-linux: Likewise.
37000         * config/riscv/t-linux-multilib: Likewise.
37001         * config/riscv/t-riscv: Likewise.
37002         * configure.ac: Likewise.
37003         * doc/contrib.texi: Add Kito Cheng, Palmer Dabbelt, and Andrew
37004         Waterman as RISC-V maintainers.
37005         * doc/install.texi: Add RISC-V entries.
37006         * doc/invoke.texi: Add RISC-V options section.
37007         * doc/md.texi: Add RISC-V constraints section.
37008         * configure: Regenerated.
37009
37010 2017-02-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
37011
37012         PR target/66144
37013         * config/rs6000/vector.md (vcond<mode><mode>): Allow the true and
37014         false values to be constant vectors with all 0 or all 1 bits set.
37015         (vcondu<mode><mode>): Likewise.
37016         * config/rs6000/predicates.md (vector_int_reg_or_same_bit): New
37017         predicate.
37018         (fpmask_comparison_operator): Update comment.
37019         (vecint_comparison_operator): New predicate.
37020         * config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Optimize
37021         vector conditionals when the true and false values are constant
37022         vectors with all 0 bits or all 1 bits set.
37023
37024 2017-02-06  Martin Sebor  <msebor@redhat.com>
37025
37026         PR  tree-optimization/79376
37027         * gimple-fold.c (get_range_strlen): Set the minimum length to zero.
37028
37029 2017-02-06  Uros Bizjak  <ubizjak@gmail.com>
37030
37031         * config/i386/sse.md (vector modes -> vec_extract* splitter): Use
37032         explicit subreg RTX with operand 1.  Use VECTOR_MODE_P predicate
37033         to simplify split condition.
37034
37035 2017-02-06  Jakub Jelinek  <jakub@redhat.com>
37036
37037         * omp-expand.c (oxpand_omp_atomic_fetch_op,
37038         expand_omp_atomic_pipeline): Return false if can_atomic_load_p is
37039         false.
37040
37041 2017-02-06  Segher Boessenkool  <segher@kernel.crashing.org>
37042
37043         PR rtl-optimization/68664
37044         * target.def (can_speculate_insn): New hook.
37045         * doc/tm.texi.in (TARGET_SCHED_CAN_SPECULATE_INSN): New hook.
37046         * doc/tm.texi: Regenerate.
37047         * sched-rgn.c (can_schedule_ready_p): Use the new hook.
37048         * config/rs6000/rs6000.c (TARGET_SCHED_CAN_SPECULATE_INSN): New macro.
37049         (rs6000_sched_can_speculate_insn): New function.
37050
37051 2017-02-06  Jakub Jelinek  <jakub@redhat.com>
37052
37053         PR tree-optimization/79284
37054         * tree-vectorizer.h (VECT_SCALAR_BOOLEAN_TYPE_P): Define.
37055         * tree-vect-stmts.c (vect_get_vec_def_for_operand,
37056         vectorizable_mask_load_store, vectorizable_operation,
37057         vect_is_simple_cond, get_same_sized_vectype): Use it instead
37058         of comparing TREE_CODE of a type against BOOLEAN_TYPE.
37059         * tree-vect-patterns.c (check_bool_pattern, search_type_for_mask_1,
37060         vect_recog_bool_pattern, vect_recog_mask_conversion_pattern): Likewise.
37061         * tree-vect-slp.c (vect_get_constant_vectors): Likewise.
37062         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
37063         Remove redundant gimple_code (stmt) == GIMPLE_ASSIGN test after
37064         is_gimple_assign (stmt).  Replace another such test with
37065         is_gimple_assign (stmt).
37066
37067 2017-02-06  Georg-Johann Lay  <avr@gjlay.de>
37068
37069         PR target/78883
37070         * config/avr/avr.c (rtl-iter.h): Include it.
37071         (TARGET_LEGITIMATE_COMBINED_INSN): New hook define...
37072         (avr_legitimate_combined_insn): ...and implementation.
37073
37074 2017-02-06  Dominik Vogt  <vogt@linux.vnet.ibm.com>
37075
37076         * config/s390/predicates.md ("larl_operand"): Use macros from hwint.h.
37077         * config/s390/s390.c (s390_const_operand_ok)
37078         (s390_canonicalize_comparison, s390_extract_part)
37079         (s390_single_part, s390_contiguous_bitmask_nowrap_p)
37080         (s390_contiguous_bitmask_p, s390_rtx_costs)
37081         (legitimize_pic_address): Likewise.
37082         * config/s390/s390.md ("clzdi2", "clztidi2"): Likewise.
37083         * config/s390/vx-builtins.md ("vec_genbytemaskv16qi")
37084         ("vec_permi<mode>", "vfae<mode>", "*vfaes<mode>", "vstrc<mode>")
37085         ("*vstrcs<mode>"): Use UINTVAL() to set unsigned HOST_WIDE_INT.
37086         * config/s390/vector.md ("vec_vfenes<mode>"): Likewise.
37087
37088 2017-02-06  Georg-Johann Lay  <avr@gjlay.de>
37089
37090         * config/avr/avr.md (*addhi3_zero_extend): Add alternative where
37091         REGNO($0) == REGNO($1).
37092
37093 2017-02-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
37094
37095         * config/s390/linux.h(SIZE_TYPE): Add comment.
37096
37097 2017-02-06  Julian Brown  <julian@codesourcery.com>
37098             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
37099             Virendra Pathak  <virendra.pathak@broadcom.com>
37100
37101         * config/aarch64/aarch64-cores.def: Change the scheduler
37102         to Thunderx2t99.
37103         * config/aarch64/aarch64.md: Include thunderx2t99.md.
37104         * config/aarch64/thunderx2t99.md: New file.
37105
37106 2017-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
37107
37108         * doc/standards.texi (Go Language): Update link to language
37109         standard.
37110
37111 2017-02-05  Jan Hubicka  <hubicka@ucw.cz>
37112
37113         * tree-eh.c (lower_resx): Sanitize profile.
37114         (cleanup_empty_eh_move_lp): Likewise.
37115
37116 2017-02-05  Jan Hubicka  <hubicka@ucw.cz>
37117
37118         PR tree-ssa/79347
37119         * cfgloopmanip.c (lv_adjust_loop_entry_edge, loop_version): Add
37120         ELSE_PROB.
37121         * cfgloopmanip.h (loop_version): Update prototype.
37122         * modulo-sched.c (sms_schedule): Update call of loop_version.
37123         * tree-if-conv.c(version_loop_for_if_conversion): Likewise.
37124         * tree-parloops.c (gen_parallel_loop): Likewise.
37125         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Likewise.
37126         * tree-ssa-loop-split.c (split_loop): Likewise.
37127         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Likewise.
37128         * tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
37129
37130 2017-02-05  Martin Liska  <mliska@suse.cz>
37131
37132         PR bootstrap/78985
37133         * config/s390/s390.c (s390_gimplify_va_arg): Initialize local
37134         variable to NULL.
37135         (print_operand_address): Initialize a struct to zero.
37136
37137 2017-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
37138
37139         * doc/contrib.texi (Contributors): Refer to Hans Boehm's
37140         garbage collector only in textual form.
37141
37142 2017-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
37143
37144         * doc/extend.texi (x86 specific memory model extensions for
37145         transactional memory): Simplify a phrase.
37146
37147 2017-02-05  Eric Botcazou  <ebotcazou@adacore.com>
37148
37149         PR target/79353
37150         * config/sparc/sync.md (atomic_loaddi_1): Replace 'U' constraint with
37151         'r', 'm' constraint with 'T' and !TARGET_ARCH64 with TARGET_ARCH32.
37152         (atomic_storedi_1): Likewise.
37153
37154 2017-02-04  Jakub Jelinek  <jakub@redhat.com>
37155
37156         PR tree-optimization/79338
37157         * tree-parloops.c (gather_scalar_reductions): Don't call
37158         vect_analyze_loop_form for loop->inner before destroying loop's
37159         loop_vinfo.
37160
37161 2017-02-03  Martin Sebor  <msebor@redhat.com>
37162
37163         PR tree-optimization/79327
37164         * gimple-ssa-sprintf.c (tree_digits): Avoid adding the base prefix
37165         when precision has resulted in leading zeros.
37166         (format_integer): Adjust the likely counter to assume an unknown
37167         argument that may be zero is non-zero.
37168
37169 2017-02-03  Jason Merrill  <jason@redhat.com>
37170
37171         PR c++/78689
37172         * tree-inline.c (copy_tree_body_r) [COND_EXPR]: Revert change to
37173         avoid copying non-taken branch.
37174
37175 2017-02-03  Jakub Jelinek  <jakub@redhat.com>
37176
37177         PR tree-optimization/79340
37178         * tree-vect-loop.c (vectorizable_reduction): Release
37179         vec_defs elements after safe_splicing them into other vectors.
37180         Formatting fixes.
37181
37182         PR tree-optimization/79327
37183         * gimple-ssa-sprintf.c (adjust_range_for_overflow): If returning
37184         true, always set *argmin and *argmax to TYPE_{MIN,MAX}_VALUE of
37185         dirtype.
37186         (format_integer): Use wide_int_to_tree instead of build_int_cst
37187         + to_?hwi.  If argmin is NULL, just set argmin and argmax to
37188         TYPE_{MIN,MAX}_VALUE of argtype.  Simplify and fix computation
37189         of shortest and longest sequence.
37190
37191 2017-02-03  Uros Bizjak  <ubizjak@gmail.com>
37192
37193         * config/i386/i386.c (dimode_scalar_chain::convert_reg):
37194         Use pextrd for TARGET_SSE4_1 when creating scalar copy.
37195
37196 2017-02-03  Walter Lee  <walt@tilera.com>
37197
37198         PR target/78862
37199         * config/tilegx/tilegx.md (tilegx_expand_prologue): Add blockage
37200         after initial stackframe link reg save.
37201         * config/tilepro/tilepro.md (tilepro_expand_prologue): Likewise.
37202
37203 2017-02-03  Jakub Jelinek  <jakub@redhat.com>
37204
37205         PR target/79354
37206         * config/rs6000/rs6000.md (movsi_from_sf): Use wb constraint instead of
37207         wu for stxssp alternative.
37208
37209 2017-02-03  Martin Sebor  <msebor@redhat.com>
37210
37211         PR tree-optimization/79352
37212         * gimple-fold.c (get_range_strlen): Add argument.
37213         (get_range_strlen): Change return type to bool.
37214         (get_maxval_strlen): Pass in a dummy argument.
37215         * gimple-fold.h (get_range_strlen): Change return type to bool.
37216         * gimple-ssa-sprintf.c (get_string_length): Set unlikely counter.
37217         * tree.h (array_at_struct_end_p): Add argument.
37218         * tree.c (array_at_struct_end_p): Handle it.
37219
37220 2017-02-03  Martin Liska  <mliska@suse.cz>
37221
37222         PR lto/66295
37223         * multiple_target.c (create_dispatcher_calls): Redirect edge
37224         from a caller of a dispatcher.
37225         (expand_target_clones): Make the clones local.
37226         (ipa_target_clone): Do both target clones and resolvers.
37227         (ipa_dispatcher_calls): Remove the pass.
37228         (pass_dispatcher_calls::gate): Likewise.
37229         (make_pass_dispatcher_calls): Likewise.
37230         * passes.def (pass_target_clone): Put as very first IPA early
37231         pass.
37232
37233 2017-02-03  Martin Liska  <mliska@suse.cz>
37234
37235         * symtab.c (symtab_node::binds_to_current_def_p): Bail out
37236         in case of a function with ifunc attribute.
37237
37238 2017-02-03  Martin Liska  <mliska@suse.cz>
37239
37240         * cgraph.c (cgraph_node::dump): Dump function version info.
37241         * symtab.c (symtab_node::dump_base): Add missing new line.
37242
37243 2017-02-02  Jan Hubicka  <hubicka@ucw.cz>
37244
37245         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): New function.
37246         (ifcombine_ifandif): Use it.
37247
37248 2017-02-03  Martin Liska  <mliska@suse.cz>
37249
37250         * doc/invoke.texi: Document default value for
37251         use-after-scope-direct-emission-threshold.
37252
37253 2017-02-03  Martin Liska  <mliska@suse.cz>
37254
37255         PR tree-optimization/79339
37256         * gimple-ssa-sprintf.c (format_floating_max): Call mpfr_clear.
37257         (format_floating): Likewise.
37258
37259 2017-02-03  Martin Liska  <mliska@suse.cz>
37260
37261         PR ipa/79337
37262         * ipa-prop.c (ipa_node_params_t::insert): Remove current
37263         implementation.
37264         (ipa_node_params_t::remove): Likewise.
37265         * ipa-prop.h (ipa_node_params::ipa_node_params): Make default
37266         initialization from removed ipa_node_params_t::insert.
37267         (ipa_node_params::~ipa_node_params): Move from removed
37268         ipa_node_params_t::release.
37269         * symbol-summary.h (symbol_summary::m_released): New member.
37270         Do not release a summary twice.  Do not allow to call finalizer
37271         for types of a summary that live in GGC memory.
37272
37273 2017-02-02  Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
37274
37275         * config/aarch64/aarch64.c (thunderx2t99_tunings): Enable AES and
37276         cmp_branch fusion.
37277
37278 2017-02-02  Martin Sebor  <msebor@redhat.com>
37279
37280         PR middle-end/79275
37281         * gimple-ssa-sprintf.c (get_string_length): Set lower bound to zero.
37282         (format_string): Tighten up the range of output for non-constant
37283         strings and correct the expected range for wide non-constant strings.
37284
37285 2017-02-02  Martin Sebor  <msebor@redhat.com>
37286
37287         * doc/invoke.texi (-maccumulate-args): Fix bad grammar.
37288
37289         PR middle-end/32003
37290         * doc/invoke.texi (-fdump-tree-): Remove pass-specific options from
37291         index.
37292         (-fdump-tree-@var): Add to index and document how to come up
37293         with pass-specific option and dump file names.
37294         (-fdump-passes): Clarify where to look for output.
37295
37296 2017-02-02  Jan Hubicka  <hubicka@ucw.cz>
37297
37298         PR middle-end/77445
37299         * tree-ssa-threadbackward.c (profitable_jump_thread_path): Dump
37300         statistics of the analyzed path; allow threading for speed when
37301         any of BBs along the path are optimized for speed.
37302
37303 2017-02-02  Eric Botcazou  <ebotcazou@adacore.com>
37304
37305         PR middle-end/78468
37306         * emit-rtl.c (init_emit): Add ??? comment for problematic alignment
37307         settings of the virtual registers.
37308
37309         Revert again
37310         2016-08-23  Dominik Vogt  <vogt@linux.vnet.ibm.com>
37311
37312         * explow.c (get_dynamic_stack_size): Take known alignment of stack
37313         pointer + STACK_DYNAMIC_OFFSET into account when calculating the size
37314         needed.
37315
37316 2017-02-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
37317
37318         * config/s390/vx-builtins.md ("vec_ceil", "vec_floor")
37319         ("vec_trunc", "vec_roundc", "vec_round"): Remove expanders.
37320
37321 2017-02-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
37322
37323         * config/s390/s390.md: Add missing comments with the expanded
37324         mnemonics.
37325         * config/s390/vector.md: Likewise.
37326         * config/s390/vx-builtins.md: Likewise.
37327
37328 2017-02-02  Jakub Jelinek  <jakub@redhat.com>
37329
37330         PR target/79197
37331         * config/rs6000/rs6000.md (*fixuns_trunc<mode>di2_fctiduz): Rename to ...
37332         (fixuns_trunc<mode>di2): ... this, remove previous expander.  Put all
37333         conditions on a single line.
37334
37335 2017-02-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
37336
37337         * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Rename
37338         __S390_VX__ to __VX__.
37339
37340 2017-02-01  Andrew Pinski  <apinski@cavium.com>
37341
37342         * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost): Pass
37343         stmt_info to record_stmt_cost.
37344         (vect_get_known_peeling_cost): Pass stmt_info if known to
37345         record_stmt_cost.
37346         * config/aarch64/aarch64-protos.h (cpu_vector_cost): Split
37347         cpu_vector_cost field into
37348         scalar_int_stmt_cost and scalar_fp_stmt_cost.  Split vec_stmt_cost
37349         field into vec_int_stmt_cost and vec_fp_stmt_cost.
37350         * config/aarch64/aarch64.c (generic_vector_cost): Update for the
37351         splitting of scalar_stmt_cost and vec_stmt_cost.
37352         (thunderx_vector_cost): Likewise.
37353         (cortexa57_vector_cost): LIkewise.
37354         (exynosm1_vector_cost): Likewise.
37355         (xgene1_vector_cost): Likewise.
37356         (thunderx2t99_vector_cost): Improve after the splitting of the two
37357         fields.
37358         (aarch64_builtin_vectorization_cost): Update for the splitting of
37359         scalar_stmt_cost and vec_stmt_cost.
37360
37361 2017-02-01  Torvald Riegel  <triegel@redhat.com>
37362             Richard Henderson  <rth@redhat.com>
37363
37364         * builtins.c (fold_builtin_atomic_always_lock_free): Make "lock-free"
37365         conditional on existance of a fast atomic load.
37366         * optabs-query.c (can_atomic_load_p): New function.
37367         * optabs-query.h (can_atomic_load_p): Declare it.
37368         * optabs.c (expand_atomic_exchange): Always delegate to libatomic if
37369         no fast atomic load is available for the particular size of access.
37370         (expand_atomic_compare_and_swap): Likewise.
37371         (expand_atomic_load): Likewise.
37372         (expand_atomic_store): Likewise.
37373         (expand_atomic_fetch_op): Likewise.
37374         * testsuite/lib/target-supports.exp
37375         (check_effective_target_sync_int_128): Remove x86 because it provides
37376         no fast atomic load.
37377         (check_effective_target_sync_int_128_runtime): Likewise.
37378
37379 2017-02-01  Richard Biener  <rguenther@suse.de>
37380
37381         * graphite.c: Include tree-vectorizer.h for find_loop_location.
37382         (graphite_transform_loops): Provide opt-info for optimized nests.
37383         * tree-parloop.c (parallelize_loops): Provide opt-info for
37384         parallelized loops.
37385
37386 2017-02-01  Richard Biener  <rguenther@suse.de>
37387
37388         PR middle-end/79315
37389         * tree-cfg.c (move_stmt_op): Never set TREE_BLOCK when it
37390         was not set before.
37391
37392 2017-02-01  Richard Biener  <rguenther@suse.de>
37393
37394         PR tree-optimization/71824
37395         * graphite-scop-detection.c (scop_detection::build_scop_breadth):
37396         Verify the loops are valid in the merged SESE region.
37397         (scop_detection::can_represent_loop_1): Check analyzing the
37398         evolution of the number of iterations in the region succeeds.
37399
37400 2017-01-31  Ian Lance Taylor  <iant@golang.org>
37401
37402         * config/i386/i386.c (ix86_expand_split_stack_prologue): Add
37403         REG_ARGS_SIZE note to 32-bit push insns and call insn.
37404
37405 2017-01-31  David Malcolm  <dmalcolm@redhat.com>
37406
37407         PR preprocessor/79210
37408         * input.c (get_substring_ranges_for_loc): Replace line_width
37409         assertion with error-handling.
37410
37411 2017-01-31  Richard Biener  <rguenther@suse.de>
37412
37413         PR tree-optimization/77318
37414         * graphite-sese-to-poly.c (extract_affine): Fix assert.
37415         (create_pw_aff_from_tree): Take loop parameter.
37416         (add_condition_to_pbb): Pass loop of the condition to
37417         create_pw_aff_from_tree.
37418
37419 2017-01-31  Jakub Jelinek  <jakub@redhat.com>
37420
37421         * config/s390/s390.c (s390_asan_shadow_offset): New function.
37422         (TARGET_ASAN_SHADOW_OFFSET): Redefine.
37423
37424 2017-01-31  Michael Meissner  <meissner@linux.vnet.ibm.com>
37425
37426         PR target/78597
37427         PR target/79038
37428         * config/rs6000/rs6000-protos.h (convert_float128_to_int): Delete,
37429         no longer used.
37430         (convert_int_to_float128): Likewise.
37431         * config/rs6000/rs6000.c (convert_float128_to_int): Likewise.
37432         (convert_int_to_float128): Likewise.
37433         * config/rs6000/rs6000.md (UNSPEC_IEEE128_MOVE): Likewise.
37434         (UNSPEC_IEEE128_CONVERT): Likewise.
37435         (floatsi<mode>2, FLOAT128 iterator): Bypass calling
37436         rs6000_expand_float128_convert if we have IEEE 128-bit hardware.
37437         Use local variables for IBM extended format.
37438         (fix_trunc<mode>si2, FLOAT128 iterator): Likewise.
37439         (fix_trunc<mode>si2_fprs): Likewise.
37440         (fixuns_trunc<IEEE128:mode><SDI:mode>2): Likewise.
37441         (floatuns<IEEE128:mode>2, IEEE128 iterator): Likewise.
37442         (fix<uns>_<mode>si2_hw): Rework the IEEE 128-bt hardware support
37443         to know that we can now have integers of all sizes in vector
37444         registers.
37445         (fix<uns>_<mode>di2_hw): Likewise.
37446         (float<uns>_<mode>si2_hw): Likewise.
37447         (fix_<mode>si2_hw): Likewise.
37448         (fixuns_<mode>si2_hw): Likewise.
37449         (float<uns>_<mode>di2_hw): Likewise.
37450         (float_<mode>di2_hw): Likewise.
37451         (float_<mode>si2_hw): Likewise.
37452         (floatuns_<mode>di2_hw): Likewise.
37453         (floatuns_<mode>si2_hw): Likewise.
37454         (xscvqp<su>wz_<mode>): Delete, no longer used.
37455         (xscvqp<su>dz_<mode>): Likewise.
37456         (xscv<su>dqp_<mode>): Likewise.
37457         (ieee128_mfvsrd_64bit): Likewise.
37458         (ieee128_mfvsrd_32bit): Likewise.
37459         (ieee128_mfvsrwz): Likewise.
37460         (ieee128_mtvsrw): Likewise.
37461         (ieee128_mtvsrd_64bit): Likewise.
37462         (ieee128_mtvsrd_32bit): Likewise.
37463
37464 2017-01-31  Martin Liska  <mliska@suse.cz>
37465
37466         PR ipa/79285
37467         * ipa-prop.c (ipa_free_all_node_params): Call release method
37468         instead of ~sumbol_summary to not to trigger double times
37469         dtor of hash_map.
37470
37471 2017-01-31  Aldy Hernandez  <aldyh@redhat.com>
37472
37473         PR tree-optimization/71691
37474         * bitmap.h (class auto_bitmap): New.
37475         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Call
37476         is_maybe_undefined instead of ssa_undefined_value_p.
37477
37478 2017-01-31  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
37479
37480         * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Rename
37481         __S390_ARCH_LEVEL__ to __ARCH__.
37482
37483 2017-01-31  Jakub Jelinek  <jakub@redhat.com>
37484
37485         PR tree-optimization/79267
37486         * value-prof.c (gimple_ic): Only drop lhs for noreturn calls
37487         if should_remove_lhs_p is true.
37488
37489 2017-01-30  Alexandre Oliva  <aoliva@redhat.com>
37490
37491         PR debug/63238
37492         * dwarf2out.c (clone_as_declaration): Drop DW_AT_alignment.
37493         (add_alignment_attribute): New.
37494         (base_type_die): Add alignment attribute.
37495         (subrange_type_die): Likewise.
37496         (modified_type_die): Likewise.
37497         (gen_array_type_die): Likewise.
37498         (gen_descr_array_type_die: Likewise.
37499         (gen_enumeration_type_die): Likewise.
37500         (gen_subprogram_die): Likewise.
37501         (gen_variable_die): Likewise.
37502         (gen_field_die): Likewise.
37503         (gen_ptr_to_mbr_type_die): Likewise.
37504         (gen_struct_or_union_type_die): Likewise.
37505         (gen_subroutine_type_die): Likewise.
37506         (gen_typedef_die): Likewise.
37507         (base_type_cmp): Compare alignment attribute.
37508
37509 2017-01-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
37510
37511         PR target/79170
37512         * config/rs6000/altivec.md (*setb_internal): Rename to setb_signed.
37513         (setb_unsigned) New pattern for setb with CCUNS.
37514         * config/rs6000/rs6000.c (expand_block_compare): Use a different
37515         subfc./subfe sequence to avoid overflow problems.  Generate a
37516         shorter sequence with cmpld/setb for power9.
37517         * config/rs6000/rs6000.md (subf<mode>3_carry_dot2): Add a new pattern
37518         for generating subfc. instruction.
37519         (cmpstrsi): Add TARGET_POPCNTD predicate as the generate sequence
37520         now uses this instruction.
37521
37522 2017-01-30  Ian Lance Taylor  <iant@google.com>
37523
37524         PR debug/79289
37525         * dwarf2out.c (gen_type_die_with_usage): When picking a variant
37526         for FUNCTION_TYPE/METHOD_TYPE, use the first matching one.
37527
37528 2017-01-30  Martin Sebor  <msebor@redhat.com>
37529
37530         * gimple-ssa-sprintf.c (fmtresult::adjust_for_width_or_precision):
37531         Move constant to the right of a relational operator.
37532         (get_mpfr_format_length, format_character, format_string): Ditto.
37533         (should_warn_p, maybe_warn): Same.
37534
37535         * doc/invoke.texi (-Wformat-truncation=1): Fix typo.
37536
37537 2017-01-30  Maxim Ostapenko  <m.ostapenko@samsung.com>
37538
37539         PR lto/79061
37540         * asan.c (get_translation_unit_decl): Remove function.
37541         (asan_add_global): Force has_dynamic_init to zero in LTO mode.
37542
37543 2017-01-30  Martin Liska  <mliska@suse.cz>
37544
37545         PR gcov-profile/79259
37546         * opts.c (common_handle_option): Enable flag_ipa_bit_cp w/
37547         -fprofile-generate.
37548
37549 2017-01-30  Martin Liska  <mliska@suse.cz>
37550
37551         PR bootstrap/78985
37552         * config/aarch64/cortex-a57-fma-steering.c (func_fma_steering::analyze):
37553         Initialize variables with NULL value.
37554
37555 2017-01-30  Richard Earnshaw  <rearnsh@arm.com>
37556
37557         PR target/79260
37558         * config.gcc (arm*-*-*): Add arm/arm-flags.h and arm/arm-isa.h to
37559         tm_p_file.
37560         * arm/arm-protos.h: Don't directly include arm-flags.h and arm-isa.h.
37561
37562 2017-01-30  Richard Biener  <rguenther@suse.de>
37563
37564         PR tree-optimization/79276
37565         * tree-vrp.c (process_assert_insertions): Properly adjust common
37566         when removing a duplicate.
37567
37568 2017-01-30  Richard Biener  <rguenther@suse.de>
37569
37570         PR tree-optimization/79256
37571         * targhooks.c (default_builtin_vector_alignment_reachable): Honor
37572         BIGGEST_FIELD_ALIGNMENT and ADJUST_FIELD_ALIGN to fix up bogus
37573         alignment on TYPE.
37574         * tree.c (build_aligned_type): Set TYPE_USER_ALIGN.
37575
37576 2017-01-30  Dominik Vogt  <vogt@linux.vnet.ibm.com>
37577
37578         PR target/79240
37579         * config/s390/s390.md ("*r<noxa>sbg_<mode>_srl_bitmask")
37580         ("*r<noxa>sbg_<mode>_sll_bitmask")
37581         ("*extzv_<mode>_srl<clobbercc_or_nocc>")
37582         ("*extzv_<mode>_sll<clobbercc_or_nocc>"):
37583         Use contiguous_bitmask_nowrap_operand.
37584
37585 2017-01-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
37586
37587         PR target/79268
37588         * config/rs6000/altivec.h (vec_xl): Revise #define.
37589         (vec_xst): Likewise.
37590
37591 2017-01-27  Uros Bizjak  <ubizjak@gmail.com>
37592
37593         * config/i386/i386.c (print_reg): Use REGNO instead of true_regnum.
37594
37595 2017-01-27  Bernd Schmidt  <bschmidt@redhat.com>
37596
37597         PR rtl-optimization/79194
37598         * cprop.c (one_cprop_pass): Move deletion of code after unconditional
37599         traps before call to bypass_conditional_jumps.
37600
37601 2017-01-27  Vladimir Makarov  <vmakarov@redhat.com>
37602
37603         PR tree-optimization/71374
37604         * lra-constraints.c (check_conflict_input_operands): New.
37605         (match_reload): Use it.
37606
37607 2017-01-27  Vladimir Makarov  <vmakarov@redhat.com>
37608
37609         PR target/79131
37610         * lra-assigns.c (find_hard_regno_for_1): Take endianess for into
37611         account to calculate conflict_set.
37612
37613 2017-01-27  Bin Cheng  <bin.cheng@arm.com>
37614
37615         PR rtl-optimization/78559
37616         * combine.c (try_combine): Discard REG_EQUAL and REG_EQUIV for
37617         other_insn in combine.
37618
37619 2017-01-27  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
37620
37621         * builtin-types.def: Use unsigned_char_type_node for BT_UINT8.  Use
37622         uint16_type_node for BT_UINT16.
37623
37624 2017-01-27  David Malcolm  <dmalcolm@redhat.com>
37625
37626         * doc/sourcebuild.texi (Testsuites): Add "GIMPLE Tests" and
37627         "RTL Tests" to menu.
37628         (GIMPLE Tests): New node.
37629         (RTL Tests): New node.
37630
37631 2017-01-27  Richard Biener  <rguenther@suse.de>
37632
37633         PR tree-optimization/79245
37634         * tree-loop-distribution.c (distribute_loop): Apply cost
37635         modeling also to detected patterns.
37636
37637 2017-01-27  Richard Biener  <rguenther@suse.de>
37638
37639         PR tree-optimization/71433
37640         * tree-vrp.c (register_new_assert_for): Revert earlier changes.
37641         (compare_assert_loc): New function.
37642         (process_assert_insertions): Sort and optimize assert locations
37643         to remove duplicates and push down identical assertions on
37644         edges to their destination block.
37645
37646 2017-01-27  Richard Biener  <rguenther@suse.de>
37647
37648         PR tree-optimization/79244
37649         * tree-vrp.c (remove_range_assertions): Forcefully propagate
37650         out SSA names even if abnormal.
37651
37652 2017-01-27  Jakub Jelinek  <jakub@redhat.com>
37653
37654         * realmpfr.h: Poison MPFR_RND{N,Z,U,D}.
37655         * gimple-ssa-sprintf.c (format_floating_max): Use GMP_RNDN
37656         instead of MPFR_RNDN.
37657
37658 2017-01-27  Richard Earnshaw  <rearnsha@arm.com>
37659
37660         PR target/79239
37661         * arm.c (arm_option_override): Don't call build_target_option_node
37662         until after doing all option overrides.
37663         (arm_valid_target_attribute_tree): Likewise.
37664
37665 2017-01-27  Martin Liska  <mliska@suse.cz>
37666
37667         * doc/invoke.texi (-fprofile-arcs): Document profiling support
37668         for {cd}tors and C++ {cd}tors.
37669
37670 2017-01-27  Dominik Vogt  <vogt@linux.vnet.ibm.com>
37671
37672         * config/s390/s390.md ("*setmem_long_and")
37673         ("*setmem_long_and_31z"): Use zero_extend instead of and.
37674
37675 2017-01-26  Martin Sebor  <msebor@redhat.com>
37676
37677         * gimple-ssa-sprintf.c (format_floating): Simplify the computation
37678         of precision.
37679
37680 2017-01-26  Martin Sebor  <msebor@redhat.com>
37681
37682         * gimple-ssa-sprintf.c (format_floating): Test HAVE_XFmode and
37683         HAVE_DFmode before using XFmode or DFmode.
37684         (parse_directive): Avoid using the z length modifier to avoid
37685         the ISO C++98 does not support the â€˜z’ gnu_printf length modifier.
37686
37687         PR middle-end/78703
37688         * gimple-ssa-sprintf.c (adjust_for_width_or_precision): Change
37689         to accept adjustment as an array.
37690         (get_int_range): New function.
37691         (struct directive): Make width and prec arrays.
37692         (directive::set_width, directive::set_precision): Call get_int_range.
37693         (format_integer, format_floating): Handle width and precision ranges.
37694         (format_string, parse_directive): Same.
37695
37696 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
37697
37698         PR debug/79129
37699         * dwarf2out.c (generate_skeleton_bottom_up): For children with
37700         comdat_type_p set, just clone them, but keep the children in the
37701         original DIE.
37702
37703         PR debug/78835
37704         * dwarf2out.c (prune_unused_types): Mark all functions with DIEs
37705         which have direct callers with -fvar-tracking-assignments enabled
37706         in the current TU.
37707         (resolve_addr): Avoid adding skeleton DIEs for DW_AT_call_origin
37708         inside of type units.
37709
37710 2017-01-26  Martin Sebor  <msebor@redhat.com>
37711
37712         PR middle-end/78703
37713         * gimple-ssa-sprintf.c (struct result_range): Add likely and
37714         unlikely counters.
37715         (struct format_result): Replace number_chars, number_chars_min,
37716         and number_chars_max with a single member of struct result_range.
37717         Remove bounded.
37718         (format_result::operator+=): Adjust.
37719         (struct fmtresult): Remove bounded.  Handle likely and unlikely
37720         counters.
37721         (fmtresult::adjust_for_width_or_precision): New function.
37722         (fmtresult:type_max_digits): New function.
37723         (bytes_remaining): Handle likely and unlikely counters.
37724         (min_bytes_remaining): Remove.
37725         (format_percent): Simplify.
37726         (format_integer, format_floating): Set likely and unlikely counters.
37727         (get_string_length, format_character, format_string): Same.
37728         (format_plain, should_warn_p): New function.
37729         (maybe_warn): Call should_warn_p.  Update diagnostic messages
37730         and handle those for all directives, including plain strings.
37731         (format_directive): Handle likely and unlikely counters.
37732         Remove unnecessary quoting from diagnostics.  Add an informational
37733         note.
37734         (add_bytes): Remove.
37735         (pass_sprintf_length::compute_format_length): Simplify.
37736         (try_substitute_return_value): Handle likely and unlikely counters.
37737
37738 2017-01-26  Carl Love  <cel@us.ibm.com>
37739
37740         * config/rs6000/rs6000-c (altivec_overloaded_builtins): Remove
37741         bogus entries for the P8V_BUILTIN_VEC_VGBBD built-ins
37742
37743 2017-01-26  Vladimir Makarov  <vmakarov@redhat.com>
37744
37745         PR target/79131
37746         * lra-assigns.c (setup_live_pseudos_and_spill_after_risky): Take
37747         endianess for subregs into account.
37748         * lra-constraints.c (lra_constraints): Do risky transformations
37749         always on the first iteration.
37750         * lra-lives.c (check_pseudos_live_through_calls): Add arg
37751         last_call_used_reg_set.
37752         (process_bb_lives): Define and use last_call_used_reg_set.
37753         * lra.c (lra): Always continue after lra_constraints on the first
37754         iteration.
37755
37756 2017-01-26  Kirill Yukhin  <kirill.yukhin@gmail.com>
37757
37758         * gcc.target/i386/avx512bw-kshiftlq-2.c: Use unsigned long long
37759         constant.
37760         * gcc.target/i386/avx512bw-kshiftrq-2.c: Ditto.
37761
37762 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
37763
37764         * config/i386/avx512fintrin.h (_ktest_mask16_u8,
37765         _ktestz_mask16_u8, _ktestc_mask16_u8, _kadd_mask16): Move to ...
37766         * config/i386/avx512dqintrin.h (_ktest_mask16_u8,
37767         _ktestz_mask16_u8, _ktestc_mask16_u8, _kadd_mask16): ... here.
37768         * config/i386/i386-builtin.def (__builtin_ia32_ktestchi,
37769         __builtin_ia32_ktestzhi, __builtin_ia32_kaddhi): Use
37770         OPTION_MASK_ISA_AVX512DQ instead of OPTION_MASK_ISA_AVX512F.
37771         * config/i386/sse.md (SWI1248_AVX512BWDQ2): New mode iterator.
37772         (kadd<mode>, ktest<mode>): Use it instead of SWI1248_AVX512BWDQ.
37773
37774 2017-01-26  Marek Polacek  <polacek@redhat.com>
37775
37776         PR c/79199
37777         * fold-const.c (operand_equal_p) [COND_EXPR]: Use OP_SAME_WITH_NULL
37778         for the third operand.
37779
37780 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
37781
37782         PR middle-end/79236
37783         * omp-low.c (struct omp_context): Add simt_stmt field.
37784         (scan_omp_for): Return omp_context *.
37785         (scan_omp_simd): Set simt_stmt on the non-_simt_ SIMD
37786         context to the _simt_ SIMD stmt.
37787         (lower_omp_for): For combined SIMD with sibling _simt_
37788         SIMD, make sure to use the same decls in _looptemp_
37789         clauses as in the sibling.
37790
37791 2017-01-26  David Sherwood  <david.sherwood@arm.com>
37792
37793         PR middle-end/79212
37794         * gimplify.c (omp_notice_variable): Add GOVD_SEEN flag to variables in
37795         all contexts.
37796
37797 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
37798
37799         PR target/70465
37800         * reg-stack.c (emit_swap_insn): Instead of fld a; fld b; fxchg %st(1);
37801         emit fld b; fld a; if possible.
37802
37803         * brig-builtins.def: Update copyright years.
37804         * config/arm/arm_acle_builtins.def: Update copyright years.
37805
37806 2017-01-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
37807
37808         PR target/79179
37809         * config/rs6000/vsx.md (vsx_extract_<mode>_store): Use wY
37810         constraint instead of o for the stxsd instruction.
37811
37812 2017-01-25  Carl Love  <cel@us.ibm.com>
37813
37814         * config/rs6000/rs6000-c (altivec_overloaded_builtins): Fix order
37815         of entries for ALTIVEC_BUILTIN_VEC_PACKS and P8V_BUILTIN_VEC_VGBBD.
37816
37817 2017-01-25  Jonathan Wakely  <jwakely@redhat.com>
37818
37819         * doc/invoke.texi (C++ Dialect Options): Fix typo.
37820
37821 2017-01-25  Richard Biener  <rguenther@suse.de>
37822
37823         PR tree-optimization/69264
37824         * target.def (vector_alignment_reachable): Improve documentation.
37825         * doc/tm.texi: Regenerate.
37826         * targhooks.c (default_builtin_vector_alignment_reachable): Simplify
37827         and add a comment.
37828         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Revert
37829         earlier changes with respect to TYPE_USER_ALIGN.
37830         (vector_alignment_reachable_p): Likewise.  Improve dumping.
37831
37832 2016-01-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
37833
37834         PR target/79145
37835         * config/arm/arm.md (xordi3): Force constant operand into a register
37836         for TARGET_IWMMXT.
37837
37838 2016-01-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
37839
37840         * doc/invoke.texi (-fstore-merging): Correct default optimization
37841         levels at which it is enabled.
37842         (-O): Move -fstore-merging from list to...
37843         (-O2): ... Here.
37844
37845 2017-01-25  Richard Biener  <rguenther@suse.de>
37846
37847         PR debug/78363
37848         * omp-expand.c: Include debug.h.
37849         (expand_omp_taskreg): Make sure to generate early debug before
37850         outlining anything from a function.
37851         (expand_omp_target): Likewise.
37852         (grid_expand_target_grid_body): Likewise.
37853
37854 2017-01-25  Maxim Ostapenko  <m.ostapenko@samsung.com>
37855
37856         PR lto/79061
37857         * asan.c (get_translation_unit_decl): New function.
37858         (asan_add_global): Extract modules file name from globals
37859         TRANSLATION_UNIT_DECL name.
37860
37861 2017-01-24  Eric Botcazou  <ebotcazou@adacore.com>
37862
37863         PR target/77439
37864         * config/arm/arm.c (arm_function_ok_for_sibcall): Add back restriction
37865         for long calls with APCS frame and VFP.
37866
37867 2017-01-24  David Malcolm  <dmalcolm@redhat.com>
37868
37869         * cfg.c (original_copy_tables_initialized_p): New function.
37870         * cfg.h (original_copy_tables_initialized_p): New decl.
37871         * cfgrtl.c (relink_block_chain): Guard the call to
37872         free_original_copy_tables with a call to
37873         original_copy_tables_initialized_p.
37874         * cgraph.h (symtab_node::native_rtl_p): New decl.
37875         * cgraphunit.c (symtab_node::native_rtl_p): New function.
37876         (symtab_node::needed_p): Don't assert for early assembly output
37877         for __RTL functions.
37878         (cgraph_node::finalize_function): Set "force_output" for __RTL
37879         functions.
37880         (cgraph_node::analyze): Bail out early for __RTL functions.
37881         (analyze_functions): Update assertion to support __RTL functions.
37882         (cgraph_node::expand): Bail out early for __RTL functions.
37883         * final.c (rest_of_clean_state): Don't call delete_tree_ssa for
37884         __RTL functions.
37885         * function.h (struct function): Update comment for field
37886         "pass_startwith".
37887         * gimple-expr.c: Include "tree-pass.h".
37888         (gimple_has_body_p): Return false for __RTL functions.
37889         * Makefile.in (OBJS): Add run-rtl-passes.o.
37890         * pass_manager.h (gcc::pass_manager::get_rest_of_compilation): New
37891         accessor.
37892         (gcc::pass_manager::get_clean_slate): New accessor.
37893         * passes.c: Include "insn-addr.h".
37894         (should_skip_pass_p): Add logging.  Update logic for running
37895         "expand" to be compatible with both __GIMPLE and __RTL.  Guard
37896         property-provider override so it is only done for gimple passes.
37897         Don't skip dfinit.
37898         (skip_pass): New function.
37899         (execute_one_pass): Call skip_pass when skipping passes.
37900         * read-md.c (md_reader::read_char): Support filtering
37901         the input to a subset of line numbers.
37902         (md_reader::md_reader): Initialize fields
37903         m_first_line and m_last_line.
37904         (md_reader::read_file_fragment): New function.
37905         * read-md.h (md_reader::read_file_fragment): New decl.
37906         (md_reader::m_first_line): New field.
37907         (md_reader::m_last_line): New field.
37908         * read-rtl-function.c (function_reader::create_function): Only
37909         create cfun if it doesn't already exist.  Set PROP_rtl on cfun's
37910         curr_properties.  Set DECL_INITIAL to a dummy block.
37911         (read_rtl_function_body_from_file_range): New function.
37912         * read-rtl-function.h (read_rtl_function_body_from_file_range):
37913         New decl.
37914         * run-rtl-passes.c: New file.
37915         * run-rtl-passes.h: New file.
37916
37917 2017-01-24  Jeff Law  <law@redhat.com>
37918
37919         * config/microblaze/microblaze.h (ASM_FORMAT_PRIVATE_NAME): Increase
37920         buffer size.
37921
37922 2017-01-24  Bin Cheng  <bin.cheng@arm.com>
37923
37924         PR tree-optimization/79159
37925         * tree-ssa-loop-niter.c (get_cst_init_from_scev): New function.
37926         (record_nonwrapping_iv): Improve boundary using above function if no
37927         value range information.
37928
37929 2017-01-24  Pekka Jääskeläinen  <pekka@parmance.com>
37930             Martin Jambor  <mjambor@suse.cz>
37931
37932         * brig-builtins.def: New file.
37933         * builtins.def (DEF_HSAIL_BUILTIN): New macro.
37934         (DEF_HSAIL_ATOMIC_BUILTIN): Likewise.
37935         (DEF_HSAIL_SAT_BUILTIN): Likewise.
37936         (DEF_HSAIL_INTR_BUILTIN): Likewise.
37937         (DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN): Likewise.
37938         * builtin-types.def (BT_INT8): New.
37939         (BT_INT16): Likewise.
37940         (BT_UINT8): Likewise.
37941         (BT_UINT16): Likewise.
37942         (BT_FN_ULONG): Likewise.
37943         (BT_FN_UINT_INT): Likewise.
37944         (BT_FN_UINT_ULONG): Likewise.
37945         (BT_FN_UINT_LONG): Likewise.
37946         (BT_FN_UINT_PTR): Likewise.
37947         (BT_FN_ULONG_PTR): Likewise.
37948         (BT_FN_INT8_FLOAT): Likewise.
37949         (BT_FN_INT16_FLOAT): Likewise.
37950         (BT_FN_UINT32_FLOAT): Likewise.
37951         (BT_FN_UINT16_FLOAT): Likewise.
37952         (BT_FN_UINT8_FLOAT): Likewise.
37953         (BT_FN_UINT64_FLOAT): Likewise.
37954         (BT_FN_UINT16_UINT32): Likewise.
37955         (BT_FN_UINT32_UINT16): Likewise.
37956         (BT_FN_UINT16_UINT16_UINT16): Likewise.
37957         (BT_FN_INT_PTR_INT): Likewise.
37958         (BT_FN_UINT_PTR_UINT): Likewise.
37959         (BT_FN_LONG_PTR_LONG): Likewise.
37960         (BT_FN_ULONG_PTR_ULONG): Likewise.
37961         (BT_FN_VOID_UINT64_UINT64): Likewise.
37962         (BT_FN_UINT8_UINT8_UINT8): Likewise.
37963         (BT_FN_INT8_INT8_INT8): Likewise.
37964         (BT_FN_INT16_INT16_INT16): Likewise.
37965         (BT_FN_INT_INT_INT): Likewise.
37966         (BT_FN_UINT_FLOAT_UINT): Likewise.
37967         (BT_FN_FLOAT_UINT_UINT): Likewise.
37968         (BT_FN_ULONG_UINT_UINT): Likewise.
37969         (BT_FN_ULONG_UINT_PTR): Likewise.
37970         (BT_FN_ULONG_ULONG_ULONG): Likewise.
37971         (BT_FN_UINT_UINT_UINT): Likewise.
37972         (BT_FN_VOID_UINT_PTR): Likewise.
37973         (BT_FN_UINT_UINT_PTR: Likewise.
37974         (BT_FN_UINT32_UINT64_PTR): Likewise.
37975         (BT_FN_INT_INT_UINT_UINT): Likewise.
37976         (BT_FN_UINT_UINT_UINT_UINT): Likewise.
37977         (BT_FN_UINT_UINT_UINT_PTR): Likewise.
37978         (BT_FN_UINT_ULONG_ULONG_UINT): Likewise.
37979         (BT_FN_ULONG_ULONG_ULONG_ULONG): Likewise.
37980         (BT_FN_LONG_LONG_UINT_UINT): Likewise.
37981         (BT_FN_ULONG_ULONG_UINT_UINT): Likewise.
37982         (BT_FN_VOID_UINT32_UINT64_PTR): Likewise.
37983         (BT_FN_VOID_UINT32_UINT32_PTR): Likewise.
37984         (BT_FN_UINT_UINT_UINT_UINT_UINT): Likewise.
37985         (BT_FN_UINT_FLOAT_FLOAT_FLOAT_FLOAT): Likewise.
37986         (BT_FN_ULONG_ULONG_ULONG_UINT_UINT): Likewise.
37987         * doc/frontends.texi: List BRIG FE.
37988         * doc/install.texi (Testing): Add BRIG tesring requirements.
37989         * doc/invoke.texi (Overall Options): Mention BRIG.
37990         * doc/standards.texi (Standards): Doucment BRIG HSA version.
37991
37992 2017-01-24  Richard Biener  <rguenther@suse.de>
37993
37994         PR translation/79208
37995         * ipa-devirt.c (odr_types_equivalent_p): Fix typo in diagnostic.
37996
37997 2017-01-24  Martin Jambor  <mjambor@suse.cz>
37998
37999         PR bootstrap/79198
38000         * ipa-prop.c (ipa_free_all_node_params): Call summary destructor.
38001         * ipa-prop.c (ipa_node_params_t::insert): Initialize fields known_csts
38002         and known_contexts.
38003
38004 2017-01-24  Aldy Hernandez  <aldyh@redhat.com>
38005
38006         PR middle-end/79123
38007         * gimple-ssa-warn-alloca.c (alloca_call_type): Make sure
38008         casts from signed to unsigned really don't have a range.
38009
38010 2017-01-24  Markus Trippelsdorf  <markus@trippelsdorf.de>
38011
38012         * gimple-ssa-sprintf.c (format_floating): Change MPFR_RNDx to
38013         GMP_RNDx for compatiblity.
38014
38015 2017-01-24  Martin Liska  <mliska@suse.cz>
38016
38017         PR bootstrap/79132
38018         * tree-ssa-reassoc.c (rewrite_expr_tree_parallel): Insert assert
38019         that would prevent us to call alloca with -1 as argument.
38020
38021 2017-01-24  Jakub Jelinek  <jakub@redhat.com>
38022
38023         * dwarf2out.c (output_compilation_unit_header, output_file_names):
38024         Avoid -Wformat-security warning.
38025
38026 2017-01-23  Andrew Pinski  <apinski@cavium.com>
38027
38028         * config/aarch64/aarch64.c (thunderx2t99_addrcost_table): Improve
38029         cost table.
38030
38031 2017-01-23  Martin Sebor  <msebor@redhat.com>
38032
38033         PR middle-end/78703
38034         * gimple-ssa-sprintf.c (warn_level): New global.
38035         (format_integer): Use it here and throughout the rest of the file.
38036         Use the same switch to compute sign as base.
38037         (maybe_warn): New function.
38038         (format_directive): Factor out warnings into maybe_warn.
38039         Add debugging output.  Use warn_level.
38040         (add_bytes): Use warn_level.
38041         (pass_sprintf_length::compute_format_length): Add debugging output.
38042         (try_substitute_return_value): Same.
38043         (pass_sprintf_length::handle_gimple_call): Set and use warn_level.
38044
38045         PR middle-end/78703
38046         * gimple-ssa-sprintf.c (struct format_result): Remove constant member.
38047         (struct fmtresult, format_integer, format_floating): Adjust.
38048         (fmtresult::fmtresult): Set max correctly in two argument ctor.
38049         (get_string_length, format_string,format_directive): Same.
38050         (pass_sprintf_length::compute_format_length): Same.
38051         (try_substitute_return_value): Simplify slightly.
38052
38053         PR middle-end/78703
38054         * gimple-ssa-sprintf.c (pass_sprintf_length::gate): Adjust formatting.
38055         (fmtresult::operator+=): Outlined.
38056         (struct fmtresult): Add ctors.
38057         (struct conversion_spec): Rename...
38058         (struct directive): ...to this.  Add and remove data members.
38059         (directive::set_width, directive::set_precision): New functions.
38060         (format_percent): Use fmtresult ctor.
38061         (get_width_and_precision): Remove.
38062         (format_integer): Make naming changes.  Avoid computing width and
38063         precision.
38064         (format_floating): Same.  Adjust indentation.
38065         (format_character, format_none): New functions.
38066         (format_string): Moved character handling to format_character.
38067         (format_directive): Remove arguments, change return type.
38068         (parse_directive): New function.
38069         (pass_sprintf_length::compute_format_length): Move directive
38070         parsing to parse_directive.
38071
38072 2017-01-23  Jakub Jelinek  <jakub@redhat.com>
38073
38074         * tree.h (assign_assembler_name_if_neeeded): Rename to ...
38075         (assign_assembler_name_if_needed): ... this.
38076         * tree.c (assign_assembler_name_if_neeeded): Rename to ...
38077         (assign_assembler_name_if_needed): ... this.
38078         (free_lang_data_in_cgraph): Adjust callers.
38079         * cgraphunit.c (cgraph_node::analyze): Likewise.
38080         * omp-expand.c (expand_omp_taskreg, expand_omp_target):
38081         Likewise.
38082
38083 2017-01-23  Richard Biener  <rguenther@suse.de>
38084
38085         PR tree-optimization/79088
38086         PR tree-optimization/79188
38087         * tree-ssa-threadupdate.c (mark_threaded_blocks): Move code
38088         resetting loop bounds after last path deletion.  Reset loop
38089         bounds of the target loop, make code match the comments.
38090         * tree-ssa-threadbackwards.c (pass_early_thread_jumps::execute):
38091         Make sure loops need no fixups.
38092
38093 2017-01-23  Kelvin Nilsen  <kelvin@gcc.gnu.org>
38094
38095         * config/rs6000/rs6000-builtin.def (VSIEDPF): Add scalar insert
38096         exponent support with double type for first argument.
38097         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Changed
38098         type returned by __builtin_vec_extract_sig,
38099         __builtin_vec_extract_sig_sp, and __builtin_vec_extract_sig_dp
38100         functions from "vector int" to "vector unsigned int" or from
38101         "vector long long int" to "vector unsigned long long int".
38102         Changed type returned by __builtin_vec_extract_exp,
38103         __builtin_vec_extract_exp_sp, and __builtin_vec_extract_exp_dp
38104         functions from "vector int" to "vector unsigned int" or from
38105         "vector long long int" to "vector unsigned long long int".
38106         Changed return type of __builtin_vec_test_data_class,
38107         __builtin_vec_test_data_class_sp, and
38108         __builtin_vec_test_data_class_dp from "vector int" to
38109         "vector bool int" or from "vector long long int" to "vector bool
38110         long long int" and changed second argument type from "unsigned
38111         int" to "int".  Added new overloaded function forms "vector float
38112         __builtin_vec_insert_exp (vector float, vector unsigned int)" and
38113         "vector float __builtin_vec_insert_exp_sp (vector float, vector
38114         unsigned int)" and "vector double __builtin_vec_insert_exp (vector
38115         double, vector unsigned long long int)" and "vector double
38116         __builtin_vec_insert_exp_dp (vector double, vector unsigned long
38117         long int)".  Changed return type of
38118         __builtin_scalar_test_data_class and
38119         __builtin_scalar_test_data_class_sp and
38120         __builtin_scalar_test_data_class_dp from "unsigned int" to "bool
38121         int" and changed second argument from "unsigned int" to "int".
38122         Changed type returned by __builtin_scalar_test_neg,
38123         __builtin_scalar_test_neg_sp, and __builtin_scalar_test_neg_dp
38124         from "int" to "bool int".  Added new overloaded function form
38125         "double __builtin_scalar_insert_exp (double, unsigned long long int)".
38126         * config/rs6000/vsx.md (xsiexpdpf): New insn for scalar insert
38127         exponent double-precision with floating point first argument.
38128         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Adjust
38129         documentation of scalar_test_data_class, scalar_test_neg,
38130         scalar_extract_sig, scalar_extract_exp, scalar_insert_exp,
38131         vector_extract_exp, vec_extract_sig, vec_insert_exp, and
38132         vec_test_data_class built-in functions to reflect refinements in
38133         their type signatures.
38134
38135 2017-01-23  Andreas Tobler  <andreast@gcc.gnu.org>
38136
38137         * config/aarch64/aarch64.c (aarch64_elf_asm_constructor): Increase
38138         size of buf.
38139         (aarch64_elf_asm_destructor): Likewise.
38140
38141 2017-01-23  Bernd Schmidt  <bschmidt@redhat.com>
38142
38143         PR rtl-optimization/78634
38144         * config/i386/i386.c (ix86_max_noce_ifcvt_seq_cost): New function.
38145         (TARGET_MAX_NOCE_IFCVT_SEQ_COST): Define.
38146         * ifcvt.c (noce_try_cmove): Add missing cost check.
38147
38148         PR rtl-optimization/71724
38149         * combine.c (if_then_else_cond): Look for situations where it is
38150         beneficial to undo the work of one of the recursive calls.
38151
38152 2017-01-23  Bin Cheng  <bin.cheng@arm.com>
38153
38154         PR tree-optimization/70754
38155         * tree-predcom.c (stmt_combining_refs): New parameter INSERT_BEFORE.
38156         (reassociate_to_the_same_stmt): New parameter INSERT_BEFORE.  Insert
38157         combined stmt before it if not NULL.
38158         (combine_chains): Process refs reversely and compute dominance point
38159         for root ref.
38160
38161 2017-01-23  Martin Liska  <mliska@suse.cz>
38162
38163         PR tree-optimization/79196
38164         * tree-ssa-strlen.c (fold_strstr_to_memcmp): Rename to ...
38165         (fold_strstr_to_strncmp): ... this.  Fold the pattern to strncmp
38166         instead of memcmp.
38167         (strlen_optimize_stmt): Call the renamed function.
38168
38169 2017-01-23  Michael Matz  <matz@suse.de>
38170
38171         PR tree-optimization/78384
38172         * tree-ssa-loop-split.c (patch_loop_exit): Use correct edge.
38173
38174 2017-01-23  Richard Biener  <rguenther@suse.de>
38175
38176         PR tree-optimization/79186
38177         * tree-vrp.c (register_new_assert_for): Make sure we've seen
38178         both incoming edges before moving an assert.
38179
38180 2017-01-23  Martin Jambor  <mjambor@suse.cz>
38181
38182         * ipa-prop.c (load_from_param_1): Removed.
38183         (load_from_unmodified_param): Bits from load_from_param_1 put back
38184         here.
38185         (load_from_param): Removed.
38186         (compute_complex_assign_jump_func): Removed stmt2 and just replaced it
38187         with stmt.  Reverted back to use of load_from_unmodified_param.
38188
38189 2017-01-23  Martin Jambor  <mjambor@suse.cz>
38190
38191         PR ipa/79108
38192         * ipa-prop.h (ipa_param_descriptor): Anotate with with GTY(()).
38193         (ipa_node_params): Annotate with GTY((for_user)).  Make descriptors
38194         field a pointer to garbage collected vector, mark lattices and
38195         ipcp_orig_node with GTY((skip)).
38196         (ipa_get_param_count): Adjust to descriptors being a pointer.
38197         (ipa_get_param): Likewise.
38198         (ipa_get_type): Likewise.
38199         (ipa_get_param_move_cost): Likewise.
38200         (ipa_set_param_used): Likewise.
38201         (ipa_get_controlled_uses): Likewise.
38202         (ipa_set_controlled_uses): Likewise.
38203         (ipa_is_param_used): Likewise.
38204         (ipa_node_params_t): Move into garbage collector.  New methods insert
38205         and remove.
38206         (ipa_node_params_sum): Annotate wth GTY(()).
38207         (ipa_check_create_node_params): Adjust to ipa_node_params_sum being
38208         garbage collected.
38209         (ipa_load_from_parm_agg): Adjust declaration.
38210         * ipa-icf.c (param_used_p): Adjust to descriptors being a pointer.
38211         * ipa-profile.c (ipa_profile): Likewise.
38212         * ipa-prop.c (ipa_get_param_decl_index_1): Likewise.
38213         (ipa_populate_param_decls): Make descriptors parameter garbage
38214         collected.
38215         (ipa_dump_param): Adjust to descriptors being a pointer.
38216         (ipa_alloc_node_params): Likewise.
38217         (ipa_initialize_node_params): Likewise.
38218         (load_from_param_1): Make descriptors parameter garbage collected.
38219         (load_from_unmodified_param): Likewise.
38220         (load_from_param): Likewise.
38221         (ipa_load_from_parm_agg): Likewise.
38222         (ipa_node_params::~ipa_node_params): Removed.
38223         (ipa_free_all_node_params): Remove call to delete operator.
38224         (ipa_node_params_t::insert): New.
38225         (ipa_node_params_t::remove): Likewise.
38226         (ipa_node_params_t::duplicate): Adjust to descriptors being a pointer,
38227         copy known_csts and known_contexts vectors.
38228         (ipa_read_node_info): Adjust to descriptors being a pointer.
38229         (ipcp_modif_dom_walker): Make m_descriptors field garbage
38230         collected.
38231         (ipcp_transform_function): Make descriptors variable garbage
38232         collected.
38233
38234 2017-01-23  Andrew Senkevich  <andrew.senkevich@intel.com>
38235
38236         * config/i386/avx512bwintrin.h: Add k-mask test, kortest intrinsics.
38237         * config/i386/avx512dqintrin.h: Ditto.
38238         * config/i386/avx512fintrin.h: Ditto.
38239         * config/i386/i386.c: Handle new builtins.
38240         * config/i386/i386-builtin.def: Add new builtins.
38241         * config/i386/sse.md (ktest<mode>, kortest<mode>): New.
38242         (UNSPEC_KORTEST, UNSPEC_KTEST): New.
38243
38244 2017-01-23  Jakub Jelinek  <jakub@redhat.com>
38245             Martin Liska  <mliska@suse.cz>
38246
38247         * asan.h: Define ASAN_USE_AFTER_SCOPE_ATTRIBUTE.
38248         * asan.c (asan_expand_poison_ifn): Support stores and use
38249         appropriate ASAN report function.
38250         * internal-fn.c (expand_ASAN_POISON_USE): New function.
38251         * internal-fn.def (ASAN_POISON_USE): Declare.
38252         * tree-into-ssa.c (maybe_add_asan_poison_write): New function.
38253         (maybe_register_def): Create ASAN_POISON_USE when sanitizing.
38254         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Remove
38255         ASAN_POISON calls w/o LHS.
38256         * tree-ssa.c (execute_update_addresses_taken): Create clobber
38257         for ASAN_MARK (UNPOISON, &x, ...) in order to prevent usage of a LHS
38258         from ASAN_MARK (POISON, &x, ...) coming to a PHI node.
38259         * gimplify.c (asan_poison_variables): Add attribute
38260         use_after_scope_memory to variables that really needs to live
38261         in memory.
38262         * tree-ssa.c (is_asan_mark_p): Do not rewrite into SSA when
38263         having the attribute.
38264
38265 2017-01-23  Martin Liska  <mliska@suse.cz>
38266
38267         * asan.c (create_asan_shadow_var): New function.
38268         (asan_expand_poison_ifn): Likewise.
38269         * asan.h (asan_expand_poison_ifn): New declaration.
38270         * internal-fn.c (expand_ASAN_POISON): Likewise.
38271         * internal-fn.def (ASAN_POISON): New builtin.
38272         * sanopt.c (pass_sanopt::execute): Expand
38273         asan_expand_poison_ifn.
38274         * tree-inline.c (copy_decl_for_dup_finish): Make function
38275         external.
38276         * tree-inline.h (copy_decl_for_dup_finish): Likewise.
38277         * tree-ssa.c (is_asan_mark_p): New function.
38278         (execute_update_addresses_taken): Rewrite local variables
38279         (identified just by use-after-scope as addressable) into SSA.
38280
38281 2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>
38282
38283         * doc/install.texi (Specific): opensource.apple.com uses https
38284         now. Remove trailing slash.
38285
38286 2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>
38287
38288         * README.Portability: Remove note on an Irix compatibility issue.
38289
38290 2017-01-22  Dimitry Andric <dim@FreeBSD.org>
38291
38292         * gcov.c (INCLUDE_ALGORITHM): Define.
38293         (INCLUDE_VECTOR): Define.
38294         No longer include <vector> and <algorithm> directly.
38295
38296 2017-01-21  Gerald Pfeifer  <gerald@pfeifer.com>
38297
38298         * doc/extend.texi (Thread-Local): Change www.akkadia.org reference
38299         to https.
38300         * doc/invoke.texi (Code Gen Options): Ditto.
38301
38302 2017-01-21  Jan Hubicka  <hubicka@ucw.cz>
38303
38304         PR lto/78407
38305         * cfg.c (update_bb_profile_for_threading): Fix updating of probablity.
38306
38307 2017-01-21  Bernd Schmidt  <bschmidt@redhat.com>
38308
38309         rtl-optimization/79125
38310         * cprop.c (local_cprop_pass): Handle cases where we make an
38311         unconditional trap.
38312
38313 2017-01-20  Segher Boessenkool  <segher@kernel.crashing.org>
38314
38315         PR target/61729
38316         PR target/77850
38317         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Adjust address to
38318         read from, for big endian.
38319
38320 2017-01-20  Jiong Wang  <jiong.wang@arm.com>
38321
38322         * config/aarch64/aarch64-builtins.c (aarch64_init_builtins): Register
38323         register pauth builtins for LP64 only.
38324
38325 2017-01-20  Marek Polacek  <polacek@redhat.com>
38326
38327         PR c/79152
38328         * gimplify.c (should_warn_for_implicit_fallthrough): Handle consecutive
38329         non-case labels.
38330
38331 2017-01-20  Alexander Monakov  <amonakov@ispras.ru>
38332
38333         * omp-expand.c (expand_omp_simd): Clear PROP_gimple_lomp_dev regardless
38334         of safelen status.
38335         * omp-offload.c (pass_omp_device_lower::gate): Use PROP_gimple_lomp_dev.
38336         * passes.c (dump_properties): Handle PROP_gimple_lomp_dev.
38337         * tree-inline.c (expand_call_inline): Propagate PROP_gimple_lomp_dev.
38338
38339 2017-01-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
38340
38341         PR target/71270
38342         * config/arm/arm.c (neon_valid_immediate): Reject vector constants
38343         in big-endian mode when they are not a single duplicated value.
38344
38345 2017-01-20  Richard Biener  <rguenther@suse.de>
38346
38347         * BASE-VER: Bump to 7.0.1.
38348
38349 2017-01-20  Alexander Monakov  <amonakov@ispras.ru>
38350
38351         * omp-low.c (omplow_simd_context): New struct.  Use it...
38352         (lower_rec_simd_input_clauses): ...here and...
38353         (lower_rec_input_clauses): ...here to hold common data.  Adjust all
38354         references to idx, lane, max_vf, is_simt.
38355
38356 2017-01-20  Graham Markall  <graham.markall@embecosm.com>
38357
38358         * config/arc/arc.h (LINK_SPEC): Use arclinux_nps emulation when
38359         mcpu=nps400.
38360
38361 2017-01-20  Martin Jambor  <mjambor@suse.cz>
38362
38363         * hsa.h: Renaed to hsa-common.h.  Adjusted a comment.
38364         * hsa.c: Renaed to hsa-common.c.  Change include of gt-hsa.h to
38365         gt-hsa-common.h.
38366         * Makefile.in (OBJS): Rename hsa.o to hsa-common.o.
38367         (GTFILES): Rename hsa.c to hsa-common.c.
38368         * hsa-brig.c: Change include of hsa.h to hsa-common.h.
38369         * hsa-dump.c: Likewise.
38370         * hsa-gen.c: Likewise.
38371         * hsa-regalloc.c: Likewise.
38372         * ipa-hsa.c: Likewise.
38373         * omp-expand.c: Likewise.
38374         * omp-low.c: Likewise.
38375         * toplev.c: Likewise.
38376
38377 2017-01-20  Marek Polacek  <polacek@redhat.com>
38378
38379         PR c/64279
38380         * doc/invoke.texi: Document -Wduplicated-branches.
38381         * fold-const.c (operand_equal_p): Handle MODIFY_EXPR, INIT_EXPR,
38382         COMPOUND_EXPR, PREDECREMENT_EXPR, PREINCREMENT_EXPR,
38383         POSTDECREMENT_EXPR, POSTINCREMENT_EXPR, CLEANUP_POINT_EXPR, EXPR_STMT,
38384         STATEMENT_LIST, and RETURN_EXPR.  For non-pure non-const functions
38385         return 0 only when not OEP_LEXICOGRAPHIC.
38386         (fold_build_cleanup_point_expr): Use the expression
38387         location when building CLEANUP_POINT_EXPR.
38388         * tree-core.h (enum operand_equal_flag): Add OEP_LEXICOGRAPHIC.
38389         * tree.c (add_expr): Handle error_mark_node.
38390
38391 2017-01-20  Martin Liska  <mliska@suse.cz>
38392
38393         PR lto/69188
38394         * tree-profile.c (init_ic_make_global_vars): Do not call
38395         finalize_decl.
38396         (gimple_init_gcov_profiler): Likewise.
38397
38398 2017-01-20  Martin Liska  <mliska@suse.cz>
38399
38400         PR ipa/71190
38401         * cgraph.h (maybe_create_reference): Remove argument and
38402         update comment.
38403         * cgraphclones.c (cgraph_node::create_virtual_clone): Remove one
38404         argument.
38405         * ipa-cp.c (create_specialized_node): Likewise.
38406         * symtab.c (symtab_node::maybe_create_reference): Handle
38407         VAR_DECLs and ADDR_EXPRs and select ipa_ref_use type.
38408
38409 2017-01-20  Martin Liska  <mliska@suse.cz>
38410
38411         * read-rtl-function.c (function_reader::create_function): Use
38412         build_decl instread of build_decl_stat.
38413
38414 2017-01-20  Andrew Senkevich  <andrew.senkevich@intel.com>
38415
38416         * config/i386/avx512bwintrin.h: Add k-mask registers shift intrinsics.
38417         * config/i386/avx512dqintrin.h: Ditto.
38418         * config/i386/avx512fintrin.h: Ditto.
38419         * config/i386/i386-builtin-types.def: Add new types.
38420         * config/i386/i386.c: Handle new types.
38421         * config/i386/i386-builtin.def (__builtin_ia32_kshiftliqi)
38422         (__builtin_ia32_kshiftlihi, __builtin_ia32_kshiftlisi)
38423         (__builtin_ia32_kshiftlidi, __builtin_ia32_kshiftriqi)
38424         (__builtin_ia32_kshiftrihi, __builtin_ia32_kshiftrisi)
38425         (__builtin_ia32_kshiftridi): New.
38426         * config/i386/sse.md (k<code><mode>): Rename *k<code><mode>.
38427
38428 2017-01-19  Segher Boessenkool  <segher@kernel.crashing.org>
38429
38430         PR target/78875
38431         PR target/79140
38432         * config/rs6000/rs6000.c (TARGET_STACK_PROTECT_GUARD): Unconditionally
38433         define to rs6000_init_stack_protect_guard.
38434         (rs6000_init_stack_protect_guard): New function.
38435
38436 2017-01-19  Matthew Fortune  <matthew.fortune@imgtec.com>
38437             Yunqiang Su  <yunqiang.su@imgtec.com>
38438
38439         * config.gcc (supported_defaults): Add madd4.
38440         (with_madd4): Add validation.
38441         (all_defaults): Add madd4.
38442         * config/mips/mips.opt (mmadd4): New option.
38443         * config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
38444         mmadd4.
38445         (TARGET_CPU_CPP_BUILTINS): Add builtin_define for
38446         __mips_no_madd4.
38447         (ISA_HAS_UNFUSED_MADD4): Gate with mips_madd4.
38448         (ISA_HAS_FUSED_MADD4): Likewise.
38449         * doc/invoke.texi (-mmadd4): Document the new option.
38450         * doc/install.texi (--with-madd4): Document the new option.
38451
38452 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
38453
38454         * config/aarch64/aarch64-builtins.c (enum aarch64_builtins): New
38455         entries for AARCH64_PAUTH_BUILTIN_XPACLRI,
38456         AARCH64_PAUTH_BUILTIN_PACIA1716, AARCH64_PAUTH_BUILTIN_AUTIA1716.
38457         (aarch64_init_pauth_hint_builtins): New.
38458         (aarch64_init_builtins): Call aarch64_init_pauth_hint_builtins.
38459         (aarch64_expand_builtin): Expand new builtins.
38460
38461 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
38462
38463         * reg-notes.def (CFA_TOGGLE_RA_MANGLE): New reg-note.
38464         * combine-stack-adj.c (no_unhandled_cfa): Handle
38465         REG_CFA_TOGGLE_RA_MANGLE.
38466         * dwarf2cfi.c (dwarf2out_frame_debug): Handle REG_CFA_TOGGLE_RA_MANGLE.
38467         * config/aarch64/aarch64.c (aarch64_expand_prologue): Generates DWARF
38468         info for return address signing.
38469         (aarch64_expand_epilogue): Likewise.
38470
38471 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
38472
38473         * config/aarch64/aarch64-opts.h (aarch64_function_type): New enum.
38474         * config/aarch64/aarch64-protos.h
38475         (aarch64_return_address_signing_enabled): New declaration.
38476         * config/aarch64/aarch64.c (aarch64_return_address_signing_enabled):
38477         New function.
38478         (aarch64_expand_prologue): Sign return address before it's pushed onto
38479         stack.
38480         (aarch64_expand_epilogue): Authenticate return address fetched from
38481         stack.
38482         (aarch64_override_options): Sanity check for ILP32 and ISA level.
38483         (aarch64_attributes): New function attributes for "sign-return-address".
38484         * config/aarch64/aarch64.md (UNSPEC_AUTI1716, UNSPEC_AUTISP,
38485         UNSPEC_PACI1716, UNSPEC_PACISP, UNSPEC_XPACLRI): New unspecs.
38486         ("*do_return"): Generate combined instructions according to key index.
38487         ("<pauth_mnem_prefix>sp", "<pauth_mnem_prefix1716", "xpaclri"): New.
38488         * config/aarch64/iterators.md (PAUTH_LR_SP, PAUTH_17_16): New integer
38489         iterators.
38490         (pauth_mnem_prefix, pauth_hint_num_a): New integer attributes.
38491         * config/aarch64/aarch64.opt (msign-return-address=): New.
38492         * doc/extend.texi (AArch64 Function Attributes): Documents
38493         "sign-return-address=".
38494         * doc/invoke.texi (AArch64 Options): Documents "-msign-return-address=".
38495
38496 2017-01-19  Matthew Fortune  <matthew.fortune@imgtec.com>
38497
38498         * doc/invoke.texi: Add missing -mlxc1-sxc1 options to
38499         overall option summary.
38500
38501 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
38502
38503         * config/aarch64/aarch64-arches.def: New entry for "armv8.3-a".
38504         * config/aarch64/aarch64.h (AARCH64_FL_V8_3, AARCH64_FL_FOR_ARCH8_3,
38505         AARCH64_ISA_V8_3, TARGET_ARMV8_3): New.
38506         * doc/invoke.texi (AArch64 Options): Document "armv8.3-a".
38507
38508 2017-01-19  Michael Meissner  <meissner@linux.vnet.ibm.com>
38509
38510         * config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Enable
38511         -mpower9-minmax by default for -mcpu=power9.
38512         (ISA_3_MASKS_IEEE): Require -mvsx-small-integer to enable IEEE
38513         128-bit floating point.
38514
38515 2017-01-20  Alan Modra  <amodra@gmail.com>
38516
38517         * config/rs6000/rs6000.md (cmpstrnsi, cmpstrsi): Fail if
38518         optimizing for size.
38519
38520 2017-01-20  Alan Modra  <amodra@gmail.com>
38521
38522         PR target/79144
38523         * config/rs6000/rs6000.c (expand_strn_compare): Get the asm name
38524         for strcmp and strncmp from corresponding builtin decl.
38525
38526 2017-01-19  Uros Bizjak  <ubizjak@gmail.com>
38527
38528         * config.gcc (x86_64-*-rtems*): Use i386/rtemself.h
38529         instead of i386/rtems-64.h.
38530         * config/i386/rtems-64.h: Remove.
38531
38532 2017-01-19  Uros Bizjak  <ubizjak@gmail.com>
38533
38534         PR target/78478
38535         Revert:
38536         2013-11-05  Uros Bizjak  <ubizjak@gmail.com>
38537
38538         * config/i386/rtemself.h (LONG_DOUBLE_TYPE_SIZE): New define.
38539
38540 2017-01-19  Tamar Christina  <tamar.christina@arm.com>
38541
38542         * config/aarch64/aarch64.c (aarch64_simd_gen_const_vector_dup):
38543         Change int to HOST_WIDE_INT.
38544         * config/aarch64/aarch64-protos.h
38545         (aarch64_simd_gen_const_vector_dup): Likewise.
38546         * config/aarch64/aarch64-simd.md: Add copysign<mode>3.
38547
38548 2017-01-19  David Malcolm  <dmalcolm@redhat.com>
38549
38550         * langhooks-def.h (lhd_type_for_size): New decl.
38551         (LANG_HOOKS_TYPE_FOR_SIZE): Define as lhd_type_for_size.
38552         * langhooks.c (lhd_type_for_size): New function, taken from
38553         lto_type_for_size.
38554
38555 2017-01-19  Pat Haugen  <pthaugen@us.ibm.com>
38556
38557         * config/rs6000/power9.md (power9-alu): Remove 'cmp' type and add
38558         define_bypass for CR latency.
38559         (power9-cracked-alu): Update bypass latency and remove power9-branch.
38560         (power9-alu2): Add define_bypass for CR latency.
38561         (power9-cmp): New.
38562         (power9-mul): Update insn latency.
38563         (power9-mul-compare): Update insn latency, bypass latency and remove
38564         power9-branch.
38565
38566 2016-01-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
38567
38568         * config/aarch64/aarch64-protos.h (aarch64_nopcrelative_literal_loads):
38569         Delete.
38570         * config/aarch64/aarch64.md
38571         (aarch64_reload_movcp<GPF_TF:mode><P:mode>): Delete reference to
38572         aarch64_nopcrelative_literal_loads.
38573         (aarch64_reload_movcp<VALL:mode><P:mode>): Likewise.
38574
38575 2017-01-19  Chenghua Xu  <paul.hua.gm@gmail.com>
38576
38577         * config/mips/mips.h (ISA_HAS_FUSED_MADD4): Enable for
38578         TARGET_LOONGSON_3A.
38579         (ISA_HAS_UNFUSED_MADD4): Exclude TARGET_LOONGSON_3A.
38580
38581 2017-01-19  Doug Gilmore  <doug.gilmore@imgtec.com>
38582
38583         PR target/78176
38584         * config.gcc (supported_defaults): Add lxc1-sxc1.
38585         (with_lxc1_sxc1): Add validation.
38586         (all_defaults): Add lxc1-sxc1.
38587         * config/mips/mips.opt (mlxc1-sxc1): New option.
38588         * config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
38589         mlxc1-sxc1.
38590         (TARGET_CPU_CPP_BUILTINS): Add builtin_define for
38591         __mips_no_lxc1_sxc1.
38592         (ISA_HAS_LXC1_SXC1): Gate with mips_lxc1_sxc1.
38593         * doc/invoke.texi (-mlxc1-sxc1): Document the new option.
38594         * doc/install.texi (--with-lxc1-sxc1): Document the new option.
38595
38596 2017-01-19  Richard Biener  <rguenther@suse.de>
38597
38598         PR tree-optimization/72488
38599         * tree-ssa-sccvn.c (run_scc_vn): When we abort the VN make
38600         sure to restore SSA info.
38601         * tree-ssa.c (verify_ssa): Verify SSA info is not shared.
38602
38603 2017-01-19  Richard Earnshaw  <rearnsha@arm.com>
38604
38605         PR rtl-optimization/79121
38606         * expr.c (expand_expr_real_2, case LSHIFT_EXPR): Look at the signedness
38607         of the inner type when shifting an extended value.
38608
38609 2017-01-17  Jan Hubicka  <hubicka@ucw.cz>
38610
38611         PR lto/78407
38612         * symtab.c (symtab_node::equal_address_to): Fix comparing of
38613         interposable aliases.
38614
38615 2017-01-18  Peter Bergner  <bergner@vnet.ibm.com>
38616
38617         PR target/78516
38618         * config/rs6000/spe.md (mov_si<mode>_e500_subreg0): Fix constraints.
38619         Use the evmergelohi instruction.
38620         (mov_si<mode>_e500_subreg4_2_le): Likewise.
38621         (mov_sitf_e500_subreg8_2_be): Likewise.
38622         (mov_sitf_e500_subreg12_2_le): Likewise.
38623         (mov_si<mode>_e500_subreg0_2_le): Fix constraints.
38624         (mov_si<mode>_e500_subreg4_2_be): Likewise.
38625         (mov_sitf_e500_subreg8_2_le): Likewise.
38626         (mov_sitf_e500_subreg12_2_be): Likewise.
38627
38628 2017-01-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
38629
38630         * config/rs6000/altivec.md (altivec_vbpermq): Change "type"
38631         attribute from vecsimple to vecperm.
38632         (altivec_vbpermq2): Likewise.
38633
38634 2017-01-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
38635
38636         PR target/79040
38637         * config/rs6000/altivec.h: Fix typo of vec_cntlz to vec_cnttz.
38638
38639 2017-01-18  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
38640         * config/rs6000/rs6000-protos.h (expand_strn_compare): Add arg.
38641         * config/rs6000/rs6000.c (expand_strn_compare): Add ability to expand
38642         strcmp. Fix bug where comparison didn't stop with zero byte. Fix
38643         case where N arg is SIZE_MAX.
38644         * config/rs6000/rs6000.md (cmpstrnsi): Args to expand_strn_compare.
38645         (cmpstrsi): Add pattern.
38646
38647 2017-01-18  Michael Meissner  <meissner@linux.vnet.ibm.com>
38648
38649         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
38650         __builtin_vec_revb builtins.
38651         * config/rs6000/rs6000-builtins.def (P9V_BUILTIN_XXBRQ_V16QI): Add
38652         built-in functions to support generation of the ISA 3.0 XXBR<x>
38653         vector byte reverse instructions.
38654         (P9V_BUILTIN_XXBRQ_V1TI): Likewise.
38655         (P9V_BUILTIN_XXBRD_V2DI): Likewise.
38656         (P9V_BUILTIN_XXBRD_V2DF): Likewise.
38657         (P9V_BUILTIN_XXBGW_V4SI): Likewise.
38658         (P9V_BUILTIN_XXBGW_V4SF): Likewise.
38659         (P9V_BUILTIN_XXBGH_V8HI): Likewise.
38660         (P9V_BUILTIN_VEC_REVB): Likewise.
38661         * config/rs6000/vsx.md (p9_xxbrq_v1ti): New insns/expanders to
38662         generate the ISA 3.0 XXBR<x> vector byte reverse instructions.
38663         (p9_xxbrq_v16qi): Likewise.
38664         (p9_xxbrd_<mode>, VSX_D iterator): Likewise.
38665         (p9_xxbrw_<mode>, VSX_W iterator): Likewise.
38666         (p9_xxbrh_v8hi): Likewise.
38667         * config/rs6000/altivec.h (vec_revb): Define if ISA 3.0.
38668         * doc/extend.texi (RS/6000 Altivec Built-ins): Document the
38669         vec_revb built-in functions.
38670
38671 2017-01-18  Uros Bizjak  <ubizjak@gmail.com>
38672
38673         PR rtl-optimization/78952
38674         * config/i386/i386.md (any_extract): New code iterator.
38675         (*insvqi_2): Use any_extract for source operand.
38676         (*insvqi_3): Use any_shiftrt for source operand.
38677
38678 2017-01-18  Wilco Dijkstra  <wdijkstr@arm.com>
38679
38680         * config/aarch64/aarch64.c (aarch64_sched_adjust_priority)
38681         New function.
38682         (TARGET_SCHED_ADJUST_PRIORITY): Define target hook.
38683
38684 2017-01-18  Matthias Klose  <doko@ubuntu.com>
38685
38686         * doc/install.texi: Allow default for --with-target-bdw-gc-include.
38687
38688 2016-01-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
38689
38690         * config/rs6000/altivec.h (vec_bperm): Change #define.
38691         * config/rs6000/altivec.md (UNSPEC_VBPERMD): New enum constant.
38692         (altivec_vbpermq2): New define_insn.
38693         (altivec_vbpermd): Likewise.
38694         * config/rs6000/rs6000-builtin.def (VBPERMQ2): New monomorphic
38695         function interface.
38696         (VBPERMD): Likewise.
38697         (VBPERM): New polymorphic function interface.
38698         * config/rs6000/r6000-c.c (altivec_overloaded_builtins_table):
38699         Add entries for P9V_BUILTIN_VEC_VBPERM.
38700         * doc/extend.texi: Add interfaces for vec_bperm.
38701
38702 2017-01-18  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
38703
38704         * config/s390/s390-c.c (s390_expand_overloaded_builtin): Downcase
38705         first letter of error messages.
38706         (s390_resolve_overloaded_builtin): Likewise.
38707         * config/s390/s390.c (s390_expand_builtin): Likewise.
38708         (s390_invalid_arg_for_unprototyped_fn): Likewise.
38709         (s390_valid_target_attribute_inner_p): Likewise.
38710         * config/s390/s390.md ("tabort"): Likewise.
38711
38712 2017-01-18  Toma Tabacu  <toma.tabacu@imgtec.com>
38713
38714         * config/mips/mips.h (ISA_HAS_DIV3): Remove unused macro.
38715         (ISA_AVOID_DIV_HILO): New macro.
38716         (ISA_HAS_DIV): Use new ISA_AVOID_DIV_HILO macro.
38717         (ISA_HAS_DDIV): Likewise.
38718
38719 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
38720
38721         * doc/invoke.texi (fabi-version): Correct number of occurrences.
38722
38723 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
38724
38725         * doc/invoke.texi (fabi-version): Spelling fix.
38726
38727 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
38728
38729         PR c++/70182
38730         * doc/invoke.texi (fabi-version): Mention mangling fix for
38731         operator names.
38732
38733 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
38734
38735         PR c++/77489
38736         * doc/invoke.texi (fabi-version): Document discriminator mangling.
38737
38738 2017-01-17  Segher Boessenkool  <segher@kernel.crashing.org>
38739
38740         PR target/78875
38741         * config/rs6000/rs6000-opts.h (stack_protector_guard): New enum.
38742         * config/rs6000/rs6000.c (rs6000_option_override_internal): Handle
38743         the new options.
38744         * config/rs6000/rs6000.md (stack_protect_set): Handle the new more
38745         flexible settings.
38746         (stack_protect_test): Ditto.
38747         * config/rs6000/rs6000.opt (mstack-protector-guard=,
38748         mstack-protector-guard-reg=, mstack-protector-guard-offset=): New
38749         options.
38750         * doc/invoke.texi (Option Summary) [RS/6000 and PowerPC Options]:
38751         Add -mstack-protector-guard=, -mstack-protector-guard-reg=, and
38752         -mstack-protector-guard-offset=.
38753         (RS/6000 and PowerPC Options): Ditto.
38754
38755 2017-01-17  Uros Bizjak  <ubizjak@gmail.com>
38756
38757         * config/i386/i386.h (MASK_CLASS_P): New define.
38758         * config/i386/i386.c (inline_secondary_memory_needed): Ensure that
38759         there are no registers from different register sets also when
38760         mask registers are used.  Update function comment.
38761         * config/i386/i386.md (*movsi_internal): Split (*k/*krm) alternative
38762         to (*k/*r) and (*k/*km) alternatives.
38763
38764 2017-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
38765
38766         * config/aarch64/aarch64.md (eh_return): Remove pattern and splitter.
38767         * config/aarch64/aarch64.h (AARCH64_EH_STACKADJ_REGNUM): Remove.
38768         (EH_RETURN_HANDLER_RTX): New define.
38769         * config/aarch64/aarch64.c (aarch64_frame_pointer_required):
38770         Force frame pointer in EH return functions.
38771         (aarch64_expand_epilogue): Add barrier for eh_return.
38772         (aarch64_final_eh_return_addr): Remove.
38773         (aarch64_eh_return_handler_rtx): New function.
38774         * config/aarch64/aarch64-protos.h (aarch64_final_eh_return_addr):
38775         Remove.
38776         (aarch64_eh_return_handler_rtx): New prototype.
38777
38778 2017-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
38779
38780         * config/rs6000/altivec.h (vec_rlmi): New #define.
38781         (vec_vrlnm): Likewise.
38782         (vec_rlnm): Likewise.
38783         * config/rs6000/altivec.md (UNSPEC_VRLMI): New UNSPEC enum value.
38784         (UNSPEC_VRLNM): Likewise.
38785         (VIlong): New mode iterator.
38786         (altivec_vrl<VI_char>mi): New define_insn.
38787         (altivec_vrl<VI_char>nm): Likewise.
38788         * config/rs6000/rs6000-builtin.def (VRLWNM): New monomorphic
38789         function entry.
38790         (VRLDNM): Likewise.
38791         (RLNM): New polymorphic function entry.
38792         (VRLWMI): New monomorphic function entry.
38793         (VRLDMI): Likewise.
38794         (RLMI): New polymorphic function entry.
38795         * config/rs6000/r6000-c.c (altivec_overloaded_builtin_table): Add
38796         new entries for P9V_BUILTIN_VEC_RLMI and P9V_BUILTIN_VEC_RLNM.
38797         * doc/extend.texi: Add description of vec_rlmi, vec_rlnm, and
38798         vec_vrlnm.
38799
38800 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
38801
38802         PR debug/78839
38803         * dwarf2out.c (field_byte_offset): Restore the
38804         PCC_BITFIELD_TYPE_MATTERS behavior for INTEGER_CST DECL_FIELD_OFFSET
38805         and DECL_FIELD_BIT_OFFSET.  Use fold_build2 instead of build2 + fold.
38806         (analyze_variants_discr, gen_variant_part): Use fold_build2 instead
38807         of build2 + fold.
38808
38809 2017-01-17  Eric Botcazou  <ebotcazou@adacore.com>
38810
38811         PR ada/67205
38812         * config/aarch64/aarch64.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define
38813
38814 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
38815
38816         PR debug/71669
38817         * dwarf2out.c (add_data_member_location_attribute): For constant
38818         offset bitfield emit for -gdwarf-5 DW_AT_data_bit_offset attribute
38819         instead of DW_AT_data_member_location, DW_AT_bit_offset and
38820         DW_AT_byte_size attributes.
38821
38822 2017-01-17  Eric Botcazou  <ebotcazou@adacore.com>
38823
38824         * config/rs6000/rs6000.c (rs6000_emit_move): Also use a TOC reference
38825         after forcing to constant memory when the code model is medium.
38826
38827 2017-01-17  Julia Koval  <julia.koval@intel.com>
38828
38829         PR target/76731
38830         * config/i386/avx512fintrin.h
38831         (_mm512_i32gather_ps): Change __addr type to void const*.
38832         (_mm512_mask_i32gather_ps): Ditto.
38833         (_mm512_i32gather_pd): Ditto.
38834         (_mm512_mask_i32gather_pd): Ditto.
38835         (_mm512_i64gather_ps): Ditto.
38836         (_mm512_mask_i64gather_ps): Ditto.
38837         (_mm512_i64gather_pd): Ditto.
38838         (_mm512_mask_i64gather_pd): Ditto.
38839         (_mm512_i32gather_epi32): Ditto.
38840         (_mm512_mask_i32gather_epi32): Ditto.
38841         (_mm512_i32gather_epi64): Ditto.
38842         (_mm512_mask_i32gather_epi64): Ditto.
38843         (_mm512_i64gather_epi32): Ditto.
38844         (_mm512_mask_i64gather_epi32): Ditto.
38845         (_mm512_i64gather_epi64): Ditto.
38846         (_mm512_mask_i64gather_epi64): Ditto.
38847         (_mm512_i32scatter_ps): Change __addr type to void*.
38848         (_mm512_mask_i32scatter_ps): Ditto.
38849         (_mm512_i32scatter_pd): Ditto.
38850         (_mm512_mask_i32scatter_pd): Ditto.
38851         (_mm512_i64scatter_ps): Ditto.
38852         (_mm512_mask_i64scatter_ps): Ditto.
38853         (_mm512_i64scatter_pd): Ditto.
38854         (_mm512_mask_i64scatter_pd): Ditto.
38855         (_mm512_i32scatter_epi32): Ditto.
38856         (_mm512_mask_i32scatter_epi32): Ditto.
38857         (_mm512_i32scatter_epi64): Ditto.
38858         (_mm512_mask_i32scatter_epi64): Ditto.
38859         (_mm512_i64scatter_epi32): Ditto.
38860         (_mm512_mask_i64scatter_epi32): Ditto.
38861         (_mm512_i64scatter_epi64): Ditto.
38862         (_mm512_mask_i64scatter_epi64): Ditto.
38863         * config/i386/avx512pfintrin.h
38864         (_mm512_mask_prefetch_i32gather_pd): Change __addr type to void const*.
38865         (_mm512_mask_prefetch_i32gather_ps): Ditto.
38866         (_mm512_mask_prefetch_i64gather_pd): Ditto.
38867         (_mm512_mask_prefetch_i64gather_ps): Ditto.
38868         (_mm512_prefetch_i32scatter_pd): Change __addr type to void*.
38869         (_mm512_prefetch_i32scatter_ps): Ditto.
38870         (_mm512_mask_prefetch_i32scatter_pd): Ditto.
38871         (_mm512_mask_prefetch_i32scatter_ps): Ditto.
38872         (_mm512_prefetch_i64scatter_pd): Ditto.
38873         (_mm512_prefetch_i64scatter_ps): Ditto.
38874         (_mm512_mask_prefetch_i64scatter_pd): Ditto.
38875         (_mm512_mask_prefetch_i64scatter_ps): Ditto.
38876         * config/i386/avx512vlintrin.h
38877         (_mm256_mmask_i32gather_ps): Change __addr type to void const*.
38878         (_mm_mmask_i32gather_ps): Ditto.
38879         (_mm256_mmask_i32gather_pd): Ditto.
38880         (_mm_mmask_i32gather_pd): Ditto.
38881         (_mm256_mmask_i64gather_ps): Ditto.
38882         (_mm_mmask_i64gather_ps): Ditto.
38883         (_mm256_mmask_i64gather_pd): Ditto.
38884         (_mm_mmask_i64gather_pd): Ditto.
38885         (_mm256_mmask_i32gather_epi32): Ditto.
38886         (_mm_mmask_i32gather_epi32): Ditto.
38887         (_mm256_mmask_i32gather_epi64): Ditto.
38888         (_mm_mmask_i32gather_epi64): Ditto.
38889         (_mm256_mmask_i64gather_epi32): Ditto.
38890         (_mm_mmask_i64gather_epi32): Ditto.
38891         (_mm256_mmask_i64gather_epi64): Ditto.
38892         (_mm_mmask_i64gather_epi64): Ditto.
38893         (_mm256_i32scatter_ps): Change __addr type to void*.
38894         (_mm256_mask_i32scatter_ps): Ditto.
38895         (_mm_i32scatter_ps): Ditto.
38896         (_mm_mask_i32scatter_ps): Ditto.
38897         (_mm256_i32scatter_pd): Ditto.
38898         (_mm256_mask_i32scatter_pd): Ditto.
38899         (_mm_i32scatter_pd): Ditto.
38900         (_mm_mask_i32scatter_pd): Ditto.
38901         (_mm256_i64scatter_ps): Ditto.
38902         (_mm256_mask_i64scatter_ps): Ditto.
38903         (_mm_i64scatter_ps): Ditto.
38904         (_mm_mask_i64scatter_ps): Ditto.
38905         (_mm256_i64scatter_pd): Ditto.
38906         (_mm256_mask_i64scatter_pd): Ditto.
38907         (_mm_i64scatter_pd): Ditto.
38908         (_mm_mask_i64scatter_pd): Ditto.
38909         (_mm256_i32scatter_epi32): Ditto.
38910         (_mm256_mask_i32scatter_epi32): Ditto.
38911         (_mm_i32scatter_epi32): Ditto.
38912         (_mm_mask_i32scatter_epi32): Ditto.
38913         (_mm256_i32scatter_epi64): Ditto.
38914         (_mm256_mask_i32scatter_epi64): Ditto.
38915         (_mm_i32scatter_epi64): Ditto.
38916         (_mm_mask_i32scatter_epi64): Ditto.
38917         (_mm256_i64scatter_epi32): Ditto.
38918         (_mm256_mask_i64scatter_epi32): Ditto.
38919         (_mm_i64scatter_epi32): Ditto.
38920         (_mm_mask_i64scatter_epi32): Ditto.
38921         (_mm256_i64scatter_epi64): Ditto.
38922         (_mm256_mask_i64scatter_epi64): Ditto.
38923         (_mm_i64scatter_epi64): Ditto.
38924         (_mm_mask_i64scatter_epi64): Ditto.
38925         * config/i386/i386-builtin-types.def (V16SF_V16SF_PCFLOAT_V16SI_HI_INT)
38926         (V8DF_V8DF_PCDOUBLE_V8SI_QI_INT, V8SF_V8SF_PCFLOAT_V8DI_QI_INT)
38927         (V8DF_V8DF_PCDOUBLE_V8DI_QI_INT, V16SI_V16SI_PCINT_V16SI_HI_INT)
38928         (V8DI_V8DI_PCINT64_V8SI_QI_INT, V8SI_V8SI_PCINT_V8DI_QI_INT)
38929         (V8DI_V8DI_PCINT64_V8DI_QI_INT, V2DF_V2DF_PCDOUBLE_V4SI_QI_INT)
38930         (V4DF_V4DF_PCDOUBLE_V4SI_QI_INT, V2DF_V2DF_PCDOUBLE_V2DI_QI_INT)
38931         (V4DF_V4DF_PCDOUBLE_V4DI_QI_INT, V4SF_V4SF_PCFLOAT_V4SI_QI_INT)
38932         (V8SF_V8SF_PCFLOAT_V8SI_QI_INT, V4SF_V4SF_PCFLOAT_V2DI_QI_INT)
38933         (V4SF_V4SF_PCFLOAT_V4DI_QI_INT, V2DI_V2DI_PCINT64_V4SI_QI_INT)
38934         (V4DI_V4DI_PCINT64_V4SI_QI_INT, V2DI_V2DI_PCINT64_V2DI_QI_INT)
38935         (V4DI_V4DI_PCINT64_V4DI_QI_INT, V4SI_V4SI_PCINT_V4SI_QI_INT)
38936         (V8SI_V8SI_PCINT_V8SI_QI_INT, V4SI_V4SI_PCINT_V2DI_QI_INT)
38937         (V4SI_V4SI_PCINT_V4DI_QI_INT, VOID_PFLOAT_HI_V16SI_V16SF_INT)
38938         (VOID_PFLOAT_QI_V8SI_V8SF_INT, VOID_PFLOAT_QI_V4SI_V4SF_INT)
38939         (VOID_PDOUBLE_QI_V8SI_V8DF_INT, VOID_PDOUBLE_QI_V4SI_V4DF_INT)
38940         (VOID_PDOUBLE_QI_V4SI_V2DF_INT, VOID_PFLOAT_QI_V8DI_V8SF_INT)
38941         (VOID_PFLOAT_QI_V4DI_V4SF_INT, VOID_PFLOAT_QI_V2DI_V4SF_INT)
38942         (VOID_PDOUBLE_QI_V8DI_V8DF_INT, VOID_PDOUBLE_QI_V4DI_V4DF_INT)
38943         (VOID_PDOUBLE_QI_V2DI_V2DF_INT, VOID_PINT_HI_V16SI_V16SI_INT)
38944         (VOID_PINT_QI_V8SI_V8SI_INT, VOID_PINT_QI_V4SI_V4SI_INT)
38945         (VOID_PLONGLONG_QI_V8SI_V8DI_INT, VOID_PLONGLONG_QI_V4SI_V4DI_INT)
38946         (VOID_PLONGLONG_QI_V4SI_V2DI_INT, VOID_PINT_QI_V8DI_V8SI_INT)
38947         (VOID_PINT_QI_V4DI_V4SI_INT, VOID_PINT_QI_V2DI_V4SI_INT)
38948         (VOID_PLONGLONG_QI_V8DI_V8DI_INT, VOID_QI_V8SI_PCINT64_INT_INT)
38949         (VOID_PLONGLONG_QI_V4DI_V4DI_INT, VOID_PLONGLONG_QI_V2DI_V2DI_INT)
38950         (VOID_HI_V16SI_PCINT_INT_INT, VOID_QI_V8DI_PCINT64_INT_INT)
38951         (VOID_QI_V8DI_PCINT_INT_INT): Remove.
38952         (V16SF_V16SF_PCVOID_V16SI_HI_INT,  V8DF_V8DF_PCVOID_V8SI_QI_INT)
38953         (V8SF_V8SF_PCVOID_V8DI_QI_INT, V8DF_V8DF_PCVOID_V8DI_QI_INT)
38954         (V16SI_V16SI_PCVOID_V16SI_HI_INT, V8DI_V8DI_PCVOID_V8SI_QI_INT)
38955         (V8SI_V8SI_PCVOID_V8DI_QI_INT, V8DI_V8DI_PCVOID_V8DI_QI_INT)
38956         (VOID_PVOID_HI_V16SI_V16SF_INT, VOID_PVOID_QI_V8SI_V8DF_INT)
38957         (VOID_PVOID_QI_V8DI_V8SF_INT, VOID_PVOID_QI_V8DI_V8DF_INT)
38958         (VOID_PVOID_HI_V16SI_V16SI_INT, VOID_PVOID_QI_V8SI_V8DI_INT)
38959         (VOID_PVOID_QI_V8DI_V8SI_INT, VOID_PVOID_QI_V8DI_V8DI_INT)
38960         (V2DF_V2DF_PCVOID_V4SI_QI_INT, V4DF_V4DF_PCVOID_V4SI_QI_INT)
38961         (V2DF_V2DF_PCVOID_V2DI_QI_INT, V4DF_V4DF_PCVOID_V4DI_QI_INT
38962         (V4SF_V4SF_PCVOID_V4SI_QI_INT, V8SF_V8SF_PCVOID_V8SI_QI_INT)
38963         (V4SF_V4SF_PCVOID_V2DI_QI_INT, V4SF_V4SF_PCVOID_V4DI_QI_INT)
38964         (V2DI_V2DI_PCVOID_V4SI_QI_INT, V4DI_V4DI_PCVOID_V4SI_QI_INT)
38965         (V2DI_V2DI_PCVOID_V2DI_QI_INT, V4DI_V4DI_PCVOID_V4DI_QI_INT)
38966         (V4SI_V4SI_PCVOID_V4SI_QI_INT, V8SI_V8SI_PCVOID_V8SI_QI_INT)
38967         (V4SI_V4SI_PCVOID_V2DI_QI_INT, V4SI_V4SI_PCVOID_V4DI_QI_INT)
38968         (VOID_PVOID_QI_V8SI_V8SF_INT, VOID_PVOID_QI_V4SI_V4SF_INT)
38969         (VOID_PVOID_QI_V4SI_V4DF_INT, VOID_PVOID_QI_V4SI_V2DF_INT)
38970         (VOID_PVOID_QI_V4DI_V4SF_INT, VOID_PVOID_QI_V2DI_V4SF_INT)
38971         (VOID_PVOID_QI_V4DI_V4DF_INT, VOID_PVOID_QI_V2DI_V2DF_INT)
38972         (VOID_PVOID_QI_V8SI_V8SI_INT, VOID_PVOID_QI_V4SI_V4SI_INT)
38973         (VOID_PVOID_QI_V4SI_V4DI_INT, VOID_PVOID_QI_V4SI_V2DI_INT)
38974         (VOID_PVOID_QI_V4DI_V4SI_INT, VOID_PVOID_QI_V2DI_V4SI_INT)
38975         (VOID_PVOID_QI_V4DI_V4DI_INT, VOID_PVOID_QI_V2DI_V2DI_INT)
38976         (VOID_QI_V8SI_PCVOID_INT_INT, VOID_HI_V16SI_PCVOID_INT_INT)
38977         (VOID_QI_V8DI_PCVOID_INT_INT): Add.
38978         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Adjust builtin
38979         definitions accordingly.
38980
38981 2017-01-17  Kito Cheng  <kito.cheng@gmail.com>
38982             Kuan-Lin Chen  <kuanlinchentw@gmail.com>
38983
38984         PR target/79079
38985         * internal-fn.c (expand_mul_overflow): Use convert_modes instead of
38986         gen_lowpart.
38987
38988 2017-01-17  Vladimir Makarov  <vmakarov@redhat.com>
38989
38990         PR target/79058
38991         * ira-conflicts.c (ira_build_conflicts): Update total conflict
38992         hard regs for inner regno.
38993
38994 2017-01-17  Martin Liska  <mliska@suse.cz>
38995
38996         PR ipa/71207
38997         * ipa-polymorphic-call.c (contains_type_p): Fix wrong
38998         assumption and add comment.
38999
39000 2017-01-17  Nathan Sidwell  <nathan@acm.org>
39001
39002         * ipa-visibility.c (localize_node): New function, broken out of ...
39003         (function_and_variable_visibility): ... here. Call it.
39004
39005 2017-01-17  Jan Hubicka  <hubicka@ucw.cz>
39006
39007         PR middle-end/77445
39008         * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges):
39009         correctly set frequency of oudgoing edge.
39010         (duplicate_thread_path): Fix profile updating.
39011
39012 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
39013
39014         PR other/79046
39015         * configure.ac: Add GCC_BASE_VER.
39016         * Makefile.in (version): Use @get_gcc_base_ver@ instead of cat to get
39017         version from BASE-VER file.
39018         (CFLAGS-gcc.o): Add -DBASEVER=$(BASEVER_s).
39019         (gcc.o): Depend on $(BASEVER).
39020         * common.opt (dumpfullversion): New option.
39021         * gcc.c (driver_handle_option): Handle OPT_dumpfullversion.
39022         * doc/invoke.texi: Document -dumpfullversion.
39023         * doc/install.texi: Document --with-gcc-major-version-only.
39024         * configure: Regenerated.
39025
39026 2017-01-17  Richard Biener  <rguenther@suse.de>
39027
39028         PR tree-optimization/71433
39029         * tree-vrp.c (register_new_assert_for): Merge same asserts
39030         on all incoming edges.
39031         (process_assert_insertions_for): Handle insertions at the
39032         beginning of BBs.
39033
39034 2017-01-17  Gerald Pfeifer  <gerald@pfeifer.com>
39035
39036         * config/i386/cygwin.h (LIBGCJ_SONAME): Remove.
39037         * config/i386/mingw32.h (LIBGCJ_SONAME): Remove.
39038
39039 2017-01-17  Kaz Kojima  <kkojima@gcc.gnu.org>
39040
39041         PR target/78633
39042         * config/sh/sh.md (cmpeqsi_t+1): Call copy_rtx to avoid invalid
39043         RTL sharing.
39044
39045 2017-01-17  Alan Modra  <amodra@gmail.com>
39046
39047         PR target/79066
39048         * config/rs6000/rs6000.md (elf_high, elf_low): Disable when pic.
39049         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Don't allow
39050         symbolic stack limit when pic.
39051
39052 2017-01-16  Martin Sebor  <msebor@redhat.com>
39053
39054         PR tree-optimization/78608
39055         * gimple-ssa-sprintf.c (tree_digits): Avoid negating TYPE_MIN.
39056
39057 2017-01-16  Jeff Law  <law@redhat.com>
39058
39059         Revert:
39060         2016-12-02  Tadek Kijkowski  <tkijkowski@gmail.com>
39061         * Makefile.in (PREPROCESSOR_DEFINES): Add a level of indirection
39062         for several include directories that may be relative to sysroot.
39063         * config/i386/x-mingw32 (gplus_includedir): Define.
39064         (gplus_tool_includedir, gplus_backward_include_dir): Likewise.
39065         (native_system_includedir): Likewise.
39066         * config/i386/mingw32.h (STANDARD_STARTFILE_PREFIX_1): Do not
39067         override if TARGET_SYSTEM_ROOT is defined.
39068         (NATIVE_SYSTEM_HEADER_DIR): Likewise.
39069
39070         PR tree-optimization/79090
39071         PR tree-optimization/33562
39072         PR tree-optimization/61912
39073         PR tree-optimization/77485
39074         * tree-ssa-dse.c (compute_trims): Accept STMT argument.  Dump STMT
39075         and computed trims into the dump file.
39076
39077 2017-01-17  Uros Bizjak  <ubizjak@gmail.com>
39078
39079         * config/i386/i386.h (LIMIT_RELOAD_CLASS): Remove.
39080
39081 2017-01-16  Jakub Jelinek  <jakub@redhat.com>
39082
39083         PR c/79089
39084         * gimplify.c (gimplify_init_constructor): If want_value and
39085         object == lhs, unshare lhs to avoid invalid tree sharing.  Formatting
39086         fix.
39087
39088         PR target/79080
39089         * loop-doloop.c (doloop_modify): Call unshare_all_rtl_in_chain on
39090         sequence.  Formatting fixes.
39091         (doloop_optimize): Formatting fixes.
39092
39093         PR driver/49726
39094         * gcc.c (debug_level_greater_than_spec_func): New function.
39095         (static_spec_functions): Add debug-level-gt spec function.
39096         (ASM_DEBUG_SPEC, cpp_options): Use %:debug-level-gt(0) instead of
39097         !g0.
39098         * config/darwin.h (DSYMUTIL_SPEC, ASM_DEBUG_SPEC): Likewise.
39099         * config/darwin9.h (DSYMUTIL_SPEC, ASM_DEBUG_SPEC): Likewise.
39100         * common.opt (g, gcoff, gdwarf, gdwarf-, ggdb, gno-pubnames,
39101         gpubnames, ggnu-pubnames, gno-record-gcc-switches,
39102         grecord-gcc-switches, gno-strict-dwarf, gstrict-dwarf, gstabs,
39103         gstabs+, gtoggle, gvms, gxcoff, gxcoff+): Add Driver flag.
39104
39105 2017-01-16  Uros Bizjak  <ubizjak@gmail.com>
39106
39107         * config/i386/i386.h (HARD_REGNO_CALLER_SAVE_MODE): Apply HImode and
39108         QImode fixups to general and mask registers only.
39109
39110 2017-01-16  Carl Love  <cel@us.ibm.com>
39111
39112         * config/rs6000/rs6000-c (altivec_overloaded_builtins): Add support
39113         for built-in functions
39114         vector signed char vec_nabs (vector signed char)
39115         vector signed short vec_nabs (vector signed short)
39116         vector signed int vec_nabs (vector signed int)
39117         vector signed long long vec_nabs (vector signed long long)
39118         vector float vec_nabs (vector float)
39119         vector double vec_nabs (vector double)
39120         * config/rs6000/rs6000-builtin.def: Add definitions for NABS functions
39121         and NABS overload.
39122         * config/rs6000/altivec.md: New define_expand nabs<mode>2 types
39123         * config/rs6000/altivec.h: New define for vec_nabs built-in function.
39124         * doc/extend.texi: Update the documentation file for the new built-in
39125         functions.
39126
39127 2017-01-16  Martin Sebor  <msebor@redhat.com>
39128
39129         * gimple-ssa-sprintf.c (format_directive): Correct a typo in a warning
39130         message.
39131
39132 2017-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
39133
39134         * config/rs6000/rs6000.c (rtx_is_swappable_p): Change
39135         UNSPEC_VSX__XXSPLTD to require special splat handling.
39136
39137 2017-01-16  David Malcolm  <dmalcolm@redhat.com>
39138
39139         PR bootstrap/78616
39140         * system.h: Poison strndup.
39141
39142 2017-01-16  Alan Modra  <amodra@gmail.com>
39143
39144         PR target/79098
39145         * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Don't
39146         use a switch.
39147
39148 2017-01-16  Georg-Johann Lay  <avr@gjlay.de>
39149
39150         * config/avr/avr.h (BRANCH_COST) [reload_completed]: Increase by 4.
39151
39152 2017-01-15  Uros Bizjak  <ubizjak@gmail.com>
39153
39154         * config/i386/i386.c (ix86_legitimate_combined_insn): Do not
39155         call recog here.  Assert that INSN_CODE (insn) is non-negative.
39156
39157 2017-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
39158
39159         PR target/72749
39160         * cfgrtl.c (rtl_split_edge): Also patch jump insns that jump to the
39161         fallthrough.
39162         * haifa-sched.c (dump_insn_stream): Don't crash if there is a label
39163         in the currently scheduled RTL fragment.
39164
39165 2017-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
39166
39167         PR rtl-optimization/78751
39168         * ifcvt.c (find_cond_trap): If we generated a non-existing insn,
39169         give up.
39170
39171 2017-01-14  Jeff Law  <law@redhat.com>
39172
39173         PR tree-optimization/79090
39174         * tree-ssa-dse.c (valid_ao_ref_for_dse): Reject zero length and
39175         variable length stores.
39176         (compute_trims): Delete dead assignment to *trim_tail.
39177         (dse_dom_walker::dse_optimize_stmt): Optimize mem* calls with
39178         zero length.
39179
39180 2017-01-14  Bernd Schmidt  <bschmidt@redhat.com>
39181
39182         PR rtl-optimization/78626
39183         PR rtl-optimization/78727
39184         * cprop.c (one_cprop_pass): Collect unconditional traps in the middle
39185         of a block, and split such blocks after everything else is finished.
39186
39187 2017-01-14  Alan Modra  <amodra@gmail.com>
39188
39189         PR target/72749
39190         * combine.c (recog_for_combine_1): Set INSN_CODE before calling
39191         target legitimate_combined_insn.
39192         * config/rs6000/rs6000.c (TARGET_LEGITIMATE_COMBINED_INSN): Define.
39193         (rs6000_legitimate_combined_insn): New function.
39194         * config/rs6000/rs6000.md (UNSPEC_DOLOOP): Delete, and remove
39195         all uses.
39196         (ctr<mode>_internal3): Rename from *ctr<mode>_internal5.
39197         (ctr<mode>_internal4): Rename from *ctr<mode>_internal6.
39198         (ctr<mode>_internal1, ctr<mode>_internal2): Remove '*' from name.
39199
39200 2017-01-14  Gerald Pfeifer  <gerald@pfeifer.com>
39201
39202         * doc/frontends.texi (G++ and GCC): Remove references to Java.
39203
39204 2017-01-13  Jeff Law  <law@redhat.com>
39205
39206         PR tree-optimization/33562
39207         PR tree-optimization/61912
39208         PR tree-optimization/77485
39209         * tree-ssa-dse.c (delete_dead_call): Accept gsi rather than
39210         a statement.
39211         (delete_dead_assignment): Likewise.
39212         (dse_dom_walker::dse_optimize_stmt): Pass in the gsi rather than
39213         statement to delete_dead_call and delete_dead_assignment.
39214
39215 2017-01-13  David Malcolm  <dmalcolm@redhat.com>
39216
39217         PR c/78304
39218         * substring-locations.c (format_warning_va): Strengthen case 1 so
39219         that both endpoints of the substring must be within the format
39220         range for just the substring to be printed.
39221
39222 2017-01-13  Uros Bizjak  <ubizjak@gmail.com>
39223
39224         * config/i386/i386.opt (msgx): Use ix86_isa_flags2 variable.
39225         * config/i386/i386.c (ix86_target_string): Add missing options
39226         to isa_opts and reorder options by implied ISAs.  Rename isa_opts2 to
39227         isa2_opts, ix86_flag_opts to flag2_opts, ix86_target_other to
39228         flags_other and ix86_target_other to flags2_other.  Display unknown
39229         isa2 options.
39230         (ix86_valid_target_attribute_inner_p): Add missing options and
39231         reorder options by implied ISAs, as in ix86_target_string.
39232
39233 2017-01-13  Richard Sandiford  <richard.sandiford@arm.com>
39234
39235         * hash-table.h (hash_table::too_empty_p): New function.
39236         (hash_table::expand): Use it.
39237         (hash_table::traverse): Likewise.
39238         (hash_table::empty_slot): Use sizeof (value_type) instead of
39239         sizeof (PTR) to convert bytes to elements.  Shrink the table
39240         if the current size is excessive for the current number of
39241         elements.
39242
39243 2017-01-13  Richard Sandiford  <richard.sandiford@arm.com>
39244
39245         * ira-costs.c (record_reg_classes): Break from the inner loop
39246         early once alt_fail is known to be true.  Update outer loop
39247         handling accordingly.
39248
39249 2017-01-13  Jeff Law  <law@redhat.com>
39250
39251         * tree-ssa-dse.c (decrement_count): New function.
39252         (increment_start_addr, maybe_trim_memstar_call): Likewise.
39253         (dse_dom_walker::optimize_stmt): Call maybe_trim_memstar_call directly
39254         when we know the partially dead statement is a mem* function.
39255
39256         PR tree-optimization/61912
39257         PR tree-optimization/77485
39258         * tree-ssa-dse.c: Include expr.h.
39259         (maybe_trim_constructor_store): New function.
39260         (maybe_trim_partially_dead_store): Call maybe_trim_constructor_store.
39261
39262         PR tree-optimization/33562
39263         PR tree-optimization/61912
39264         PR tree-optimization/77485
39265         * doc/invoke.texi: Document new dse-max-object-size param.
39266         * params.def (PARM_DSE_MAX_OBJECT_SIZE): New PARAM.
39267         * tree-ssa-dse.c: Include params.h.
39268         (dse_store_status): New enum.
39269         (initialize_ao_ref_for_dse): New, partially extracted from
39270         dse_optimize_stmt.
39271         (valid_ao_ref_for_dse, normalize_ref): New.
39272         (setup_live_bytes_from_ref, compute_trims): Likewise.
39273         (clear_bytes_written_by, maybe_trim_complex_store): Likewise.
39274         (maybe_trim_partially_dead_store): Likewise.
39275         (maybe_trim_complex_store): Likewise.
39276         (dse_classify_store): Renamed from dse_possibly_dead_store_p.
39277         Track what bytes live from the original store.  Return tri-state
39278         for dead, partially dead or live.
39279         (dse_dom_walker): Add constructor, destructor and new private members.
39280         (delete_dead_call, delete_dead_assignment): New extracted from
39281         dse_optimize_stmt.
39282         (dse_optimize_stmt): Make a member of dse_dom_walker.
39283         Use initialize_ao_ref_for_dse.
39284
39285         PR tree-optimization/33562
39286         PR tree-optimization/61912
39287         PR tree-optimization/77485
39288         * sbitmap.h (bitmap_count_bits): Prototype.
39289         (bitmap_clear_range, bitmap_set_range): Likewise.
39290         * sbitmap.c (bitmap_clear_range): New function.
39291         (bitmap_set_range, sbitmap_popcount, bitmap_count_bits): Likewise.
39292
39293 2017-01-13  Martin Liska  <mliska@suse.cz>
39294
39295         PR ipa/79043
39296         * function.c (set_cfun): Add new argument force.
39297         * function.h (set_cfun): Likewise.
39298         * ipa-inline-transform.c (inline_call): Use the function when
39299         strict alising from is dropped for function we inline to.
39300
39301 2017-01-13  Richard Biener  <rguenther@suse.de>
39302
39303         * tree-pretty-print.c (dump_generic_node): Fix inverted condition
39304         for dumping GIMPLE INTEGER_CSTs.
39305
39306 2017-01-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
39307
39308         * config/sol2.h (TARGET_OS_CPP_BUILTINS): Define __STDC_VERSION__
39309         to 201112L since C++17.
39310
39311 2017-01-13  Maxim Ostapenko  <m.ostapenko@samsung.com>
39312
39313         PR sanitizer/78887
39314         * asan.c (asan_needs_odr_indicator_p): Don't emit ODR indicators
39315         if -fsanitize=kernel-address is present.
39316
39317 2017-01-13  Richard Biener  <rguenther@suse.de>
39318
39319         * tree-pretty-print.c (dump_generic_node): Dump INTEGER_CSTs
39320         as _Literal ( type ) number in case usual suffixes do not
39321         preserve all information.
39322
39323 2017-01-13  Richard Biener  <rguenther@suse.de>
39324
39325         PR tree-optimization/77283
39326         * gimple-ssa-split-paths.c: Include gimple-ssa.h, tree-phinodes.h
39327         and ssa-iterators.h.
39328         (is_feasible_trace): Implement a cost model based on joiner
39329         PHI node uses.
39330
39331 2017-01-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
39332
39333         PR target/79004
39334         * config/rs6000/rs6000.md (FP_ISA3): Do not optimize converting
39335         char or short to __float128/_Float128 directly.
39336
39337 2017-01-12  Martin Sebor  <msebor@redhat.com>
39338
39339         to -Wformat-overflow.
39340         * gimple-ssa-sprintf.c (pass_sprintf_length::gate): Adjust.
39341         (min_bytes_remaining): Same.
39342         (get_string_length): Same.
39343         (format_string): Same.
39344         (format_directive): Same.
39345         (add_bytes): Same.
39346         (pass_sprintf_length::handle_gimple_call): Same.
39347
39348 2017-01-12  Jakub Jelinek  <jakub@redhat.com>
39349
39350         * gimple-ssa-sprintf.c (try_substitute_return_value): Remove
39351         info.nowrite calls with no lhs that can't throw.  Return bool
39352         whether gsi_remove has been called or not.
39353         (pass_sprintf_length::handle_gimple_call): Return bool whether
39354         try_substitute_return_value called gsi_remove.  Formatting fix.
39355         (pass_sprintf_length::execute): Don't use gsi_remove if
39356         handle_gimple_call returned true.
39357
39358         PR bootstrap/79069
39359         * cfgrtl.c (rtl_tidy_fallthru_edge): For any_uncondjump_p that can't
39360         be removed due to side-effects, don't remove following barrier nor
39361         turn the successor edge into fallthru edge.
39362
39363 2017-01-12  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
39364
39365         PR target/79044
39366         * config/rs6000/rs6000.c (insn_is_swappable_p): Mark
39367         element-reversing loads and stores as not swappable.
39368
39369 2017-01-12  Nathan Sidwell  <nathan@acm.org>
39370             Nicolai Stange  <nicstange@gmail.com>
39371
39372         * combine.c (try_combine): Don't ignore result of overlap checking
39373         loop.  Combine overlap & asm check into single loop.
39374
39375 2017-01-12  Richard Biener  <rguenther@suse.de>
39376
39377         * tree-pretty-print.c (dump_generic_node): Provide -gimple
39378         variant for MEM_REF.  Sanitize INTEGER_CST for -gimple.
39379
39380 2017-01-12  Richard Biener  <rguenther@suse.de>
39381
39382         * tree.c (initialize_tree_contains_struct): Make TS_OPTIMIZATION
39383         and TS_TARGET_OPTION directly derive from TS_BASE.
39384         * tree-core.h (tree_optimization_option): Derive from tree_base.
39385         (tree_target_option): Likewise.
39386
39387 2017-01-11  Uros Bizjak  <ubizjak@gmail.com>
39388
39389         * config/i386/i386.c (memory_address_length): Increase len
39390         only when rip_relative_addr_p returns false.
39391
39392 2017-01-11  Julia Koval  <julia.koval@intel.com>
39393
39394         * common/config/i386/i386-common.c (OPTION_MASK_ISA_SGX_UNSET): New.
39395         (OPTION_MASK_ISA_SGX_SET): New.
39396         (ix86_handle_option): Handle OPT_msgx.
39397         * config.gcc: Added sgxintrin.h.
39398         * config/i386/driver-i386.c (host_detect_local_cpu): Detect sgx.
39399         * config/i386/i386-c.c (ix86_target_macros_internal): Define __SGX__.
39400         * config/i386/i386.c (ix86_target_string): Add -msgx.
39401         (PTA_SGX): New.
39402         (ix86_option_override_internal): Handle new options.
39403         (ix86_valid_target_attribute_inner_p): Add sgx.
39404         * config/i386/i386.h (TARGET_SGX, TARGET_SGX_P): New.
39405         * config/i386/i386.opt: Add msgx.
39406         * config/i386/sgxintrin.h: New file.
39407         * config/i386/x86intrin.h: Add sgxintrin.h.
39408
39409 2017-01-11  Jakub Jelinek  <jakub@redhat.com>
39410
39411         PR c++/71537
39412         * fold-const.c (maybe_nonzero_address): Return 1 for function
39413         local objects.
39414         (tree_single_nonzero_warnv_p): Don't handle function local objects
39415         here.
39416
39417         PR c++/72813
39418         * gcc.c (default_compilers): Don't add -o %g.s for -S -save-temps
39419         of c-header.
39420
39421 2017-01-11  David Malcolm  <dmalcolm@redhat.com>
39422
39423         PR driver/78877
39424         * opts.c: Include "spellcheck.h"
39425         (struct string_fragment): New struct.
39426         (struct edit_distance_traits<const string_fragment &>): New
39427         struct.
39428         (get_closest_sanitizer_option): New function.
39429         (parse_sanitizer_options): Offer suggestions for unrecognized arguments.
39430
39431 2017-01-11  Jakub Jelinek  <jakub@redhat.com>
39432
39433         * dwarf2out.c (DWARF_COMPILE_UNIT_HEADER_SIZE): For DWARF5 decrease
39434         by 12.
39435         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): Always
39436         DWARF_COMPILE_UNIT_HEADER_SIZE plus 12.
39437         (DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE): Define.
39438         (calc_base_type_die_sizes): Use DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE
39439         for initial die_offset if dwarf_split_debug_info.
39440         (output_comp_unit): Use DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE for
39441         initial next_die_offset if dwo_id is non-NULL.  Don't emit padding
39442         fields.
39443         (output_skeleton_debug_sections): Formatting fix.  Use
39444         DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE instead of
39445         DWARF_COMPILE_UNIT_HEADER_SIZE.  Don't emit padding.
39446
39447 2017-01-11  Wilco Dijkstra  <wdijkstr@arm.com>
39448
39449         * config/arm/cortex-a53.md: Add bypasses for
39450         cortex_a53_r2f_cvt.
39451         (cortex_a53_r2f): Only use for transfers.
39452         (cortex_a53_f2r): Likewise.
39453         (cortex_a53_r2f_cvt): Add reservation for conversions.
39454         (cortex_a53_f2r_cvt): Likewise.
39455
39456 2017-01-11  Tamar Christina  <tamar.christina@arm.com>
39457
39458         * config/arm/arm_neon.h: Add __artificial__ and gnu_inline
39459         to all inlined functions, change static to extern.
39460
39461 2017-01-11  Christophe Lyon  <christophe.lyon@linaro.org>
39462
39463         PR target/78253
39464         * config/arm/arm.c (legitimize_pic_address): Handle reference to
39465         weak symbol.
39466         (arm_assemble_integer): Likewise.
39467
39468 2017-01-11  Richard Earnshaw  <rearnsha@arm.com>
39469
39470         * config.gcc: Use new awk script to check CPU, FPU and architecture
39471         parameters for --with-... options.
39472         * config/arm/parsecpu.awk: New file
39473         * config/arm/arm-cpus.in: New file.
39474         * config/arm/arm-opts.h: Include arm-cpu.h instead of processing .def
39475         files.
39476         * config/arm/arm.c: Include arm-cpu-data.h instead of processing .def
39477         files.
39478         * config/arm/t-arm: Update dependency rules.
39479         * common/config/arm/arm-common.c: Include arm-cpu-cdata.h instead
39480         of processing .def files.
39481         * config/arm/genopt.sh: Deleted.
39482         * config/arm/gentune.sh: Deleted.
39483         * config/arm/arm-cores.def: Deleted.
39484         * config/arm/arm-arches.def: Deleted.
39485         * config/arm/arm-fpus.def: Deleted.
39486         * config/arm/arm-tune.md: Regenerated.
39487         * config/arm/arm-tables.opt: Regenerated.
39488         * config/arm/arm-cpu.h: New generated file.
39489         * config/arm/arm-cpu-data.h: New generated file.
39490         * config/arm/arm-cpu-cdata.h: New generated file.
39491
39492 2017-01-11  Maxim Ostapenko  <m.ostapenko@samsung.com>
39493
39494         PR lto/79042
39495         * lto-cgraph.c (lto_output_varpool_node): Pack dynamically_initialized
39496         bit.
39497         (input_varpool_node): Unpack dynamically_initialized bit.
39498
39499 2017-01-11  Eric Botcazou  <ebotcazou@adacore.com>
39500
39501         PR rtl-optimization/79032
39502         * lra-constraints.c (simplify_operand_subreg): In the MEM case, test
39503         the alignment of the adjusted memory reference against that of MODE,
39504         instead of the alignment of the original memory reference.
39505
39506 2017-01-11  Martin Jambor  <mjambor@suse.cz>
39507
39508         * hsa.c (hsa_callable_function_p): Revert addition of DECL_ARTIFICIAL
39509         test.
39510         * ipa-hsa.c (process_hsa_functions): Only duplicate non-artificial
39511         decorated functions.
39512
39513 2017-01-11  Richard Biener  <rguenther@suse.de>
39514
39515         * tree-vrp.c (evrp_dom_walker::before_dom_children): Also
39516         set range/nonnull info for PHI results.  Do not set it on
39517         stmts marked for removal.
39518
39519 2017-01-10  Eric Botcazou  <ebotcazou@adacore.com>
39520
39521         * expr.c (store_field): In the bitfield case, fetch the return value
39522         from the registers before applying a single big-endian adjustment.
39523         Always do a final load for a BLKmode value not larger than a word.
39524
39525 2017-01-10  David Malcolm  <dmalcolm@redhat.com>
39526
39527         PR c++/77949
39528         * input.c (selftest::test_accessing_ordinary_linemaps): Verify
39529         that we correctly handle column numbers greater than
39530         LINE_MAP_MAX_COLUMN_NUMBER.
39531
39532 2017-01-10  Martin Sebor  <msebor@redhat.com>
39533
39534         PR middle-end/78245
39535         * gimple-ssa-sprintf.c (get_destination_size): Call
39536         {init,fini}object_sizes.
39537         * tree-object-size.c (addr_object_size): Adjust.
39538         (pass_through_call): Adjust.
39539         (pass_object_sizes::execute): Adjust.
39540         * tree-object-size.h (fini_object_sizes): Declare.
39541
39542 2017-01-10  Martin Sebor  <msebor@redhat.com>
39543
39544         PR tree-optimization/78775
39545         * builtins.c (get_size_range): Move...
39546         * calls.c: ...to here.
39547         (alloc_max_size): Accept zero argument.
39548         (operand_signed_p): Remove.
39549         (maybe_warn_alloc_args_overflow): Call get_size_range.
39550         * calls.h (get_size_range): Declare.
39551
39552 2017-01-10  Joe Seymour  <joe.s@somniumtech.com>
39553
39554         * config/msp430/driver-msp430.c (msp430_mcu_data): Sync with data
39555         from TI's devices.csv file as of September 2016.
39556         * config/msp430/msp430.c (msp430_mcu_data): Likewise.
39557
39558 2017-01-10  Sandra Loosemore  <sandra@codesourcery.com>
39559
39560         * doc/extend.texi: Tweak formatting to fix overfull hbox warnings.
39561         * doc/invoke.texi: Likewise.
39562         * doc/md.texi: Likewise.
39563         * doc/objc.texi: Likewise.
39564
39565 2017-01-10  Joshua Conner  <joshconner@google.com>
39566
39567         * config/arm/fuchsia-elf.h: New file.
39568         * config/fuchsia.h: New file.
39569         * config.gcc (*-*-fuchsia*): Set native_system_header_dir.
39570         (aarch64*-*-fuchsia*, arm*-*-fuchsia*, x86_64-*-fuchsia*): Add to
39571         targets.
39572         * config.host: (aarch64*-*-fuchsia*, arm*-*-fuchsia*): Add to hosts.
39573
39574 2016-01-10  Richard Biener  <rguenther@suse.de>
39575
39576         PR tree-optimization/79034
39577         * tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
39578         Propagate out degenerate PHIs in the joiner.
39579
39580 2017-01-10  Martin Liska  <mliska@suse.cz>
39581
39582         * ipa-icf.c (sort_sem_items_by_decl_uid): New function.
39583         (sort_congruence_classes_by_decl_uid): Likewise.
39584         (sort_congruence_class_groups_by_decl_uid): Likewise.
39585         (sem_item_optimizer::merge_classes): Sort class, groups in these
39586         classes and members in the groups by DECL_UID of declarations.
39587         This would make merge operations stable.
39588
39589 2017-01-10  Martin Liska  <mliska@suse.cz>
39590
39591         * ipa-icf.c (sem_item_optimizer::sem_item_optimizer): Remove
39592         usage of m_classes_vec.
39593         (sem_item_optimizer::~sem_item_optimizer):  Likewise.
39594         (sem_item_optimizer::get_group_by_hash): Likewise.
39595         (sem_item_optimizer::subdivide_classes_by_equality): Likewise.
39596         (sem_item_optimizer::subdivide_classes_by_sensitive_refs): Likewise.
39597         (sem_item_optimizer::verify_classes): Likewise.
39598         (sem_item_optimizer::process_cong_reduction): Likewise.
39599         (sem_item_optimizer::dump_cong_classes): Likewise.
39600         (sem_item_optimizer::merge_classes): Likewise.
39601         * ipa-icf.h (congruence_class_hash): Rename from
39602         congruence_class_group_hash.  Remove declaration of m_classes_vec.
39603
39604 2017-01-10  Andrew Senkevich  <andrew.senkevich@intel.com>
39605
39606         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET,
39607         OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET): New.
39608         * config.gcc: Add avx512vpopcntdqintrin.h.
39609         * config/i386/avx512vpopcntdqintrin.h: New.
39610         * config/i386/cpuid.h (bit_AVX512VPOPCNTDQ): New.
39611         * config/i386/i386-builtin-types.def: Add new types.
39612         * config/i386/i386-builtin.def (__builtin_ia32_vpopcountd_v16si,
39613         __builtin_ia32_vpopcountd_v16si_mask, __builtin_ia32_vpopcountq_v8di,
39614         __builtin_ia32_vpopcountq_v8di_mask): New.
39615         * config/i386/i386-c.c (ix86_target_macros_internal): Define
39616         __AVX512VPOPCNTDQ__.
39617         * config/i386/i386.c (ix86_target_string): Add -mavx512vpopcntdq.
39618         (PTA_AVX512VPOPCNTDQ): Define.
39619         * config/i386/i386.h (TARGET_AVX512VPOPCNTDQ,
39620         TARGET_AVX512VPOPCNTDQ_P): Define.
39621         * config/i386/i386.opt: Add mavx512vpopcntdq.
39622         * config/i386/immintrin.h: Include avx512vpopcntdqintrin.h.
39623         * config/i386/sse.md (define_insn "vpopcount<mode><mask_name>"): New.
39624
39625 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
39626
39627         PR middle-end/77484
39628         * predict.def (PRED_CALL): Set to 67.
39629
39630 2017-01-09  Eric Botcazou  <ebotcazou@adacore.com>
39631
39632         * expr.c (store_field): In the bitfield case, if the value comes from
39633         a function call and is of an aggregate type returned in registers, do
39634         not modify the field mode; extract the value in all cases if the mode
39635         is BLKmode and the size is not larger than a word.
39636
39637 2017-01-09  Dominique d'Humieres  <dominiq@lps.ens.fr>
39638
39639         PR target/71017
39640         * config/i386/cpuid.h: Fix undefined behavior.
39641
39642 2017-01-04  Jeff Law  <law@redhat.com>
39643
39644         PR tree-optimization/79007
39645         PR tree-optimization/67955
39646         * tree-ssa-alias.c (same_addr_size_stores_p): Only need to be
39647         conservative for pt.null when flag_non_call_exceptions is on.
39648
39649 2017-01-09  Jakub Jelinek  <jakub@redhat.com>
39650
39651         PR translation/79019
39652         PR translation/79020
39653         * params.def (PARAM_INLINE_MIN_SPEEDUP,
39654         PARAM_IPA_CP_SINGLE_CALL_PENALTY,
39655         PARAM_USE_AFTER_SCOPE_DIRECT_EMISSION_THRESHOLD): Fix typos
39656         in descriptions.
39657         * config/avr/avr.opt (maccumulate-args): Likewise.
39658         * config/msp430/msp430.opt (mwarn-mcu): Likewise.
39659         * common.opt (freport-bug): Likewise.
39660         * cif-code.def (CIF_FINAL_ERROR): Likewise.
39661         * doc/invoke.texi (ipa-cp-single-call-penalty): Likewise.
39662         * config/s390/s390.c (s390_invalid_binary_op): Fix spelling in
39663         translatable string.
39664         * config/i386/i386.c (function_value_32): Likewise.
39665         * config/nios2/nios2.c (nios2_valid_target_attribute_rec): Likewise.
39666         * config/msp430/msp430.c (msp430_option_override, msp430_attr):
39667         Likewise.
39668         * config/msp430/driver-msp430.c (msp430_select_hwmult_lib): Likewise.
39669         * common/config/msp430/msp430-common.c (msp430_handle_option):
39670         Likewise.
39671         * symtab.c (symtab_node::verify_base): Likewise.
39672         * opts.c (set_debug_level): Likewise.
39673         * tree.c (verify_type_variant): Likewise.  Fix typo in comment.
39674         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Add
39675         missing whitespace to translatable strings.
39676         * config/avr/avr.md (bswapsi2): Fix typo in comment.
39677         * config/sh/superh.h: Likewise.
39678         * config/i386/xopintrin.h: Likewise.
39679         * config/i386/znver1.md: Likewise.
39680         * config/rs6000/rs6000.c (struct rs6000_opt_mask): Likewise.
39681         * ipa-inline-analysis.c (compute_inline_parameters): Likewise.
39682         * double-int.h (struct double_int): Likewise.
39683         * double-int.c (div_and_round_double): Likewise.
39684         * wide-int.cc: Likewise.
39685         * tree-ssa.c (non_rewritable_mem_ref_base): Likewise.
39686         * tree-ssa-sccvn.c (vn_reference_lookup_3): Likewise.
39687         * cfgcleanup.c (crossjumps_occured): Renamed to ...
39688         (crossjumps_occurred): ... this.
39689         (try_crossjump_bb, try_head_merge_bb, try_optimize_cfg, cleanup_cfg):
39690         Adjust all uses.
39691
39692         PR tree-optimization/78899
39693         * tree-if-conv.c (version_loop_for_if_conversion): Instead of
39694         returning bool return struct loop *, NULL for failure and the new
39695         loop on success.
39696         (versionable_outer_loop_p): Don't version outer loop if it has
39697         dont_vectorized bit set.
39698         (tree_if_conversion): When versioning outer loop, ensure
39699         tree_if_conversion is performed also on the inner loop of the
39700         non-vectorizable outer loop copy.
39701         * tree-vectorizer.c (set_uid_loop_bbs): Formatting fix.  Fold
39702         LOOP_VECTORIZED in inner loop of the scalar outer loop and
39703         prevent vectorization of it.
39704         (vectorize_loops): For outer + inner LOOP_VECTORIZED, ensure
39705         the outer loop vectorization of the non-scalar version is attempted
39706         before vectorization of the inner loop in scalar version.  If
39707         outer LOOP_VECTORIZED guarded loop is not vectorized, prevent
39708         vectorization of its inner loop.
39709         * tree-vect-loop-manip.c (rename_variables_in_bb): If outer_loop
39710         has 2 inner loops, rename also on edges from bb whose single pred
39711         is outer_loop->header.  Fix typo in function comment.
39712
39713 2017-01-09  Martin Sebor  <msebor@redhat.com>
39714
39715         PR bootstrap/79033
39716         * asan.c (asan_emit_stack_protection): Increase local buffer size
39717         to avoid snprintf truncation warning.
39718
39719 2017-01-09  Andrew Pinski  <apinski@cavium.com>
39720
39721         * config/aarch64/aarch64-cores.def: Add thunderx2t99.  Change vulcan
39722         to reference thunderx2t99 for the tuning structure
39723         * config/aarch64/aarch64-cost-tables.h (vulcan_extra_costs):
39724         Rename to ...
39725         (thunderx2t99_extra_costs): This.
39726         * config/aarch64/aarch64-tune.md: Regenerate.
39727         * config/aarch64/aarch64.c (vulcan_addrcost_table): Rename to ...
39728         (vulcan_addrcost_table): This.
39729         (vulcan_regmove_cost): Rename to ...
39730         (thunderx2t99_regmove_cost): This.
39731         (vulcan_vector_cost): Rename to ...
39732         (thunderx2t99_vector_cost): this.
39733         (vulcan_branch_cost): Rename to ...
39734         (thunderx2t99_branch_cost): This.
39735         (vulcan_tunings): Rename to ...
39736         (thunderx2t99_tunings): This and s/vulcan/thunderx2t99 .
39737         * doc/invoke.texi (AARCH64/mtune): Add thunderx2t99.
39738
39739 2017-01-09  Martin Jambor  <mjambor@suse.cz>
39740
39741         PR ipa/78365
39742         PR ipa/78599
39743         * ipa-prop.h (ipa_jump_func): Swap positions of vr_known and m_vr.
39744         * ipa-cp.c (ipa_vr_operation_and_type_effects): New function.
39745         (propagate_vr_accross_jump_function): Use the above function for all
39746         value range computations for pass-through jump functions and type
39747         converasion from explicit value range values.
39748         (ipcp_propagate_stage): Do not attempt to deduce types of formal
39749         parameters from TYPE_ARG_TYPES.
39750         * ipa-prop.c (ipa_write_jump_function): Remove trailing whitespace.
39751         (ipa_write_node_info): Stream type of the actual argument.
39752         (ipa_read_node_info): Likewise. Also remove trailing whitespace.
39753
39754 2017-01-09  Martin Liska  <mliska@suse.cz>
39755
39756         PR pch/78970
39757         * gcc.c (driver_handle_option): Handle OPT_E and set have_E.
39758         (lookup_compiler): Do not show error message with have_E.
39759
39760 2017-01-09  Jakub Jelinek  <jakub@redhat.com>
39761
39762         PR tree-optimization/78938
39763         * tree-vect-stmts.c (vectorizable_condition): For non-masked COND_EXPR
39764         where comp_vectype is VECTOR_BOOLEAN_TYPE_P, use
39765         BIT_{NOT,XOR,AND,IOR}_EXPR on the comparison operands instead of
39766         {EQ,NE,GE,GT,LE,LT}_EXPR directly inside of VEC_COND_EXPR.  Formatting
39767         fixes.
39768
39769 2017-01-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
39770
39771         * tree-ssa-address.c (gen_addr_rtx): Don't handle index if it
39772         is const0_rtx.
39773
39774 2017-01-09  Richard Biener  <rguenther@suse.de>
39775
39776         PR tree-optimization/78997
39777         * tree-vect-slp.c (vect_mask_constant_operand_p): Handle SSA
39778         name condition properly.
39779
39780 2017-01-09  Richard Biener  <rguenther@suse.de>
39781
39782         PR debug/79000
39783         * dwarf2out.c (is_cxx): New overload with context.
39784         (is_naming_typedef_decl): Use it.
39785
39786 2017-01-08  Sandra Loosemore  <sandra@codesourcery.com>
39787
39788         * invoke.texi (Option Summary): Correct spacing in option lists
39789         and add line breaks to fix over-long lines.
39790
39791 2017-01-08  Sandra Loosemore  <sandra@codesourcery.com>
39792
39793         PR middle-end/17660
39794
39795         * extend.texi (Common Variable Attributes): Add xref to GCC
39796         Internals manual to explain mode attribute keywords.
39797
39798 2017-01-08  Sandra Loosemore  <sandra@codesourcery.com>
39799
39800         PR other/16519
39801         * doc/invoke.texi (Option Summary): Move -pthread to Linker Options
39802         and Preprocessor Options.
39803         (Options for Linking): Document -pthread here....
39804         (RS/6000 and PowerPC Options): ...not here.
39805         (Solaris 2 Options): ...or here.
39806         * doc/cppopts.texi: Document -pthread.
39807
39808 2017-01-08  Martin Sebor  <msebor@redhat.com>
39809
39810         PR middle-end/77708
39811         * doc/invoke.texi (Warning Options): Document -Wformat-truncation.
39812         * gimple-ssa-sprintf.c (call_info::reval_used, call_info::warnopt):
39813         New member functions.
39814         (format_directive): Used them.
39815         (add_bytes): Same.
39816         (pass_sprintf_length::handle_gimple_call): Same.
39817         * graphite-sese-to-poly.c (tree_int_to_gmp): Increase buffer size
39818         to avoid truncation for any argument.
39819         (extract_affine_mul): Same.
39820         * tree.c (get_file_function_name): Same.
39821
39822 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
39823
39824         PR middle-end/77484
39825         * predict.def (PRED_INDIR_CALL): Set to 86.
39826
39827 2017-01-07  Sandra Loosemore  <sandra@codesourcery.com>
39828
39829         PR preprocessor/54124
39830         * doc/cppopts.texi: Reformat -d subtable to list the full name
39831         of the options.  Add cross-reference to the docs for the general
39832         compiler -d options.
39833         * doc/invoke.texi (Developer Options): Add cross-reference to the
39834         preprocessor-specific -d option documentation.
39835
39836 2017-01-07  Sandra Loosemore  <sandra@codesourcery.com>
39837
39838         PR preprocessor/13498
39839         * doc/cpp.texi (Search Path): Rewrite to remove obsolete and
39840         redudant material, and reflect new command-line options.
39841         (System Headers): Likewise.
39842
39843 2017-01-07  Sandra Loosemore  <sandra@codesourcery.com>
39844
39845         * doc/cppdiropts.texi: Merge documentation of -I, -iquote,
39846         -isystem, and -idirafter.  Copy-edit.
39847         * doc/cppopts.texi: Copy-edit.  Remove contradiction about
39848         default for -ftrack-macro-expansion.  Delete obsolete and
39849         badly-formatted implementation details about -fdebug-cpp output.
39850         * doc/cppwarnopts.texi: Copy-edit.
39851
39852 2017-01-07  David Malcolm  <dmalcolm@redhat.com>
39853
39854         PR c++/72803
39855         * input.c (selftest::test_accessing_ordinary_linemaps): Verify
39856         that the transition from a max line width >= 1<<10 to narrower
39857         lines works correctly.
39858
39859 2017-01-07  Alexandre Oliva  <aoliva@redhat.com>
39860
39861         * doc/options.texi (PerFunction): New.
39862         * opt-functions.awk (switch_flags): Map both Optimization and
39863         PerFunction to CL_OPTIMIZATION.
39864         * opth-gen.awk: Test for PerFunction flag along with
39865         Optimization.
39866         * optc-save-gen.awk: Likewise.  Introduce var_opt_hash and set
39867         it only when the latter is present.  Skip those that don't in
39868         the hash function generator.
39869         * common.opt (fvar-tracking): Mark as PerFunction instead of
39870         Optimization.
39871         (fvar-tracking-assignments): Likewise.
39872         (fvar-tracking-assignments-toggle): Likewise.
39873         (fvar-tracking-uninit): Likewise.
39874
39875 2017-01-07  Jakub Jelinek  <jakub@redhat.com>
39876
39877         PR translation/79018
39878         * params.def (PARAM_MAX_STORES_TO_MERGE): Add missing space between
39879         the and store.
39880
39881 2017-01-06  Mikael Pettersson  <mikpelinux@gmail.com>
39882
39883         PR target/57583
39884         * config/m68k/m68k.opt (LONG_JUMP_TABLE_OFFSETS): New option.
39885         * config/m68k/linux.h (ASM_RETURN_CASE_JUMP): Handle
39886         TARGET_LONG_JUMP_TABLE_OFFSETS.
39887         * config/m68k/m68kelf.h (ASM_RETURN_CASE_JUMP): Likewise.
39888         * config/m68k/netbsd-elf.h (ASM_RETURN_CASE_JUMP): Likewise.
39889         * config/m68k/m68k.h (CASE_VECTOR_MODE): Likewise.
39890         (ASM_OUTPUT_ADDR_DIFF_ELF): Likewise.
39891         * config/m68k/m68k.md (tablejump expander): Likewise.
39892         (*tablejump_pcrel_hi): Renamed from unnamed insn, reject
39893         TARGET_LONG_JUMP_TABLE_OFFSETS.
39894         (*tablejump_pcrel_si): New insn, handle TARGET_LONG_JUMP_TABLE_OFFSETS.
39895         * doc/invoke.texi (M68K options): Add -mlong-jump-table-offsets.
39896
39897 2017-01-06  Edgar E. Iglesias <edgar.iglesias@xilinx.com>
39898             David Holsgrove <david.holsgrove@xilinx.com>
39899
39900         * common/config/microblaze/microblaze-common.c
39901         (TARGET_EXCEPT_UNWIND_INFO): Remove.
39902         * config/microblaze/microblaze-protos.h (microblaze_eh_return):
39903         New prototype.
39904         * config/microblaze/microblaze.c (microblaze_must_save_register)
39905         (microblaze_expand_epilogue, microblaze_return_addr): Handle
39906         calls_eh_return.
39907         (microblaze_eh_return): New function.
39908         * config/microblaze/microblaze.h (RETURN_ADDR_OFFSET)
39909         (EH_RETURN_DATA_REGNO, MB_EH_STACKADJ_REGNUM)
39910         (EH_RETURN_STACKADJ_RTX, ASM_PREFERRED_EH_DATA_FORMAT): New macros.
39911         * config/microblaze/microblaze.md (eh_return): New pattern.
39912
39913 2017-01-06  Jakub Jelinek  <jakub@redhat.com>
39914
39915         * system.h (GCC_DIAGNOSTIC_PUSH_IGNORED, GCC_DIAGNOSTIC_POP,
39916         GCC_DIAGNOSTIC_STRINGIFY): Define.
39917
39918         * read-rtl.c (rtx_reader::read_rtx_code): Avoid -Wsign-compare warning.
39919
39920 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
39921
39922         * config/arm/arm.md (<mcrr>): New.
39923         (<mrrc>): New.
39924         * config/arm/arm.c (arm_arch5te): New.
39925         (arm_option_override): Set arm_arch5te.
39926         (arm_coproc_builtin_available): Add support for mcrr, mcrr2, mrrc
39927         and mrrc2.
39928         * config/arm/arm-builtins.c (MCRR_QUALIFIERS): Define to...
39929         (arm_mcrr_qualifiers): ... this. New.
39930         (MRRC_QUALIFIERS): Define to...
39931         (arm_mrrc_qualifiers): ... this. New.
39932         * config/arm/arm_acle.h (__arm_mcrr, __arm_mcrr2, __arm_mrrc,
39933         __arm_mrrc2): New.
39934         * config/arm/arm_acle_builtins.def (mcrr, mcrr2, mrrc, mrrc2): New.
39935         * config/arm/iterators.md (MCRRI, mcrr, MCRR): New.
39936         (MRRCI, mrrc, MRRC): New.
39937         * config/arm/unspecs.md (VUNSPEC_MCRR, VUNSPEC_MCRR2, VUNSPEC_MRRC,
39938         VUNSPEC_MRRC2): New.
39939
39940 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
39941
39942         * config/arm/arm.md (<mcr>): New.
39943         (<mrc>): New.
39944         * config/arm/arm.c (arm_coproc_builtin_available): Add
39945         support for mcr, mrc, mcr2 and mrc2.
39946         * config/arm/arm-builtins.c (MCR_QUALIFIERS): Define to...
39947         (arm_mcr_qualifiers): ... this. New.
39948         (MRC_QUALIFIERS): Define to ...
39949         (arm_mrc_qualifiers): ... this. New.
39950         (MCR_QUALIFIERS): Define to ...
39951         (arm_mcr_qualifiers): ... this. New.
39952         * config/arm/arm_acle.h (__arm_mcr, __arm_mrc, __arm_mcr2,
39953         __arm_mrc2): New.
39954         * config/arm/arm_acle_builtins.def (mcr, mcr2, mrc, mrc2): New.
39955         * config/arm/iterators.md (MCRI, mcr, MCR, MRCI, mrc, MRC): New.
39956         * config/arm/unspecs.md (VUNSPEC_MCR, VUNSPEC_MCR2, VUNSPEC_MRC,
39957         VUNSPEC_MRC2): New.
39958
39959 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
39960
39961         * config/arm/arm.md (*ldc): New.
39962         (*stc): New.
39963         (<ldc>): New.
39964         (<stc>): New.
39965         * config/arm/arm.c (arm_coproc_builtin_available): Add
39966         support for ldc,ldcl,stc,stcl,ldc2,ldc2l,stc2 and stc2l.
39967         (arm_coproc_ldc_stc_legitimate_address): New.
39968         * config/arm/arm-builtins.c (arm_type_qualifiers): Add
39969         'qualifier_const_pointer'.
39970         (LDC_QUALIFIERS): Define to...
39971         (arm_ldc_qualifiers): ... this. New.
39972         (STC_QUALIFIERS): Define to...
39973         (arm_stc_qualifiers): ... this. New.
39974         * config/arm/arm-protos.h
39975         (arm_coproc_ldc_stc_legitimate_address): New.
39976         * config/arm/arm_acle.h (__arm_ldc, __arm_ldcl, __arm_stc,
39977         __arm_stcl, __arm_ldc2, __arm_ldc2l, __arm_stc2, __arm_stc2l): New.
39978         * config/arm/arm_acle_builtins.def (ldc, ldc2, ldcl, ldc2l, stc,
39979         stc2, stcl, stc2l): New.
39980         * config/arm/constraints.md (Uz): New.
39981         * config/arm/iterators.md (LDCI, STCI, ldc, stc, LDC STC): New.
39982         * config/arm/unspecs.md (VUNSPEC_LDC, VUNSPEC_LDC2, VUNSPEC_LDCL,
39983         VUNSPEC_LDC2L, VUNSPEC_STC, VUNSPEC_STC2, VUNSPEC_STCL,
39984         VUNSPEC_STC2L): New.
39985
39986 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
39987
39988         * config/arm/arm.md (<cdp>): New.
39989         * config/arm/arm.c (neon_const_bounds): Rename this ...
39990         (arm_const_bounds): ... this.
39991         (arm_coproc_builtin_available): New.
39992         * config/arm/arm-builtins.c (SIMD_MAX_BUILTIN_ARGS): Increase.
39993         (arm_type_qualifiers): Add 'qualifier_unsigned_immediate'.
39994         (CDP_QUALIFIERS): Define to...
39995         (arm_cdp_qualifiers): ... this. New.
39996         (void_UP): Define.
39997         (arm_expand_builtin_args): Add case for 6 arguments.
39998         * config/arm/arm-protos.h (neon_const_bounds): Rename this ...
39999         (arm_const_bounds): ... this.
40000         (arm_coproc_builtin_available): New.
40001         * config/arm/arm_acle.h (__arm_cdp): New.
40002         (__arm_cdp2): New.
40003         * config/arm/arm_acle_builtins.def (cdp): New.
40004         (cdp2): New.
40005         * config/arm/iterators.md (CDPI,CDP,cdp): New.
40006         * config/arm/neon.md: Rename all 'neon_const_bounds' to
40007         'arm_const_bounds'.
40008         * config/arm/types.md (coproc): New.
40009         * config/arm/unspecs.md (VUNSPEC_CDP, VUNSPEC_CDP2): New.
40010         * doc/extend.texi (ACLE): Add a mention of Coprocessor intrinsics.
40011         * doc/sourcebuild.texi (arm_coproc1_ok, arm_coproc2_ok,
40012         arm_coproc3_ok, arm_coproc4_ok): Document new effective targets.
40013
40014 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
40015
40016         * config/arm/arm-builtins.c (arm_unsigned_binop_qualifiers): New.
40017         (UBINOP_QUALIFIERS): New.
40018         (si_UP): Define.
40019         (acle_builtin_data): New. Change comment.
40020         (arm_builtins): Remove ARM_BUILTIN_CRC32B, ARM_BUILTIN_CRC32H,
40021         ARM_BUILTIN_CRC32W, ARM_BUILTIN_CRC32CB, ARM_BUILTIN_CRC32CH,
40022         ARM_BUILTIN_CRC32CW. Add ARM_BUILTIN_ACLE_BASE and include
40023         arm_acle_builtins.def.
40024         (ARM_BUILTIN_ACLE_PATTERN_START): Define.
40025         (arm_init_acle_builtins): New.
40026         (CRC32_BUILTIN): Remove.
40027         (bdesc_2arg): Remove entries for crc32b, crc32h, crc32w,
40028         crc32cb, crc32ch and crc32cw.
40029         (arm_init_crc32_builtins): Remove.
40030         (arm_init_builtins): Use arm_init_acle_builtins rather
40031         than arm_init_crc32_builtins.
40032         (arm_expand_acle_builtin): New.
40033         (arm_expand_builtin): Use 'arm_expand_acle_builtin'.
40034         * config/arm/arm_acle_builtins.def: New.
40035
40036 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
40037
40038         * config/arm/arm-builtins.c (neon_builtin_datum): Rename to ..
40039         (arm_builtin_datum): ... this.
40040         (arm_init_neon_builtin): Rename to ...
40041         (arm_init_builtin): ... this. Add a new parameters PREFIX
40042         and USE_SIG_IN_NAME.
40043         (arm_init_neon_builtins): Replace 'arm_init_neon_builtin' with
40044         'arm_init_builtin'. Replace type 'neon_builtin_datum' with
40045         'arm_builtin_datum'.
40046         (arm_init_vfp_builtins): Likewise.
40047         (builtin_arg): Rename enum's replacing 'NEON_ARG' with
40048         'ARG_BUILTIN' and add a 'ARG_BUILTIN_NEON_MEMORY.
40049         (arm_expand_neon_args): Rename to ...
40050         (arm_expand_builtin_args): ... this. Rename builtin_arg
40051         enum values and differentiate between ARG_BUILTIN_MEMORY
40052         and ARG_BUILTIN_NEON_MEMORY.
40053         (arm_expand_neon_builtin_1): Rename to ...
40054         (arm_expand_builtin_1): ... this. Rename builtin_arg enum
40055         values, arm_expand_builtin_args and add bool parameter NEON.
40056         (arm_expand_neon_builtin): Use arm_expand_builtin_1.
40057         (arm_expand_vfp_builtin): Likewise.
40058         (NEON_MAX_BUILTIN_ARGS): Remove, it was unused.
40059
40060 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
40061
40062         PR middle-end/77484
40063         * predict.def (PRED_POLYMORPHIC_CALL): Set to 59.
40064         * predict.c (tree_estimate_probability_bb): Reverse direction of
40065         polymorphic call predictor.
40066
40067 2017-01-06  David Malcolm  <dmalcolm@redhat.com>
40068
40069         * passes.c (execute_one_pass): Split out pass-skipping logic into...
40070         (determine_pass_name_match): ...this new function and...
40071         (should_skip_pass_p): ...this new function.
40072
40073 2017-01-06  Nathan Sidwell  <nathan@acm.org>
40074
40075         * ipa-visibility.c (function_and_variable_visibility): Reformat
40076         comments and long lines.  Remove extrneous if.
40077         * symtab.c (symtab_node::make_decl_local): Fix code format.
40078         (symtab_node::set_section_for_node): Fix comment typo.
40079
40080 2017-01-06  Martin Liska  <mliska@suse.cz>
40081
40082         PR bootstrap/79003
40083         * lra-constraints.c: Rename invariant to lra_invariant.
40084         * predict.c (set_even_probabilities): Initialize e to NULL.
40085
40086 2017-01-05  Martin Sebor  <msebor@redhat.com>
40087
40088         PR tree-optimization/78910
40089         * gimple-ssa-sprintf.c (tree_digits): Add an argument.
40090         (format_integer): Correct off-by-one error in the handling
40091         of precision with negative numbers in signed conversions..
40092
40093 2017-01-05  Eric Botcazou  <ebotcazou@adacore.com>
40094
40095         * doc/invoke.texi (C Dialect Options): Adjust -fsso-struct entry.
40096
40097 2017-01-05  Jakub Jelinek  <jakub@redhat.com>
40098
40099         PR tree-optimization/71016
40100         * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Pass cond_stmt to
40101         factor_out_conditional_conversion.  Formatting fix.
40102         (factor_out_conditional_conversion): Add cond_stmt argument.
40103         If arg1 is INTEGER_CST, punt if new_arg0 is not any operand of
40104         cond_stmt and if arg0_def_stmt is not the only stmt in its bb.
40105         Formatting fix.
40106
40107 2017-01-05  David Malcolm  <dmalcolm@redhat.com>
40108
40109         * Makefile.in (OBJS): Add read-md.o, read-rtl.o,
40110         read-rtl-function.o, and selftest-rtl.o.
40111         * config/aarch64/aarch64.c: Include selftest.h and selftest-rtl.h.
40112         (selftest::aarch64_test_loading_full_dump): New function.
40113         (selftest::aarch64_run_selftests): New function.
40114         (TARGET_RUN_TARGET_SELFTESTS): Wire it up to
40115         selftest::aarch64_run_selftests.
40116         * config/i386/i386.c
40117         (selftest::ix86_test_loading_dump_fragment_1): New function.
40118         (selftest::ix86_test_loading_call_insn): New function.
40119         (selftest::ix86_test_loading_full_dump): New function.
40120         (selftest::ix86_test_loading_unspec): New function.
40121         (selftest::ix86_run_selftests): Call the new functions.
40122         * emit-rtl.c (maybe_set_max_label_num): New function.
40123         * emit-rtl.h (maybe_set_max_label_num): New decl.
40124         * function.c (instantiate_decls): Guard call to
40125         instantiate_decls_1 with if (DECL_INITIAL (fndecl)).
40126         * function-tests.c (selftest::verify_three_block_rtl_cfg): Remove
40127         "static".
40128         * gensupport.c (gen_reader::gen_reader): Pass "false"
40129         for new "compact" param of rtx_reader.
40130         * print-rtl.c (rtx_writer::print_rtx_operand): Print "(nil)"
40131         rather than an empty string for NULL strings.
40132         * read-md.c: Potentially include config.h rather than bconfig.h.
40133         Wrap include of errors.h with #ifdef GENERATOR_FILE.
40134         (have_error): New global, copied from errors.c.
40135         (md_reader::read_name): Rename to...
40136         (md_reader::read_name_1): ...this, adding "out_loc" param,
40137         and converting "missing name or number" to returning false, rather
40138         than failing.
40139         (md_reader::read_name): Reimplement in terms of read_name_1.
40140         (md_reader::read_name_or_nil): New function.
40141         (md_reader::read_string): Handle "(nil)" by returning NULL.
40142         (md_reader::md_reader): Add new param "compact".
40143         (md_reader::read_md_files): Wrap with #ifdef GENERATOR_FILE.
40144         (md_reader::read_file): New method.
40145         * read-md.h (md_reader::md_reader): Add new param "compact".
40146         (md_reader::read_file): New method.
40147         (md_reader::is_compact): New accessor.
40148         (md_reader::read_name): Convert return type from void to file_location.
40149         (md_reader::read_name_or_nil): New decl.
40150         (md_reader::read_name_1): New decl.
40151         (md_reader::m_compact): New field.
40152         (noop_reader::noop_reader): Pass "false" for new "compact" param
40153         of rtx_reader.
40154         (rtx_reader::rtx_reader): Add new "compact" param.
40155         (rtx_reader::read_rtx_operand): Make virtual and convert return
40156         type from void to rtx.
40157         (rtx_reader::read_until): New decl.
40158         (rtx_reader::handle_any_trailing_information): New virtual function.
40159         (rtx_reader::postprocess): New virtual function.
40160         (rtx_reader::finalize_string): New virtual function.
40161         (rtx_reader::m_in_call_function_usage): New field.
40162         (rtx_reader::m_reuse_rtx_by_id): New field.
40163         * read-rtl-function.c: New file.
40164         * selftest-rtl.c (selftest::assert_rtx_ptr_eq_at): New function.
40165         * selftest-rtl.h (ASSERT_RTX_PTR_EQ): New macro.
40166         (selftest::verify_three_block_rtl_cfg): New decl.
40167         * read-rtl-function.h: New file.
40168         * read-rtl.c: Potentially include config.h rather than bconfig.h.
40169         For host, include function.h, memmodel.h, and emit-rtl.h.
40170         (one_time_initialization): New function.
40171         (struct compact_insn_name): New struct.
40172         (compact_insn_names): New array.
40173         (find_code): Handle insn codes in compact dumps.
40174         (apply_subst_iterator): Wrap with #ifdef GENERATOR_FILE.
40175         (bind_subst_iter_and_attr): Likewise.
40176         (add_condition_to_string): Likewise.
40177         (add_condition_to_rtx): Likewise.
40178         (apply_attribute_uses): Likewise.
40179         (add_current_iterators): Likewise.
40180         (apply_iterators): Likewise.
40181         (initialize_iterators): Guard usage of apply_subst_iterator with
40182         #ifdef GENERATOR_FILE.
40183         (read_conditions): Wrap with #ifdef GENERATOR_FILE.
40184         (md_reader::read_mapping): Likewise.
40185         (add_define_attr_for_define_subst): Likewise.
40186         (add_define_subst_attr): Likewise.
40187         (read_subst_mapping): Likewise.
40188         (check_code_iterator): Likewise.
40189         (rtx_reader::read_rtx): Likewise.  Move one-time initialization
40190         logic to...
40191         (one_time_initialization): New function.
40192         (rtx_reader::read_until): New method.
40193         (read_flags): New function.
40194         (parse_reg_note_name): New function.
40195         (rtx_reader::read_rtx_code): Initialize "iterator" to NULL.
40196         Handle reuse_rtx ids.
40197         Wrap iterator lookup within #ifdef GENERATOR_FILE.
40198         Add parsing support for RTL dumps, mirroring the special-cases in
40199         print_rtx, by calling read_flags, reading REG_NOTE names, INSN_UID
40200         values, and calling handle_any_trailing_information.
40201         (rtx_reader::read_rtx_operand): Convert return type from void
40202         to rtx, returning return_rtx.  Handle case 'e'.  Call
40203         finalize_string on XSTR and XTMPL fields.
40204         (rtx_reader::read_nested_rtx):  Handle dumps in which trailing
40205          "(nil)" values were omitted.  Call the postprocess vfunc on the
40206         return_rtx.
40207         (rtx_reader::rtx_reader): Add new "compact" param and pass to base
40208         class ctor.  Initialize m_in_call_function_usage.  Call
40209         one_time_initialization.
40210         * rtl-tests.c (selftest::test_uncond_jump): Call
40211         set_new_first_and_last_insn.
40212         * rtl.h (read_rtx): Wrap decl with #ifdef GENERATOR_FILE.
40213         * selftest-rtl.c: New file.
40214         * selftest-rtl.h (class selftest::rtl_dump_test): New class.
40215         (selftest::get_insn_by_uid): New decl.
40216         * selftest-run-tests.c (selftest::run_tests): Call
40217         read_rtl_function_c_tests.
40218         * selftest.h  (selftest::read_rtl_function_c_tests): New decl.
40219         * tree-dfa.c (ssa_default_def): Return NULL_TREE for rtl function
40220         dumps.
40221
40222 2017-01-05  Uros Bizjak  <ubizjak@gmail.com>
40223
40224         * config/i386/i386.md (*testqi_ext_3): No need to handle memory
40225         operands in a special way.  Assert that pos+len <= mode precision.
40226
40227 2017-01-05  Jakub Jelinek  <jakub@redhat.com>
40228
40229         * common.opt (fvect-cost-model): Remove RejectNegative flag, use
40230         3 argument Alias with unlimited for the negative form.
40231         (fno-vect-cost-model): Removed.
40232
40233 2017-01-05  Martin Liska  <mliska@suse.cz>
40234
40235         * hsa-gen.c (gen_hsa_divmod): New function.
40236         (gen_hsa_insn_for_internal_fn_call): Use the function for IFN_DIVMOD.
40237
40238 2017-01-05  Martin Liska  <mliska@suse.cz>
40239
40240         PR pch/78970
40241         * gcc.c (lookup_compiler): Reject '-' filename for a precompiled
40242         header.
40243
40244 2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
40245
40246         * config/s390/s390.c (s390_expand_setmem): Unroll the loop for
40247         small constant length operands.
40248
40249 2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
40250
40251         * config/s390/s390.c (s390_expand_setmem): Avoid overlapping bytes
40252         between loop iterations.
40253
40254 2017-01-05  Martin Liska  <mliska@suse.cz>
40255
40256         PR sanitizer/78815
40257         * gimplify.c (gimplify_decl_expr): Compare to
40258         asan_poisoned_variables instread of checking flags.
40259         (gimplify_target_expr): Likewise.
40260         (gimplify_expr): Likewise.
40261         (gimplify_function_tree): Conditionally initialize
40262         asan_poisoned_variables.
40263
40264 2017-01-04  Jeff Law  <law@redhat.com>
40265
40266         PR tree-optimizatin/78812
40267         * rtl.h (contains_mem_rtx_p): Prototype.
40268         * ifcvt.c (containts_mem_rtx_p): Move from here to...
40269         * rtlanal.c (contains_mem_rtx_p): Here and remove static linkage.
40270         * gcse.c (prune_expressions): Use contains_mem_rtx_p to discover
40271         and prune MEMs that are not at the toplevel of a SET_SRC rtx.  Look
40272         through ZERO_EXTEND and SIGN_EXTEND when trying to avoid pruning MEMs.
40273
40274 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
40275
40276         * input.c (assert_char_at_range): Default-initialize actual_range.
40277
40278 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
40279
40280         * df-scan.c (df_ref_create_structure): Make regno unsigned,
40281         to match the caller.
40282
40283 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
40284
40285         * cfgexpand.c (expand_gimple_basic_block): Disregard debug
40286         insns after final jump in test to emit dummy move.
40287
40288 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
40289
40290         * gimple-iterator.h (gsi_one_nondebug_before_end_p): New.
40291         * tree-eh.c (cleanup_empty_eh): Skip more debug stmts.
40292
40293 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
40294
40295         * multiple_target.c (create_dispatcher_calls): Init e_next.
40296         * tree-ssa-loop-split.c (split_loop): Init border.
40297         * tree-vect-loop.c (vect_determine_vectorization_factor): Init
40298         scalar_type.
40299
40300 2017-01-04  Michael Meissner  <meissner@linux.vnet.ibm.com>
40301
40302         PR target/71977
40303         PR target/70568
40304         PR target/78823
40305         * config/rs6000/predicates.md (sf_subreg_operand): New predicate.
40306         (altivec_register_operand): Do not return true if the operand
40307         contains a SUBREG mixing SImode and SFmode.
40308         (vsx_register_operand): Likewise.
40309         (vsx_reg_sfsubreg_ok): New predicate.
40310         (vfloat_operand): Do not return true if the operand contains a
40311         SUBREG mixing SImode and SFmode.
40312         (vint_operand): Likewise.
40313         (vlogical_operand): Likewise.
40314         (gpc_reg_operand): Likewise.
40315         (int_reg_operand): Likewise.
40316         * config/rs6000/rs6000-protos.h (valid_sf_si_move): Add declaration.
40317         * config/rs6000/rs6000.c (valid_sf_si_move): New function to
40318         determine if a MOVSI or MOVSF operation contains SUBREGs that mix
40319         SImode and SFmode.
40320         (rs6000_emit_move_si_sf_subreg): New helper function.
40321         (rs6000_emit_move): Call rs6000_emit_move_si_sf_subreg to possbily
40322         fixup SUBREGs involving SImode and SFmode.
40323         * config/rs6000/vsx.md (SFBOOL_*): New constants that are operand
40324         numbers for the new peephole2 optimization.
40325         (peephole2 for SFmode unions): New peephole2 to optimize cases in
40326         the GLIBC math library that do AND/IOR/XOR operations on single
40327         precision floating point.
40328         * config/rs6000/rs6000.h (TARGET_NO_SF_SUBREG): New internal
40329         target macros to say whether we need to avoid SUBREGs mixing
40330         SImode and SFmode.
40331         (TARGET_ALLOW_SF_SUBREG): Likewise.
40332         * config/rs6000/rs6000.md (UNSPEC_SF_FROM_SI): New unspecs.
40333         (UNSPEC_SI_FROM_SF): Likewise.
40334         (iorxor): Change spacing.
40335         (and_ior_xor): New iterator for AND, IOR, and XOR.
40336         (movsi_from_sf): New insns for SImode/SFmode SUBREG support.
40337         (movdi_from_sf_zero_ext): Likewise.
40338         (mov<mode>_hardfloat, FMOVE32 iterator): Use register_operand
40339         instead of gpc_reg_operand.  Add SImode/SFmode SUBREG support.
40340         (movsf_from_si): New insn for SImode/SFmode SUBREG support.
40341         (fma<mode>4): Use gpc_reg_operand instead of register_operand.
40342         (fms<mode>4): Likewise.
40343         (fnma<mode>4): Likewise.
40344         (fnms<mode>4): Likewise.
40345         (nfma<mode>4): Likewise.
40346         (nfms<mode>4): Likewise.
40347
40348 2017-01-04  Marek Polacek  <polacek@redhat.com>
40349
40350         PR c++/64767
40351         * doc/invoke.texi: Document -Wpointer-compare.
40352
40353 2017-01-04  Jakub Jelinek  <jakub@redhat.com>
40354
40355         * optc-gen.awk: Emit #error for -W*/-f*/-m* Enum without
40356         RejectNegative.
40357
40358         * dwarf2out.c (output_loc_list): Don't throw away 64K+ location
40359         descriptions for -gdwarf-5 and emit them as uleb128 instead of
40360         2-byte data.
40361
40362 2017-01-04  Kelvin Nilsen  <kelvin@gcc.gnu.org>
40363
40364         PR target/78056
40365         * doc/sourcebuild.texi (PowerPC-specific attributes): Add
40366         documentation of the powerpc_popcntb_ok attribute.
40367         * config/rs6000/rs6000.c (rs6000_option_override_internal): Add
40368         code to issue warning messages if a requested CPU configuration is
40369         not supported by the binary (assembler and loader) toolchain.
40370         (spe_init_builtins): Add two assertions to prevent ICE if attempt is
40371         made to define a built-in function that has been disabled.
40372         (paired_init_builtins): Add assertion to prevent ICE if attempt is
40373         made to define a built-in function that has been disabled.
40374         (altivec_init_builtins): Add comment explaining why definition
40375         of the DST built-in functions is not preceded by an assertion
40376         check.  Add assertions to prevent ICE if attempts are made to
40377         define an altivec predicate or an abs* built-in function that has
40378         been disabled.
40379         (htm_init_builtins): Add comment explaining why definition of the
40380         htm built-in functions is not preceded by an assertion check.
40381
40382 2017-01-04  Jeff Law  <law@redhat.com>
40383
40384         PR tree-optimizatin/67955
40385         * tree-ssa-alias.c (same_addr_size_stores_p): Check offsets first.
40386         Allow any SSA_VAR_P as the base objects.  Use integer_zerop.  Verify
40387         the points-to solution does not include pt_null.  Use DECL_PT_UID
40388         unconditionally.
40389
40390 2017-01-04  Uros Bizjak  <ubizjak@gmail.com>
40391
40392         * config/i386/i386.md (HI/SImode test with imm to QImode splitters):
40393         Use gen_int_mode instead of gen_lopwart for const_int operands.
40394
40395 2017-01-04  Jakub Jelinek  <jakub@redhat.com>
40396
40397         PR tree-optimization/71563
40398         * match.pd: Simplify X << Y into X if Y is known to be 0 or
40399         out of range value - has low bits known to be zero.
40400
40401 2017-01-04  Alan Modra  <amodra@gmail.com>
40402
40403         * Makefile.in (aclocal_deps): Update and order as per aclocal.m4.
40404         * configure: Regenerate.
40405         * config.in: Regenerate.
40406
40407 2017-01-04  Jakub Jelinek  <jakub@redhat.com>
40408
40409         PR bootstrap/77569
40410         * input.c (ebcdic_execution_charset::on_error): Don't use strstr for
40411         a substring of the message, but strcmp with the whole message.  Ifdef
40412         ENABLE_NLS, translate the message first using dgettext.
40413
40414 2017-01-03  Jeff Law  <law@redhat.com>
40415
40416         PR tree-optimizatin/78856
40417         * tree-ssa-threadupdate.c: Include tree-vectorizer.h.
40418         (mark_threaded_blocks): Remove code to truncate thread paths that
40419         cross multiple loop headers.  Instead invalidate the cached loop
40420         iteration information and handle case of a thread path walking
40421         into an irreducible region.
40422
40423 2017-01-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
40424
40425         PR target/78900
40426         * config/rs6000/rs6000.c (rs6000_split_signbit): Change some
40427         assertions.  Add support for doing the signbit if the IEEE 128-bit
40428         floating point value is in a GPR.
40429         * config/rs6000/rs6000.md (Fsignbit): Delete.
40430         (signbit<mode>2_dm): Delete using <Fsignbit> and just use "wa".
40431         Update the length attribute if the value is in a GPR.
40432         (signbit<mode>2_dm_<su>ext): Add combiner pattern to eliminate
40433         the sign or zero extension instruction, since the value is always 0/1.
40434         (signbit<mode>2_dm2): Delete using <Fsignbit>.
40435
40436         PR target/78953
40437         * config/rs6000/vsx.md (vsx_extract_<mode>_store_p9): If we are
40438         extracting SImode to a GPR register so that we can generate a
40439         store, limit the vector to be in a traditional Altivec register
40440         for the vextuwrx instruction.
40441
40442 2017-01-03  Ian Lance Taylor  <iant@google.com>
40443
40444         * godump.c (go_format_type): Treat ENUMERAL_TYPE like INTEGER_TYPE.
40445
40446 2017-01-03  Martin Sebor  <msebor@redhat.com>
40447
40448         PR tree-optimization/78696
40449         * gimple-ssa-sprintf.c (format_floating): Correct handling of
40450         precision.  Use MPFR for %f for greater fidelity.  Correct handling
40451         of %g.
40452         (pass_sprintf_length::compute_format_length): Set width and precision
40453         specified by asrerisk to void_node for vararg functions.
40454         (try_substitute_return_value): Adjust dump output.
40455
40456 2017-01-03  David Edelsohn  <dje.gcc@gmail.com>
40457
40458         * doc/invoke.texi (RS6000 options): LRA is enabled by default.
40459
40460 2017-01-03  Eric Botcazou  <ebotcazou@adacore.com>
40461
40462         * doc/invoke.texi (SPARC options): Document -mlra as the default.
40463         * config/sparc/sparc.c (sparc_option_override): Force LRA unless
40464         -mlra/-mno-lra was passed to the compiler.
40465
40466 2017-01-03  James Cowgill  <James.Cowgill@imgtec.com>
40467
40468         PR rtl-optimization/65618
40469         * emit-rtl.c (try_split): Move initialization of "before" and
40470         "after" to just before the call to emit_insn_after_setloc.
40471
40472 2017-01-03  Gerald Pfeifer  <gerald@pfeifer.com>
40473
40474         * doc/md.texi (Standard Names): Remove reference to Java frontend.
40475
40476 2017-01-03  Pierre-Marie de Rodat  <derodat@adacore.com>
40477
40478         * dwarf2out.c (gen_enumeration_type_die): When
40479         -gno-strict-dwarf, add a DW_AT_encoding attribute.
40480
40481 2017-01-03  Jakub Jelinek  <jakub@redhat.com>
40482
40483         PR tree-optimization/78965
40484         * gimple-ssa-sprintf.c (pass_sprintf_length::compute_format_length):
40485         Change first argument from const call_info & to call_info &.  For %n
40486         set info.nowrite to false.
40487
40488         PR middle-end/78901
40489         * gimple-ssa-sprintf.c (try_substitute_return_value): Don't change
40490         possibly throwing calls.
40491
40492         * genmatch.c (dt_node::gen_kids_1): If generic_exprs include SSA_NAME
40493         and exprs_len || fns_len, emit the code for SSA_NAME next to the exprs
40494         and fns handling, rather than in a separate case SSA_NAME.
40495
40496 2017-01-02  Jeff Law  <law@redhat.com>
40497
40498         * config/darwin-driver.c (darwin_driver_init): Const-correctness
40499         fixes for first_period and second_period variables.
40500
40501 2017-01-02  Uros Bizjak  <ubizjak@gmail.com>
40502
40503         PR target/78967
40504         * config/i386/i386.md (UNSPEC_NOREX_MEM): New unspec.
40505         (*insvqi_1): New insn pattern.
40506         (*insvqi_1_mem_rex64): Ditto.
40507         (*insvqi_2): Ditto.
40508         (*insvqi_3): Rename from *insvqi.
40509
40510         (*extzvqi_mem_rex64): Add UNSPEC_NOREX_MEM tag.
40511
40512 2017-01-02  Gerald Pfeifer  <gerald@pfeifer.com>
40513
40514         * doc/cfg.texi (Edges): Remove reference to Java.
40515         (Maintaining the CFG): Ditto.
40516
40517 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
40518
40519         PR middle-end/77674
40520         * symtab.c (symtab_node::binds_to_current_def_p): Fix handling of
40521         transparent aliases.
40522
40523 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
40524
40525         PR middle-end/77484
40526         * predict.def (PRED_CALL): Update hitrate.
40527         (PRED_INDIR_CALL, PRED_POLYMORPHIC_CALL): New predictors.
40528         * predict.c (tree_estimate_probability_bb): Split CALL predictor
40529         into direct/indirect/polymorphic variants.
40530
40531 2017-01-01  Jakub Jelinek  <jakub@redhat.com>
40532
40533         Update copyright years.
40534
40535         * gcc.c (process_command): Update copyright notice dates.
40536         * gcov-dump.c (print_version): Ditto.
40537         * gcov.c (print_version): Ditto.
40538         * gcov-tool.c (print_version): Ditto.
40539         * gengtype.c (create_file): Ditto.
40540         * doc/cpp.texi: Bump @copying's copyright year.
40541         * doc/cppinternals.texi: Ditto.
40542         * doc/gcc.texi: Ditto.
40543         * doc/gccint.texi: Ditto.
40544         * doc/gcov.texi: Ditto.
40545         * doc/install.texi: Ditto.
40546         * doc/invoke.texi: Ditto.
40547 \f
40548 Copyright (C) 2017 Free Software Foundation, Inc.
40549
40550 Copying and distribution of this file, with or without modification,
40551 are permitted in any medium without royalty provided the copyright
40552 notice and this notice are preserved.