]> gcc.gnu.org Git - gcc.git/blob - gcc/ChangeLog
[ARC] Reimplement return padding operation for ARC700.
[gcc.git] / gcc / ChangeLog
1 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
2
3 * config/arc/arc-protos.h (arc_pad_return): Remove.
4 * config/arc/arc.c (machine_function): Remove force_short_suffix
5 and size_reason.
6 (arc_print_operand): Adjust printing of '&'.
7 (arc_verify_short): Remove conditional printing of short suffix.
8 (arc_final_prescan_insn): Remove reference to size_reason.
9 (pad_return): New function.
10 (arc_reorg): Call pad_return.
11 (arc_pad_return): Remove.
12 (arc_init_machine_status): Remove reference to force_short_suffix.
13 * config/arc/arc.md (vunspec): Add VUNSPEC_ARC_BLOCKAGE.
14 (attr length): When attribute iscompact is true force to 2
15 regardless; in the case of maybe check if we want to force the
16 instruction to have 4 bytes length.
17 (nopv): Change it to generate 4 byte long nop as well.
18 (blockage): New pattern.
19 (simple_return): Remove call to arc_pad_return.
20 (p_return_i): Likewise.
21
22 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
23
24 * config/arc/elf.h (LINK_GCC_C_SEQUENCE_SPEC): Define.
25
26 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
27
28 * config/arc/builtins.def (SYNC): SYNC instruction is valid on all
29 ARC cores.
30
31 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
32
33 * config/arc/arc.c (atomic_exchangesi): EX instruction is default
34 for ARC700 and ARCv2.
35
36 2018-06-13 Chenghua Xu <paul.hua.gm@gmail.com>
37
38 PR target/86076
39 * config/mips/loongson.md (vec_setv4hi): Gen_lowpart for
40 operands[2] instead of operands[1].
41
42
43 2018-06-12 Richard Sandiford <richard.sandiford@linaro.org>
44
45 * lra-constraints.c (simplify_operand_subreg): In the paradoxical
46 case, check whether the outer register overlaps an unallocatable
47 register, not just whether it fits the required class.
48
49 2018-06-12 Richard Sandiford <richard.sandiford@linaro.org>
50
51 * poly-int.h (can_div_trunc_p): Add new overload in which all values
52 are poly_ints.
53 * alias.c (get_addr): Extend CONST_INT handling to poly_int_rtx_p.
54 (memrefs_conflict_p): Likewise.
55 (init_alias_analysis): Likewise.
56 * cfgexpand.c (expand_debug_expr): Likewise.
57 * combine.c (combine_simplify_rtx, force_int_to_mode): Likewise.
58 * cse.c (fold_rtx): Likewise.
59 * explow.c (adjust_stack, anti_adjust_stack): Likewise.
60 * expr.c (emit_block_move_hints): Likewise.
61 (clear_storage_hints, push_block, emit_push_insn): Likewise.
62 (store_expr_with_bounds, reduce_to_bit_field_precision): Likewise.
63 (emit_group_load_1): Use rtx_to_poly_int64 for group offsets.
64 (emit_group_store): Likewise.
65 (find_args_size_adjust): Use strip_offset. Use rtx_to_poly_int64
66 to read the PRE/POST_MODIFY increment.
67 * calls.c (store_one_arg): Use strip_offset.
68 * rtlanal.c (rtx_addr_can_trap_p_1): Extend CONST_INT handling to
69 poly_int_rtx_p.
70 (set_noop_p): Use rtx_to_poly_int64 for the elements selected
71 by a VEC_SELECT.
72 * simplify-rtx.c (avoid_constant_pool_reference): Use strip_offset.
73 (simplify_binary_operation_1): Extend CONST_INT handling to
74 poly_int_rtx_p.
75 * var-tracking.c (compute_cfa_pointer): Take a poly_int64 rather
76 than a HOST_WIDE_INT.
77 (hard_frame_pointer_adjustment): Change from HOST_WIDE_INT to
78 poly_int64.
79 (adjust_mems, add_stores): Update accodingly.
80 (vt_canonicalize_addr): Track polynomial offsets.
81 (emit_note_insn_var_location): Likewise.
82 (vt_add_function_parameter): Likewise.
83 (vt_initialize): Likewise.
84
85 2018-06-12 Jeff Law <law@redhat.com>
86
87 * config.gcc (alpha*-*-freebsd*): Remove.
88 * config/alpha/freebsd.h: Remove.
89
90 2018-06-12 David Malcolm <dmalcolm@redhat.com>
91
92 PR other/69968
93 * spellcheck-tree.c (levenshtein_distance): Rename to...
94 (get_edit_distance): ...this, and update for underlying renaming.
95 * spellcheck-tree.h (levenshtein_distance): Rename to...
96 (get_edit_distance): ...this.
97 * spellcheck.c (levenshtein_distance): Rename to...
98 (get_edit_distance): ...this. Convert from Levenshtein distance
99 to Damerau-Levenshtein distance by supporting transpositions of
100 adjacent characters. Rename "v1" to "v_next" and "v0" to
101 "v_one_ago".
102 (selftest::levenshtein_distance_unit_test_oneway): Rename to...
103 (selftest::test_edit_distance_unit_test_oneway): ...this, and
104 update for underlying renaming.
105 (selftest::levenshtein_distance_unit_test): Rename to...
106 (selftest::test_get_edit_distance_unit): ...this, and update for
107 underlying renaming.
108 (selftest::test_find_closest_string): Add example from PR 69968
109 where transposition helps
110 (selftest::test_metric_conditions): Update for renaming.
111 (selftest::test_metric_conditions): Likewise.
112 (selftest::spellcheck_c_tests): Likewise.
113 * spellcheck.h (levenshtein_distance): Rename both overloads to...
114 (get_edit_distance): ...this.
115 (best_match::consider): Update for renaming.
116
117 2018-06-12 Martin Sebor <msebor@redhat.com>
118
119 PR tree-optimization/85259
120 * builtins.c (compute_objsize): Handle constant offsets.
121 * gimple-ssa-warn-restrict.c (maybe_diag_offset_bounds): Return
122 true iff a warning has been issued.
123 * gimple.h (gimple_nonartificial_location): New function.
124 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Call
125 gimple_nonartificial_location and handle -Wno-system-headers.
126 (handle_builtin_stxncpy): Same.
127
128 2018-06-12 Martin Sebor <msebor@redhat.com>
129
130 PR c/85931
131 * fold-const.c (operand_equal_p): Handle SAVE_EXPR.
132
133 2018-06-12 Will Schmidt <will_schmidt@vnet.ibm.com>
134
135 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
136 BUILTIN_VEC_XST entries for pointer to double and long long.
137
138 2018-06-12 H.J. Lu <hongjiu.lu@intel.com>
139
140 PR target/85990
141 * config/i386/gnu-user.h (TARGET_THREAD_SPLIT_STACK_OFFSET):
142 Update comments.
143 * config/i386/gnu-user64.h (TARGET_THREAD_SPLIT_STACK_OFFSET):
144 Likewise.
145
146 2018-06-12 Martin Liska <mliska@suse.cz>
147
148 * doc/options.texi: Document IntegerRange.
149
150 2018-06-12 Martin Liska <mliska@suse.cz>
151
152 * config/i386/i386.opt: Make MPX-related options as Deprecated.
153 * opt-functions.awk: Handle Deprecated flag.
154 * opts-common.c (decode_cmdline_option): Handle cl_deprecated
155 and report error.
156 (read_cmdline_option): Report warning for a deprecated option.
157 * opts.h (struct cl_option): Add new field cl_deprecated.
158 (CL_ERR_DEPRECATED): New.
159
160 2018-06-12 Martin Liska <mliska@suse.cz>
161
162 * doc/options.texi: Document Deprecated option flag.
163
164 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
165
166 * config/arc/arc-arch.h (arc_extras): New enum.
167 (arc_cpu_t):Add field extra.
168 (arc_cpu_types): Consider the extras.
169 * config/arc/arc-cpus.def: Add extras info.
170 * config/arc/arc-opts.h (processor_type): Consider extra field.
171 * config/arc/arc.c (arc_override_options): Handle extra field.
172
173 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
174
175 * config/arc/arc-arch.h: Update ARC_OPTX macro.
176 * config/arc/arc-options.def (ARC_OPTX): Introduce a new doc
177 field.
178 * config/arc/arc.c (arc_init): Update pic warning.
179 (irq_range): Update irq range parsing warnings.
180 (arc_override_options): Update various warning messages.
181 (arc_handle_aux_attribute): Likewise.
182
183 2018-06-12 Robert Suchanek <robert.suchanek@mips.com>
184
185 * config/mips/i6400.md (i6400_fpu_fadd): Remove frint.
186
187 2018-06-12 Jozef Lawrynowicz <jozef.l@mittosystems.com>
188
189 * doc/sourcebuild.texi: Document usage of line number 0 in verify
190 compiler messages directives.
191
192 2018-06-12 Matthew Fortune <mfortune@gmail.com>
193
194 * config/mips/mips-cpus.def: New MIPS_CPU for i6500.
195 * config/mips/mips-tables.opt: Regenerate.
196 * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Mark i6500 as
197 mips64r6.
198 * doc/invoke.texi: Document -march=i6500.
199
200 2018-06-12 Prachi Godbole <prachi.godbole@imgtec.com>
201
202 * config/mips/i6400.md (i6400_gpmuldiv): Remove cpu_unit.
203 (i6400_gpmul): Add cpu_unit.
204 (i6400_gpdiv): Likewise.
205 (i6400_msa_add_d): Update reservations.
206 (i6400_msa_int_add) Likewise.
207 (i6400_msa_short_logic3) Likewise.
208 (i6400_msa_short_logic2) Likewise.
209 (i6400_msa_short_logic) Likewise.
210 (i6400_msa_move) Likewise.
211 (i6400_msa_cmp) Likewise.
212 (i6400_msa_short_float2) Likewise.
213 (i6400_msa_div_d) Likewise.
214 (i6400_msa_long_logic1) Likewise.
215 (i6400_msa_long_logic2) Likewise.
216 (i6400_msa_mult) Likewise.
217 (i6400_msa_long_float2) Likewise.
218 (i6400_msa_long_float4) Likewise.
219 (i6400_msa_long_float5) Likewise.
220 (i6400_msa_long_float8) Likewise.
221 (i6400_fpu_fadd): Include frint type.
222 (i6400_fpu_store): New define_insn_reservation.
223 (i6400_fpu_load): Likewise.
224 (i6400_fpu_move): Likewise.
225 (i6400_fpu_fcmp): Likewise.
226 (i6400_fpu_fmadd): Likewise.
227 (i6400_int_mult): Include imul3nc type and update reservation.
228 (i6400_int_div): Include idiv3 type and update reservation.
229 (i6400_int_load): Update to check type not move_type.
230 (i6400_int_store): Likewise.
231 (i6400_int_prefetch): Set zero latency.
232
233 2018-06-12 Eric Botcazou <ebotcazou@adacore.com>
234
235 * gcc.c: Document new %@{...} sequence.
236 (LINK_COMMAND_SPEC): Use it for the -L switches.
237 (cpp_unique_options): Use it for the -I switches.
238 (at_file_argbuf): New global variable.
239 (in_at_file): Likewise.
240 (alloc_args): Create at_file_argbuf.
241 (clear_args): Truncate at_file_argbuf.
242 (store_arg): If in_at_file, push the argument onto at_file_argbuf.
243 (open_at_file): New function.
244 (close_at_file): Likewise.
245 (create_at_file): Delete.
246 (do_spec_1) <'i'>: Use open_at_file/close_at_file.
247 <'o'>: Likewise.
248 <'@'>: New case.
249 (validate_switches_from_spec): Deal with %@{...} sequence.
250 (validate_switches): Likewise.
251 (driver::finalize): Call clear_args.
252
253 2018-06-11 Rasmus Villemoes <rasmus.villemoes@prevas.dk>
254
255 * config/vx-common.h (USE_TM_CLONE_REGISTRY): #define to 0.
256
257 2018-06-11 Martin Sebor <msebor@redhat.com>
258
259 * doc/invoke.texi (-Wall): List -Wc++17-compat.
260 (Wno-class-memaccess): Add @opindex.
261 (Wno-templates, Wno-multiple-inheritance): Same.
262 (Wno-virtual-inheritance, Wno-namespaces): Same.
263 (Wno-pedantic, Wno-chkp, Wcoverage-mismatch): Same.
264 (Wno-format-overflow, Wno-format-truncation): Same.
265 (Wno-unused-local-typedefs, Walloc-size-larger-than): Same.
266 (Wno-alloc-size-larger-than, Wframe-larger-than): Same
267 (Wno-stack-usage, Wno-c++-compat, Wno-c++11-compat): Same.
268 (Wno-c++14-compat, Wno-c++17-compat, Wno-openmp-simd): Same.
269 (Wno-unsuffixed-float-constants, Wno-addr-space-convert): Same.
270 (Wno-misspelled-isr): Same.
271
272 2018-06-11 Martin Sebor <msebor@redhat.com>
273
274 * PR tree-optimization/86083
275 * tree-ssa-strlen.c (handle_char_store): Use tree_expr_nonzero_p.
276
277 2018-06-11 Zhouyi Zhou <zhouzhouyi@gmail.com>
278
279 * tree-eh.c (lower_eh_constructs_2): Add a comma to comment.
280
281 2018-06-11 Segher Boessenkool <segher@kernel.crashing.org>
282
283 PR target/85755
284 * config/rs6000/rs6000.md (*movdi_internal32): Put constraint modifiers
285 on the correct operand.
286 (*movdi_internal64): Ditto.
287
288 2018-06-11 Martin Liska <mliska@suse.cz>
289
290 PR tree-optimization/86089
291 * tree-ssa-strlen.c (get_string_length): Move back removed hunk.
292
293 2018-06-11 Julia Koval <julia.koval@intel.com>
294
295 * config/i386/vaesintrin.h (_mm_aesdec_epi128, _mm_aesdeclast_epi128)
296 _mm_aesenc_epi128, _mm_aesenclast_epi128: Remove.
297 * config/i386/vpclmulqdqintrin.h (_mm_clmulepi64_epi128): Remove.
298
299 2018-06-11 Olivier Hainque <hainque@adacore.com>
300
301 * dwarf2out.c (gen_compile_unit_die): Fallout to DW_LANG_Ada83
302 for Ada with strict dwarf2.
303
304 2018-06-08 Peter Bergner <bergner@vnet.ibm.com>
305
306 PR target/85755
307 * config/rs6000/rs6000.c (mem_operand_gpr): Enable PRE_INC and PRE_DEC
308 addresses.
309
310 2018-06-08 Jan Hubicka <hubicka@ucw.cz>
311
312 * dumpfile.c (FIRST_ME_AUTO_NUMBERED_DUMP): Bump to 4.
313
314 2018-06-08 David Edelsohn <dje.gcc@gmail.com>
315
316 * config/rs6000/rs6000.c (rs6000_passes_ieee128): Protect with #if
317 TARGET_ELF.
318
319 2018-06-08 Martin Liska <mliska@suse.cz>
320
321 * tree-cfg.h (debug_function): Fix argument type to match
322 implementation.
323
324 2018-06-08 Martin Liska <mliska@suse.cz>
325
326 * config/powerpcspe/powerpcspe.c (rs6000_xcoff_visibility):
327 Remove usage of MPX-related (and removed) fields.
328 * config/rs6000/rs6000.c (rs6000_xcoff_visibility): Likewise.
329
330 2018-06-08 David Malcolm <dmalcolm@redhat.com>
331
332 * cfg.c (debug): Use TDF_NONE rather than 0.
333 * cfghooks.c (debug): Likewise.
334 * dumpfile.c (DUMP_FILE_INFO): Likewise; also for OPTGROUP.
335 (struct dump_option_value_info): Convert to...
336 (struct kv_pair): ...this template type.
337 (dump_options): Convert to kv_pair<dump_flags_t>; use TDF_NONE
338 rather than 0.
339 (optinfo_verbosity_options): Likewise.
340 (optgroup_options): Convert to kv_pair<optgroup_flags_t>; use
341 OPTGROUP_NONE.
342 (gcc::dump_manager::dump_register): Use optgroup_flags_t rather
343 than int for "optgroup_flags" param.
344 (dump_generic_expr_loc): Use dump_flags_t rather than int for
345 "dump_kind" param.
346 (dump_dec): Likewise.
347 (dump_finish): Use TDF_NONE rather than 0.
348 (gcc::dump_manager::opt_info_enable_passes): Use optgroup_flags_t
349 rather than int for "optgroup_flags" param. Use TDF_NONE rather
350 than 0. Update for change to option_ptr.
351 (opt_info_switch_p_1): Convert "optgroup_flags" param from int *
352 to optgroup_flags_t *. Use TDF_NONE and OPTGROUP_NONE rather than
353 0. Update for changes to optinfo_verbosity_options and
354 optgroup_options.
355 (opt_info_switch_p): Convert optgroup_flags from int to
356 optgroup_flags_t.
357 (dump_basic_block): Use dump_flags_t rather than int
358 for "dump_kind" param.
359 * dumpfile.h (TDF_ADDRESS, TDF_SLIM, TDF_RAW, TDF_DETAILS,
360 TDF_STATS, TDF_BLOCKS, TDF_VOPS, TDF_LINENO, TDF_UID)
361 TDF_STMTADDR, TDF_GRAPH, TDF_MEMSYMS, TDF_RHS_ONLY, TDF_ASMNAME,
362 TDF_EH, TDF_NOUID, TDF_ALIAS, TDF_ENUMERATE_LOCALS, TDF_CSELIB,
363 TDF_SCEV, TDF_GIMPLE, TDF_FOLDING, MSG_OPTIMIZED_LOCATIONS,
364 MSG_MISSED_OPTIMIZATION, MSG_NOTE, MSG_ALL, TDF_COMPARE_DEBUG,
365 TDF_NONE): Convert from macros to...
366 (enum dump_flag): ...this new enum.
367 (dump_flags_t): Update to use enum.
368 (operator|, operator&, operator~, operator|=, operator&=):
369 Implement for dump_flags_t.
370 (OPTGROUP_NONE, OPTGROUP_IPA, OPTGROUP_LOOP, OPTGROUP_INLINE,
371 OPTGROUP_OMP, OPTGROUP_VEC, OPTGROUP_OTHER, OPTGROUP_ALL):
372 Convert from macros to...
373 (enum optgroup_flag): ...this new enum.
374 (optgroup_flags_t): New typedef.
375 (operator|, operator|=): Implement for optgroup_flags_t.
376 (struct dump_file_info): Convert field "alt_flags" to
377 dump_flags_t. Convert field "optgroup_flags" to
378 optgroup_flags_t.
379 (dump_basic_block): Use dump_flags_t rather than int for param.
380 (dump_generic_expr_loc): Likewise.
381 (dump_dec): Likewise.
382 (dump_register): Convert param "optgroup_flags" to
383 optgroup_flags_t.
384 (opt_info_enable_passes): Likewise.
385 * early-remat.c (early_remat::dump_edge_list): Use TDF_NONE rather
386 than 0.
387 * gimple-pretty-print.c (debug): Likewise.
388 * gimple-ssa-store-merging.c (bswap_replace): Likewise.
389 (merged_store_group::apply_stores): Likewise.
390 * gimple-ssa-strength-reduction.c (insert_initializers): Likewise.
391 * gimple.c (verify_gimple_pp): Likewise.
392 * graphite-poly.c (print_pbb_body): Likewise.
393 * passes.c (pass_manager::register_one_dump_file): Convert
394 local "optgroup_flags" to optgroup_flags_t.
395 * print-tree.c (print_node): Use TDF_NONE rather than 0.
396 (debug): Likewise.
397 (debug_body): Likewise.
398 * tree-pass.h (struct pass_data): Convert field "optgroup_flags"
399 to optgroup_flags_t.
400 * tree-pretty-print.c (print_struct_decl): Use TDF_NONE rather
401 than 0.
402 * tree-ssa-math-opts.c (convert_mult_to_fma_1): Likewise.
403 (convert_mult_to_fma): Likewise.
404 * tree-ssa-reassoc.c (undistribute_ops_list): Likewise.
405 * tree-ssa-sccvn.c (vn_eliminate): Likewise.
406 * tree-vect-data-refs.c (dump_lower_bound): Convert param
407 "dump_kind" to dump_flags_t.
408
409 2018-06-08 Segher Boessenkool <segher@kernel.crashing.org>
410
411 * config/rs6000/rs6000.c (min, max): Delete.
412
413 2018-06-08 Segher Boessenkool <segher@kernel.crashing.org>
414
415 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete mention of
416 -mabi=spe and -mabi=no-spe.
417
418 2018-06-08 Martin Liska <mliska@suse.cz>
419
420 * ipa-pure-const.c (propagate_pure_const): Use ::get at places
421 where we expect an existing summary.
422
423 2018-06-08 Martin Liska <mliska@suse.cz>
424
425 * ipa-inline-analysis.c (simple_edge_hints): Use ::get method.
426 * ipa-inline.h (estimate_edge_growth): Likewise.
427
428 2018-06-08 Martin Liska <mliska@suse.cz>
429
430 * cgraph.c (function_version_hasher::hash): Use
431 cgraph_node::get_uid ().
432 (function_version_hasher::equal):
433 * cgraph.h (cgraph_node::get_uid): New method.
434 * ipa-inline.c (update_caller_keys): Use
435 cgraph_node::get_uid ().
436 (update_callee_keys): Likewise.
437 * ipa-utils.c (searchc): Likewise.
438 (ipa_reduced_postorder): Likewise.
439 * lto-cgraph.c (input_node): Likewise.
440 * passes.c (is_pass_explicitly_enabled_or_disabled): Likewise.
441 * symbol-summary.h (symtab_insertion): Likewise.
442 (symtab_removal): Likewise.
443 (symtab_duplication): Likewise.
444 * tree-pretty-print.c (dump_function_header): Likewise.
445 * tree-sra.c (convert_callers_for_node): Likewise.
446
447 2018-06-08 Martin Liska <mliska@suse.cz>
448
449 * cgraph.c (symbol_table::create_edge): Always assign a new
450 unique number.
451 (symbol_table::free_edge): Do not recycle numbers.
452 * cgraph.h (cgraph_edge::get): New method.
453 * symbol-summary.h (symtab_removal): Use it.
454 (symtab_duplication): Likewise.
455 (call_summary::hashable_uid): Remove.
456
457 2018-06-08 Martin Liska <mliska@suse.cz>
458
459 * ipa-inline-analysis.c (inline_edge_removal_hook): Remove.
460 (initialize_growth_caches): Remove.
461 (free_growth_caches): Likewise.
462 (do_estimate_edge_time): Use edge_growth_cache.
463 (do_estimate_edge_size): Likewise.
464 (do_estimate_edge_hints): Likewise.
465 * ipa-inline.c (reset_edge_caches): Likewise.
466 (recursive_inlining): Likewise.
467 (inline_small_functions): Likewise.
468 * ipa-inline.h (initialize_growth_caches): Remove.
469 (estimate_edge_size): Likewise.
470 (estimate_edge_time): Likewise.
471 (estimate_edge_hints): Likewise.
472 (reset_edge_growth_cache): Likewise.
473 * symbol-summary.h (call_summary::remove): New method.
474
475 2018-06-08 Martin Liska <mliska@suse.cz>
476
477 * ipa-cp.c (class edge_clone_summary): New summary.
478 (grow_edge_clone_vectors): Remove.
479 (ipcp_edge_duplication_hook): Remove.
480 (class edge_clone_summary_t): New call_summary class.
481 (ipcp_edge_removal_hook): Remove.
482 (edge_clone_summary_t::duplicate): New function.
483 (get_next_cgraph_edge_clone): Use edge_clone_summaries.
484 (create_specialized_node): Likewise.
485 (ipcp_driver): Initialize edge_clone_summaries and do not
486 register hooks.
487
488 2018-06-08 Martin Liska <mliska@suse.cz>
489
490 * symbol-summary.h (get): New function.
491 (call_summary::m_initialize_when_cloning): New class member.
492
493 2018-06-08 Martin Liska <mliska@suse.cz>
494
495 * cgraph.c (cgraph_node::remove): Do not recycle uid.
496 * cgraph.h (symbol_table::release_symbol): Do not pass uid.
497 (symbol_table::allocate_cgraph_symbol): Do not set uid.
498 * passes.c (uid_hash_t): Record removed_nodes by their uids.
499 (remove_cgraph_node_from_order): Use the removed_nodes set.
500 (do_per_function_toporder): Likwise.
501 * symbol-summary.h (symtab_insertion): Use cgraph_node::uid
502 instead of summary_uid.
503 (symtab_removal): Likewise.
504 (symtab_duplication): Likewise.
505
506 2018-06-08 Martin Liska <mliska@suse.cz>
507
508 * ipa-cp.c (ipcp_store_bits_results): Use
509 ipcp_transformation_sum.
510 (ipcp_store_vr_results): Likewise.
511 * ipa-prop.c (ipcp_grow_transformations_if_necessary): Renamed
512 to ...
513 (ipcp_transformation_initialize): ... this.
514 (ipa_set_node_agg_value_chain):
515 (ipa_node_params_t::duplicate): Use ipcp_transformation_sum.
516 (write_ipcp_transformation_info): Likewise.
517 (read_ipcp_transformation_info): Likewise.
518 (ipcp_update_bits): Likewise.
519 (ipcp_update_vr): Likewise.
520 (ipcp_transform_function): Likewise.
521 * ipa-prop.h: Rename ipcp_transformation_summary to
522 ipcp_transformation.
523 (class ipcp_transformation_t): New function summary.
524 (ipcp_get_transformation_summary): Use ipcp_transformation_sum.
525 (ipa_get_agg_replacements_for_node): Likewise.
526
527 2018-06-08 Martin Liska <mliska@suse.cz>
528
529 * ipa-pure-const.c (struct funct_state_d): Do it class instead
530 of struct.
531 (class funct_state_summary_t): New function_summary class.
532 (has_function_state): Remove.
533 (get_function_state): Likewise.
534 (set_function_state): Likewise.
535 (add_new_function): Likewise.
536 (funct_state_summary_t::insert): New function.
537 (duplicate_node_data): Remove.
538 (remove_node_data): Remove.
539 (funct_state_summary_t::duplicate): New function.
540 (register_hooks): Create new funct_state_summaries.
541 (pure_const_generate_summary): Use it.
542 (pure_const_write_summary): Likewise.
543 (pure_const_read_summary): Likewise.
544 (propagate_pure_const): Likewise.
545 (propagate_nothrow): Likewise.
546 (dump_malloc_lattice): Likewise.
547 (propagate_malloc): Likewise.
548 (execute): Do not register hooks, just remove summary
549 instead.
550 (pass_ipa_pure_const::pass_ipa_pure_const): Simplify
551 constructor.
552
553 2018-06-08 Martin Liska <mliska@suse.cz>
554
555 * ipa-reference.c (remove_node_data): Remove.
556 (duplicate_node_data): Likewise.
557 (class ipa_ref_var_info_summary_t): New class.
558 (class ipa_ref_opt_summary_t): Likewise.
559 (get_reference_vars_info): Use ipa_ref_var_info_summaries.
560 (get_reference_optimization_summary): Use
561 ipa_ref_opt_sum_summaries.
562 (set_reference_vars_info): Remove.
563 (set_reference_optimization_summary): Likewise.
564 (ipa_init): Create summaries.
565 (init_function_info): Use function summary.
566 (ipa_ref_opt_summary_t::duplicate): New function.
567 (ipa_ref_opt_summary_t::remove): New function.
568 (get_read_write_all_from_node): Fix GNU coding style.
569 (propagate): Use function summary.
570 (write_node_summary_p): Fix GNU coding style.
571 (stream_out_bitmap): Likewise.
572 (ipa_reference_read_optimization_summary): Use function summary.
573 (ipa_reference_c_finalize): Do not release hooks.
574
575 2018-06-08 Martin Liska <mliska@suse.cz>
576
577 * ipa-fnsummary.c (dump_ipa_call_summary): Use ::get method.
578 (analyze_function_body): Extract multiple calls of get_create.
579 * ipa-inline-analysis.c (simple_edge_hints): Likewise.
580 * ipa-inline.c (recursive_inlining): Use ::get method.
581 * ipa-inline.h (estimate_edge_growth): Likewise.
582
583 2018-06-08 Martin Liska <mliska@suse.cz>
584
585 * hsa-common.h (enum hsa_function_kind): Rename HSA_NONE to
586 HSA_INVALID.
587 (hsa_function_summary::hsa_function_summary): Use the new enum
588 value.
589 (hsa_gpu_implementation_p): Use hsa_summaries::get.
590 * hsa-gen.c (hsa_get_host_function): Likewise.
591 (get_brig_function_name): Likewise.
592 * ipa-hsa.c (process_hsa_functions): Likewise.
593 (ipa_hsa_write_summary): Likewise.
594 * symbol-summary.h (symtab_duplication): Use ::get function/
595 (get): New function.
596
597 2018-06-08 Martin Liska <mliska@suse.cz>
598
599 * config/i386/i386.c (ix86_can_inline_p): Use get_create instead
600 of get.
601 * hsa-common.c (hsa_summary_t::link_functions): Likewise.
602 (hsa_register_kernel): Likewise.
603 * hsa-common.h (hsa_gpu_implementation_p): Likewise.
604 * hsa-gen.c (hsa_get_host_function): Likewise.
605 (get_brig_function_name): Likewise.
606 (generate_hsa): Likewise.
607 (pass_gen_hsail::execute): Likewise.
608 * ipa-cp.c (ipcp_cloning_candidate_p): Likewise.
609 (devirtualization_time_bonus): Likewise.
610 (ipcp_propagate_stage): Likewise.
611 * ipa-fnsummary.c (redirect_to_unreachable): Likewise.
612 (edge_set_predicate): Likewise.
613 (evaluate_conditions_for_known_args): Likewise.
614 (evaluate_properties_for_edge): Likewise.
615 (ipa_fn_summary::reset): Likewise.
616 (ipa_fn_summary_t::duplicate): Likewise.
617 (dump_ipa_call_summary): Likewise.
618 (ipa_dump_fn_summary): Likewise.
619 (analyze_function_body): Likewise.
620 (compute_fn_summary): Likewise.
621 (estimate_edge_devirt_benefit): Likewise.
622 (estimate_edge_size_and_time): Likewise.
623 (estimate_calls_size_and_time): Likewise.
624 (estimate_node_size_and_time): Likewise.
625 (inline_update_callee_summaries): Likewise.
626 (remap_edge_change_prob): Likewise.
627 (remap_edge_summaries): Likewise.
628 (ipa_merge_fn_summary_after_inlining): Likewise.
629 (ipa_update_overall_fn_summary): Likewise.
630 (read_ipa_call_summary): Likewise.
631 (inline_read_section): Likewise.
632 (write_ipa_call_summary): Likewise.
633 (ipa_fn_summary_write): Likewise.
634 (ipa_free_fn_summary): Likewise.
635 * ipa-hsa.c (process_hsa_functions): Likewise.
636 (ipa_hsa_write_summary): Likewise.
637 (ipa_hsa_read_section): Likewise.
638 * ipa-icf.c (sem_function::merge): Likewise.
639 * ipa-inline-analysis.c (simple_edge_hints): Likewise.
640 (do_estimate_edge_time): Likewise.
641 (estimate_size_after_inlining): Likewise.
642 (estimate_growth): Likewise.
643 (growth_likely_positive): Likewise.
644 * ipa-inline-transform.c (clone_inlined_nodes): Likewise.
645 (inline_call): Likewise.
646 * ipa-inline.c (caller_growth_limits): Likewise.
647 (can_inline_edge_p): Likewise.
648 (can_inline_edge_by_limits_p): Likewise.
649 (compute_uninlined_call_time): Likewise.
650 (compute_inlined_call_time): Likewise.
651 (want_inline_small_function_p): Likewise.
652 (edge_badness): Likewise.
653 (update_caller_keys): Likewise.
654 (update_callee_keys): Likewise.
655 (recursive_inlining): Likewise.
656 (inline_small_functions): Likewise.
657 (inline_to_all_callers_1): Likewise.
658 (dump_overall_stats): Likewise.
659 (early_inline_small_functions): Likewise.
660 (early_inliner): Likewise.
661 * ipa-inline.h (estimate_edge_growth): Likewise.
662 * ipa-profile.c (ipa_propagate_frequency_1): Likewise.
663 * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
664 * ipa-prop.h (IPA_NODE_REF): Likewise.
665 (IPA_EDGE_REF): Likewise.
666 * ipa-pure-const.c (malloc_candidate_p): Likewise.
667 (propagate_malloc): Likewise.
668 * ipa-split.c (execute_split_functions): Likewise.
669 * symbol-summary.h: Rename get to get_create.
670 (get): Likewise.
671 (get_create): Likewise.
672 * tree-sra.c (ipa_sra_preliminary_function_checks): Likewise.
673
674 2018-06-08 Martin Liska <mliska@suse.cz>
675
676 * symbol-summary.h (release): Move definition out of class
677 declaration.
678 (symtab_removal): Likewise.
679 (symtab_duplication): Likewise.
680
681 2018-06-08 Martin Liska <mliska@suse.cz>
682
683 * symbol-summary.h (function_summary): Move constructor
684 implementation out of class declaration.
685 (release): Likewise.
686 (symtab_insertion): Likewise.
687 (symtab_removal): Likewise.
688 (symtab_duplication): Likewise.
689 (get): Likewise.
690
691 2018-06-08 Martin Liska <mliska@suse.cz>
692
693 * Makefile.in: Remove support for MPX (macros, related functions,
694 fields in cgraph_node, ...).
695 * builtin-types.def (BT_BND): Likewise.
696 (BT_FN_BND_CONST_PTR): Likewise.
697 (BT_FN_CONST_PTR_BND): Likewise.
698 (BT_FN_VOID_PTR_BND): Likewise.
699 (BT_FN_BND_CONST_PTR_SIZE): Likewise.
700 (BT_FN_VOID_CONST_PTR_BND_CONST_PTR): Likewise.
701 * builtins.c (expand_builtin_memcpy_with_bounds): Likewise.
702 (expand_builtin_mempcpy_with_bounds): Likewise.
703 (expand_builtin_memset_with_bounds): Likewise.
704 (expand_builtin_memset_args): Likewise.
705 (std_expand_builtin_va_start): Likewise.
706 (expand_builtin): Likewise.
707 (expand_builtin_with_bounds): Likewise.
708 * builtins.def (DEF_BUILTIN_CHKP): Likewise.
709 (DEF_LIB_BUILTIN_CHKP): Likewise.
710 (DEF_EXT_LIB_BUILTIN_CHKP): Likewise.
711 (DEF_CHKP_BUILTIN): Likewise.
712 (BUILT_IN_MEMCPY): Likewise.
713 (BUILT_IN_MEMMOVE): Likewise.
714 (BUILT_IN_MEMPCPY): Likewise.
715 (BUILT_IN_MEMSET): Likewise.
716 (BUILT_IN_STPCPY): Likewise.
717 (BUILT_IN_STRCAT): Likewise.
718 (BUILT_IN_STRCHR): Likewise.
719 (BUILT_IN_STRCPY): Likewise.
720 (BUILT_IN_STRLEN): Likewise.
721 (BUILT_IN_MEMCPY_CHK): Likewise.
722 (BUILT_IN_MEMMOVE_CHK): Likewise.
723 (BUILT_IN_MEMPCPY_CHK): Likewise.
724 (BUILT_IN_MEMSET_CHK): Likewise.
725 (BUILT_IN_STPCPY_CHK): Likewise.
726 (BUILT_IN_STRCAT_CHK): Likewise.
727 (BUILT_IN_STRCPY_CHK): Likewise.
728 * calls.c (store_bounds): Likewise.
729 (emit_call_1): Likewise.
730 (special_function_p): Likewise.
731 (maybe_warn_nonstring_arg): Likewise.
732 (initialize_argument_information): Likewise.
733 (finalize_must_preallocate): Likewise.
734 (compute_argument_addresses): Likewise.
735 (expand_call): Likewise.
736 * cfgexpand.c (expand_call_stmt): Likewise.
737 (expand_return): Likewise.
738 (expand_gimple_stmt_1): Likewise.
739 (pass_expand::execute): Likewise.
740 * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
741 (cgraph_node::remove): Likewise.
742 (cgraph_node::dump): Likewise.
743 (cgraph_node::verify_node): Likewise.
744 * cgraph.h (chkp_function_instrumented_p): Likewise.
745 (symtab_node::get_alias_target): Likewise.
746 (cgraph_node::can_remove_if_no_direct_calls_and_refs_p): Likewise.
747 (cgraph_local_p): Likewise.
748 * cgraphbuild.c (cgraph_edge::rebuild_edges): Likewise.
749 (cgraph_edge::rebuild_references): Likewise.
750 * cgraphunit.c (varpool_node::finalize_decl): Likewise.
751 (walk_polymorphic_call_targets): Likewise.
752 (cgraph_node::expand_thunk): Likewise.
753 (symbol_table::output_weakrefs): Likewise.
754 * common/config/i386/i386-common.c (OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Likewise.
755 (ix86_handle_option): Likewise.
756 * config/i386/constraints.md: Likewise.
757 * config/i386/i386-builtin-types.def (BND): Likewise.
758 (VOID): Likewise.
759 (PVOID): Likewise.
760 (ULONG): Likewise.
761 * config/i386/i386-builtin.def (BDESC_END): Likewise.
762 (BDESC_FIRST): Likewise.
763 (BDESC): Likewise.
764 * config/i386/i386-c.c (ix86_target_macros_internal): Likewise.
765 * config/i386/i386-protos.h (ix86_bnd_prefixed_insn_p): Likewise.
766 * config/i386/i386.c (enum reg_class): Likewise.
767 (ix86_target_string): Likewise.
768 (ix86_option_override_internal): Likewise.
769 (ix86_conditional_register_usage): Likewise.
770 (ix86_valid_target_attribute_inner_p): Likewise.
771 (ix86_set_indirect_branch_type): Likewise.
772 (ix86_set_current_function): Likewise.
773 (ix86_function_arg_regno_p): Likewise.
774 (init_cumulative_args): Likewise.
775 (ix86_function_arg_advance): Likewise.
776 (ix86_function_arg): Likewise.
777 (ix86_pass_by_reference): Likewise.
778 (ix86_function_value_regno_p): Likewise.
779 (ix86_function_value_1): Likewise.
780 (ix86_function_value_bounds): Likewise.
781 (ix86_return_in_memory): Likewise.
782 (ix86_setup_incoming_vararg_bounds): Likewise.
783 (ix86_va_start): Likewise.
784 (indirect_thunk_need_prefix): Likewise.
785 (print_reg): Likewise.
786 (ix86_print_operand): Likewise.
787 (ix86_expand_call): Likewise.
788 (ix86_output_function_return): Likewise.
789 (reg_encoded_number): Likewise.
790 (BDESC_VERIFYS): Likewise.
791 (ix86_init_mpx_builtins): Likewise.
792 (ix86_init_builtins): Likewise.
793 (ix86_emit_cmove): Likewise.
794 (ix86_emit_move_max): Likewise.
795 (ix86_expand_builtin): Likewise.
796 (ix86_builtin_mpx_function): Likewise.
797 (ix86_get_arg_address_for_bt): Likewise.
798 (ix86_load_bounds): Likewise.
799 (ix86_store_bounds): Likewise.
800 (ix86_load_returned_bounds): Likewise.
801 (ix86_store_returned_bounds): Likewise.
802 (ix86_class_likely_spilled_p): Likewise.
803 (ix86_hard_regno_mode_ok): Likewise.
804 (x86_order_regs_for_local_alloc): Likewise.
805 (ix86_mitigate_rop): Likewise.
806 (ix86_bnd_prefixed_insn_p): Likewise.
807 (ix86_mpx_bound_mode): Likewise.
808 (ix86_make_bounds_constant): Likewise.
809 (ix86_initialize_bounds): Likewise.
810 (TARGET_LOAD_BOUNDS_FOR_ARG): Likewise.
811 (TARGET_STORE_BOUNDS_FOR_ARG): Likewise.
812 (TARGET_LOAD_RETURNED_BOUNDS): Likewise.
813 (TARGET_STORE_RETURNED_BOUNDS): Likewise.
814 (TARGET_CHKP_BOUND_MODE): Likewise.
815 (TARGET_BUILTIN_CHKP_FUNCTION): Likewise.
816 (TARGET_CHKP_FUNCTION_VALUE_BOUNDS): Likewise.
817 (TARGET_CHKP_MAKE_BOUNDS_CONSTANT): Likewise.
818 (TARGET_CHKP_INITIALIZE_BOUNDS): Likewise.
819 * config/i386/i386.h (TARGET_MPX): Likewise.
820 (TARGET_MPX_P): Likewise.
821 (VALID_BND_REG_MODE): Likewise.
822 (FIRST_BND_REG): Likewise.
823 (LAST_BND_REG): Likewise.
824 (enum reg_class): Likewise.
825 (BND_REG_P): Likewise.
826 (BND_REGNO_P): Likewise.
827 (BNDmode): Likewise.
828 (ADJUST_INSN_LENGTH): Likewise.
829 * config/i386/i386.md: Likewise.
830 * config/i386/i386.opt: Likewise.
831 * config/i386/linux-common.h (LIBMPX_LIBS): Likewise.
832 (defined): Likewise.
833 (LINK_MPX): Likewise.
834 (MPX_SPEC): Likewise.
835 (LIBMPX_SPEC): Likewise.
836 (LIBMPXWRAPPERS_SPEC): Likewise.
837 (CHKP_SPEC): Likewise.
838 * config/i386/predicates.md: Likewise.
839 * dbxout.c (dbxout_type): Likewise.
840 * doc/extend.texi: Likewise.
841 * doc/invoke.texi: Likewise.
842 * doc/md.texi: Likewise.
843 * doc/tm.texi: Likewise.
844 * doc/tm.texi.in: Likewise.
845 * dwarf2out.c (is_base_type): Likewise.
846 (gen_formal_types_die): Likewise.
847 (gen_subprogram_die): Likewise.
848 (gen_type_die_with_usage): Likewise.
849 (gen_decl_die): Likewise.
850 (dwarf2out_late_global_decl): Likewise.
851 * expr.c (expand_assignment): Likewise.
852 (emit_storent_insn): Likewise.
853 (store_expr_with_bounds): Likewise.
854 (store_expr): Likewise.
855 (expand_expr_real_1): Likewise.
856 * expr.h (store_expr_with_bounds): Likewise.
857 * function.c (use_register_for_decl): Likewise.
858 (struct bounds_parm_data): Likewise.
859 (assign_parms_augmented_arg_list): Likewise.
860 (assign_parm_find_entry_rtl): Likewise.
861 (assign_parm_is_stack_parm): Likewise.
862 (assign_parm_load_bounds): Likewise.
863 (assign_bounds): Likewise.
864 (assign_parms): Likewise.
865 (expand_function_start): Likewise.
866 * gcc.c (CHKP_SPEC): Likewise.
867 * gimple-fold.c (gimple_fold_builtin_memory_op): Likewise.
868 * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Likewise.
869 (wrestrict_dom_walker::check_call): Likewise.
870 * gimple.c (gimple_build_call_from_tree): Likewise.
871 * gimple.h (enum gf_mask): Likewise.
872 (gimple_call_with_bounds_p): Likewise.
873 (gimple_call_set_with_bounds): Likewise.
874 * gimplify.c (gimplify_init_constructor): Likewise.
875 * ipa-cp.c (initialize_node_lattices): Likewise.
876 (propagate_constants_across_call): Likewise.
877 (find_more_scalar_values_for_callers_subset): Likewise.
878 * ipa-hsa.c (process_hsa_functions): Likewise.
879 * ipa-icf-gimple.c (func_checker::compare_gimple_call): Likewise.
880 * ipa-icf.c (sem_function::merge): Likewise.
881 * ipa-inline.c (early_inliner): Likewise.
882 * ipa-pure-const.c (warn_function_noreturn): Likewise.
883 (warn_function_cold): Likewise.
884 (propagate_pure_const): Likewise.
885 * ipa-ref.h (enum GTY): Likewise.
886 * ipa-split.c (find_retbnd): Likewise.
887 (consider_split): Likewise.
888 (split_function): Likewise.
889 * ipa-visibility.c (cgraph_externally_visible_p): Likewise.
890 * ipa.c (walk_polymorphic_call_targets): Likewise.
891 (symbol_table::remove_unreachable_nodes): Likewise.
892 (process_references): Likewise.
893 (cgraph_build_static_cdtor_1): Likewise.
894 * lto-cgraph.c (lto_output_node): Likewise.
895 (output_refs): Likewise.
896 (compute_ltrans_boundary): Likewise.
897 (input_overwrite_node): Likewise.
898 (input_node): Likewise.
899 (input_cgraph_1): Likewise.
900 * params.def (PARAM_CHKP_MAX_CTOR_SIZE): Likewise.
901 * passes.c (pass_manager::execute_early_local_passes): Likewise.
902 (class pass_chkp_instrumentation_passes): Likewise.
903 (make_pass_chkp_instrumentation_passes): Likewise.
904 * passes.def: Likewise.
905 * rtl.h (struct GTY): Likewise.
906 (CALL_EXPR_WITH_BOUNDS_P): Likewise.
907 * stor-layout.c (layout_type): Likewise.
908 * symtab.c: Likewise.
909 * target.def: Likewise.
910 * targhooks.c (default_chkp_bound_type): Likewise.
911 (default_chkp_bound_mode): Likewise.
912 (default_builtin_chkp_function): Likewise.
913 (default_chkp_function_value_bounds): Likewise.
914 (default_chkp_make_bounds_constant): Likewise.
915 (default_chkp_initialize_bounds): Likewise.
916 * targhooks.h (default_chkp_bound_type): Likewise.
917 (default_chkp_bound_mode): Likewise.
918 (default_builtin_chkp_function): Likewise.
919 (default_chkp_function_value_bounds): Likewise.
920 (default_chkp_make_bounds_constant): Likewise.
921 (default_chkp_initialize_bounds): Likewise.
922 * toplev.c (compile_file): Likewise.
923 (process_options): Likewise.
924 * tree-core.h (DEF_BUILTIN): Likewise.
925 (DEF_BUILTIN_CHKP): Likewise.
926 * tree-inline.c (declare_return_variable): Likewise.
927 (remap_gimple_stmt): Likewise.
928 (copy_bb): Likewise.
929 (initialize_inlined_parameters): Likewise.
930 (expand_call_inline): Likewise.
931 * tree-pass.h (make_pass_ipa_chkp_versioning): Likewise.
932 (make_pass_ipa_chkp_early_produce_thunks): Likewise.
933 (make_pass_ipa_chkp_produce_thunks): Likewise.
934 (make_pass_chkp): Likewise.
935 (make_pass_chkp_opt): Likewise.
936 (make_pass_chkp_instrumentation_passes): Likewise.
937 * tree-pretty-print.c (dump_generic_node): Likewise.
938 * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Likewise.
939 * tree-ssa-dce.c (propagate_necessity): Likewise.
940 (eliminate_unnecessary_stmts): Likewise.
941 * tree-ssa-pre.c (create_expression_by_pieces): Likewise.
942 * tree-ssa-sccvn.c (copy_reference_ops_from_call): Likewise.
943 * tree-ssa-sccvn.h: Likewise.
944 * tree-ssa-strlen.c (get_string_length): Likewise.
945 (valid_builtin_call): Likewise.
946 (adjust_last_stmt): Likewise.
947 (handle_builtin_strchr): Likewise.
948 (handle_builtin_strcpy): Likewise.
949 (handle_builtin_stxncpy): Likewise.
950 (handle_builtin_memcpy): Likewise.
951 (handle_builtin_strcat): Likewise.
952 (strlen_check_and_optimize_stmt): Likewise.
953 * tree-stdarg.c (expand_ifn_va_arg_1): Likewise.
954 * tree-streamer-in.c: Likewise.
955 * tree-streamer.c (record_common_node): Likewise.
956 * tree.c (tree_code_size): Likewise.
957 (wide_int_to_tree_1): Likewise.
958 (type_contains_placeholder_1): Likewise.
959 (build_common_tree_nodes): Likewise.
960 * tree.def (POINTER_BOUNDS_TYPE): Likewise.
961 * tree.h (POINTER_BOUNDS_TYPE_P): Likewise.
962 (POINTER_BOUNDS_P): Likewise.
963 (BOUNDED_TYPE_P): Likewise.
964 (BOUNDED_P): Likewise.
965 (CALL_WITH_BOUNDS_P): Likewise.
966 (pointer_bounds_type_node): Likewise.
967 * value-prof.c (gimple_ic): Likewise.
968 * var-tracking.c (vt_add_function_parameters): Likewise.
969 * varasm.c (make_decl_rtl): Likewise.
970 (assemble_start_function): Likewise.
971 (output_constant): Likewise.
972 (maybe_assemble_visibility): Likewise.
973 * varpool.c (ctor_for_folding): Likewise.
974 * chkp-builtins.def: Remove.
975 * ipa-chkp.c: Remove.
976 * ipa-chkp.h: Remove.
977 * rtl-chkp.c: Remove.
978 * rtl-chkp.h: Remove.
979 * tree-chkp-opt.c: Remove.
980 * tree-chkp.c: Remove.
981 * tree-chkp.h: Remove.
982
983 2018-06-07 Carl Love <cel@us.ibm.com>
984
985 * gcc/config/rs6000/vsx.md (vextract_fp_from_shorth,
986 vextract_fp_from_shortl): Add BE support.
987
988 2018-06-07 Paul Koning <ni1d@arrl.net>
989
990 * compare-elim.c (try_merge_compare): Don't merge compare if
991 address contains a side effect.
992 (try_eliminate_compare): Likewise.
993
994 2018-06-07 Olga Makhotina <olga.makhotina@intel.com>
995
996 * config.gcc: Support "tremont".
997 * config/i386/driver-i386.c (host_detect_local_cpu): Detect "tremont".
998 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
999 PROCESSOR_TREMONT.
1000 * config/i386/i386.c (m_TREMONT): Define.
1001 (processor_target_table): Add "tremont".
1002 (PTA_TREMONT): Define.
1003 (ix86_lea_outperforms): Add TARGET_TREMONT.
1004 (get_builtin_code_for_version): Handle PROCESSOR_TREMONT.
1005 (fold_builtin_cpu): Add M_INTEL_TREMONT, replace M_INTEL_GOLDMONT
1006 and M_INTEL_GOLDMONT_PLUS.
1007 (fold_builtin_cpu): Add "tremont".
1008 (ix86_add_stmt_cost): Add TARGET_TREMONT.
1009 (ix86_option_override_internal): Add "tremont".
1010 * config/i386/i386.h (processor_costs): Define TARGET_TREMONT.
1011 (processor_type): Add PROCESSOR_TREMONT.
1012 * config/i386/x86-tune.def: Add m_TREMONT.
1013 * doc/invoke.texi: Add tremont as x86 -march=/-mtune= CPU type.
1014
1015 2018-06-07 Jozef Lawrynowicz <jozef.l@mittosystems.com>
1016
1017 * gcc/config/msp430/msp430.c (msp430_mcu_name): Set the "i" in the
1018 symbol defined for msp430i* devices to be lower case.
1019
1020 gcc/testsuite/gcc.target/msp430/
1021 * msp430i-device-symbol.c: New test.
1022 * msp430f-device-symbol.c: New test.
1023 * msp430.h: New test header file.
1024
1025 2018-06-07 Richard Biener <rguenther@suse.de>
1026
1027 * graphite-sese-to-poly.c (extract_affine): Avoid unneded
1028 wrapping. Properly wrap the result of a BIT_NOT_EXPR.
1029 Properly wrap signed arithmetic if overflow wraps.
1030
1031 2018-06-07 Jakub Jelinek <jakub@redhat.com>
1032
1033 PR tree-optimization/69615
1034 * tree-ssa-reassoc.c (optimize_range_tests_var_bound): If rhs2 is lhs
1035 of a cast from a same precision integral SSA_NAME in a bb dominated
1036 by first_bb, retry with rhs2 set to the rhs1 of the cast. Don't emit
1037 cast to utype if rhs2 has already a compatible type.
1038
1039 2018-06-07 Richard Biener <rguenther@suse.de>
1040
1041 PR tree-optimization/85935
1042 * graphite-scop-detection.c (find_params_in_bb): Analyze
1043 condition operands with respect to the correct loop. Assert
1044 the analysis doesn't fail.
1045
1046 2018-06-04 Carl Love <cel@us.ibm.com>
1047
1048 * gcc/config/rs6000/vsx.md (first_match_index_<mode>): Calculate index
1049 using natural element order. Use gen_lshrsi3 instead of gen_ashrsi3
1050 as it is slightly cheaper.
1051 (first_match_or_eos_index_<mode>):
1052 Calculate index using natural element order.
1053 (first_match_index_<mode>):
1054 Calculate index using natural element order.
1055 (first_match_or_eos_index_<mode>):
1056 Calculate index using natural order.
1057 (define_insn vclzlsbb): Change to define_insn vclzlsbb_<mode>.
1058 for BE and LE modes.
1059 * gcc/config/rs6000/rs6000-c.c: Rename P9V_BUILTIN_VCLZLSBB,
1060 P9V_BUILTIN_VCLZLSBB_V16QI.
1061 * gcc/config/rs6000/rs6000-builtin.def: Make VCLZLSBB mode
1062 specific.
1063
1064 2018-06-06 Kelvin Nilsen <kelvin@gcc.gnu.org>
1065
1066 * doc/extend.texi (PowerPC AltiVec Built-in Functions): Adjust
1067 indentation and line wrap for many prototypes. Add missing
1068 @smallexample directives around block of prototypes for vec_xl and
1069 vec_xst.
1070
1071 2018-06-05 Michael Meissner <meissner@linux.ibm.com>
1072
1073 * config/rs6000/rs6000.c (rs6000_passes_ieee128): New boolean to
1074 track if we pass or return IEEE 128-bit floating point.
1075 (ieee128_mangling_gcc_8_1): New boolean to say whether to generate
1076 C++ mangling that is compatible with GCC 8.1.
1077 (TARGET_ASM_GLOBALIZE_DECL_NAME): Override target hook.
1078 (init_cumulative_args): Note if we pass or return IEEE 128-bit
1079 floating point types.
1080 (rs6000_function_arg_advance_1): Likewise.
1081 (rs6000_mangle_type): Optionally generate mangled names that match
1082 what GCC 8.1 generated for IEEE 128-bit floating point types.
1083 (rs6000_globalize_decl_name): If we have an external function that
1084 passes or returns IEEE 128-bit types, generate a weak reference
1085 from the mangled name used in GCC 8.1 to the current mangled
1086 name.
1087 (rs6000_init_builtins): Make __ibm128 use the long double type if
1088 long double is IBM extended double. Make __float128 use the long
1089 double type if long double is IEEE 128-bit.
1090
1091 PR target/85657
1092 * config/rs6000/rs6000-builtin.def (BU_IBM128_2): New helper
1093 macro for __ibm128 built-in functions.
1094 (PACK_IF): Add __ibm128 pack/unpack functions.
1095 (UNPACK_IF): Likewise.
1096 * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Do not
1097 enable long double built-in functions if long double is IEEE
1098 128-bit floating point.
1099 (rs6000_invalid_builtin): Update long double built-in function
1100 error message.
1101 (rs6000_expand_builtin): For PACK_IF and UNPACK_IF built-in
1102 functions, adjust the built-in function to use the long double
1103 built-in function if __ibm128 and long double are the same type.
1104 * doc/extend.texi (PowerPC builtins): Update documention for
1105 __builtin_{,un}pack_longdouble. Add documentation for
1106 __builtin_{,un}pack_ibm128.
1107
1108 2018-06-06 Jim Wilson <jimw@sifive.com>
1109
1110 * config/riscv/riscv.c (enum riscv_privilege_levels): New.
1111 (struct machine_function): New field interrupt_mode.
1112 (riscv_handle_type_attribute): New function. Add forward declaration.
1113 (riscv_attribute_table) <interrupt>: Use riscv_handle_type_attribute.
1114 (riscv_expand_epilogue): Check interrupt_mode field.
1115 (riscv_set_current_function): Check interrupt attribute args and
1116 set interrupt_mode field.
1117 * config/riscv/riscv.md (UNSPECV_SRET, UNSPECV_URET): New.
1118 (riscv_sret, riscv_uret): New.
1119 * doc/extend.texi (RISC-V Function Attributes) <interrupt>: Document
1120 new arguments to interrupt attribute.
1121
1122 2018-06-06 Peter Bergner <bergner@vnet.ibm.com>
1123
1124 PR target/63177
1125 * /config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for -mpower9.
1126 Don't handle -mcpu=power8 if -mpower9-vector is also used.
1127
1128 2018-06-06 Kelvin Nilsen <kelvin@gcc.gnu.org>
1129
1130 * config/rs6000/rs6000-builtin.def (VSX_BUILTIN_VEC_LD,
1131 VSX_BUILTIN_VEC_ST): Add comment to explain non-traditional uses.
1132 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
1133 several redundant entries.
1134
1135 2018-06-06 David Malcolm <dmalcolm@redhat.com>
1136
1137 * config/i386/i386-protos.h (ix86_expand_call): Strengthen return
1138 type from "rtx" to "rtx_insn *".
1139 * config/i386/i386.c (ix86_expand_split_stack_prologue): Likewise
1140 for local "call_insn", removing cast.
1141 (ix86_expand_call): Likewise, introducing a "call_insn" local.
1142
1143 2018-06-06 Eric Botcazou <ebotcazou@adacore.com>
1144
1145 PR tree-optimization/86066
1146 * gimple-ssa-store-merging.c (process_store): Do not bypass BIT_NOT_EXPR
1147 for BIT_INSERT_EXPR stores.
1148
1149 2018-06-06 Richard Biener <rguenther@suse.de>
1150
1151 PR tree-optimization/86062
1152 * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
1153 component refs ontop
1154 of to be offsetted base.
1155
1156 2018-06-06 Jozef Lawrynowicz <jozef.l@mittosystems.com>
1157
1158 * gcc/config/msp430/msp430.c (msp430_attr): Allow interrupt handlers
1159 to be static and remove check on interrupt attribute name.
1160
1161 gcc/testsuite/gcc.target/msp430/
1162 * function-attributes-4.c: New test.
1163 * static-interrupts.c: New test.
1164
1165 2018-06-05 Kelvin Nilsen <kelvin@gcc.gnu.org>
1166
1167 * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove
1168 volatile qualifier from vec_lvsl and vec_lvsr argument prototypes.
1169
1170 2018-06-05 Steve Ellcey <sellcey@cavium.com>
1171
1172 PR target/79924
1173 * config/aarch64/aarch64-protos.h (aarch64_err_no_fpadvsimd): Remove
1174 second argument.
1175 * config/aarch64/aarch64-protos..c (aarch64_err_no_fpadvsimd):
1176 Remove second argument, change how error is called.
1177 (aarch64_layout_arg): Remove second argument from
1178 aarch64_err_no_fpadvsimd call.
1179 (aarch64_init_cumulative_args): Ditto.
1180 (aarch64_gimplify_va_arg_expr): Ditto.
1181 * config/aarch64/aarch64.md (mov<mode>): Ditto.
1182
1183 2018-06-05 Uros Bizjak <ubizjak@gmail.com>
1184
1185 * config/i386/i386.md (simple_return_indirect_internal): New expander.
1186 (*simple_return_indirect_internal<mode>): Rename from
1187 simple_return_indirect_internal. Use W mode iterator.
1188 (rstorssp): New expander.
1189 (*rstorssp<mode>): Rename from rstorssp. Use P mode iterator.
1190 (clrssbsy): New expander.
1191 (*clrssbsy<mode>): Rename from clrssbsy. Use P mode iterator.
1192
1193 2018-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
1194
1195 * config/arm/arm_cmse.h (cmse_nsfptr_create): Change typeof to
1196 __typeof__.
1197 (cmse_check_pointed_object): Likewise.
1198
1199 2018-06-05 Martin Liska <mliska@suse.cz>
1200
1201 PR gcov-profile/47618
1202 * doc/invoke.texi: Document how -fprofile-dir format
1203 is extended.
1204
1205 2018-06-05 Richard Biener <rguenther@suse.de>
1206
1207 * tree-cfgcleanup.c (cleanup_control_flow_pre): For edge
1208 removal pretend DOM info isn't available so we do not update
1209 it and only remove edges, not dominated blocks. Actually free
1210 DOM info in case we removed something. Remove unreachable blocks.
1211 (mfb_keep_latches): Work with either DOM info or marked backedges.
1212 (cleanup_tree_cfg_noloop): Do not remove unreachable blocks
1213 first. Mark backedges if DOM info isn't available.
1214 (Re-)compute DOM info after cleanup_control_flow_pre.
1215
1216 2018-06-05 Richard Biener <rguenther@suse.de>
1217
1218 * tree-cfg.c (struct locus_discrim_map): Store line, not location.
1219 (locus_discrim_hasher::hash): Adjust.
1220 (locus_discrim_hasher::equal): Likewise.
1221 (next_discriminator_for_locus): Work on line directly.
1222 (same_line_p): Pass in expanded locus1 as well.
1223 (assign_discriminators): Avoid redundant location expansions.
1224
1225 2018-06-05 Richard Biener <rguenther@suse.de>
1226
1227 PR tree-optimization/86046
1228 * tree-ssa.c (maybe_optimize_var): Clear DECL_GIMPLE_REG_P
1229 if required after clearing TREE_ADDRESSABLE.
1230
1231 2018-06-05 Richard Biener <rguenther@suse.de>
1232
1233 PR tree-optimization/86047
1234 * tree-ssa-loop.c (for_each_index): Glob handling of all
1235 decls and constants and really handle all of them.
1236
1237 2018-06-05 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1238
1239 PR target/81497
1240 * config/arm/arm-builtins.c (arm_type_qualifiers): Add
1241 qualifier_void_pointer and qualifier_const_void_pointer.
1242 (arm_ldc_qualifiers, arm_stc_qualifiers): Use the above.
1243 (arm_init_builtins): Handle the above.
1244 * config/arm/arm_acle.h (__arm_cdp, __arm_ldc, __arm_ldcl, __arm_stc,
1245 __arm_stcl, __arm_mcr, __arm_cdp2, __arm_ldc2, __arm_ldcl2, __arm_stc2,
1246 __arm_stcl2,__arm_mcr2, __arm_mcrr, __arm_mcrr2): Remove return for
1247 void intrinsics.
1248
1249 2018-06-05 Martin Liska <mliska@suse.cz>
1250
1251 * auto-profile.c (read_autofdo_file): Do not use
1252 gcov_ctr_summary struct.
1253 (afdo_callsite_hot_enough_for_early_inline): Likewise.
1254 * coverage.c (struct counts_entry): Likewise.
1255 (read_counts_file): Read just single summary entry.
1256 (get_coverage_counts): Use gcov_summary struct.
1257 * coverage.h (get_coverage_counts): Likewise.
1258 * gcov-dump.c (dump_working_sets): Likewise.
1259 (tag_summary): Dump just single summary.
1260 * gcov-io.c (gcov_write_summary): Write just histogram
1261 summary.
1262 (gcov_read_summary): Read just single summary.
1263 (compute_working_sets): Use gcov_summary struct.
1264 * gcov-io.h (GCOV_TAG_SUMMARY_LENGTH): Remove usage
1265 of GCOV_COUNTERS_SUMMABLE.
1266 (GCOV_COUNTERS_SUMMABLE): Remove.
1267 (GCOV_FIRST_VALUE_COUNTER): Replace with
1268 GCOV_COUNTER_V_INTERVAL.
1269 (struct gcov_ctr_summary): Remove.
1270 (struct gcov_summary): Directly use fields of former
1271 gcov_ctr_summary.
1272 (compute_working_sets): Use gcov_summary struct.
1273 * gcov.c (read_count_file): Do not use ctrs fields.
1274 * lto-cgraph.c (merge_profile_summaries): Use gcov_summary
1275 struct.
1276 * lto-streamer.h (struct GTY): Make profile_info gcov_summary
1277 struct.
1278 * profile.c: Likewise.
1279 * profile.h: Likewise.
1280
1281 2018-06-05 Martin Liska <mliska@suse.cz>
1282
1283 PR gcov-profile/84846
1284 * gcov.c (output_lines): Print working directory only
1285 in intermediate format.
1286
1287 2018-06-05 Andreas Krebbel <krebbel@linux.ibm.com>
1288
1289 * config/s390/s390-builtin-types.def: Add void function type.
1290 * config/s390/s390-builtins.def: Use the function type for the
1291 tbeginc builtin.
1292
1293 2018-06-04 Jim Wilson <jimw@sifive.com>
1294
1295 * config/riscv/riscv-protos.h (riscv_expand_epilogue): Change bool arg
1296 to int.
1297 * config/riscv/riscv.c (riscv_for_each_saved_reg): New args epilogue
1298 and maybe_eh_return. Change regno to unsigned int. Use new args to
1299 handle EH_RETURN_DATA_REGNO registers properly.
1300 (riscv_expand_prologue): Pass new args to riscv_for_each_saved_reg.
1301 (riscv_expand_epilogue): Update comment. Change argument name and
1302 type. Update code to use new name and type. Pass new args to
1303 riscv_for_each_saved_reg. Only use EH_RETURN_STACKADJ_RTX when
1304 EXCEPTION_RETURN.
1305 * config/riscv/riscv.md (NORMAL_RETURN): New.
1306 (SIBCALL_RETURN, EXCEPTION_RETURN): New.
1307 (epilogue, sibcall_epilogue): Update riscv_expand_epilogue arg.
1308 (eh_return): Call gen_eh_return_internal and emit barrier.
1309 (eh_return_internal): Call riscv_expand_epilogue.
1310
1311 2018-06-04 Eric Botcazou <ebotcazou@adacore.com>
1312
1313 * gimple-ssa-store-merging.c (struct merged_store_group): Move up
1314 bit_insertion field and declare can_be_merged_into method.
1315 (merged_store_group::can_be_merged_into): New method.
1316 (imm_store_chain_info::coalesce_immediate): Call it to decide whether
1317 consecutive non-overlapping stores can be merged. Turn MEM_REF stores
1318 into BIT_INSERT_EXPR stores if the group contains a non-MEM_REF store.
1319
1320 2018-06-04 Richard Biener <rguenther@suse.de>
1321
1322 PR tree-optimization/85955
1323 * builtins.c (fold_builtin_sincos): Convert pointers to
1324 destination to appropriate type before dereferencing.
1325
1326 2018-06-04 Segher Boessenkool <segher@kernel.crashing.org>
1327
1328 * config/rs6000/rs6000.md (abs<mode>2 for FLOAT128): Handle IFmode.
1329
1330 2018-06-04 Richard Sandiford <richard.sandiford@linaro.org>
1331
1332 * expr.c (expand_expr_real_1): Force the operand into memory if
1333 its TYPE_MODE is BLKmode and if there is no integer mode for
1334 the number of bits being extracted.
1335
1336 2018-06-04 Jakub Jelinek <jakub@redhat.com>
1337
1338 PR target/85832
1339 PR target/86036
1340 * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
1341 Use vptestnm rather than vptestm in (=Yc,v,C) variant.
1342
1343 2018-06-04 Richard Biener <rguenther@suse.de>
1344
1345 * tree-cfgcleanup.c (cleanup_tree_cfg_1): Fold into...
1346 (cleanup_tree_cfg_noloop): ... single caller. Do
1347 start_recording_case_labels later.
1348
1349 2018-06-04 Sebastian Peryt <sebastian.peryt@intel.com>
1350
1351 * config/i386/cldemoteintrin.h: Change define from _X86INTRIN_H_INCLUDED
1352 to _IMMINTRIN_H_INCLUDED.
1353 * config/i386/pconfigintrin.h: Ditto.
1354 * config/i386/waitpkgintrin.h: Ditto.
1355 * config/i386/immintrin.h: Add includes for sgxintrin.h,
1356 pconfigintrin.h, waitpkgintrin.h and cldemoteintrin.h.
1357 * config/i386/x86intrin.h: Remove includes for mintrin.h, xmmintrin.h,
1358 emmintrin.h, pmmintrin.h, tmmintrin.h, smmintrin.h, wmmintrin.h,
1359 bmiintrin.h, bmi2intrin.h, lzcntintrin.h, sgxintrin.h, pconfigintrin.h,
1360 waitpkgintrin.h and cldemoteintrin.h.
1361
1362 2018-06-04 Richard Biener <rguenther@suse.de>
1363
1364 PR tree-optimization/86038
1365 * tracer.c (find_best_successor): Check probability for
1366 being initialized, bail out if not.
1367
1368 2018-06-04 Richard Earnshaw <rearnsha@arm.com>
1369
1370 PR target/86003
1371 * config/arm/arm-cpus.in (ALL_QUIRKS): Add xscale feature to the list
1372 of bits to ignore when comparing architectures.
1373
1374 2018-06-04 Jakub Jelinek <jakub@redhat.com>
1375
1376 PR tree-optimization/69615
1377 * fold-const.c (merge_ranges): If range1 is - [x, x] and x is the
1378 maximum or minimum of the type, try to merge it also as if
1379 range1 is + [-, x - 1] or + [x + 1, -].
1380
1381 PR c++/86025
1382 * tree.c (inchash::add_expr): Handle IDENTIFIER_NODE.
1383
1384 2018-06-03 Eric Botcazou <ebotcazou@adacore.com>
1385
1386 PR tree-optimization/86034
1387 * gimple-ssa-store-merging.c (output_merged_store): Convert the RHS to
1388 the unsigned bitfield type in a bit insertion sequence if it does not
1389 have a larger precision than the bitfield size.
1390 (process_store): Also bypass widening conversions for BIT_INSERT_EXPR.
1391
1392 2018-06-03 Kito Cheng <kito.cheng@gmail.com>
1393
1394 * config/nds32/nds32-peephole2.md: Add new patterns for code size.
1395
1396 2018-06-03 Chung-Ju Wu <jasonwucj@gmail.com>
1397
1398 * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3J.
1399 * config/nds32/nds32.c (nds32_option_override): Consider ARCH_V3J.
1400 * config/nds32/nds32.h (TARGET_ISA_V3): Add ARCH_V3J checking.
1401 * config/nds32/nds32.opt (march): Add enum value Value(ARCH_V3J).
1402
1403 2018-06-03 Chung-Ju Wu <jasonwucj@gmail.com>
1404
1405 * common/config/nds32/nds32-common.c (nds32_option_optimization_table):
1406 Disable -fdelete-null-pointer-checks for ELF toolchain.
1407
1408 2018-06-02 Chung-Ju Wu <jasonwucj@gmail.com>
1409 Kito Cheng <kito.cheng@gmail.com>
1410
1411 * config.gcc (nds32*): Use nds32-linux.opt and nds32-elf.opt.
1412 (nds32le-*-*, nds32be-*-*): Integrate checking process.
1413 (nds32*-*-*): Add glibc and uclibc conditions.
1414 * common/config/nds32/nds32-common.c (nds32_except_unwind_info): New.
1415 (TARGET_EXCEPT_UNWIND_INFO): Define.
1416 * config/nds32/elf.h: New file.
1417 * config/nds32/linux.h: New file.
1418 * config/nds32/nds32-elf.opt: New file.
1419 * config/nds32/nds32-linux.opt: New file.
1420 * config/nds32/nds32-fp-as-gp.c
1421 (pass_nds32_fp_as_gp::gate): Consider TARGET_LINUX_ABI.
1422 * config/nds32/nds32.c (nds32_conditional_register_usage): Consider
1423 TARGET_LINUX_ABI.
1424 (nds32_asm_file_end): Ditto.
1425 (nds32_print_operand): Ditto.
1426 (nds32_insert_attributes): Ditto.
1427 (nds32_init_libfuncs): New function.
1428 (TARGET_HAVE_TLS): Define.
1429 (TARGET_INIT_LIBFUNCS): Define.
1430 * config/nds32/nds32.h (TARGET_DEFAULT_RELAX): Apply different relax
1431 spec content.
1432 (TARGET_ELF): Apply different mcmodel setting.
1433 (LINK_SPEC, LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): The content has
1434 been migrated into elf.h and linux.h files.
1435 * config/nds32/nds32.md (add_pc): Consider TARGET_LINUX_ABI.
1436 * config/nds32/nds32.opt (mvh): Consider TARGET_LINUX_ABI.
1437 (mcmodel): The content has been migrated into nds32-elf.opt and
1438 nds32-linux.opt files.
1439 * config/nds32/t-elf: New file.
1440 * config/nds32/t-linux: New file.
1441
1442 2018-06-02 Chung-Ju Wu <jasonwucj@gmail.com>
1443 Shiva Chen <shiva0217@gmail.com>
1444
1445 * config/nds32/constants.md (unspec_volatile_element): Add
1446 UNSPEC_VOLATILE_OMIT_FP_BEGIN and UNSPEC_VOLATILE_OMIT_FP_END.
1447 * config/nds32/nds32-fp-as-gp.c: New implementation of fp_as_gp
1448 optimization.
1449 * config/nds32/nds32-protos.h (nds32_naked_function_p): Declare.
1450 (make_pass_nds32_fp_as_gp): Declare.
1451 * config/nds32/nds32.c (nds32_register_passes): Add fp_as_gp as one
1452 optmization pass.
1453 (nds32_asm_function_end_prologue): Remove unused asm output.
1454 (nds32_asm_function_begin_epilogue): Remove unused asm output.
1455 (nds32_asm_file_start): Output necessary fp_as_gp information.
1456 (nds32_option_override): Adjust register usage.
1457 (nds32_expand_prologue): Consider fp_as_gp situation.
1458 (nds32_expand_prologue_v3push): Consider fp_as_gp situation.
1459 * config/nds32/nds32.md (prologue): Check fp_as_gp_p and naked_p.
1460 (epilogue): Ditto.
1461 (return): Ditto.
1462 (simple_return): Ditto.
1463 (omit_fp_begin): Output special directive for fp_as_gp.
1464 (omit_fp_end): Output special directive for fp_as_gp.
1465 * config/nds32/nds32.opt (mfp-as-gp, mno-fp-as-gp, mforce-fp-as-gp,
1466 mforbid-fp-as-gp): New options.
1467
1468 2018-06-01 Mark Wielaard <mark@klomp.org>
1469
1470 * dwarf2out.c (dwarf2out_finish): Remove generation of
1471 DW_AT_loclists_base.
1472
1473 2018-06-01 Eric Botcazou <ebotcazou@adacore.com>
1474
1475 * gimple-ssa-store-merging.c: Include gimple-fold.h.
1476 (struct store_immediate_info): Document BIT_INSERT_EXPR stores.
1477 (struct merged_store_group): Add bit_insertion field.
1478 (dump_char_array): Use standard hexadecimal format.
1479 (merged_store_group::merged_store_group): Set bit_insertion to false.
1480 (merged_store_group::apply_stores): Use optimal buffer size. Deal
1481 with BIT_INSERT_EXPR stores. Move up code updating the mask and
1482 also print the mask in the dump file.
1483 (pass_store_merging::gate): Minor tweak.
1484 (imm_store_chain_info::coalesce_immediate): Fix wrong association
1485 of stores with groups in dump. Allow coalescing of BIT_INSERT_EXPR
1486 stores with INTEGER_CST stores.
1487 (count_multiple_uses) <BIT_INSERT_EXPR>: New case.
1488 (imm_store_chain_info::output_merged_store): Add try_bitpos variable
1489 and use it throughout. Generate bit insertion sequences if need be.
1490 (pass_store_merging::process_store): Remove redundant condition.
1491 Record stores from a SSA name to a bit-field with BIT_INSERT_EXPR.
1492
1493 2018-06-01 Segher Boessenkool <segher@kernel.crashing.org>
1494
1495 * config/rs6000/rs6000.c (rs6000_mangle_type): Change the mangling of
1496 the 128-bit floating point types. Fix function comment.
1497
1498 2018-06-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1499
1500 * config/aarch64/aarch64-simd.md
1501 (aarch64_simd_vec_unpack<su>_lo_<mode>): Use UXTL and SXTL assembler
1502 mnemonics.
1503 (aarch64_simd_vec_unpack<su>_hi_<mode>): Use UXTL2 and SXTL2 assembler
1504 mnemonics.
1505
1506 2018-06-01 Richard Sandiford <richard.sandiford@linaro.org>
1507
1508 PR tree-optimization/85989
1509 * gimple-ssa-backprop.c (backprop::m_visited_phis): New member
1510 variable.
1511 (backprop::intersect_uses): Check it when deciding whether this
1512 is a backedge reference.
1513 (backprop::process_block): Add each phi to m_visited_phis
1514 after visiting it, then clear it at the end.
1515
1516 2018-06-01 Richard Biener <rguenther@suse.de>
1517
1518 * tree-vectorizer.h (vect_dr_stmt): New function.
1519 (vect_get_load_cost): Adjust.
1520 (vect_get_store_cost): Likewise.
1521 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence):
1522 Use vect_dr_stmt instead of DR_SMTT.
1523 (vect_record_base_alignments): Likewise.
1524 (vect_calculate_target_alignment): Likewise.
1525 (vect_compute_data_ref_alignment): Likewise and make static.
1526 (vect_update_misalignment_for_peel): Likewise.
1527 (vect_verify_datarefs_alignment): Likewise.
1528 (vector_alignment_reachable_p): Likewise.
1529 (vect_get_data_access_cost): Likewise. Pass down
1530 vinfo to vect_get_load_cost/vect_get_store_cost instead of DR.
1531 (vect_get_peeling_costs_all_drs): Likewise.
1532 (vect_peeling_hash_get_lowest_cost): Likewise.
1533 (vect_enhance_data_refs_alignment): Likewise.
1534 (vect_find_same_alignment_drs): Likewise.
1535 (vect_analyze_data_refs_alignment): Likewise.
1536 (vect_analyze_group_access_1): Likewise.
1537 (vect_analyze_group_access): Likewise.
1538 (vect_analyze_data_ref_access): Likewise.
1539 (vect_analyze_data_ref_accesses): Likewise.
1540 (vect_vfa_segment_size): Likewise.
1541 (vect_small_gap_p): Likewise.
1542 (vectorizable_with_step_bound_p): Likewise.
1543 (vect_prune_runtime_alias_test_list): Likewise.
1544 (vect_analyze_data_refs): Likewise.
1545 (vect_supportable_dr_alignment): Likewise.
1546 * tree-vect-loop-manip.c (get_misalign_in_elems): Likewise.
1547 (vect_gen_prolog_loop_niters): Likewise.
1548 * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
1549 * tree-vect-patterns.c (vect_recog_bool_pattern): Do not
1550 modify DR_STMT.
1551 (vect_recog_mask_conversion_pattern): Likewise.
1552 (vect_try_gather_scatter_pattern): Likewise.
1553 * tree-vect-stmts.c (vect_model_store_cost): Pass stmt_info
1554 to vect_get_store_cost.
1555 (vect_get_store_cost): Get stmt_info instead of DR.
1556 (vect_model_load_cost): Pass stmt_info to vect_get_load_cost.
1557 (vect_get_load_cost): Get stmt_info instead of DR.
1558
1559 2018-06-01 Richard Biener <rguenther@suse.de>
1560
1561 PR middle-end/86017
1562 * gimple-fold.c (var_decl_component_p): Also allow offsetted
1563 vars wrapped in MEM_REFs.
1564
1565 2018-06-01 Richard Sandiford <richard.sandiford@linaro.org>
1566
1567 * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
1568 Fix subreg tests so that we only return a choice between
1569 GENERAL_REGS and FP_REGS if the original classes included both.
1570
1571 2018-06-01 Richard Biener <rguenther@suse.de>
1572
1573 PR ipa/85960
1574 * tree-ssa-structalias.c (get_function_part_constraint):
1575 Handle NULL fi->decl.
1576 (find_func_aliases_for_call): Properly handle indirect
1577 fi from direct call.
1578 (find_func_clobbers): Likewise.
1579 (ipa_pta_execute): Likewise.
1580 (create_variable_info_for): For functions that are ifunc_resolver
1581 resolve to a varinfo that contains the result of the resolver call.
1582 (associate_varinfo_to_alias): Do not treat ifunc resolvers as
1583 aliases.
1584
1585 2018-05-31 Michael Collison <michael.collison@arm.com>
1586
1587 * config/aarch64/aarch64.md:
1588 (*fix_to_zero_extenddfdi2): New pattern.
1589 * gcc.target/aarch64/fix_extend1.c: New testcase.
1590
1591 2018-05-31 Qing Zhao <qing.zhao@oracle.com>
1592
1593 PR middle-end/78809
1594 PR middle-end/83026
1595 * builtins.c (expand_builtin): Add the handling of BUILT_IN_STRCMP_EQ
1596 and BUILT_IN_STRNCMP_EQ.
1597 * builtins.def: Add new builtins BUILT_IN_STRCMP_EQ and
1598 BUILT_IN_STRNCMP_EQ.
1599 * gimple-fold.c (gimple_fold_builtin_string_compare): Add the
1600 handling of BUILTIN_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
1601 (gimple_fold_builtin): Likewise.
1602 * tree-ssa-strlen.c (compute_string_length): New function.
1603 (determine_min_obsize): New function.
1604 (handle_builtin_string_cmp): New function to handle calls to
1605 string compare functions.
1606 (strlen_optimize_stmt): Add handling to builtin string compare
1607 calls.
1608 * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
1609 Add the handling of BUILT_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
1610 * tree.c (build_common_builtin_nodes): Add new defines of
1611 BUILT_IN_STRNCMP_EQ and BUILT_IN_STRCMP_EQ.
1612
1613 2018-05-31 Jakub Jelinek <jakub@redhat.com>
1614
1615 PR target/85984
1616 * bb-reorder.c (pass_partition_blocks::gate): Return false for
1617 functions with naked attribute.
1618
1619 2018-05-31 Uros Bizjak <ubizjak@gmail.com>
1620
1621 * config/i386/sse.md (avx_vec_concat<mode>):
1622 Substitute concat_tg_mode mode attribute with xtg_mode.
1623 (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): Ditto.
1624 (concat_tg_mode): Remove mode attribute.
1625
1626 2018-05-31 Martin Sebor <msebor@redhat.com>
1627
1628 PR c/82063
1629 * calls.c (alloc_max_size): Correct a logic error/typo.
1630 Treat excessive arguments as infinite. Warn for invalid arguments.
1631 * doc/invoke.texi (-Walloc-size-larger-than): Update.
1632
1633 2018-05-31 H.J. Lu <hongjiu.lu@intel.com>
1634
1635 PR target/85829
1636 * config/i386/x86-tune.def: Re-enable partial_reg_dependency
1637 and movx for Haswell.
1638
1639 2018-05-31 Chung-Lin Tang <cltang@codesourcery.com>
1640 Cesar Philippidis <cesar@codesourcery.com>
1641
1642 PR middle-end/85879
1643 * gimplify.c (gimplify_adjust_omp_clauses): Add 'remove = true'
1644 when emitting error on private/firstprivate reductions.
1645 * omp-low.c (lower_omp_target): Avoid reference-type processing
1646 on pointers for firstprivate clause.
1647
1648 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
1649
1650 * config/aarch64/aarch64-simd-builtins.def (ld1x3): New.
1651 (st1x2): Likewise.
1652 (st1x3): Likewise.
1653 * config/aarch64/aarch64-simd.md
1654 (aarch64_ld1x3<VALLDIF:mode>): New pattern.
1655 (aarch64_ld1_x3_<mode>): Likewise
1656 (aarch64_st1x2<VALLDIF:mode>): Likewise
1657 (aarch64_st1_x2_<mode>): Likewise
1658 (aarch64_st1x3<VALLDIF:mode>): Likewise
1659 (aarch64_st1_x3_<mode>): Likewise
1660 * config/aarch64/arm_neon.h (vld1_u8_x3): New function.
1661 (vld1_s8_x3): Likewise.
1662 (vld1_u16_x3): Likewise.
1663 (vld1_s16_x3): Likewise.
1664 (vld1_u32_x3): Likewise.
1665 (vld1_s32_x3): Likewise.
1666 (vld1_u64_x3): Likewise.
1667 (vld1_s64_x3): Likewise.
1668 (vld1_f16_x3): Likewise.
1669 (vld1_f32_x3): Likewise.
1670 (vld1_f64_x3): Likewise.
1671 (vld1_p8_x3): Likewise.
1672 (vld1_p16_x3): Likewise.
1673 (vld1_p64_x3): Likewise.
1674 (vld1q_u8_x3): Likewise.
1675 (vld1q_s8_x3): Likewise.
1676 (vld1q_u16_x3): Likewise.
1677 (vld1q_s16_x3): Likewise.
1678 (vld1q_u32_x3): Likewise.
1679 (vld1q_s32_x3): Likewise.
1680 (vld1q_u64_x3): Likewise.
1681 (vld1q_s64_x3): Likewise.
1682 (vld1q_f16_x3): Likewise.
1683 (vld1q_f32_x3): Likewise.
1684 (vld1q_f64_x3): Likewise.
1685 (vld1q_p8_x3): Likewise.
1686 (vld1q_p16_x3): Likewise.
1687 (vld1q_p64_x3): Likewise.
1688 (vst1_s64_x2): Likewise.
1689 (vst1_u64_x2): Likewise.
1690 (vst1_f64_x2): Likewise.
1691 (vst1_s8_x2): Likewise.
1692 (vst1_p8_x2): Likewise.
1693 (vst1_s16_x2): Likewise.
1694 (vst1_p16_x2): Likewise.
1695 (vst1_s32_x2): Likewise.
1696 (vst1_u8_x2): Likewise.
1697 (vst1_u16_x2): Likewise.
1698 (vst1_u32_x2): Likewise.
1699 (vst1_f16_x2): Likewise.
1700 (vst1_f32_x2): Likewise.
1701 (vst1_p64_x2): Likewise.
1702 (vst1q_s8_x2): Likewise.
1703 (vst1q_p8_x2): Likewise.
1704 (vst1q_s16_x2): Likewise.
1705 (vst1q_p16_x2): Likewise.
1706 (vst1q_s32_x2): Likewise.
1707 (vst1q_s64_x2): Likewise.
1708 (vst1q_u8_x2): Likewise.
1709 (vst1q_u16_x2): Likewise.
1710 (vst1q_u32_x2): Likewise.
1711 (vst1q_u64_x2): Likewise.
1712 (vst1q_f16_x2): Likewise.
1713 (vst1q_f32_x2): Likewise.
1714 (vst1q_f64_x2): Likewise.
1715 (vst1q_p64_x2): Likewise.
1716 (vst1_s64_x3): Likewise.
1717 (vst1_u64_x3): Likewise.
1718 (vst1_f64_x3): Likewise.
1719 (vst1_s8_x3): Likewise.
1720 (vst1_p8_x3): Likewise.
1721 (vst1_s16_x3): Likewise.
1722 (vst1_p16_x3): Likewise.
1723 (vst1_s32_x3): Likewise.
1724 (vst1_u8_x3): Likewise.
1725 (vst1_u16_x3): Likewise.
1726 (vst1_u32_x3): Likewise.
1727 (vst1_f16_x3): Likewise.
1728 (vst1_f32_x3): Likewise.
1729 (vst1_p64_x3): Likewise.
1730 (vst1q_s8_x3): Likewise.
1731 (vst1q_p8_x3): Likewise.
1732 (vst1q_s16_x3): Likewise.
1733 (vst1q_p16_x3): Likewise.
1734 (vst1q_s32_x3): Likewise.
1735 (vst1q_s64_x3): Likewise.
1736 (vst1q_u8_x3): Likewise.
1737 (vst1q_u16_x3): Likewise.
1738 (vst1q_u32_x3): Likewise.
1739 (vst1q_u64_x3): Likewise.
1740 (vst1q_f16_x3): Likewise.
1741 (vst1q_f32_x3): Likewise.
1742 (vst1q_f64_x3): Likewise.
1743 (vst1q_p64_x3): Likewise.
1744
1745 2018-05-30 Jozef Lawrynowicz <jozef.l@mittosystems.com>
1746
1747 * config/msp430/msp430.c (msp430_output_labelref): Prepend
1748 user_label_prefix to name.
1749
1750 * tree-core.h: Update comment about the format of NAME string
1751 passed to handler in attribute_spec.
1752
1753 * config/msp430/msp430.md: Remove erroneous subreg expression from
1754 zero_extendqisi2 insn pattern. Remove msp430x ISA restriction on
1755 zero_extend{q,h}isi2.
1756
1757 2018-05-30 Borislav Petkov <bp@suse.de>
1758
1759 * doc/extend.texi: Document some architecture specific
1760 constraints and sort entries.
1761
1762 2018-05-30 Martin Sebor <msebor@redhat.com>
1763
1764 PR middle-end/85369
1765 * builtins.c (expand_builtin_stpcpy_1): New function.
1766 (expand_builtin_stpcpy): Call it, and call maybe_warn_nonstring_arg
1767 only if the former succeeds.
1768
1769 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
1770
1771 * config/aarch64/aarch64-cores.def (saphira) : Add support for ARMv8.4
1772 in saphira.
1773
1774 2018-05-30 Jan Hubicka <hubicka@ucw.cz>
1775
1776 * doc/invoke.texi (-flinker-output): Document
1777
1778 2018-05-30 Jan Hubicka <hubicka@ucw.cz>
1779
1780 * passes.c (ipa_write_summaries): Only modify statements if body
1781 is in memory.
1782 * cgraphunit.c (ipa_passes): Also produce intermeidate code when
1783 incrementally linking.
1784 (ipa_passes): Likewise.
1785 * lto-cgraph.c (lto_output_node): When incrementally linking do not
1786 pass down resolution info.
1787 * common.opt (flag_incremental_link): Update info.
1788 * gcc.c (plugin specs): Turn flinker-output=* to
1789 -plugin-opt=-linker-output-known
1790 * toplev.c (compile_file): Also cut compilation when doing incremental
1791 link.
1792 * flag-types. (enum lto_partition_model): Add
1793 LTO_LINKER_OUTPUT_NOLTOREL.
1794 (invoke.texi): Add -flinker-output docs.
1795 * ipa.c (symbol_table::remove_unreachable_nodes): Handle LTO incremental
1796 link same way as WPA; do not stream in dead initializers.
1797
1798 * dwarf2out.c (dwarf2out_die_ref_for_decl,
1799 darf2out_register_external_decl): Support incremental link.
1800
1801 2018-05-30 Jan Hubicka <hubicka@ucw.cz>
1802
1803 * lto-opts.c (lto_write_options): Skip OPT_dumpdir, OPT_fresolution_.
1804
1805 2018-05-30 Jan Hubicka <hubicka@ucw.cz>
1806
1807 * lto-wrapper.c (debug_objcopy): Add rename parameter; pass
1808 it down to simple_object_copy_lto_debug_sections.
1809 (run_gcc): Determine incremental LTO link time and configure
1810 lto1 into non-wpa mode, disable renaming of debug sections.
1811
1812 2018-05-30 Kelvin Nilsen <kelvin@gcc.gnu.org>
1813
1814 * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove
1815 descriptions of various incorrectly documented functions.
1816
1817 2018-05-30 Andre Vieira <andre.simoesdiasvieira@arm.com>
1818
1819 Revert:
1820 * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
1821 address check not strict.
1822
1823 2018-05-30 Richard Biener <rguenther@suse.de>
1824
1825 PR tree-optimization/85964
1826 * tracer.c (better_p): Drop initialized count check, we only
1827 call the function with initialized counts now.
1828 (find_best_successor): Do find a best edge if one
1829 has uninitialized count.
1830 (find_best_predecessor): Likewise. Do BB frequency check only
1831 if count is initialized.
1832
1833 2017-05-30 Jackson Woodruff <jackson.woodruff@arm.com>
1834
1835 * config/aarch64/aarch64.c (aarch64_host_wide_int_compare): New.
1836 (aarch64_ldrstr_offset_compare): New.
1837 (aarch64_operands_adjust_ok_for_ldpstp): Update to consider all
1838 load/store orderings.
1839 (aarch64_gen_adjusted_ldpstp): Likewise.
1840
1841 2018-05-30 Wilco Dijkstra <wdijkstr@arm.com>
1842
1843 * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
1844 Check for subset of GENERAL_REGS and FP_REGS.
1845 * config/aarch64/aarch64-simd.md (aarch64_get_lane): Increase cost of
1846 r=w alternative.
1847
1848 2018-05-30 Richard Sandiford <richard.sandiford@linaro.org>
1849
1850 * alias.c (adjust_offset_for_component_ref): Use poly_int_tree_p
1851 and wi::to_poly_offset. Add the current offset and then check
1852 whether the sum fits, rather than using an unchecked addition of
1853 a checked term. Check for a shwi rather than a uhwi.
1854 * expr.c (get_bit_range): Use tree_to_poly_uint64.
1855 (store_constructor): Use poly_int_tree_p.
1856 (expand_expr_real_1): Likewise.
1857 * function.c (assign_temp): Likewise.
1858 * fold-const.c (const_binop): Use poly_int_tree_p and
1859 wi::to_poly_offset.
1860 (fold_indirect_ref_1): Likewise. Use multiple_p to attempt an exact
1861 division.
1862 * ipa-icf-gimple.c (func_checker::compare_operand): Use
1863 to_poly_offset for MEM offsets.
1864 * ipa-icf.c (sem_variable::equals): Likewise.
1865 * stor-layout.c (compute_record_mode): Use poly_int_tree_p.
1866 * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Use
1867 wi::to_poly_offset for BIT_FIELD_REF offsets.
1868 (vn_reference_maybe_forwprop_address): Use poly_int_tree_p and
1869 wi::to_poly_offset.
1870 * var-tracking.c (emit_note_insn_var_location): Use
1871 tree_to_poly_uint64.
1872
1873 2018-05-29 Jim Wilson <jimw@sifive.com>
1874
1875 * config/riscv/riscv.c (riscv_interrupt_type): Fix comment typo.
1876
1877 2018-05-29 Uros Bizjak <ubizjak@gmail.com>
1878
1879 PR target/85950
1880 * config/i386/i386.md (l<rounding_insn><MODEF:mode><SWI48:mode>2):
1881 Enable for TARGET_SSE4_1 and generate rounds{s,d} and cvtts{s,d}2si{,q}
1882 sequence.
1883 (sse4_1_round<mode>2): Use nonimmediate_operand
1884 for operand 1 predicate.
1885
1886 2018-05-29 Martin Sebor <msebor@redhat.com>
1887 Richard Biener <rguenther@suse.de>
1888
1889 PR testsuite/85888
1890 * calls.c (get_size_range): Call determine_value_range instead
1891 of get_value_range..
1892 * tree-vrp.h (determine_value_range): Declared new function.
1893 * tree-vrp.c (determine_value_range_1, determine_value_range): New.
1894
1895 2018-05-29 Richard Biener <rguenther@suse.de>
1896
1897 * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Make
1898 sure to use non-pattern stmts for get_earlier_stmt arguments.
1899 * tree-vectorizer.h (get_earlier_stmt): Assert we do not get
1900 called on pattern stmts.
1901 (get_later_stmt): Likewise.
1902
1903 2018-05-29 Martin Liska <mliska@suse.cz>
1904
1905 PR gcov-profile/85759
1906 * doc/gcov.texi: Document GCOV_ERROR_FILE and GCOV_EXIT_AT_ERROR
1907 env variables.
1908
1909 2018-05-29 Jakub Jelinek <jakub@redhat.com>
1910
1911 * tree-cfg.c (verify_gimple_assign_unary): Add checking for
1912 VEC_UNPACK_*_EXPR.
1913 (verify_gimple_assign_binary): Check TYPE_VECTOR_SUBPARTS for
1914 VEC_PACK_*_EXPR.
1915
1916 PR target/85918
1917 * tree.def (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
1918 VEC_PACK_FLOAT_EXPR): New tree codes.
1919 * tree-pretty-print.c (op_code_prio): Handle
1920 VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR.
1921 (dump_generic_node): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
1922 VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
1923 * tree-inline.c (estimate_operator_cost): Likewise.
1924 * gimple-pretty-print.c (dump_binary_rhs): Handle VEC_PACK_FLOAT_EXPR.
1925 * fold-const.c (const_binop): Likewise.
1926 (const_unop): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR and
1927 VEC_UNPACK_FIX_TRUNC_LO_EXPR.
1928 * tree-cfg.c (verify_gimple_assign_unary): Likewise.
1929 (verify_gimple_assign_binary): Handle VEC_PACK_FLOAT_EXPR.
1930 * cfgexpand.c (expand_debug_expr): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
1931 VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
1932 * expr.c (expand_expr_real_2): Likewise.
1933 * optabs.def (vec_packs_float_optab, vec_packu_float_optab,
1934 vec_unpack_sfix_trunc_hi_optab, vec_unpack_sfix_trunc_lo_optab,
1935 vec_unpack_ufix_trunc_hi_optab, vec_unpack_ufix_trunc_lo_optab): New
1936 optabs.
1937 * optabs.c (expand_widen_pattern_expr): For
1938 VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR use
1939 sign from result type rather than operand's type.
1940 (expand_binop_directly): For vec_packu_float_optab and
1941 vec_packs_float_optab allow result type to be different from operand's
1942 type.
1943 * optabs-tree.c (optab_for_tree_code): Handle
1944 VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
1945 VEC_PACK_FLOAT_EXPR. Formatting fixes.
1946 * tree-vect-generic.c (expand_vector_operations_1): Handle
1947 VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
1948 VEC_PACK_FLOAT_EXPR.
1949 * tree-vect-stmts.c (supportable_widening_operation): Handle
1950 FIX_TRUNC_EXPR.
1951 (supportable_narrowing_operation): Handle FLOAT_EXPR.
1952 * config/i386/i386.md (fixprefix, floatprefix): New code attributes.
1953 * config/i386/sse.md (*float<floatunssuffix>v2div2sf2): Rename to ...
1954 (float<floatunssuffix>v2div2sf2): ... this. Formatting fix.
1955 (vpckfloat_concat_mode, vpckfloat_temp_mode, vpckfloat_op_mode): New
1956 mode attributes.
1957 (vec_pack<floatprefix>_float_<mode>): New expander.
1958 (vunpckfixt_mode, vunpckfixt_model, vunpckfixt_extract_mode): New mode
1959 attributes.
1960 (vec_unpack_<fixprefix>fix_trunc_lo_<mode>,
1961 vec_unpack_<fixprefix>fix_trunc_hi_<mode>): New expanders.
1962 * doc/md.texi (vec_packs_float_@var{m}, vec_packu_float_@var{m},
1963 vec_unpack_sfix_trunc_hi_@var{m}, vec_unpack_sfix_trunc_lo_@var{m},
1964 vec_unpack_ufix_trunc_hi_@var{m}, vec_unpack_ufix_trunc_lo_@var{m}):
1965 Document.
1966 * doc/generic.texi (VEC_UNPACK_FLOAT_HI_EXPR,
1967 VEC_UNPACK_FLOAT_LO_EXPR): Fix pasto in description.
1968 (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
1969 VEC_PACK_FLOAT_EXPR): Document.
1970
1971 2018-05-29 Richard Biener <rguenther@suse.de>
1972
1973 * tree-vectorizer.h (struct vec_info): Add stmt_vec_infos
1974 member.
1975 (stmt_vec_info_vec): Make pointer.
1976 (init_stmt_vec_info_vec): Remove.
1977 (free_stmt_vec_info_vec): Likewise.
1978 (set_stmt_vec_info_vec): New function.
1979 (free_stmt_vec_infos): Likewise.
1980 (vinfo_for_stmt): Adjust for stmt_vec_info_vec indirection.
1981 (set_vinfo_for_stmt): Likewise.
1982 (get_earlier_stmt): Likewise.
1983 (get_later_stmt): Likewise.
1984 * tree-vectorizer.c (stmt_vec_info_vec): Make pointer.
1985 (vec_info::vec_info): Allocate stmt_vec_infos and set the global.
1986 (vec_info::~vec_info): Free stmt_vec_infos.
1987 (vectorize_loops): Set the global stmt_vec_info_vec to NULL.
1988 Remove old init_stmt_vec_info_vec/free_stmt_vec_info_vec calls.
1989 (pass_slp_vectorize::execute): Likewise.
1990 * tree-vect-stmts.c (init_stmt_vec_info_vec): Remove.
1991 (free_stmt_vec_info_vec): Likewise.
1992 (set_stmt_vec_info_vec): New function.
1993 (free_stmt_vec_infos): Likewise.
1994 * tree-vect-loop.c (_loop_vec_info::~_loop_vec_info): Set
1995 the global stmt_vec_info_vec.
1996 * tree-parloops.c (gather_scalar_reductions): Use
1997 set_stmt_vec_info_vec/free_stmt_vec_infos and maintain a local
1998 vector.
1999
2000 2018-05-29 Richard Biener <rguenther@suse.de>
2001
2002 * dominance.c (iterate_fix_dominators): Push/pop TV_DOMINANCE.
2003
2004 2018-05-29 Martin Liska <mliska@suse.cz>
2005 David Malcolm <dmalcolm@redhat.com>
2006
2007 * vec.c (test_reverse): New.
2008 (vec_c_tests): Add new test.
2009 * vec.h (vl_ptr>::reverse): New function.
2010
2011 2018-05-29 Gerald Pfeifer <gerald@pfeifer.com>
2012
2013 * config.gcc: Identify FreeBSD 3.x and 4.x as unsupported.
2014
2015 * config/freebsd-spec.h (FBSD_LIB_SPEC): Only consider FreeBSD 5
2016 and later.
2017
2018 2018-05-28 Bernd Edlinger <bernd.edlinger@hotmail.de>
2019
2020 * tree-dump.c (dump_node): Use splay_tree_delete_pointers.
2021
2022 2018-05-28 Richard Biener <rguenther@suse.de>
2023
2024 PR tree-optimization/85933
2025 * tree-vect-data-refs.c (vect_record_base_alignments): Only
2026 look at stmts marked as vectorizable.
2027
2028 2018-05-28 Richard Biener <rguenther@suse.de>
2029
2030 PR tree-optimization/85934
2031 * tree-vect-generic.c (expand_vector_operations_1): Hoist
2032 vector boolean check before scalar optimization.
2033
2034 2018-05-28 Jakub Jelinek <jakub@redhat.com>
2035
2036 * doc/invoke.texi (ARM Options): Use @item instead of @itemx
2037 for armv5te.
2038
2039 2018-05-28 Mark Wielaard <mark@klomp.org>
2040
2041 * dwarf2asm.c (dw2_asm_output_delta_uleb128): Add brackets around lab2
2042 if it is an expression containing a minus sign.
2043
2044 2018-05-27 John David Anglin <danglin@gcc.gnu.org>
2045
2046 * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Define to 0.
2047
2048 2018-05-27 Paul Koning <ni1d@arrl.net>
2049
2050 * config/pdp11/pdp11.md (truncsihi2): Remove.
2051
2052 2018-05-27 Monk Chiang <sh.chiang04@gmail.com>
2053 Chung-Ju Wu <jasonwucj@gmail.com>
2054
2055 * config/nds32/nds32-intrinsic.md (unaligned_storedi): Modify patterns
2056 implementation.
2057 (unaligned_store_dw): Ditto.
2058 * config/nds32/nds32-memory-manipulation.c
2059 (nds32_expand_movmemsi_loop_known_size): Refactoring implementation.
2060 (nds32_gen_dup_4_byte_to_word_value): Rename to ...
2061 (nds32_gen_dup_4_byte_to_word_value_aux): ... this.
2062 (emit_setmem_word_loop): Rename to ...
2063 (emit_setmem_doubleword_loop): ... this.
2064 (nds32_gen_dup_4_byte_to_word_value): New function.
2065 (nds32_gen_dup_8_byte_to_double_word_value): New function.
2066 (nds32_expand_setmem_loop): Refine implementation.
2067 (nds32_expand_setmem_loop_v3m): Ditto.
2068 * config/nds32/nds32-multiple.md (unaligned_store_update_base_dw): New
2069 pattern.
2070
2071 2018-05-27 Chung-Ju Wu <jasonwucj@gmail.com>
2072
2073 * config/nds32/nds32.md (bswapsi2, bswaphi2): New patterns.
2074
2075 2018-05-27 Chung-Ju Wu <jasonwucj@gmail.com>
2076
2077 * config/nds32/nds32.c (nds32_attribute_table): Add "no_prologue".
2078 (nds32_init_machine_status): Initialize machine->attr_naked_p and
2079 machine->attr_no_prologue_p.
2080 (nds32_compute_stack_frame): Check "naked" and "no_prologue" attributes.
2081 (nds32_naked_function_p): Handle "naked" and "no_prologue" attributes.
2082 (nds32_expand_epilogue): Consider attr_naked_p.
2083 (nds32_expand_epilogue_v3pop): Likewise.
2084 (nds32_can_use_return_insn): Likewise.
2085 * config/nds32/nds32.h (machine_function): Add attr_naked_p and
2086 attr_no_prologue_p fields.
2087 * config/nds32/nds32.opt (mret-in-naked-func): New option.
2088
2089 2018-05-27 Jakub Jelinek <jakub@redhat.com>
2090
2091 PR target/85918
2092 * config/i386/i386.md (fixunssuffix, floatunssuffix): New code
2093 attributes.
2094 * config/i386/sse.md
2095 (<floatsuffix>float<sseintvecmodelower><mode>2<mask_name><round_name>):
2096 Rename to ...
2097 (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
2098 ... this.
2099 (<floatsuffix>float<sselongvecmodelower><mode>2<mask_name><round_name>):
2100 Rename to ...
2101 (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
2102 ... this.
2103 (*<floatsuffix>floatv2div2sf2): Rename to ...
2104 (*float<floatunssuffix>v2div2sf2): ... this.
2105 (<floatsuffix>floatv2div2sf2_mask): Rename to ...
2106 (float<floatunssuffix>v2div2sf2_mask): ... this.
2107 (*<floatsuffix>floatv2div2sf2_mask_1): Rename to ...
2108 (*float<floatunssuffix>v2div2sf2_mask_1): ... this.
2109 (<fixsuffix>fix_truncv8dfv8si2<mask_name><round_saeonly_name>): Rename
2110 to ...
2111 (fix<fixunssuffix>_truncv8dfv8si2<mask_name><round_saeonly_name>):
2112 ... this.
2113 (<fixsuffix>fix_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
2114 Rename to ...
2115 (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
2116 ... this.
2117 (<fixsuffix>fix_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
2118 Rename to ...
2119 (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
2120 ... this.
2121 (<fixsuffix>fix_truncv2sfv2di2<mask_name>): Rename to ...
2122 (fix<fixunssuffix>_truncv2sfv2di2<mask_name>): ... this.
2123 (vec_pack_ufix_trunc_<mode>): Use gen_fixuns_truncv8dfv8si2 instead of
2124 gen_ufix_truncv8dfv8si2.
2125 * config/i386/i386-builtin.def (__builtin_ia32_cvttpd2uqq256_mask,
2126 __builtin_ia32_cvttpd2uqq128_mask, __builtin_ia32_cvttps2uqq256_mask,
2127 __builtin_ia32_cvttps2uqq128_mask, __builtin_ia32_cvtuqq2ps256_mask,
2128 __builtin_ia32_cvtuqq2ps128_mask, __builtin_ia32_cvtuqq2pd256_mask,
2129 __builtin_ia32_cvtuqq2pd128_mask, __builtin_ia32_cvttpd2udq512_mask,
2130 __builtin_ia32_cvtuqq2ps512_mask, __builtin_ia32_cvtuqq2pd512_mask,
2131 __builtin_ia32_cvttps2uqq512_mask, __builtin_ia32_cvttpd2uqq512_mask):
2132 Use fixuns instead ufix or floatuns instead ufloat in CODE_FOR_ names.
2133
2134 2018-05-24 H.J. Lu <hongjiu.lu@intel.com>
2135
2136 PR target/85900
2137 PR target/85345
2138 * varasm.c (assemble_alias): Lookup ifunc attribute on error.
2139
2140 2018-05-25 Jim Wilson <jimw@sifive.com>
2141
2142 * config/riscv/riscv-protos.h (riscv_epilogue_uses): New.
2143 * config/riscv/riscv.c (struct machine_function): Add
2144 interrupt_handler_p and attribute_checked_p fields.
2145 (riscv_attribute_table): Add interrupt.
2146 (riscv_interrupt_type_p): New.
2147 (riscv_save_reg_p): Save extra regs for interrupt handler.
2148 (riscv_use_save_libcall): Return false for interrupt handler.
2149 (riscv_first_stack_step): Add forward declaration.
2150 (riscv_compute_frame_info): New local interrupt_save_t1. Set it
2151 for interrupt handler with large frame. Use it for saved reg list.
2152 (riscv_expand_prologue): Move flag_stack_usage_info support to
2153 eliminate duplication.
2154 (riscv_expand_epilogue): Generate mret for interrupt handler.
2155 (riscv_epilogue_uses): New.
2156 (riscv_can_use_return_insn): Return false for interrupt handler.
2157 (riscv_function_ok_for_sibcall): Likewise.
2158 (riscv_set_current_function): Add interrupt handler support.
2159 * config/riscv/riscv.h (EPILOGUE_USES): Call riscv_epilogue_uses.
2160 * config/riscv/riscv.md (UNSPECV_MRET): New.
2161 (GP_REGNUM): New.
2162 (riscv_frflags, riscv_fsflags): Use tab after opcode.
2163 (riscv_mret): New.
2164 * doc/extend.texi (RISC-V Function Attributes) <interrupt>: New.
2165
2166 2018-05-25 Bill Schmidt <wschmidt@linux.ibm.com>
2167
2168 PR tree-optimization/85712
2169 * gimple-ssa-strength-reduction.c (replace_one_candidate): Skip if
2170 this candidate has already been replaced in-situ by a copy.
2171
2172 2018-05-25 Jason Merrill <jason@redhat.com>
2173
2174 PR c++/80485 - inline function non-zero address.
2175 * symtab.c (nonzero_address): Check DECL_COMDAT.
2176
2177 2018-05-25 Uros Bizjak <ubizjak@gmail.com>
2178
2179 PR target/83628
2180 * config/alpha/alpha.md (ashlsi3): New insn pattern.
2181 (*ashlsi_se): Rename from *ashldi_se. Define as sign
2182 extension of SImode operation. Use const123_operand predicate.
2183 (*saddsi_1): Remove.
2184 (*saddl_se_1): Ditto.
2185 (*ssubsi_1): Ditto.
2186 (*ssubl_se_1): Ditto.
2187 * config/alpha/predicates.md (const123_operand): New predicate.
2188 * config/alpha/constraints.md (P): Use IN_RANGE.
2189
2190 2018-05-25 Richard Biener <rguenther@suse.de>
2191
2192 * tree-ssa-alias.h (refs_may_alias_p): Add tbaa_p bool parameter,
2193 defaulted to true.
2194 (ref_maybe_used_by_stmt_p): Likewise.
2195 (stmt_may_clobber_ref_p): Likewise.
2196 (stmt_may_clobber_ref_p_1): Likewise.
2197 * tree-ssa-alias.c (refs_may_alias_p): Add tbaa_p bool parameter
2198 and pass it along.
2199 (ref_maybe_used_by_stmt_p): Likewise.
2200 (stmt_may_clobber_ref_p): Likewise.
2201 (stmt_may_clobber_ref_p_1): Likewise.
2202 * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Use
2203 the alias oracle to disambiguate DRs with stmts DR analysis
2204 couldn't handle.
2205 (vect_analyze_data_refs): Do not give up on not analyzable
2206 DRs for BB vectorization. Remove code truncating the dataref
2207 vector.
2208
2209 2018-05-25 Jakub Jelinek <jakub@redhat.com>
2210
2211 PR target/85832
2212 * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
2213 Add (=Yk,v,C) variant using vptestm insn. Use TARGET_AVX512BW
2214 in test instead of TARGET_AVX512F for VI12_AVX512VL iterator.
2215
2216 2018-05-25 Richard Biener <rguenther@suse.de>
2217
2218 * tree-vect-data-refs.c (vect_find_stmt_data_reference): New
2219 function, combining stmt data ref gathering and fatal analysis
2220 parts.
2221 (vect_analyze_data_refs): Remove now redudnant code and simplify.
2222 * tree-vect-loop.c (vect_get_datarefs_in_loop): Factor out from
2223 vect_analyze_loop_2 and use vect_find_stmt_data_reference.
2224 * tree-vect-slp.c (vect_slp_bb): Use vect_find_stmt_data_reference.
2225 * tree-vectorizer.h (vect_find_stmt_data_reference): Declare.
2226
2227 2018-05-25 Bin Cheng <bin.cheng@arm.com>
2228
2229 PR tree-optimization/85720
2230 * tree-loop-distribution.c (break_alias_scc_partitions): Don't merge
2231 SCC if all partitions are builtins.
2232 (version_loop_by_alias_check): New parameter. Generate cancelable
2233 runtime alias check if all partitions are builtins.
2234 (distribute_loop): Update call to above function.
2235
2236 2018-05-25 Bin Cheng <bin.cheng@arm.com>
2237
2238 * tree-outof-ssa.c (tree-ssa.h, tree-dfa.h): Include header files.
2239 (create_default_def, for_all_parms): Moved from tree-ssa-coalesce.c.
2240 (parm_default_def_partition_arg): Ditto.
2241 (set_parm_default_def_partition): Ditto.
2242 (get_parm_default_def_partitions): Ditto and make it static.
2243 (get_undefined_value_partitions): Ditto and make it static.
2244 (remove_ssa_form): Refactor call to init_var_map here.
2245 * tree-ssa-coalesce.c (build_ssa_conflict_graph): Support live range
2246 computation for loop region.
2247 (coalesce_partitions, compute_optimized_partition_bases): Ditto.
2248 (register_default_def): Delete.
2249 (for_all_parms, create_default_def): Move to tree-outof-ssa.c.
2250 (parm_default_def_partition_arg): Ditto.
2251 (set_parm_default_def_partition): Ditto.
2252 (get_parm_default_def_partitions): Ditto and make it static.
2253 (get_undefined_value_partitions): Ditto and make it static.
2254 (coalesce_with_default, coalesce_with_default): Update comment.
2255 (create_coalesce_list_for_region): New func factored out from
2256 create_outofssa_var_map.
2257 (populate_coalesce_list_for_outofssa): New func factored out from
2258 create_outofssa_var_map and coalesce_ssa_name.
2259 (create_outofssa_var_map): Delete.
2260 (coalesce_ssa_name): Refactor to support live range computation.
2261 * tree-ssa-coalesce.h (coalesce_ssa_name): Change decl.
2262 (get_parm_default_def_partitions): Delete.
2263 (get_undefined_value_partitions): Ditto.
2264 * tree-ssa-live.c (init_var_map, delete_var_map): Support live range
2265 computation for loop region.
2266 (new_tree_live_info, loe_visit_block): Ditto.
2267 (live_worklist, set_var_live_on_entry): Ditto.
2268 (calculate_live_on_exit, verify_live_on_entry): Ditto.
2269 * tree-ssa-live.h (struct _var_map): New fields.
2270 (init_var_map): Change decl.
2271 (region_contains_p): New.
2272
2273 2018-05-25 Bin Cheng <bin.cheng@arm.com>
2274
2275 * tree-ssa-live.h (live_merge_and_clear): Delete.
2276
2277 2018-05-25 Richard Biener <rguenther@suse.de>
2278
2279 PR c++/85912
2280 * tree-dump.c (dequeue_and_dump): Remove access to removed
2281 operand 2 of a SWITCH_EXPR.
2282
2283 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
2284
2285 * doc/sourcebuild.texi (vect_double_cond_arith): Include
2286 multiplication and division.
2287 * doc/md.texi (cond_mul@var{m}, cond_div@var{m}, cond_mod@var{m})
2288 (cond_udiv@var{m}, cond_umod@var{m}): Document.
2289 * optabs.def (cond_smul_optab, cond_sdiv_optab, cond_smod_optab)
2290 (cond_udiv_optab, cond_umod_optab): New optabs.
2291 * internal-fn.def (IFN_COND_MUL, IFN_COND_DIV, IFN_COND_MOD)
2292 (IFN_COND_RDIV): New internal functions.
2293 * internal-fn.c (get_conditional_internal_fn): Handle TRUNC_DIV_EXPR,
2294 TRUNC_MOD_EXPR and RDIV_EXPR.
2295 * match.pd (UNCOND_BINARY, COND_BINARY): Handle them.
2296 * config/aarch64/iterators.md (UNSPEC_COND_MUL, UNSPEC_COND_DIV):
2297 New unspecs.
2298 (SVE_INT_BINARY): Include mult.
2299 (SVE_COND_FP_BINARY): Include UNSPEC_MUL and UNSPEC_DIV.
2300 (optab, sve_int_op): Handle mult.
2301 (optab, sve_fp_op, commutative): Handle UNSPEC_COND_MUL and
2302 UNSPEC_COND_DIV.
2303 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New pattern
2304 for SVE_INT_BINARY_SD.
2305
2306 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
2307
2308 * config/aarch64/iterators.md (SVE_INT_BINARY_SD): New code iterator.
2309 (optab, sve_int_op): Handle div and udiv.
2310 * config/aarch64/aarch64-sve.md (<optab><mode>3): New expander
2311 for SVE_INT_BINARY_SD.
2312 (*<optab><mode>3): New insn for the same.
2313
2314 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
2315
2316 * tree-vect-patterns.c: Include predict.h.
2317 (vect_recog_divmod_pattern): Restrict check for division support
2318 to when optimizing for size.
2319
2320 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
2321
2322 * doc/sourcebuild.texi (vect_double_cond_arith: Document.
2323 * gimple-match.h (gimple_match_op::MAX_NUM_OPS): Bump to 4.
2324 (gimple_match_op::gimple_match_op): Add an overload for 4 operands.
2325 (gimple_match_op::set_op): Likewise.
2326 (gimple_resimplify4): Declare.
2327 * genmatch.c (get_operand_type): Handle CFN_COND_* functions.
2328 (expr::gen_transform): Likewise.
2329 (decision_tree::gen): Generate a simplification routine for 4 operands.
2330 * gimple-match-head.c (gimple_simplify): Add an overload for
2331 4 operands. In the top-level function, handle up to 4 call
2332 arguments and call gimple_resimplify4.
2333 (gimple_resimplify4): New function.
2334 (build_call_internal): Pass a fourth operand.
2335 (maybe_push_to_seq): Likewise.
2336 * match.pd (UNCOND_BINARY, COND_BINARY): New operator lists.
2337 Fold VEC_COND_EXPRs of an operation and a default value into
2338 an IFN_COND_* function if possible.
2339 * config/aarch64/iterators.md (UNSPEC_COND_MAX, UNSPEC_COND_MIN):
2340 New unspecs.
2341 (SVE_COND_FP_BINARY): Include them.
2342 (optab, sve_fp_op): Handle them.
2343 (SVE_INT_BINARY_REV): New code iterator.
2344 (SVE_COND_FP_BINARY_REV): New int iterator.
2345 (commutative): New int attribute.
2346 * config/aarch64/aarch64-protos.h (aarch64_sve_prepare_conditional_op):
2347 Declare.
2348 * config/aarch64/aarch64.c (aarch64_sve_prepare_conditional_op): New
2349 function.
2350 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Use it.
2351 (*cond_<optab><mode>): New patterns for reversed operands.
2352
2353 2018-05-25 Richard Biener <rguenther@suse.de>
2354
2355 * tree-vectorizer.h (STMT_VINFO_GROUP_*, GROUP_*): Remove.
2356 (DR_GROUP_*): New, assert we have non-NULL ->data_ref_info.
2357 (REDUC_GROUP_*): New, assert we have NULL ->data_ref_info.
2358 (STMT_VINFO_GROUPED_ACCESS): Adjust.
2359 * tree-vect-data-refs.c (everywhere): Adjust users.
2360 * tree-vect-loop.c (everywhere): Likewise.
2361 * tree-vect-slp.c (everywhere): Likewise.
2362 * tree-vect-stmts.c (everywhere): Likewise.
2363 * tree-vect-patterns.c (vect_reassociating_reduction_p): Likewise.
2364
2365 2018-05-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
2366
2367 * configure.ac (gcc_cv_as_section_has_e): Move to common section.
2368 Rename to...
2369 (gcc_cv_as_section_exclude): ... this.
2370 Try Solaris as #exclude syntax.
2371 * configure: Regenerate.
2372 * config.in: Regenerate.
2373 * config/i386/i386.c (i386_solaris_elf_named_section): Handle
2374 SECTION_EXCLUDE.
2375 * config/sparc/sparc.c (sparc_solaris_elf_asm_named_section)
2376 [HAVE_GAS_SECTION_EXCLUDE]: Handle SECTION_EXCLUDE.
2377
2378 * varasm.c (default_elf_asm_named_section): Don't check if
2379 HAVE_GAS_SECTION_EXCLUDE is defined.
2380
2381 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
2382
2383 * doc/md.texi: Update the documentation of the cond_* optabs
2384 to mention the new final operand. Fix GET_MODE_NUNITS call.
2385 Describe the scalar case too.
2386 * internal-fn.def (IFN_EXTRACT_LAST): Change type to fold_left.
2387 * internal-fn.c (expand_cond_unary_optab_fn): Expect 3 operands
2388 instead of 2.
2389 (expand_cond_binary_optab_fn): Expect 4 operands instead of 3.
2390 (get_conditional_internal_fn): Update comment.
2391 * tree-vect-loop.c (vectorizable_reduction): Pass the original
2392 accumulator value as a final argument to conditional functions.
2393 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Turn into
2394 a define_expand and add an "else" operand. Assert for now that
2395 the else operand is equal to operand 2. Use SVE_INT_BINARY and
2396 SVE_COND_FP_BINARY instead of SVE_COND_INT_OP and SVE_COND_FP_OP.
2397 (*cond_<optab><mode>): New patterns.
2398 * config/aarch64/iterators.md (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX)
2399 (UNSPEC_COND_SMIN, UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
2400 (UNSPEC_COND_EOR): Delete.
2401 (optab): Remove associated mappings.
2402 (SVE_INT_BINARY): New code iterator.
2403 (sve_int_op): Remove int attribute and add "minus" to the code
2404 attribute.
2405 (SVE_COND_INT_OP): Delete.
2406 (SVE_COND_FP_OP): Rename to...
2407 (SVE_COND_FP_BINARY): ...this.
2408
2409 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
2410
2411 * optabs.c (can_reuse_operands_p): New function.
2412 (maybe_legitimize_operands): Try to reuse the results for
2413 earlier operands.
2414
2415 2018-05-24 Uros Bizjak <ubizjak@gmail.com>
2416
2417 * config/i386/sse.md (cvtusi2<ssescalarmodesuffix>64<round_name>):
2418 Add {q} suffix to insn mnemonic.
2419
2420 2018-05-23 Jozef Lawrynowicz <jozef.l@mittosystems.com>
2421
2422 * config/msp430/msp430.c (TARGET_WARN_FUNC_RETURN): Define.
2423 (msp430_warn_func_return): New.
2424
2425 2018-05-24 Roger Sayle <roger@nextmovesoftware.com>
2426
2427 * fold-const.c (tree_nonzero_bits): New function.
2428 * fold-const.h (tree_nonzero_bits): Likewise.
2429 * match.pd (POPCOUNT): New patterns to fold BUILTIN_POPCOUNT and
2430 friends. POPCOUNT(x&1) => x&1, POPCOUNT(x)==0 => x==0, etc.
2431
2432 2018-05-24 H.J. Lu <hongjiu.lu@intel.com>
2433
2434 PR target/85900
2435 PR target/85345
2436 * varasm.c (assemble_alias): Check ifunc_resolver only on
2437 FUNCTION_DECL.
2438
2439 2018-05-24 Uros Bizjak <ubizjak@gmail.com>
2440
2441 PR target/85903
2442 * config/i386/sse.md (movdi_to_sse): Do not generate pseudo
2443 when memory input operand is handled.
2444
2445 2018-05-24 Luis Machado <luis.machado@linaro.org>
2446
2447 * config/aarch64/aarch64.c (qdf24xx_addrcost_table): New static
2448 global.
2449 (qdf24xx_tunings) <addr_costs>: Set to qdf24xx_addrcost_table.
2450
2451 2018-05-24 Richard Sandiford <richard.sandiford@linaro.org>
2452
2453 * match.pd: Delay FMA folds until after vectorization.
2454
2455 2018-05-24 Andre Vieira <andre.simoesdiasvieira@arm.com>
2456
2457 PR target/83009
2458 * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
2459 address check not strict.
2460
2461 2018-05-24 Richard Sandiford <richard.sandiford@linaro.org>
2462
2463 * gimple-match.h (gimple_match_op): New class.
2464 (mprts_hook): Replace parameters with a gimple_match_op *.
2465 (maybe_build_generic_op): Likewise.
2466 (gimple_simplified_result_is_gimple_val): Replace parameters with
2467 a const gimple_match_op *.
2468 (gimple_simplify): Replace code_helper * and tree * parameters with
2469 a gimple_match_op * parameter.
2470 (gimple_resimplify1): Replace code_helper *, tree and tree *
2471 parameters with a gimple_match_op * parameter.
2472 (gimple_resimplify2): Likewise.
2473 (gimple_resimplify3): Likewise.
2474 (maybe_push_res_to_seq): Replace code_helper, tree and tree *
2475 parameters with a gimple_match_op * parameter.
2476 * gimple-match-head.c (gimple_simplify): Change prototypes of
2477 auto-generated functions to take a gimple_match_op * instead of
2478 separate code_helper * and tree * parameters. Make the same
2479 change in the top-level overload and update calls to the
2480 gimple_resimplify routines. Update calls to the auto-generated
2481 functions and to maybe_push_res_to_seq in the publicly-facing
2482 operation-specific gimple_simplify overloads.
2483 (gimple_match_op::MAX_NUM_OPS): Define.
2484 (gimple_resimplify1): Replace rcode and ops with a single res_op
2485 parameter. Update call to gimple_simplify.
2486 (gimple_resimplify2): Likewise.
2487 (gimple_resimplify3): Likewise.
2488 (mprts_hook): Replace parameters with a gimple_match_op *.
2489 (maybe_build_generic_op): Likewise.
2490 (build_call_internal): Replace type, nargs and ops with
2491 a gimple_match_op *.
2492 (maybe_push_res_to_seq): Replace res_code, type and ops parameters
2493 with a single gimple_match_op *. Update calls to mprts_hook,
2494 build_call_internal and gimple_simplified_result_is_gimple_val.
2495 Factor out code that is common to the tree_code and combined_fn cases.
2496 * genmatch.c (expr::gen_transform): Replace tem_code and
2497 tem_ops with a gimple_match_op called tem_op. Update calls
2498 to the gimple_resimplify functions and maybe_push_res_to_seq.
2499 (dt_simplify::gen_1): Manipulate res_op instead of res_code and
2500 res_ops. Update call to the gimple_resimplify functions.
2501 (dt_simplify::gen): Pass res_op instead of res_code and res_ops.
2502 (decision_tree::gen): Make the functions take a gimple_match_op *
2503 called res_op instead of separate res_code and res_ops parameters.
2504 Update call accordingly.
2505 * gimple-fold.c (replace_stmt_with_simplification): Replace rcode
2506 and ops with a single res_op parameter. Update calls to
2507 maybe_build_generic_op and maybe_push_res_to_seq.
2508 (fold_stmt_1): Update calls to gimple_simplify and
2509 replace_stmt_with_simplification.
2510 (gimple_fold_stmt_to_constant_1): Update calls to gimple_simplify
2511 and gimple_simplified_result_is_gimple_val.
2512 * tree-cfgcleanup.c (cleanup_control_expr_graph): Update call to
2513 gimple_simplify.
2514 * tree-ssa-sccvn.c (vn_lookup_simplify_result): Replace parameters
2515 with a gimple_match_op *.
2516 (vn_nary_build_or_lookup): Likewise. Update call to
2517 vn_nary_build_or_lookup_1.
2518 (vn_nary_build_or_lookup_1): Replace rcode, type and ops with a
2519 gimple_match_op *. Update calls to the gimple_resimplify routines
2520 and to gimple_simplified_result_is_gimple_val.
2521 (vn_nary_simplify): Update call to vn_nary_build_or_lookup_1.
2522 Use gimple_match_op::MAX_NUM_OPS instead of a hard-coded 3.
2523 (vn_reference_lookup_3): Update call to vn_nary_build_or_lookup.
2524 (visit_nary_op): Likewise.
2525 (visit_reference_op_load): Likewise.
2526
2527 2018-05-23 Luis Machado <luis.machado@linaro.org>
2528
2529 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Use correct type
2530 modifier for printing the step amount.
2531
2532 2018-05-23 Jozef Lawrynowicz <jozef.l@somniumtech.com>
2533
2534 PR target/78849
2535 * gcc/tree.c (build_common_tree_nodes): Dont set TYPE_SIZE for __intN
2536 types.
2537
2538 2018-05-23 Segher Boessenkool <segher@kernel.crashing.org>
2539
2540 * doc/sourcebuild.texi (Endianness): New subsubsection.
2541
2542 2018-05-23 Luis Machado <luis.machado@linaro.org>
2543
2544 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
2545 <prefetch_dynamic_strides>: New const bool field.
2546 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
2547 prefetch_dynamic_strides.
2548 (exynosm1_prefetch_tune): Likewise.
2549 (thunderxt88_prefetch_tune): Likewise.
2550 (thunderx_prefetch_tune): Likewise.
2551 (thunderx2t99_prefetch_tune): Likewise.
2552 (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to
2553 false.
2554 (aarch64_override_options_internal): Update to set
2555 PARAM_PREFETCH_DYNAMIC_STRIDES.
2556 * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
2557 * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
2558 * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
2559 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
2560 prefetch-dynamic-strides setting.
2561
2562 2018-05-23 Luis Machado <luis.machado@linaro.org>
2563
2564 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
2565 <minimum_stride>: New const int field.
2566 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
2567 minimum_stride field defaulting to -1.
2568 (exynosm1_prefetch_tune): Likewise.
2569 (thunderxt88_prefetch_tune): Likewise.
2570 (thunderx_prefetch_tune): Likewise.
2571 (thunderx2t99_prefetch_tune): Likewise.
2572 (qdf24xx_prefetch_tune) <minimum_stride>: Set to 2048.
2573 <default_opt_level>: Set to 3.
2574 (aarch64_override_options_internal): Update to set
2575 PARAM_PREFETCH_MINIMUM_STRIDE.
2576 * doc/invoke.texi (prefetch-minimum-stride): Document new option.
2577 * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
2578 * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
2579 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
2580 stride is constant and is below the minimum stride threshold.
2581
2582 2018-05-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2583
2584 * config/arm/arm-cpus.in (mode26): Delete.
2585 (armv4): Delete mode26 reference.
2586 * config/arm/arm.c (arm_configure_build_target): Delete use of
2587 isa_bit_mode26.
2588
2589 2018-05-23 Uros Bizjak <ubizjak@gmail.com>
2590
2591 * config/i386/i386.md (*floatuns<SWI48:mode><MODEF:mode>2_avx512):
2592 New insn pattern.
2593 (floatunssi<mode>2): Also enable for AVX512F and TARGET_SSE_MATH.
2594 Rewrite expander pattern. Emit gen_floatunssi<mode>2_i387_with_xmm
2595 for non-SSE modes.
2596 (floatunsdisf2): Rewrite expander pattern. Hanlde TARGET_AVX512F.
2597 (floatunsdidf2): Ditto.
2598
2599 2018-05-23 Uros Bizjak <ubizjak@gmail.com>
2600
2601 * config/i386/i386.md (fixuns_trunc<mode>di2): New insn pattern.
2602 (fixuns_trunc<mode>si2_avx512f): Ditto.
2603 (*fixuns_trunc<mode>si2_avx512f_zext): Ditto.
2604 (fixuns_trunc<mode>si2): Also enable for AVX512F and TARGET_SSE_MATH.
2605 Emit fixuns_trunc<mode>si2_avx512f for AVX512F targets.
2606
2607 2018-05-23 Alexander Monakov <amonakov@ispras.ru>
2608
2609 PR rtl-optimization/79985
2610 * df-scan.c (df_insn_refs_collect): Remove special case for
2611 global registers and asm statements.
2612
2613 2018-05-23 Alexander Monakov <amonakov@ispras.ru>
2614
2615 * extend.texi (Global Register Variables): Rewrite the bullet list.
2616 Note that the register is available for allocation. Note that access
2617 via inline asm must use constraints. Add note about async-signal
2618 handlers. Remove paragraph about automagic register selection.
2619
2620 2018-05-23 Richard Biener <rguenther@suse.de>
2621
2622 * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove restriction
2623 of fixed offset from memset VN.
2624
2625 2018-05-23 Bill Schmidt <wschmidt@linux.ibm.com>
2626
2627 * gimple-ssa-strength-reduction.c (struct slsr_cand_d): Add
2628 first_interp field.
2629 (alloc_cand_and_find_basis): Initialize first_interp field.
2630 (slsr_process_mul): Modify first_interp field.
2631 (slsr_process_add): Likewise.
2632 (slsr_process_cast): Modify first_interp field for each new
2633 interpretation.
2634 (slsr_process_copy): Likewise.
2635 (dump_candidate): Dump first_interp field.
2636 (replace_mult_candidate): Process all interpretations, not just
2637 subsequent ones.
2638 (replace_rhs_if_not_dup): Likewise.
2639 (replace_one_candidate): Likewise.
2640
2641 2018-05-23 Wilco Dijkstra <wdijkstr@arm.com>
2642
2643 * config/aarch64/aarch64.c (aarch64_use_frame_pointer):
2644 Add new boolean.
2645 (aarch64_needs_frame_chain): New function.
2646 (aarch64_parse_override_string): Set aarch64_use_frame_pointer.
2647
2648 2018-05-23 Sudakshina Das <sudi.das@arm.com>
2649
2650 PR target/84882
2651 * common/config/aarch64/aarch64-common.c (aarch64_handle_option):
2652 Check val before adding MASK_STRICT_ALIGN to opts->x_target_flags.
2653 * config/aarch64/aarch64.opt (mstrict-align): Remove RejectNegative.
2654 * config/aarch64/aarch64.c (aarch64_attributes): Mark allow_neg
2655 as true for strict-align.
2656 (aarch64_can_inline_p): Perform checks even when callee has no
2657 attributes to check for strict alignment.
2658 * doc/extend.texi (AArch64 Function Attributes): Document
2659 no-strict-align.
2660 * doc/invoke.texi: (AArch64 Options): Likewise.
2661
2662 2018-05-23 Richard Sandiford <richard.sandiford@linaro.org>
2663
2664 PR tree-optimization/85853
2665 * tree-vect-slp.c (vect_slp_analyze_node_operations): Split out
2666 the handling of the root of the node to...
2667 (vect_slp_analyze_node_operations_1): ...this new function,
2668 and run the whole thing with the child nodes' def types
2669 set according to their SLP node's def type.
2670
2671 2018-05-23 Richard Biener <rguenther@suse.de>
2672
2673 PR middle-end/85874
2674 * tree-data-ref.c (create_runtime_alias_checks): Defer
2675 and ignore overflow warnings.
2676
2677 2018-05-23 Yury Gribov <tetra2005@gmail.com>
2678
2679 PR tree-optimization/85822
2680 * tree-vrp.c (is_masked_range_test): Fix handling of negative
2681 constants.
2682
2683 2018-05-23 Richard Biener <rguenther@suse.de>
2684
2685 * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
2686 memset constants via native_interpret_expr.
2687
2688 2018-05-22 H.J. Lu <hongjiu.lu@intel.com>
2689
2690 PR target/85345
2691 * cgraph.h (cgraph_node::create): Set ifunc_resolver for ifunc
2692 attribute.
2693 (cgraph_node::create_alias): Likewise.
2694 (cgraph_node::get_availability): Check ifunc_resolver instead
2695 of looking up ifunc attribute.
2696 * cgraphunit.c (maybe_diag_incompatible_alias): Likewise.
2697 * varasm.c (do_assemble_alias): Likewise.
2698 (assemble_alias): Likewise.
2699 (default_binds_local_p_3): Likewise.
2700 * cgraph.h (cgraph_node): Add ifunc_resolver.
2701 (cgraph_node::only_called_directly_or_aliased_p): Return false
2702 for IFUNC resolver.
2703 * lto-cgraph.c (input_node): Set ifunc_resolver for ifunc
2704 attribute.
2705 * symtab.c (symtab_node::verify_base): Verify that ifunc_resolver
2706 is equivalent to lookup_attribute ("ifunc", DECL_ATTRIBUTES (decl)).
2707 (symtab_node::binds_to_current_def_p): Check ifunc_resolver
2708 instead of looking up ifunc attribute.
2709
2710 2018-05-22 Luis Machado <luis.machado@linaro.org>
2711
2712 * config/aarch64/aarch64.md (*ashift<mode>_extv_bfiz): New pattern.
2713
2714 2018-05-22 Martin Sebor <msebor@redhat.com>
2715
2716 PR middle-end/85359
2717 * builtins.c (expand_builtin_strcpy): Call maybe_warn_nonstring_arg
2718 only when expasion succeeds.
2719 (expand_builtin_strcmp): Same.
2720 (expand_builtin_strncmp): Same.
2721
2722 2018-05-22 Martin Sebor <msebor@redhat.com>
2723
2724 * calls.c (maybe_warn_nonstring_arg): Fix a typo in a comment.
2725
2726 2018-05-22 Jackson Woodruff <jackson.woodruff@arm.com>
2727 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2728
2729 * config/aarch64/aarch64-ldpstp.md: Replace uses of
2730 aarch64_mem_pair_operand with memory_operand and delete operand swapping
2731 code.
2732 * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
2733 Add check for legitimate_address.
2734 (aarch64_gen_adjusted_ldpstp): Swap operands where appropriate.
2735 (aarch64_swap_ldrstr_operands): New.
2736 * config/aarch64/aarch64-protos.h (aarch64_swap_ldrstr_operands):
2737 Define prototype.
2738
2739 2018-05-22 Jackson Woodruff <jackson.woodruff@arm.com>
2740 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2741
2742 * config/aarch64/aarch64.md: New patterns to generate stp
2743 and ldp.
2744 (store_pair_sw, store_pair_dw): New patterns to generate stp for
2745 single words and double words.
2746 (load_pair_sw, load_pair_dw): Likewise.
2747 (store_pair_sf, store_pair_df, store_pair_si, store_pair_di):
2748 Delete.
2749 (load_pair_sf, load_pair_df, load_pair_si, load_pair_di):
2750 Delete.
2751 * config/aarch64/aarch64-ldpstp.md: Modify peephole
2752 for different mode ldpstp and add peephole for merged zero stores.
2753 Likewise for loads.
2754 * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
2755 Add size check.
2756 (aarch64_gen_store_pair): Rename calls to match new patterns.
2757 (aarch64_gen_load_pair): Rename calls to match new patterns.
2758 * config/aarch64/aarch64-simd.md (load_pair<mode>): Rename to...
2759 (load_pair<DREG:mode><DREG2:mode>): ... This.
2760 (store_pair<mode>): Rename to...
2761 (vec_store_pair<DREG:mode><DREG2:mode>): ... This.
2762 * config/aarch64/iterators.md (DREG, DREG2, DX2, SX, SX2, DSX):
2763 New mode iterators.
2764 (V_INT_EQUIV): Handle SImode.
2765 * config/aarch64/predicates.md (aarch64_reg_zero_or_fp_zero):
2766 New predicate.
2767
2768 2018-05-22 Martin Sebor <msebor@redhat.com>
2769
2770 PR c/85623
2771 * calls.c (maybe_warn_nonstring_arg): Use string length to set
2772 or ajust the presumed bound on an operation to avoid unnecessary
2773 warnings.
2774
2775 2018-05-22 Martin Sebor <msebor@redhat.com>
2776
2777 PR tree-optimization/85826
2778 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Avoid
2779 assuming that a DECL necesarily has a constant size.
2780
2781 2018-05-22 Richard Sandiford <richard.sandiford@linaro.org>
2782
2783 PR middle-end/85862
2784 * internal-fn.c (expand_direct_optab_fn): Cope with a null lhs.
2785
2786 2018-05-22 Richard Biener <rguenther@suse.de>
2787
2788 PR tree-optimization/85834
2789 * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly handle
2790 non-constant and non-zero memset arguments.
2791
2792 2018-05-22 Martin Liska <mliska@suse.cz>
2793
2794 PR ipa/85607
2795 * ipa-icf.c (sem_item::add_type): Do not ICE for incomplete types.
2796
2797 2018-05-22 Richard Biener <rguenther@suse.de>
2798
2799 PR tree-optimization/85863
2800 * tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant
2801 comparisons when vectype is specified.
2802 (vectorizable_condition): Do not specify vectype for
2803 vect_is_simple_cond when SLP vectorizing.
2804
2805 2018-05-21 Michael Meissner <meissner@linux.ibm.com>
2806
2807 PR target/85657
2808 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not
2809 define __ibm128 as long double.
2810 * config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128
2811 as a distinct type when IEEE 128-bit support is enabled.
2812 (init_float128_ieee): Fix up conversions between IFmode and IEEE
2813 128-bit types to use the correct functions.
2814 (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to
2815 convert between 128-bit floating point types that have different
2816 modes but the same representation, instead of using gen_lowpart to
2817 makean alias.
2818 * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and
2819 KFmode.
2820 (IFKF_reg): New attributes to give the register constraints for
2821 IFmode and KFmode.
2822 (extend<mode>tf2_internal): New insns to mark an explicit
2823 conversion between 128-bit floating point types that have a
2824 different mode but share the same representation.
2825
2826 2018-05-21 Richard Sandiford <richard.sandiford@linaro.org>
2827
2828 PR tree-optimization/85814
2829 * tree-ssa-strlen.c (get_stridx_plus_constant): Cope with
2830 a null return from get_strinfo when unsharing the next
2831 strinfo in the chain.
2832
2833 2018-05-21 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
2834
2835 PR gcc/84923
2836 * varasm.c (weak_finish): Clean up weak_decls.
2837
2838 2018-05-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2839
2840 * config/aarch64/aarch64.md ("unspec"): Define UNSPEC_SABAL,
2841 UNSPEC_SABDL2, UNSPEC_SADALP, UNSPEC_UABAL, UNSPEC_UABDL2,
2842 UNSPEC_UADALP values.
2843 * config/aarch64/iterators.md (ABAL): New int iterator.
2844 (ABDL2): Likewise.
2845 (ADALP): Likewise.
2846 (sur): Add mappings for the above.
2847 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>_3):
2848 New define_insn.
2849 (aarch64_<sur>abal<mode>_4): Likewise.
2850 (aarch64_<sur>adalp<mode>_3): Likewise.
2851 (<sur>sadv16qi): New define_expand.
2852
2853 2018-05-21 Alexander Nesterovskiy <alexander.nesterovskiy@intel.com>
2854
2855 * config/i386/i386.md (*movsf_internal): AVX falsedep fix.
2856 (*movdf_internal): Ditto.
2857 (*rcpsf2_sse): Ditto.
2858 (*rsqrtsf2_sse): Ditto.
2859 (*sqrt<mode>2_sse): Ditto.
2860
2861 2018-05-21 Tamar Christina <tamar.christina@arm.com>
2862
2863 * config/aarch64/aarch64-simd.md (aarch64_eor3qv8hi): Change to
2864 eor3q<mode>4.
2865 (aarch64_bcaxqv8hi): Change to bcaxq<mode>4.
2866 * config/aarch64/aarch64-simd-builtins.def (veor3q_u8, veor3q_u32,
2867 veor3q_u64, veor3q_s8, veor3q_s16, veor3q_s32, veor3q_s64, vbcaxq_u8,
2868 vbcaxq_u32, vbcaxq_u64, vbcaxq_s8, vbcaxq_s16, vbcaxq_s32,
2869 vbcaxq_s64): New.
2870 * config/aarch64/arm_neon.h: Likewise.
2871 * config/aarch64/iterators.md (VQ_I): New.
2872
2873 2018-05-21 Alexey Brodkin <abrodkin@synopsys.com>
2874
2875 * config.gcc: Add arc/t-multilib-linux to tmake_file for
2876 arc*-*-linux*.
2877 * config/arc/t-multilib-linux: Specify MULTILIB_OPTIONS and
2878 MULTILIB_DIRNAMES
2879
2880 2018-05-20 Chung-Ju Wu <jasonwucj@gmail.com>
2881
2882 * config/nds32/constraints.md (S): New constraint.
2883 * config/nds32/nds32.md (call_internal): Use constraint S.
2884 (call_value_internal): Likewise.
2885 (sibcall_internal): Likewise.
2886 (sibcall_value_internal): Likewise.
2887
2888 2018-05-20 Kito Cheng <kito.cheng@gmail.com>
2889 Chung-Ju Wu <jasonwucj@gmail.com>
2890
2891 * config/nds32/nds32.c (nds32_register_move_cost): Take garywolf cpu
2892 into consideration.
2893
2894 2018-05-20 Kito Cheng <kito.cheng@gmail.com>
2895 Chung-Ju Wu <jasonwucj@gmail.com>
2896
2897 * config/nds32/nds32-cost.c (rtx_cost_model_t): New structure.
2898 (insn_size_16bit, insn_size_32bit): New variables for cost evaluation.
2899 (nds32_rtx_costs_impl): Simplify.
2900 (nds32_address_cost_impl): Simplify.
2901 (nds32_init_rtx_costs): New function.
2902 (nds32_rtx_costs_speed_prefer): Likewise.
2903 (nds32_rtx_costs_size_prefer): Likewise.
2904 (nds32_address_cost_speed_prefer): Likewise.
2905 (nds32_address_cost_speed_fwprop): Likewise.
2906 (nds32_address_cost_size_prefer): Likewise.
2907 * config/nds32/nds32-protos.h (nds32_init_rtx_costs): Declare.
2908 * config/nds32/nds32.c (nds32_option_override): Use
2909 nds32_init_rtx_costs function.
2910
2911 2018-05-20 Chung-Ju Wu <jasonwucj@gmail.com>
2912
2913 * config/nds32/nds32.c (nds32_asm_file_start): Output pipeline model.
2914 * config/nds32/nds32.h (TARGET_PIPELINE_N7): Define.
2915 (TARGET_PIPELINE_N8): Likewise.
2916 (TARGET_PIPELINE_N10): Likewise.
2917 (TARGET_PIPELINE_N13): Likewise.
2918 (TARGET_PIPELINE_GRAYWOLF): Likewise.
2919
2920 2018-05-19 Monk Chiang <sh.chiang04@gmail.com>
2921
2922 * config/nds32/nds32-fpu.md: Update copyright year.
2923
2924 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
2925
2926 * config/nds32/nds32.h (ASM_SPEC): Adjust spec rule.
2927
2928 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
2929
2930 * config/nds32/nds32.c
2931 (nds32_md_asm_adjust): Consider flag_inline_asm_r15 variable.
2932 * config/nds32/nds32.opt (minline-asm-r15): New option.
2933
2934 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
2935
2936 * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): Add
2937 MASK_HW_ABS.
2938 * config/nds32/nds32.md (abssi2): New pattern.
2939
2940 2018-05-19 Uros Bizjak <ubizjak@gmail.com>
2941
2942 * config/i386/i386.md (rex64namesuffix): New mode attribute.
2943 * config/i386/sse.md (sse_cvtsi2ss<rex64namesuffix><round_name>):
2944 Merge insn pattern from sse_cvtsi2ss<round_name> and
2945 sse_cvtsi2ssq<round_name> using SWI48 mode iterator.
2946 (sse_cvtss2si<rex64namesuffix><round_name>): Merge insn pattern
2947 from sse_cvtss2si<round_name> and sse_cvtss2siq<round_name>
2948 using SWI48 mode iterator.
2949 (sse_cvtss2si<rex64namesuffix>_2): Merge insn pattern from
2950 sse_cvtss2si_2 and sse_cvtss2siq_2 using SWI48 mode iterator.
2951 (sse_cvttss2si<rex64namesuffix><round_saeonly_name>): Merge insn
2952 pattern from sse_cvttss2si<round_saeonly_name>
2953 and sse_cvttss2siq<round_saeonly_name> using SWI48 mode iterator.
2954 (avx512f_vcvtss2usi<rex64namesuffix><round_name>): Merge insn pattern
2955 from avx512f_vcvtss2usi<round_name> and avx512f_vcvtss2usiq<round_name>
2956 using SWI48 mode iterator.
2957 (avx512f_vcvttss2usi<rex64namesuffix><round_saeonly_name>): Merge
2958 insn pattern from avx512f_vcvttss2usi<round_saeonly_name> and
2959 avx512f_vcvttss2usiq<round_saeonly_name> using SWI48 mode iterator.
2960 (avx512f_vcvtsd2usi<rex64namesuffix><round_name>): Merge insn pattern
2961 from avx512f_vcvtsd2usi<round_name> and avx512f_vcvtsd2usiq<round_name>
2962 using SWI48 mode iterator.
2963 (avx512f_vcvttsd2usi<rex64namesuffix><round_saeonly_name>): Merge
2964 insn pattern from avx512f_vcvttsd2usi<round_saeonly_name> and
2965 avx512f_vcvttsd2usiq<round_saeonly_name> using SWI48 mode iterator.
2966 (sse2_cvtsd2si<rex64namesuffix><round_name>): Merge insn pattern from
2967 sse2_cvtsd2si<round_name> and sse2_cvtsd2siq<round_name> using
2968 SWI48 mode iterator.
2969 (sse2_cvtsd2si<rex64namesuffix>_2): Merge insn pattern from
2970 sse2_cvtsd2si_2 and sse2_cvtsd2siq_2 using SWI48 mode iterator.
2971 (sse_cvttsd2si<rex64namesuffix><round_saeonly_name>): Merge insn
2972 pattern from sse_cvttsd2si<round_saeonly_name>
2973 and sse_cvttsd2siq<round_saeonly_name> using SWI48 mode iterator.
2974
2975 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
2976
2977 * config/nds32/nds32-md-auxiliary.c
2978 (nds32_valid_smw_lwm_base_p): Refine.
2979 (nds32_output_smw_single_word): Refine.
2980 (nds32_output_smw_double_word): New.
2981 * config/nds32/nds32-protos.h (nds32_output_smw_double_word): New.
2982
2983 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
2984
2985 * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push): Refine.
2986 (nds32_output_stack_pop): Refine.
2987 (nds32_expand_unaligned_load): Refine.
2988 (nds32_expand_unaligned_store): Refine.
2989
2990 2018-05-19 Kuan-Lin Chen <kuanlinchentw@gmail.com>
2991 Chung-Ju Wu <jasonwucj@gmail.com>
2992
2993 * config/nds32/constants.md: Add TP_REGNUM constant.
2994 (unspec_element): Add UNSPEC_GOTINIT, UNSPEC_GOT, UNSPEC_GOTOFF,
2995 UNSPEC_PLT, UNSPEC_TLSGD, UNSPEC_TLSLD, UNSPEC_TLSIE, UNSPEC_TLSLE and
2996 UNSPEC_ADD32.
2997 * config/nds32/nds32-doubleword.md: Consider flag_pic.
2998 * config/nds32/nds32-dspext.md (mov<mode>): Expand TLS and PIC cases.
2999 * config/nds32/nds32-predicates.c (nds32_const_unspec_p): New.
3000 * config/nds32/nds32-md-auxiliary.c: Implementation that support TLS
3001 and PIC code generation.
3002 * config/nds32/nds32-protos.h: Declarations that support TLS and PIC
3003 code generation.
3004 * config/nds32/nds32-relax-opt.c: Consider TLS and PIC for relax
3005 optimization.
3006 * config/nds32/nds32.md: Support TLS and PIC.
3007 * config/nds32/nds32.c: Support TLS and PIC.
3008 * config/nds32/nds32.h (nds32_relax_insn_type): New enum type.
3009 * config/nds32/predicates.md (nds32_nonunspec_symbolic_operand): New
3010 predicate.
3011
3012 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
3013
3014 * config/nds32/nds32-predicates.c (const_vector_to_hwint): Use machine
3015 mode with E_ prefix.
3016
3017 2018-05-19 Kuan-Lin Chen <kuanlinchentw@gmail.com>
3018 Chung-Ju Wu <jasonwucj@gmail.com>
3019
3020 * config/nds32/constants.md (unspec_element): Add UNSPEC_ICT.
3021 * config/nds32/nds32-md-auxiliary.c
3022 (symbolic_reference_mentioned_p): New.
3023 (nds32_legitimize_ict_address): New.
3024 (nds32_expand_ict_move): New.
3025 (nds32_indirect_call_referenced_p): New.
3026 (nds32_symbol_binds_local_p): Delete.
3027 (nds32_long_call_p): Modify.
3028 * config/nds32/nds32-opts.h (nds32_ict_model_type): New enum type.
3029 * config/nds32/nds32-protos.h
3030 (symbolic_reference_mentioned_p): Declare.
3031 (nds32_legitimize_ict_address): Declare.
3032 (nds32_expand_ict_move): Declare.
3033 (nds32_indirect_call_referenced_p): Declare.
3034 * config/nds32/nds32-relax-opt.c (nds32_ict_const_p): New.
3035 (nds32_relax_group): Use nds32_ict_const_p as condition.
3036 * config/nds32/nds32.c (nds32_attribute_table): Add "indirect_call".
3037 (nds32_asm_file_start): Output ict_model directive in asm code.
3038 (nds32_legitimate_address_p): Consider indirect call.
3039 (nds32_print_operand): Consider indirect call.
3040 (nds32_print_operand_address): Consider indirect call.
3041 (nds32_insert_attributes): Handle "indirect_call" attribute.
3042 (TARGET_LEGITIMATE_ADDRESS_P): Define.
3043 (TARGET_LEGITIMATE_CONSTANT_P): Define.
3044 (TARGET_CANNOT_FORCE_CONST_MEM): Define.
3045 (TARGET_DELEGITIMIZE_ADDRESS): Define.
3046 (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
3047 * config/nds32/nds32.h (SYMBOLIC_CONST_P): Define.
3048 (TARGET_ICT_MODEL_SMALL): Define.
3049 (TARGET_ICT_MODEL_LARGE): Define.
3050 * config/nds32/nds32.md (movsi): Consider ict model.
3051 (call, call_value): Consider ict model.
3052 (sibcall, sibcall_value): Consider ict model.
3053 * config/nds32/nds32.opt (mict-model): New option.
3054 * config/nds32/predicates.md (nds32_symbolic_operand): Consider ict
3055 model.
3056
3057 2018-05-18 Kito Cheng <kito.cheng@gmail.com>
3058 Monk Chiang <sh.chiang04@gmail.com>
3059 Jim Wilson <jimw@sifive.com>
3060
3061 * common/config/riscv/riscv-common.c (riscv_parse_arch_string):
3062 Add support to parse rv32e*. Clear MASK_RVE for rv32i and rv64i.
3063 * config.gcc (riscv*-*-*): Add support for rv32e* and ilp32e.
3064 * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): Define
3065 __riscv_32e when TARGET_RVE. Handle ABI_ILP32E as soft-float ABI.
3066 * config/riscv/riscv-opts.h (riscv_abi_type): Add ABI_ILP32E.
3067 * config/riscv/riscv.c (riscv_compute_frame_info): When TARGET_RVE,
3068 compute save_libcall_adjustment properly.
3069 (riscv_option_override): Call error if TARGET_RVE and not ABI_ILP32E.
3070 (riscv_conditional_register_usage): Handle TARGET_RVE and ABI_ILP32E.
3071 * config/riscv/riscv.h (UNITS_PER_FP_ARG): Handle ABI_ILP32E.
3072 (STACK_BOUNDARY, ABI_STACK_BOUNDARY): Handle TARGET_RVE.
3073 (GP_REG_LAST, MAX_ARGS_IN_REGISTERS): Likewise.
3074 (ABI_SPEC): Handle mabi=ilp32e.
3075 * config/riscv/riscv.opt (abi_type): Add ABI_ILP32E.
3076 (RVE): Add RVE mask.
3077 * doc/invoke.texi (RISC-V options) <-mabi>: Add ilp32e info.
3078 <-march>: Add rv32e as an example.
3079
3080 2018-05-18 Marc Glisse <marc.glisse@inria.fr>
3081
3082 PR c++/82899
3083 * tree-ssa-structalias.c (create_variable_info_for_1): Extra argument.
3084 (intra_create_variable_infos): Handle C++ constructors.
3085
3086 2018-05-18 Martin Liska <mliska@suse.cz>
3087
3088 * passes.def: Remove a redundant pass.
3089
3090 2018-05-18 Eric Botcazou <ebotcazou@adacore.com>
3091
3092 PR bootstrap/85838
3093 * config/sparc/sparc.c (sparc_expand_builtin): Always initialize op[0].
3094
3095 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3096
3097 * config/arm/arm-cpus.in (armv3m, mode32): Delete features.
3098 (ARMv4): Update.
3099 (ARMv2, ARMv3, ARMv3m): Delete fgroups.
3100 (ARMv6m): Update.
3101 (armv2, armv2a, armv3, armv3m): Delete architectures.
3102 (arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620,
3103 arm7, arm7d, arm7di, arm70, arm700, arm700i, arm710, arm720,
3104 arm710c, arm7100, arm7500, arm7500fe, arm7m, arm7dm, arm7dmi):
3105 Delete cpus.
3106 * config/arm/arm.md (maddsidi4): Remove check for arm_arch3m.
3107 (*mulsidi3adddi): Likewise.
3108 (mulsidi3): Likewise.
3109 (*mulsidi3_nov6): Likewise.
3110 (umulsidi3): Likewise.
3111 (umulsidi3_nov6): Likewise.
3112 (umaddsidi4): Likewise.
3113 (*umulsidi3adddi): Likewise.
3114 (smulsi3_highpart): Likewise.
3115 (*smulsi3_highpart_nov6): Likewise.
3116 (umulsi3_highpart): Likewise.
3117 (*umulsi3_highpart_nov6): Likewise.
3118 * config/arm/arm.h (arm_arch3m): Delete.
3119 * config/arm/arm.c (arm_arch3m): Delete.
3120 (arm_option_override_internal): Update armv3-related comment.
3121 (arm_configure_build_target): Delete use of isa_bit_mode32.
3122 (arm_option_reconfigure_globals): Delete set of arm_ach3m.
3123 (arm_rtx_costs_internal): Delete check of arm_arch3m.
3124 * config/arm/arm-fixed.md (mulsq3): Delete check for arm_arch3m.
3125 (mulsa3): Likewise.
3126 (mulusa3): Likewise.
3127 * config/arm/arm-protos.h (arm_arch3m): Delete.
3128 * config/arm/arm-tables.opt: Regenerate.
3129 * config/arm/arm-tune.md: Likewise.
3130 * config/arm/t-arm-elf (all_early_nofp): Delete mentions of
3131 deleted architectures.
3132
3133 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3134
3135 * config/arm/arm-cpus.in (armv5, armv5e): Delete features.
3136 (armv5t, armv5te): New features.
3137 (ARMv5, ARMv5e): Delete fgroups.
3138 (ARMv5t, ARMv5te): Adjust for above changes.
3139 (ARMv6m): Likewise.
3140 (armv5, armv5e): Delete arches.
3141 * config/arm/arm.md (*call_reg_armv5): Use arm_arch5t instead of
3142 arm_arch5.
3143 (*call_reg_arm): Likewise.
3144 (*call_value_reg_armv5): Likewise.
3145 (*call_value_reg_arm): Likewise.
3146 (*call_symbol): Likewise.
3147 (*call_value_symbol): Likewise.
3148 (*sibcall_insn): Likewise.
3149 (*sibcall_value_insn): Likewise.
3150 (clzsi2): Likewise.
3151 (prefetch): Likewise.
3152 (define_split and define_peephole2 dependent on arm_arch5):
3153 Likewise.
3154 * config/arm/arm.h (TARGET_LDRD): Use arm_arch5te instead of
3155 arm_arch5e.
3156 (TARGET_ARM_QBIT): Likewise.
3157 (TARGET_DSP_MULTIPLY): Likewise.
3158 (enum base_architecture): Delete BASE_ARCH_5, BASE_ARCH_5E.
3159 (arm_arch5, arm_arch5e): Delete.
3160 (arm_arch5t, arm_arch5te): Declare.
3161 * config/arm/arm.c (arm_arch5, arm_arch5e): Delete.
3162 (arm_arch5t): Declare.
3163 (arm_option_reconfigure_globals): Update for the above.
3164 (arm_options_perform_arch_sanity_checks): Update comment, replace
3165 use of arm_arch5 with arm_arch5t.
3166 (use_return_insn): Likewise.
3167 (arm_emit_call_insn): Likewise.
3168 (output_return_instruction): Likewise.
3169 (arm_final_prescan_insn): Likewise.
3170 (arm_coproc_builtin_available): Likewise.
3171 * config/arm/arm-c.c (arm_cpu_builtins): Replace arm_arch5 and
3172 arm_arch5e with arm_arch5t and arm_arch5te.
3173 * config/arm/arm-protos.h (arm_arch5, arm_arch5e): Delete.
3174 (arm_arch5t, arm_arch5te): Declare.
3175 * config/arm/arm-tables.opt: Regenerate.
3176 * config/arm/t-arm-elf: Remove references to armv5, armv5e.
3177 * config/arm/t-multilib: Likewise.
3178 * config/arm/thumb1.md (*call_reg_thumb1_v5): Check arm_arch5t
3179 instead of arm_arch5.
3180 (*call_reg_thumb1): Likewise.
3181 (*call_value_reg_thumb1_v5): Likewise.
3182 (*call_value_reg_thumb1): Likewise.
3183 * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Remove now
3184 unreachable path.
3185 * doc/invoke.texi (ARM Options): Remove references to armv5, armv5e.
3186
3187 2018-05-18 Martin Liska <mliska@suse.cz>
3188
3189 PR gcov-profile/84846
3190 * doc/gcov.texi: Document -t option of gcov tool.
3191
3192 2018-05-18 Martin Liska <mliska@suse.cz>
3193
3194 PR gcov-profile/84846
3195 * gcov.c (print_usage): Add new -t option.
3196 (process_args): Handle the option.
3197 (generate_results): Use stdout as output when requested by
3198 the option.
3199
3200 2018-05-18 Martin Liska <mliska@suse.cz>
3201
3202 PR gcov-profile/84846
3203 * coverage.c (coverage_init): Write PWD to .gcno file.
3204 * doc/gcov.texi: Document how working directory is printed.
3205 * gcov-dump.c (dump_gcov_file): Print PWD.
3206 * gcov.c (output_intermediate_file): Likewise.
3207 (read_graph_file): Read PWD string.
3208 (output_lines): Print PWD.
3209
3210 2018-05-18 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
3211
3212 PR middle-end/85817
3213 * ipa-pure-const.c (malloc_candidate_p): Remove the check integer_zerop
3214 for retval and return false if all args to phi are zero.
3215
3216 2018-05-18 Richard Biener <rguenther@suse.de>
3217
3218 * gimple-ssa-evrp.c (class evrp_folder): Add simplify_stmt_using_ranges
3219 method.
3220 (evrp_dom_walker::before_dom_children): Call it.
3221
3222 2018-05-18 Richard Biener <rguenther@suse.de>
3223
3224 * tree-dfa.c (get_ref_base_and_extent): Use range-info to refine
3225 results when processing array refs with variable index.
3226
3227 2018-05-18 Toon Moene <toon@moene.org>
3228
3229 * doc/invoke.texi: Move -floop-unroll-and-jam documentation
3230 directly after that of -floop-interchange. Indicate that both
3231 options are enabled by default when specifying -O3.
3232
3233 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3234
3235 * config/aarch64/aarch64-simd.md (vec_set<mode>): Use VALL_F16 mode
3236 iterator. Delete separate integer-mode vec_set<mode> expander.
3237 (aarch64_simd_vec_setv2di): Delete.
3238 (vec_setv2di): Delete.
3239 (aarch64_simd_vec_set<mode>): Delete all other patterns with that name.
3240 Use VALL_F16 mode iterator. Add LD1 alternative and use vwcore for
3241 the "w, r" alternative.
3242
3243 2018-05-18 Martin Liska <mliska@suse.cz>
3244
3245 * passes.def: Add pass_lower_switch and pass_lower_switch_O0.
3246 * tree-pass.h (make_pass_lower_switch_O0): New function.
3247 * tree-switch-conversion.c (node_has_low_bound): Remove.
3248 (node_has_high_bound): Likewise.
3249 (node_is_bounded): Likewise.
3250 (class pass_lower_switch): Make it a template type and create
3251 two instances.
3252 (pass_lower_switch::execute): Add template argument.
3253 (make_pass_lower_switch): New function.
3254 (make_pass_lower_switch_O0): New function.
3255 (do_jump_if_equal): Remove.
3256 (emit_case_nodes): Simplify to just handle all 3 cases and leave
3257 all the hard work to tree optimization passes.
3258
3259 2018-05-18 Martin Liska <mliska@suse.cz>
3260
3261 * dbgcnt.c (limit_low): Renamed from limit.
3262 (limit_high): New variable.
3263 (dbg_cnt_is_enabled): Check for upper limit.
3264 (dbg_cnt): Adjust dumping.
3265 (dbg_cnt_set_limit_by_index): Add new argument for high
3266 value.
3267 (dbg_cnt_set_limit_by_name): Likewise.
3268 (dbg_cnt_process_single_pair): Parse new format.
3269 (dbg_cnt_process_opt): Use strtok.
3270 (dbg_cnt_list_all_counters): Remove 'value' and add
3271 'limit_high'.
3272 * doc/invoke.texi: Document changes.
3273
3274 2018-05-18 Richard Sandiford <richard.sandiford@linaro.org>
3275
3276 * doc/sourcebuild.texi (scalar_all_fma): Document.
3277 * tree.def (FMA_EXPR): Delete.
3278 * internal-fn.def (FMA, FMS, FNMA, FNMS): New internal functions.
3279 * internal-fn.c (ternary_direct): New macro.
3280 (expand_ternary_optab_fn): Likewise.
3281 (direct_ternary_optab_supported_p): Likewise.
3282 * Makefile.in (build/genmatch.o): Depend on case-fn-macros.h.
3283 * builtins.c (fold_builtin_fma): Delete.
3284 (fold_builtin_3): Don't call it.
3285 * cfgexpand.c (expand_debug_expr): Remove FMA_EXPR handling.
3286 * expr.c (expand_expr_real_2): Likewise.
3287 * fold-const.c (operand_equal_p): Likewise.
3288 (fold_ternary_loc): Likewise.
3289 * gimple-pretty-print.c (dump_ternary_rhs): Likewise.
3290 * gimple.c (DEFTREECODE): Likewise.
3291 * gimplify.c (gimplify_expr): Likewise.
3292 * optabs-tree.c (optab_for_tree_code): Likewise.
3293 * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
3294 * tree-eh.c (operation_could_trap_p): Likewise.
3295 (stmt_could_throw_1_p): Likewise.
3296 * tree-inline.c (estimate_operator_cost): Likewise.
3297 * tree-pretty-print.c (dump_generic_node): Likewise.
3298 (op_code_prio): Likewise.
3299 * tree-ssa-loop-im.c (stmt_cost): Likewise.
3300 * tree-ssa-operands.c (get_expr_operands): Likewise.
3301 * tree.c (commutative_ternary_tree_code, add_expr): Likewise.
3302 * fold-const-call.h (fold_fma): Delete.
3303 * fold-const-call.c (fold_const_call_ssss): Handle CFN_FMS,
3304 CFN_FNMA and CFN_FNMS.
3305 (fold_fma): Delete.
3306 * genmatch.c (combined_fn): New enum.
3307 (commutative_ternary_tree_code): Remove FMA_EXPR handling.
3308 (commutative_op): New function.
3309 (commutate): Use it. Handle more than 2 operands.
3310 (dt_operand::gen_gimple_expr): Use commutative_op.
3311 (parser::parse_expr): Allow :c to be used with non-binary
3312 operators if the commutative operand is known.
3313 * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Handle
3314 CFN_FMS, CFN_FNMA and CFN_FNMS.
3315 (backprop::process_assign_use): Remove FMA_EXPR handling.
3316 * hsa-gen.c (gen_hsa_insns_for_operation_assignment): Likewise.
3317 (gen_hsa_fma): New function.
3318 (gen_hsa_insn_for_internal_fn_call): Use it for IFN_FMA, IFN_FMS,
3319 IFN_FNMA and IFN_FNMS.
3320 * match.pd: Add folds for IFN_FMS, IFN_FNMA and IFN_FNMS.
3321 * gimple-fold.h (follow_all_ssa_edges): Declare.
3322 * gimple-fold.c (follow_all_ssa_edges): New function.
3323 * tree-ssa-math-opts.c (convert_mult_to_fma_1): Use the
3324 gimple_build interface and use follow_all_ssa_edges to fold the result.
3325 (convert_mult_to_fma): Use direct_internal_fn_suppoerted_p
3326 instead of checking for optabs directly.
3327 * config/i386/i386.c (ix86_add_stmt_cost): Recognize FMAs as calls
3328 rather than FMA_EXPRs.
3329 * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Create a
3330 call to IFN_FMA instead of an FMA_EXPR.
3331
3332 2018-05-17 Jim Wilson <jimw@sifive.com>
3333
3334 * expr.c (do_tablejump): When converting index to Pmode, if we have a
3335 sign extended promoted subreg, and the range does not have the sign bit
3336 set, then do a sign extend.
3337
3338 * config/riscv/riscv.c (riscv_extend_comparands): In unsigned QImode
3339 test, check for sign extended subreg and/or constant operands, and
3340 do a sign extend in that case.
3341
3342 2018-05-17 Steve Ellcey <sellcey@cavium.com>
3343
3344 * config/aarch64/thunderx2t99.md (thunderx2t99_ls_both): Delete.
3345 (thunderx2t99_multiple): Delete psuedo-units from used cpus.
3346 Add untyped.
3347 (thunderx2t99_alu_shift): Remove alu_shift_reg, alus_shift_reg.
3348 Change logics_shift_reg to logics_shift_imm.
3349 (thunderx2t99_fp_loadpair_basic): Delete.
3350 (thunderx2t99_fp_storepair_basic): Delete.
3351 (thunderx2t99_asimd_int): Add neon_sub and neon_sub_q types.
3352 (thunderx2t99_asimd_polynomial): Delete.
3353 (thunderx2t99_asimd_fp_simple): Add neon_fp_mul_s_scalar_q
3354 and neon_fp_mul_d_scalar_q.
3355 (thunderx2t99_asimd_fp_conv): Add *int_to_fp* types.
3356 (thunderx2t99_asimd_misc): Delete neon_dup and neon_dup_q.
3357 (thunderx2t99_asimd_recip_step): Add missing *sqrt* types.
3358 (thunderx2t99_asimd_lut): Add missing tbl types.
3359 (thunderx2t99_asimd_ext): Delete.
3360 (thunderx2t99_asimd_load1_1_mult): Delete.
3361 (thunderx2t99_asimd_load1_2_mult): Delete.
3362 (thunderx2t99_asimd_load1_ldp): New.
3363 (thunderx2t99_asimd_load1): New.
3364 (thunderx2t99_asimd_load2): Add missing *load2* types.
3365 (thunderx2t99_asimd_load3): New.
3366 (thunderx2t99_asimd_load4): New.
3367 (thunderx2t99_asimd_store1_1_mult): Delete.
3368 (thunderx2t99_asimd_store1_2_mult): Delete.
3369 (thunderx2t99_asimd_store2_mult): Delete.
3370 (thunderx2t99_asimd_store2_onelane): Delete.
3371 (thunderx2t99_asimd_store_stp): New.
3372 (thunderx2t99_asimd_store1): New.
3373 (thunderx2t99_asimd_store2): New.
3374 (thunderx2t99_asimd_store3): New.
3375 (thunderx2t99_asimd_store4): New.
3376
3377 2018-05-17 Jerome Lambourg <lambourg@adacore.com>
3378
3379 * config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove
3380 #include <stdint.h>. Replace intptr_t with __INTPTR_TYPE__.
3381
3382 2018-05-17 Pat Haugen <pthaugen@us.ibm.com>
3383 Segher Boessenkool <segher@kernel.crashing.org>
3384
3385 PR target/85698
3386 * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check dest
3387 operand.
3388
3389 2018-05-17 Richard Biener <rguenther@suse.de>
3390
3391 * tree-ssa-dse.c (dse_classify_store): Fix iterator increment
3392 for pruning loop and prune defs feeding only already visited PHIs.
3393
3394 2018-05-17 Richard Biener <rguenther@suse.de>
3395
3396 * tree-ssa-sccvn.c (vn_reference_lookup_3): Improve memset handling.
3397
3398 2018-05-17 Bin Cheng <bin.cheng@arm.com>
3399 Richard Biener <rguenther@suse.de>
3400
3401 PR tree-optimization/85793
3402 * tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load
3403 for VMAT_ELEMENTWISE.
3404
3405 2018-05-17 Richard Sandiford <richard.sandiford@linaro.org>
3406
3407 * internal-fn.h (lookup_internal_fn): Declare
3408 * internal-fn.c (lookup_internal_fn): New function.
3409 * gimple.c (gimple_build_call_from_tree): Handle calls to
3410 internal functions.
3411 * gimple-pretty-print.c (dump_gimple_call): Print "." before
3412 internal function names.
3413 * tree-pretty-print.c (dump_generic_node): Likewise.
3414 * tree-ssa-scopedtables.c (expr_hash_elt::print): Likewise.
3415
3416 2018-05-17 Richard Sandiford <richard.sandiford@linaro.org>
3417
3418 * gimple-fold.h (gimple_build): Make the function forms take
3419 combined_fn rather than built_in_function.
3420 (gimple_simplify): Likewise.
3421 * gimple-match-head.c (gimple_simplify): Likewise.
3422 * gimple-fold.c (gimple_build): Likewise.
3423 * tree-vect-loop.c (get_initial_def_for_reduction): Use gimple_build
3424 rather than gimple_build_call_internal.
3425 (get_initial_defs_for_reduction): Likewise.
3426 (vect_create_epilog_for_reduction): Likewise.
3427 (vectorizable_live_operation): Likewise.
3428
3429 2018-05-17 Martin Liska <mliska@suse.cz>
3430
3431 * gimple-ssa-sprintf.c (format_directive): Do not use
3432 space in between 'G_' and '('.
3433
3434 2018-05-17 Jakub Jelinek <jakub@redhat.com>
3435
3436 PR target/85323
3437 * config/i386/i386.c (ix86_fold_builtin): Handle masked shifts
3438 even if the mask is not all ones.
3439
3440 PR target/85323
3441 * config/i386/i386.c (ix86_fold_builtin): Fold shift builtins by
3442 vector.
3443 (ix86_gimple_fold_builtin): Likewise.
3444
3445 PR target/85323
3446 * config/i386/i386.c: Include tree-vector-builder.h.
3447 (ix86_vector_shift_count): New function.
3448 (ix86_fold_builtin): Fold shift builtins by scalar count.
3449 (ix86_gimple_fold_builtin): Likewise.
3450
3451 * config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8,
3452 _mm512_setzero): New intrinsics.
3453
3454 2018-05-17 James Greenhalgh <james.greenhalgh@arm.com>
3455 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3456
3457 * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify
3458 code generation for cases where splatting a value is not useful.
3459 * simplify-rtx.c (simplify_ternary_operation): Simplify
3460 vec_merge across a vec_duplicate and a paradoxical subreg forming
3461 a vector mode to a vec_concat.
3462
3463 2018-05-17 Olga Makhotina <olga.makhotina@intel.com>
3464
3465 * config.gcc: Support "goldmont-plus".
3466 * config/i386/driver-i386.c (host_detect_local_cpu): Detect
3467 "goldmont-plus".
3468 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
3469 PROCESSOR_GOLDMONT_PLUS.
3470 * config/i386/i386.c (m_GOLDMONT_PLUS): Define.
3471 (processor_target_table): Add "goldmont-plus".
3472 (PTA_GOLDMONT_PLUS): Define.
3473 (ix86_lea_outperforms): Add TARGET_GOLDMONT_PLUS.
3474 (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT_PLUS.
3475 (fold_builtin_cpu): Add M_INTEL_GOLDMONT_PLUS.
3476 (fold_builtin_cpu): Add "goldmont-plus".
3477 (ix86_add_stmt_cost): Add TARGET_GOLDMONT_PLUS.
3478 (ix86_option_override_internal): Add "goldmont-plus".
3479 * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT_PLUS.
3480 (processor_type): Add PROCESSOR_GOLDMONT_PLUS.
3481 * config/i386/x86-tune.def: Add m_GOLDMONT_PLUS.
3482 * doc/invoke.texi: Add goldmont-plus as x86 -march=/-mtune= CPU type.
3483
3484 2018-05-17 Richard Biener <rguenther@suse.de>
3485
3486 PR tree-optimization/85757
3487 * tree-ssa-dse.c (dse_classify_store): Record a PHI def and
3488 remove defs that only feed that PHI from further processing.
3489
3490 2018-05-16 Jim Wilson <jimw@sifive.com>
3491
3492 * config/riscv/riscv.md (<optab>si3_mask, <optab>si3_mask_1): Prepend
3493 asterisk to name.
3494 (<optab>di3_mask, <optab>di3_mask_1): Likewise.
3495
3496 2018-05-16 Mark Wielaard <mark@klomp.org>
3497
3498 * dwarf2out.c (count_index_strings): New function.
3499 (output_indirect_strings): Call count_index_strings and generate
3500 header for dwarf_version >= 5.
3501
3502 2018-05-16 Mark Wielaard <mark@klomp.org>
3503
3504 * dwarf2out.c (dwarf_FORM): New function.
3505 (set_indirect_string): Use dwarf_FORM.
3506 (reset_indirect_string): Likewise.
3507 (size_of_die): Likewise.
3508 (value_format): Likewise.
3509 (output_die): Likewise.
3510 (add_skeleton_AT_string): Likewise.
3511 (output_macinfo_op): Likewise.
3512 (index_string): Likewise.
3513 (output_index_string_offset): Likewise.
3514 (output_index_string): Likewise.
3515 (count_index_strings): Likewise.
3516
3517 2018-05-16 Carl Love <cel@us.ibm.com>
3518
3519 * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
3520 dcbt and dcbtstt with TH=16 if operands[2] is 0 and Power 8 or newer.
3521
3522 2018-05-16 Martin Jambor <mjambor@suse.cz>
3523
3524 * ipa-prop.c (ipa_free_all_edge_args): Remove.
3525 * ipa-prop.h (ipa_free_all_edge_args): Likewise.
3526
3527 2018-05-16 Wilco Dijkstra <wdijkstr@arm.com>
3528
3529 * config/aarch64/aarch64.md (fma<mode>4): Change into expand pattern.
3530 (fnma<mode>4): Likewise.
3531 (fms<mode>4): Likewise.
3532 (fnms<mode>4): Likewise.
3533 (aarch64_fma<mode>4): Rename insn, reorder accumulator operand.
3534 (aarch64_fnma<mode>4): Likewise.
3535 (aarch64_fms<mode>4): Likewise.
3536 (aarch64_fnms<mode>4): Likewise.
3537 (aarch64_fnmadd<mode>4): Likewise.
3538
3539 2018-05-16 Jason Merrill <jason@redhat.com>
3540
3541 * tree.c (warn_deprecated_use): Return bool. Simplify logic.
3542
3543 2018-05-16 Richard Biener <rguenther@suse.de>
3544
3545 * tree-vectorizer.h (struct stmt_info_for_cost): Add where member.
3546 (dump_stmt_cost): Declare.
3547 (add_stmt_cost): Dump cost we add.
3548 (add_stmt_costs): New function.
3549 (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
3550 No longer exported.
3551 (vect_analyze_stmt): Adjust prototype.
3552 (vectorizable_condition): Likewise.
3553 (vectorizable_live_operation): Likewise.
3554 (vectorizable_reduction): Likewise.
3555 (vectorizable_induction): Likewise.
3556 * tree-vect-loop.c (vect_analyze_loop_operations): Create local
3557 cost vector to pass to vectorizable_ and record afterwards.
3558 (vect_model_reduction_cost): Take cost vector argument and adjust.
3559 (vect_model_induction_cost): Likewise.
3560 (vectorizable_reduction): Likewise.
3561 (vectorizable_induction): Likewise.
3562 (vectorizable_live_operation): Likewise.
3563 * tree-vect-slp.c (vect_create_new_slp_node): Initialize
3564 SLP_TREE_NUMBER_OF_VEC_STMTS.
3565 (vect_analyze_slp_cost_1): Remove.
3566 (vect_analyze_slp_cost): Likewise.
3567 (vect_slp_analyze_node_operations): Take visited args and
3568 a target cost vector. Avoid processing already visited stmt sets.
3569 (vect_slp_analyze_operations): Use a local cost vector to gather
3570 costs and register those of non-discarded instances.
3571 (vect_bb_vectorization_profitable_p): Use add_stmt_costs.
3572 (vect_schedule_slp_instance): Remove copying of
3573 SLP_TREE_NUMBER_OF_VEC_STMTS. Instead assert that it is not
3574 zero.
3575 * tree-vect-stmts.c (record_stmt_cost): Remove path directly
3576 adding cost. Record cost entry location.
3577 (vect_prologue_cost_for_slp_op): Function to compute cost of
3578 a constant or invariant generated for SLP vect in the prologue,
3579 split out from vect_analyze_slp_cost_1.
3580 (vect_model_simple_cost): Make static. Adjust for SLP costing.
3581 (vect_model_promotion_demotion_cost): Likewise.
3582 (vect_model_store_cost): Likewise, make static.
3583 (vect_model_load_cost): Likewise.
3584 (vectorizable_bswap): Add cost vector arg and adjust.
3585 (vectorizable_call): Likewise.
3586 (vectorizable_simd_clone_call): Likewise.
3587 (vectorizable_conversion): Likewise.
3588 (vectorizable_assignment): Likewise.
3589 (vectorizable_shift): Likewise.
3590 (vectorizable_operation): Likewise.
3591 (vectorizable_store): Likewise.
3592 (vectorizable_load): Likewise.
3593 (vectorizable_condition): Likewise.
3594 (vectorizable_comparison): Likewise.
3595 (can_vectorize_live_stmts): Likewise.
3596 (vect_analyze_stmt): Likewise.
3597 (vect_transform_stmt): Adjust calls to vectorizable_*.
3598 * tree-vectorizer.c: Include gimple-pretty-print.h.
3599 (dump_stmt_cost): New function.
3600
3601 2018-05-16 Richard Biener <rguenther@suse.de>
3602
3603 * params.def (PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE): New param.
3604 * doc/invoke.texi (dse-max-alias-queries-per-store): Document.
3605 * tree-ssa-dse.c: Include tree-ssa-loop.h.
3606 (check_name): New callback.
3607 (dse_classify_store): Track cycles via a visited bitmap of PHI
3608 defs and simplify handling of in-loop and across loop dead stores
3609 and properly fail for loop-variant refs. Handle byte-tracking with
3610 multiple defs. Use PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE for
3611 limiting the walk.
3612
3613 2018-05-16 Richard Sandiford <richard.sandiford@linaro.org>
3614
3615 * tree-vectorizer.h (vect_get_vector_types_for_stmt): Declare.
3616 (vect_get_mask_type_for_stmt): Likewise.
3617 * tree-vect-slp.c (vect_two_operations_perm_ok_p): New function,
3618 split out from...
3619 (vect_build_slp_tree_1): ...here. Use vect_get_vector_types_for_stmt
3620 to determine the statement's vector type and the vector type that
3621 should be used for calculating nunits. Deal with cases in which
3622 the type has to be deferred.
3623 (vect_slp_analyze_node_operations): Use vect_get_vector_types_for_stmt
3624 and vect_get_mask_type_for_stmt to calculate STMT_VINFO_VECTYPE.
3625 * tree-vect-loop.c (vect_determine_vf_for_stmt_1)
3626 (vect_determine_vf_for_stmt): New functions, split out from...
3627 (vect_determine_vectorization_factor): ...here.
3628 * tree-vect-stmts.c (vect_get_vector_types_for_stmt)
3629 (vect_get_mask_type_for_stmt): New functions, split out from
3630 vect_determine_vectorization_factor.
3631
3632 2018-05-16 Richard Biener <rguenther@suse.de>
3633
3634 * tree-cfg.c (verify_gimple_assign_ternary): Properly
3635 verify the [VEC_]COND_EXPR embedded comparison.
3636
3637 2018-05-15 Martin Sebor <msebor@redhat.com>
3638
3639 PR tree-optimization/85753
3640 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Handle
3641 RECORD_TYPE in addition to ARRAY_TYPE.
3642
3643 2018-05-15 Martin Sebor <msebor@redhat.com>
3644
3645 PR middle-end/85643
3646 * calls.c (get_attr_nonstring_decl): Handle MEM_REF.
3647
3648 2018-05-15 Richard Biener <rguenther@suse.de>
3649
3650 * tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter,
3651 add by_clobber_p one. Change algorithm to collect all defs
3652 representing uses we need to walk and try reducing them to
3653 a single one before failing.
3654 (dse_dom_walker::dse_optimize_stmt): Adjust.
3655
3656 2018-05-13 Mark Wielaard <mark@klomp.org>
3657
3658 * dwarf2out.c (dwarf_OP): Handle DW_OP_addrx and DW_OP_constx.
3659 (size_of_loc_descr): Likewise.
3660 (output_loc_operands): Likewise.
3661 (output_loc_operands_raw): Likewise.
3662 (dw_addr_op): Use dwarf_OP () for DW_OP_constx and DW_OP_addrx.
3663 (resolve_addr_in_expr): Handle DW_OP_addrx and DW_OP_constx.
3664 (hash_loc_operands): Likewise.
3665 (compare_loc_operands): Likewise.
3666
3667 2018-05-14 Mark Wielaard <mark@klomp.org>
3668
3669 * dwarf2out.c (count_index_addrs): New function.
3670 (dwarf2out_finish): Use count_index_addrs to calculate addrs_length.
3671
3672 2018-05-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
3673
3674 PR tree-optimization/83648
3675 * ipa-pure-const.c (malloc_candidate_p): Allow function with NULL
3676 return value as malloc candidate.
3677
3678 2018-05-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
3679
3680 PR ipa/85734
3681 * ipa-pure-const.c (warn_function_malloc): Pass value of known_finite
3682 param as true in call to suggest_attribute.
3683
3684 2018-05-14 Segher Boessenkool <segher@kernel.crashing.org>
3685
3686 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete @itemx for
3687 -mreadonly-in-sdata.
3688
3689 2018-05-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3690
3691 * config/aarch64/aarch64-simd.md (*aarch64_crypto_aese_fused):
3692 New pattern.
3693 (aarch64_crypto_aesd_fused): Likewise.
3694
3695 2018-05-14 Wilco Dijkstra <wdijkstr@arm.com>
3696
3697 * config/aarch64/aarch64.md (mov<mode>): Remove '*' in alternatives.
3698 (movsi_aarch64): Likewise.
3699 (load_pairsi): Likewise.
3700 (load_pairdi): Likewise.
3701 (store_pairsi): Likewise.
3702 (store_pairdi): Likewise.
3703 (load_pairsf): Likewise.
3704 (load_pairdf): Likewise.
3705 (store_pairsf): Likewise.
3706 (store_pairdf): Likewise.
3707 (zero_extend): Likewise.
3708 (trunc): Swap alternatives.
3709 (fcvt_target): Add '?' to prefer w over r.
3710
3711 2018-05-14 Jakub Jelinek <jakub@redhat.com>
3712
3713 PR target/85756
3714 * config/i386/i386.md: Disallow non-commutative arithmetics in
3715 last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim
3716 optimization. Use COMMUTATIVE_ARITH_P test rather than != MINUS
3717 in the peephole2 before it.
3718
3719 2018-05-14 Sebastian Peryt <sebastian.peryt@intel.com>
3720
3721 * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET,
3722 OPTION_MASK_ISA_CLDEMOTE_UNSET): New defines.
3723 (ix86_handle_option): Handle -mcldemote.
3724 * config.gcc: New header.
3725 * config/i386/cldemoteintrin.h: New file.
3726 * config/i386/cpuid.h (bit_CLDEMOTE): New bit.
3727 * config/i386/driver-i386.c (host_detect_local_cpu): Detect
3728 -mcldemote.
3729 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
3730 OPTION_MASK_ISA_CLDEMOTE.
3731 * config/i386/i386.c (ix86_target_string): Add -mcldemote.
3732 (ix86_valid_target_attribute_inner_p): Ditto.
3733 (enum ix86_builtins): Add IX86_BUILTIN_CLDEMOTE.
3734 (ix86_init_mmx_sse_builtins): Define __builtin_ia32_cldemote.
3735 (ix86_expand_builtin): Expand IX86_BUILTIN_CLDEMOTE.
3736 * config/i386/i386.h (TARGET_CLDEMOTE, TARGET_CLDEMOTE_P): New.
3737 * config/i386/i386.md (UNSPECV_CLDEMOTE): New.
3738 (cldemote): New.
3739 * config/i386/i386.opt: Add -mcldemote.
3740 * config/i386/x86intrin.h: New header.
3741 * doc/invoke.texi: Add -mcldemote.
3742
3743 2018-05-14 Richard Biener <rguenther@suse.de>
3744
3745 * doc/match-and-simplify.texi: Adjust :s documentation.
3746
3747 2018-05-14 Alexander Monakov <amonakov@ispras.ru>
3748
3749 * sort.cc (REORDER_23): Pass the type for the temporaries instead of
3750 intended memcpy size.
3751 (REORDER_45): Likewise.
3752
3753 2018-05-13 Alexander Monakov <amonakov@ispras.ru>
3754
3755 * sort.cc: New file.
3756 * system.h [!CHECKING_P] (qsort): Redirect to gcc_qsort.
3757 * vec.c (qsort_chk): Use gcc_qsort.
3758 * Makefile.in (OBJS-libcommon): Add sort.o.
3759 (build/sort.o): New target. Use it...
3760 (BUILD_RTL): ... here, and...
3761 (build/gencfn-macros): ... here, and...
3762 (build/genmatch): ... here.
3763
3764 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
3765 Chung-Ju Wu <jasonwucj@gmail.com>
3766
3767 * config.gcc (nds32*-*-*): Check that n15 is valid to --with-cpu.
3768 * config/nds32/nds32-graywolf.md: New file.
3769 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_GRAYWOLF.
3770 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n15
3771 pipeline.
3772 * config/nds32/nds32-protos.h: More declarations for n15 pipeline.
3773 * config/nds32/nds32-utils.c: More implementations for n15 pipeline.
3774 * config/nds32/nds32.md (pipeline_model): Add graywolf.
3775 * config/nds32/nds32.opt (mcpu): Support n15 pipeline cpus.
3776 * config/nds32/pipelines.md: Include n15 settings.
3777
3778 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
3779 Chung-Ju Wu <jasonwucj@gmail.com>
3780
3781 * config.gcc (nds32*-*-*): Check that n12/n13 are valid to --with-cpu.
3782 * config/nds32/nds32-n13.md: New file.
3783 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N12 and CPU_N13.
3784 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n12/n13
3785 pipeline.
3786 * config/nds32/nds32-protos.h: More declarations for n12/n13 pipeline.
3787 * config/nds32/nds32.md (pipeline_model): Add n13.
3788 * config/nds32/nds32.opt (mcpu): Support n12/n13 pipeline cpus.
3789 * config/nds32/pipelines.md: Include n13 settings.
3790
3791 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
3792 Chung-Ju Wu <jasonwucj@gmail.com>
3793
3794 * config.gcc (nds32*-*-*): Check that n10/d10 are valid to --with-cpu.
3795 * config/nds32/nds32-n10.md: New file.
3796 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N10.
3797 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n10
3798 pipeline.
3799 * config/nds32/nds32-protos.h: More declarations for n10 pipeline.
3800 * config/nds32/nds32-utils.c: More implementations for n10 pipeline.
3801 * config/nds32/nds32.md (pipeline_model): Add n10.
3802 * config/nds32/nds32.opt (mcpu): Support n10 pipeline cpus.
3803 * config/nds32/pipelines.md: Include n10 settings.
3804
3805 2018-05-13 Monk Chiang <sh.chiang04@gmail.com>
3806 Kito Cheng <kito.cheng@gmail.com>
3807 Chung-Ju Wu <jasonwucj@gmail.com>
3808
3809 * config.gcc (nds32be-*-*): Handle --with-ext-dsp.
3810 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
3811 Add enum values for DSP extension instructions.
3812 * config/nds32/constraints.md (Iu06, IU06, CVp5, CVs5, CVs2, CVhi):
3813 New constraints.
3814 * config/nds32/iterators.md (shifts, shiftrt, sat_plus, all_plus,
3815 sat_minus, all_minus, plus_minus, extend, sumax, sumin, sumin_max):
3816 New code iterators.
3817 (su, zs, uk, opcode, add_rsub, add_sub): New code attributes.
3818 * config/nds32/nds32-dspext.md: New file for DSP implementation.
3819 * config/nds32/nds32-intrinsic.c: Implementation of DSP extension.
3820 * config/nds32/nds32-intrinsic.md: Likewise.
3821 * config/nds32/nds32_intrinsic.h: Likewise.
3822 * config/nds32/nds32-md-auxiliary.c: Likewise.
3823 * config/nds32/nds32-memory-manipulation.c: Consider DSP extension.
3824 * config/nds32/nds32-predicates.c (const_vector_to_hwint): New.
3825 (nds32_valid_CVp5_p, nds32_valid_CVs5_p): New.
3826 (nds32_valid_CVs2_p, nds32_valid_CVhi_p): New.
3827 * config/nds32/nds32-protos.h: New declarations for DSP extension.
3828 * config/nds32/nds32-utils.c (extract_mac_non_acc_rtx): New case
3829 TYPE_DMAC in switch statement.
3830 * config/nds32/nds32.c: New checking and implementation for DSP
3831 extension instructions.
3832 * config/nds32/nds32.h: Likewise.
3833 * config/nds32/nds32.md: Likewise.
3834 * config/nds32/nds32.opt (mhw-abs, mext-dsp): New options.
3835 * config/nds32/predicates.md: Implement new predicates for DSP
3836 extension.
3837
3838 2018-05-11 Michael Meissner <meissner@linux.vnet.ibm.com>
3839
3840 * config/rs6000/rs6000.md (mov<mode>_softfloat, FMOVE32):
3841 Reformat alternatives and attributes so it is easier to identify
3842 which constraints/attributes go with which instruction.
3843 (mov<mode>_hardfloat32, FMOVE64): Likewise.
3844 (mov<mode>_softfloat32, FMOVE64): Likewise.
3845 (mov<mode>_hardfloat64, FMOVE64): Likewise.
3846 (mov<mode>_softfloat64, FMOVE64): Likewise.
3847
3848 2018-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
3849
3850 * doc/extend.texi (PowerPC Built-in Functions): Rename this
3851 subsection.
3852 (Basic PowerPC Built-in Functions): The new name of the
3853 subsection previously known as "PowerPC Built-in Functions".
3854 (Basic PowerPC Built-in Functions Available on all Configurations):
3855 New subsubsection.
3856 (Basic PowerPC Built-in Functions Available on ISA 2.05): Likewise.
3857 (Basic PowerPC Built-in Functions Available on ISA 2.06): Likewise.
3858 (Basic PowerPC Built-in Functions Available on ISA 2.07): Likewise.
3859 (Basic PowerPC Built-in Functions Available on ISA 3.0): Likewise.
3860
3861 2018-05-11 Martin Jambor <mjambor@suse.cz>
3862
3863 PR ipa/85655
3864 * ipa-cp.c (intersect_with_plats): Check that the lattice contains
3865 single const.
3866
3867 2018-05-11 Richard Earnshaw <rearnsha@arm.com>
3868
3869 PR target/85733
3870 * config/arm/arm-cpus.in (fgroup ARMv6m): Add be8 feature.
3871
3872 2018-05-11 Sebastian Peryt <sebastian.peryt@intel.com>
3873
3874 * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET,
3875 OPTION_MASK_ISA_WAITPKG_UNSET): New defines.
3876 (ix86_handle_option): Handle -mwaitpkg.
3877 * config.gcc: New header.
3878 * config/i386/cpuid.h (bit_WAITPKG): New bit.
3879 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg.
3880 * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New
3881 function type.
3882 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
3883 OPTION_MASK_ISA_WAITPKG.
3884 * config/i386/i386.c (ix86_target_string): Add -mwaitpkg.
3885 (ix86_option_override_internal): Add PTA_WAITPKG.
3886 (ix86_valid_target_attribute_inner_p): Add -mwaitpkg.
3887 (enum ix86_builtins): Add IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT,
3888 IX86_BUILTIN_TPAUSE.
3889 (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor,
3890 __builtin_ia32_umwait and __builtin_ia32_tpause.
3891 (ix86_expand_builtin): Expand IX86_BUILTIN_UMONITOR,
3892 IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE.
3893 * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New.
3894 * config/i386/i386.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR,
3895 UNSPECV_TPAUSE): New.
3896 (umwait, umwait_rex64, umonitor_<mode>, tpause, tpause_rex64): New.
3897 * config/i386/i386.opt: Add -mwaitpkg.
3898 * config/i386/waitpkgintrin.h: New file.
3899 * config/i386/x86intrin.h: New header.
3900 * doc/invoke.texi: Add -mwaitpkg.
3901
3902 2018-05-11 Richard Earnshaw <rearnsha@arm.com>
3903
3904 PR target/85606
3905 * config/arm/arm-cpus.in: Add comment that ARMv6-m and ARMv6S-m are now
3906 equivalent.
3907 (cortex-m0): Use armv6s-m isa.
3908 (cortex-m0plus): Likewise.
3909 (cortex-m1): Likewise.
3910 (cortex-m0.small-multiply): Likewise.
3911 (cortex-m0plus.small-multiply): Likewise.
3912 (cortex-m1.small-multiply): Likewise.
3913
3914 2018-05-11 Allan Sandfeld Jensen <allan.jensen@qt.io>
3915 Jakub Jelinek <jakub@redhat.com>
3916
3917 PR tree-optimization/85692
3918 * tree-ssa-forwprop.c (simplify_vector_constructor): Try two
3919 source permute as well.
3920
3921 2018-05-11 Martin Liska <mliska@suse.cz>
3922
3923 PR sanitizer/85556
3924 * doc/extend.texi: Document LLVM style format for no_sanitize
3925 attribute.
3926
3927 2018-05-10 Michael Meissner <meissner@linux.vnet.ibm.com>
3928
3929 * config/rs6000/rs6000.c (mode_supports_dq_form): Rename
3930 mode_supports_vsx_dform_quad to mode_supports_dq_form.
3931 (mode_supports_vsx_dform_quad): Likewise.
3932 (mode_supports_vmx_dform): Move these functions to be next to the
3933 other mode_supports functions.
3934 (mode_supports_dq_form): Likewise.
3935 (quad_address_p): Change calls of mode_supports_vsx_dform_quad to
3936 mode_supports_dq_form.
3937 (reg_offset_addressing_ok_p): Likewise.
3938 (offsettable_ok_by_alignment): Likewise.
3939 (rs6000_legitimate_offset_address_p): Likewise.
3940 (legitimate_lo_sum_address_p): Likewise.
3941 (rs6000_legitimize_address): Likewise.
3942 (rs6000_legitimize_reload_address): Likewise.
3943 (rs6000_secondary_reload_inner): Likewise.
3944 (rs6000_preferred_reload_class): Likewise.
3945 (rs6000_output_move_128bit): Likewise.
3946
3947 2018-05-10 Uros Bizjak <ubizjak@gmail.com>
3948
3949 * config/i386/i386.c (ix86_expand_builtin) <case IX86_BUILTIN_RDPID>:
3950 Generate SImode target register for null target.
3951 <case IX86_BUILTIN_XGETBV>: Ditto.
3952 <case IX86_BUILTIN_XSETBV>: Optimize LSHIFTRT generation.
3953 * config/i386/xsaveintrin.h (_xgetbv): Add missing return.
3954
3955 2018-05-10 Carl Love <cel@us.ibm.com>
3956
3957 * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
3958 dcbtt and dcbtstt if operands[2] is 0.
3959
3960 2018-05-10 Uros Bizjak <ubizjak@gmail.com>
3961
3962 PR target/85693
3963 * config/i386/sse.md (usadv64qi): New expander.
3964
3965 2018-05-10 Segher Boessenkool <segher@kernel.crashing.org>
3966
3967 * config/rs6000/altivec.md (altivec_vmrghb, altivec_vmrghh,
3968 altivec_vmrghw, altivec_vmrglb, altivec_vmrglh, altivec_vmrglw): Remove
3969 -maltivec=be support.
3970 (vec_widen_umult_even_v16qi, vec_widen_smult_even_v16qi,
3971 vec_widen_umult_even_v8hi, vec_widen_smult_even_v8hi,
3972 vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
3973 vec_widen_umult_odd_v16qi, vec_widen_smult_odd_v16qi,
3974 vec_widen_umult_odd_v8hi, vec_widen_smult_odd_v8hi,
3975 vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, altivec_vpkpx,
3976 altivec_vpks<VI_char>ss, altivec_vpks<VI_char>us,
3977 altivec_vpku<VI_char>us, altivec_vpku<VI_char>um, altivec_vsum2sws,
3978 altivec_vsumsws): Adjust.
3979 (altivec_vspltb *altivec_vspltb_internal, altivec_vsplth,
3980 *altivec_vsplth_internal, altivec_vspltw, *altivec_vspltw_internal,
3981 altivec_vspltsf, *altivec_vspltsf_internal): Remove -maltivec=be
3982 support.
3983 (altivec_vperm_<mode>, altivec_vperm_<mode>_uns,
3984 altivec_vupkhs<VU_char>, altivec_vupkls<VU_char>, altivec_vupkhpx,
3985 altivec_vupklpx, altivec_lvsl, altivec_lvsr): Adjust.
3986 (altivec_lve<VI_char>x): Delete expand.
3987 (*altivec_lve<VI_char>x_internal): Rename to...
3988 (altivec_lve<VI_char>x): ... this.
3989 (altivec_lvxl_<mode>): Delete expand.
3990 (*altivec_lvxl_<mode>_internal): Rename to ...
3991 (altivec_lvxl_<mode>): ... this.
3992 (altivec_stvxl_<mode>): Delete expand.
3993 (*altivec_stvxl_<mode>_internal): Rename to ...
3994 (altivec_stvxl_<mode>): ... this.
3995 (altivec_stve<VI_char>x): Delete expand.
3996 (*altivec_stve<VI_char>x_internal): Rename to ...
3997 (altivec_stve<VI_char>x): ... this.
3998 (doublee<mode>2, unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2,
3999 doubleh<mode>2, unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2,
4000 reduc_plus_scal_<mode>): Adjust.
4001 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust
4002 comment.
4003 (rs6000_cpu_cpp_builtins): Adjust.
4004 (altivec_resolve_overloaded_builtin): Remove -maltivec=be support.
4005 * config/rs6000/rs6000-protos.h (altivec_expand_lvx_be,
4006 altivec_expand_stvx_be, altivec_expand_stvex_be): Delete.
4007 * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
4008 -maltivec=be support.
4009 (rs6000_split_vec_extract_var): Adjust.
4010 (rs6000_split_v4si_init): Adjust.
4011 (swap_selector_for_mode): Delete.
4012 (altivec_expand_lvx_be, altivec_expand_stvx_be,
4013 altivec_expand_stvex_be): Delete.
4014 (altivec_expand_lv_builtin, altivec_expand_stv_builtin): Remove
4015 -maltivec=be support.
4016 (rs6000_gimple_fold_builtin): Ditto.
4017 (rs6000_generate_float2_double_code, rs6000_generate_float2_code):
4018 Adjust.
4019 * config/rs6000/rs6000.h (VECTOR_ELT_ORDER_BIG): Delete.
4020 (TARGET_DIRECT_MOVE_64BIT): Adjust.
4021 * config/rs6000/rs6000.md (split for extendsidi2 for vectors): Adjust.
4022 * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Delete.
4023 * config/rs6000/vsx.md (floate<mode>, unsfloatev2di, floato<mode>,
4024 unsfloatov2di, vsignedo_v2df, vsignede_v2df, vunsignedo_v2df,
4025 vunsignede_v2df, vsx_extract_<mode>_p9, *vsx_extract_si,
4026 *vsx_extract_<mode>_p8, *vsx_extract_si_<uns>float_df,
4027 *vsx_extract_si_<uns>float_<mode>, vsx_set_<mode>_p9, vsx_set_v4sf_p9,
4028 *vsx_insert_extract_v4sf_p9, *vsx_insert_extract_v4sf_p9_2, and an
4029 anonymous split): Adjust.
4030 (vsx_mergel_<mode>, vsx_mergeh_<mode>): Remove -maltivec=be support.
4031 (vsx_xxspltd_<mode>, extract4b, insert4b): Adjust.
4032
4033 2018-05-10 Eric Botcazou <ebotcazou@adacore.com>
4034
4035 * configure.ac (gcc_gxx_include_dir_add_sysroot): Set it to 1 only
4036 when --with-gxx-include-dir is also specified.
4037 * configure: Regenerate.
4038
4039 2018-05-09 Jim Wilson <jimw@sifive.com>
4040
4041 PR target/84797
4042 * config.gcc (riscv*-*-*): Handle --with-multilib-list.
4043 * config/riscv/t-withmultilib: New.
4044 * config/riscv/withmultilib.h: New.
4045 * doc/install.texi: Document RISC-V --with-multilib-list support.
4046
4047 2018-05-09 Richard Biener <rguenther@suse.de>
4048
4049 * tree-vect-slp.c (vect_bb_slp_scalar_cost): Fill a cost
4050 vector.
4051 (vect_bb_vectorization_profitable_p): Adjust. Compute
4052 actual scalar cost using the cost vector and the add_stmt_cost
4053 machinery.
4054
4055 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
4056
4057 PR rtl-optimization/85645
4058 * config/rs6000/rs6000.c (rs6000_emit_prologue_components): Put a SET
4059 in the REG_CFA_REGISTER note for LR, don't leave it empty.
4060
4061 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
4062
4063 PR rtl-optimization/85645
4064 * shrink-wrap.c (spread_components): Return a boolean saying if
4065 anything was changed.
4066 (try_shrink_wrapping_separate): Iterate spread_components until
4067 nothing changes anymore.
4068
4069 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
4070
4071 PR rtl-optimization/85645
4072 * regrename.c (build_def_use): Also kill the chains that include the
4073 destination of a REG_CFA_REGISTER note.
4074
4075 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
4076
4077 PR rtl-optimization/85645
4078 * regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an
4079 insn that has a REG_CFA_REGISTER note.
4080
4081 2018-05-09 Richard Sandiford <richard.sandiford@linaro.org>
4082
4083 * cfgexpand.c (expand_clobber): New function.
4084 (expand_gimple_stmt_1): Use it.
4085 * tree-vect-stmts.c (vect_clobber_variable): New function,
4086 split out from...
4087 (vectorizable_simd_clone_call): ...here.
4088 (vectorizable_store): Emit a clobber either side of an
4089 IFN_STORE_LANES sequence.
4090 (vectorizable_load): Emit a clobber after an IFN_LOAD_LANES sequence.
4091
4092 2018-05-09 Tom de Vries <tom@codesourcery.com>
4093
4094 PR target/85626
4095 * config/nvptx/nvptx.md (define_insn "trap", define_insn "trap_if_true")
4096 (define_insn "trap_if_false"): Add exit after trap.
4097
4098 2018-05-09 Eric Botcazou <ebotcazou@adacore.com>
4099
4100 PR rtl-optimization/85638
4101 * bb-reorder.c: Include common/common-target.h.
4102 (create_forwarder_block): New function extracted from...
4103 (fix_up_crossing_landing_pad): ...here. Rename into...
4104 (dw2_fix_up_crossing_landing_pad): ...this.
4105 (sjlj_fix_up_crossing_landing_pad): New function.
4106 (find_rarely_executed_basic_blocks_and_crossing_edges): In SJLJ mode,
4107 call sjlj_fix_up_crossing_landing_pad if there are incoming EH edges
4108 from both partitions and exit the loop after one iteration.
4109
4110 2018-05-08 Kelvin Nilsen <kelvin@gcc.gnu.org>
4111
4112 Revert:
4113 * doc/extend.texi (PowerPC Built-in Functions): Rename this
4114 subsection.
4115 (Basic PowerPC Built-in Functions): The new name of the
4116 subsection previously known as "PowerPC Built-in Functions".
4117 (Basic PowerPC Built-in Functions Available on all Configurations):
4118 New subsubsection.
4119 (Basic PowerPC Built-in Functions Available on ISA 2.05): New
4120 subsubsection.
4121 (Basic PowerPC Built-in Functions Available on ISA 2.06): New
4122 subsubsection.
4123 (Basic PowerPC Built-in Functions Available on ISA 2.07): New
4124 subsubsection.
4125 (Basic PowerPC Built-in Functions Available on ISA 3.0): New
4126 subsubsection.
4127
4128 2018-05-08 Jim Wilson <jimw@sifive.com>
4129
4130 * config/riscv/linux.h (MUSL_ABI_SUFFIX): Delete unnecessary backslash.
4131 (LD_EMUL_SUFFIX): New.
4132 (LINK_SPEC): Use it.
4133
4134 2018-05-08 Kelvin Nilsen <kelvin@gcc.gnu.org>
4135
4136 * doc/extend.texi (PowerPC Built-in Functions): Rename this
4137 subsection.
4138 (Basic PowerPC Built-in Functions): The new name of the
4139 subsection previously known as "PowerPC Built-in Functions".
4140 (Basic PowerPC Built-in Functions Available on all Configurations):
4141 New subsubsection.
4142 (Basic PowerPC Built-in Functions Available on ISA 2.05): New
4143 subsubsection.
4144 (Basic PowerPC Built-in Functions Available on ISA 2.06): New
4145 subsubsection.
4146 (Basic PowerPC Built-in Functions Available on ISA 2.07): New
4147 subsubsection.
4148 (Basic PowerPC Built-in Functions Available on ISA 3.0): New
4149 subsubsection.
4150
4151 2018-05-08 Jakub Jelinek <jakub@redhat.com>
4152
4153 PR target/85683
4154 * config/i386/i386.md: Add peepholes for mem {+,-,&,|,^}= x; mem != 0
4155 after cmpelim optimization.
4156
4157 2018-05-08 Olga Makhotina <olga.makhotina@intel.com>
4158
4159 * config.gcc: Support "goldmont".
4160 * config/i386/driver-i386.c (host_detect_local_cpu): Detect "goldmont".
4161 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
4162 PROCESSOR_GOLDMONT.
4163 * config/i386/i386.c (m_GOLDMONT): Define.
4164 (processor_target_table): Add "goldmont".
4165 (PTA_GOLDMONT): Define.
4166 (ix86_lea_outperforms): Add TARGET_GOLDMONT.
4167 (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT.
4168 (fold_builtin_cpu): Add M_INTEL_GOLDMONT.
4169 (fold_builtin_cpu): Add "goldmont".
4170 (ix86_add_stmt_cost): Add TARGET_GOLDMONT.
4171 (ix86_option_override_internal): Add "goldmont".
4172 * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT.
4173 (processor_type): Add PROCESSOR_GOLDMONT.
4174 * config/i386/i386.md: Add CPU "glm".
4175 * config/i386/glm.md: New file.
4176 * config/i386/x86-tune.def: Add m_GOLDMONT.
4177 * doc/invoke.texi: Add goldmont as x86 -march=/-mtune= CPU type.
4178
4179 2018-05-08 Jakub Jelinek <jakub@redhat.com>
4180
4181 PR target/85572
4182 * config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and
4183 E_V4DImode.
4184 * config/i386/sse.md (abs<mode>2): Use VI_AVX2 iterator instead of
4185 VI1248_AVX512VL_AVX512BW. Handle V2DImode and V4DImode if not
4186 TARGET_AVX512VL using ix86_expand_sse2_abs. Formatting fixes.
4187
4188 PR target/85317
4189 * config/i386/i386.c (ix86_fold_builtin): Handle
4190 IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}.
4191
4192 PR target/85480
4193 * config/i386/sse.md (ssequaterinsnmode): New mode attribute.
4194 (*<extract_type>_vinsert<shuffletype><extract_suf>_0): New pattern.
4195
4196 2018-05-08 Richard Earnshaw <rearnsha@arm.com>
4197
4198 PR target/85658
4199 * config/arm/parsecpu.awk (check_cpu): Fix operator precedence.
4200 (check_arch): Likewise.
4201 (check_fpu): Return the result rather than printing it.
4202 (end arch): Fix operator precedence.
4203 (end cpu): Likewise.
4204 (END): Print the result from check_fpu.
4205
4206 2018-05-08 Richard Sandiford <richard.sandiford@linaro.org>
4207 Alan Hayward <alan.hayward@arm.com>
4208 David Sherwood <david.sherwood@arm.com>
4209
4210 * config/aarch64/aarch64-sve.md (*pred_cmp<cmp_op><mode>_combine)
4211 (*pred_cmp<cmp_op><mode>, *fcm<cmp_op><mode>_and_combine)
4212 (*fcmuo<mode>_and_combine, *fcm<cmp_op><mode>_and)
4213 (*fcmuo<mode>_and): New patterns.
4214
4215 2018-05-08 Richard Sandiford <richard.sandiford@linaro.org>
4216
4217 * config/aarch64/iterators.md (UNSPEC_COND_LO, UNSPEC_COND_LS)
4218 (UNSPEC_COND_HI, UNSPEC_COND_HS, UNSPEC_COND_UO): Delete.
4219 (SVE_INT_CMP, SVE_FP_CMP): New code iterators.
4220 (cmp_op, sve_imm_con): New code attributes.
4221 (SVE_COND_INT_CMP, imm_con): Delete.
4222 (cmp_op): Remove above unspecs from int attribute.
4223 * config/aarch64/aarch64-sve.md (*vec_cmp<cmp_op>_<mode>): Rename
4224 to...
4225 (*cmp<cmp_op><mode>): ...this. Use UNSPEC_MERGE_PTRUE instead of
4226 comparison-specific unspecs.
4227 (*vec_cmp<cmp_op>_<mode>_ptest): Rename to...
4228 (*cmp<cmp_op><mode>_ptest): ...this and adjust likewise.
4229 (*vec_cmp<cmp_op>_<mode>_cc): Rename to...
4230 (*cmp<cmp_op><mode>_cc): ...this and adjust likewise.
4231 (*vec_fcm<cmp_op><mode>): Rename to...
4232 (*fcm<cmp_op><mode>): ...this and adjust likewise.
4233 (*vec_fcmuo<mode>): Rename to...
4234 (*fcmuo<mode>): ...this and adjust likewise.
4235 (*pred_fcm<cmp_op><mode>): New pattern.
4236 * config/aarch64/aarch64.c (aarch64_emit_unop, aarch64_emit_binop)
4237 (aarch64_emit_sve_ptrue_op, aarch64_emit_sve_ptrue_op_cc): New
4238 functions.
4239 (aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU
4240 and UNORDERED.
4241 (aarch64_gen_unspec_cond, aarch64_emit_unspec_cond): Delete.
4242 (aarch64_emit_sve_predicated_cond): New function.
4243 (aarch64_expand_sve_vec_cmp_int): Use aarch64_emit_sve_ptrue_op_cc.
4244 (aarch64_emit_unspec_cond_or): Replace with...
4245 (aarch64_emit_sve_or_conds): ...this new function. Use
4246 aarch64_emit_sve_ptrue_op for the individual comparisons and
4247 aarch64_emit_binop to OR them together.
4248 (aarch64_emit_inverted_unspec_cond): Replace with...
4249 (aarch64_emit_sve_inverted_cond): ...this new function. Use
4250 aarch64_emit_sve_ptrue_op for the comparison and
4251 aarch64_emit_unop to invert the result.
4252 (aarch64_expand_sve_vec_cmp_float): Update after the above
4253 changes. Use aarch64_emit_sve_ptrue_op for native comparisons.
4254
4255 2018-05-07 Nathan Sidwell <nathan@acm.org>
4256
4257 * doc/invoke.texi (C++ Dialect Options): Remove -ffor-scope.
4258 * doc/extend.texi (Deprecated Features): Remove -fno-for-scope
4259 (Backwards Compatibility): Likewise.
4260
4261 2018-05-07 Luis Machado <luis.machado@linaro.org>
4262
4263 PR bootstrap/85681
4264 Revert:
4265 2018-05-07 Luis Machado <luis.machado@linaro.org>
4266
4267 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
4268 <prefetch_dynamic_strides>: New const bool field.
4269 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
4270 prefetch_dynamic_strides.
4271 (exynosm1_prefetch_tune): Likewise.
4272 (thunderxt88_prefetch_tune): Likewise.
4273 (thunderx_prefetch_tune): Likewise.
4274 (thunderx2t99_prefetch_tune): Likewise.
4275 (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides
4276 to false.
4277 (aarch64_override_options_internal): Update to set
4278 PARAM_PREFETCH_DYNAMIC_STRIDES.
4279 * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
4280 * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
4281 * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
4282 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
4283 prefetch-dynamic-strides setting.
4284
4285 2018-05-07 Luis Machado <luis.machado@linaro.org>
4286
4287 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
4288 <minimum_stride>: New const int field.
4289 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
4290 minimum_stride field.
4291 (exynosm1_prefetch_tune): Likewise.
4292 (thunderxt88_prefetch_tune): Likewise.
4293 (thunderx_prefetch_tune): Likewise.
4294 (thunderx2t99_prefetch_tune): Likewise.
4295 (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
4296 (aarch64_override_options_internal): Update to set
4297 PARAM_PREFETCH_MINIMUM_STRIDE.
4298 * doc/invoke.texi (prefetch-minimum-stride): Document new option.
4299 * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
4300 * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
4301 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
4302 stride is constant and is below the minimum stride threshold.
4303
4304 2018-05-07 Luis Machado <luis.machado@linaro.org>
4305
4306 * config/aarch64/aarch64.c (qdf24xx_prefetch_tune) <l2_cache_size>: Set
4307 to 512.
4308
4309 2018-05-07 Luis Machado <luis.machado@linaro.org>
4310
4311 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
4312 <prefetch_dynamic_strides>: New const bool field.
4313 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
4314 prefetch_dynamic_strides.
4315 (exynosm1_prefetch_tune): Likewise.
4316 (thunderxt88_prefetch_tune): Likewise.
4317 (thunderx_prefetch_tune): Likewise.
4318 (thunderx2t99_prefetch_tune): Likewise.
4319 (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides
4320 to false.
4321 (aarch64_override_options_internal): Update to set
4322 PARAM_PREFETCH_DYNAMIC_STRIDES.
4323 * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
4324 * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
4325 * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
4326 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
4327 prefetch-dynamic-strides setting.
4328
4329 2018-05-07 Luis Machado <luis.machado@linaro.org>
4330
4331 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
4332 <minimum_stride>: New const int field.
4333 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
4334 minimum_stride field.
4335 (exynosm1_prefetch_tune): Likewise.
4336 (thunderxt88_prefetch_tune): Likewise.
4337 (thunderx_prefetch_tune): Likewise.
4338 (thunderx2t99_prefetch_tune): Likewise.
4339 (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
4340 (aarch64_override_options_internal): Update to set
4341 PARAM_PREFETCH_MINIMUM_STRIDE.
4342 * doc/invoke.texi (prefetch-minimum-stride): Document new option.
4343 * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
4344 * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
4345 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
4346 stride is constant and is below the minimum stride threshold.
4347
4348 2018-05-06 Jakub Jelinek <jakub@redhat.com>
4349
4350 PR c++/85659
4351 * cfgexpand.c (expand_asm_stmt): Don't create a temporary if
4352 the type is addressable. Don't force op into register if it has
4353 BLKmode.
4354
4355 2018-05-05 Roland McGrath <mcgrathr@google.com>
4356
4357 PR other/77609
4358 * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
4359 any section for which we don't know a specific type it should have,
4360 regardless of name. Previously this was done only for the exact
4361 names ".init_array", ".fini_array", and ".preinit_array".
4362 (default_elf_asm_named_section): Add comment about
4363 relationship with default_section_type_flags and SECTION_NOTYPE.
4364 (get_section): Don't consider it a type conflict if one side has
4365 SECTION_NOTYPE and the other doesn't, as long as neither has the
4366 SECTION_BSS et al used in the default_section_type_flags logic.
4367
4368 2018-05-05 Tom de Vries <tom@codesourcery.com>
4369
4370 PR target/85653
4371 * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_3): Define.
4372 (workaround_barsyncs): New function.
4373 (nvptx_reorg): Use workaround_barsyncs.
4374 * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
4375 (define_expand "nvptx_membar_cta"): New define_expand.
4376 (define_insn "*nvptx_membar_cta"): New insn.
4377
4378 2018-05-04 Pekka Jääskeläinen <pekka.jaaskelainen@parmance.com>
4379
4380 * brig-builtins.def: Add consts to ptrs etc. in BRIG builtin defs.
4381 To improve optimization opportunities.
4382 * builtin-types.def: The new needed builtin types for the above.
4383
4384 2018-05-04 Richard Biener <rguenther@suse.de>
4385
4386 * bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
4387 * gimple-ssa-store-merging.c
4388 (imm_store_chain_info::output_merged_store): Remove redundant create,
4389 release split_store vector contents on failure.
4390 * tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
4391 scalar stmt vector on cache hit.
4392
4393 2018-05-04 Segher Boessenkool <segher@kernel.crashing.org>
4394
4395 * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
4396 Xilinx FP support.
4397 * config.gcc (powerpc-xilinx-eabi*): Remove.
4398 * config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP
4399 support.
4400 (fusion_addis_mem_combo_load): Ditto.
4401 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx
4402 FP support.
4403 (rs6000_cpu_cpp_builtins): Ditto.
4404 * config/rs6000/rs6000-linux.c
4405 (rs6000_linux_float_exceptions_rounding_supported_p): Ditto.
4406 * config/rs6000/rs6000-opts.h (enum fpu_type_t): Delete.
4407 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove Xilinx FP
4408 support.
4409 (rs6000_setup_reg_addr_masks): Ditto.
4410 (rs6000_init_hard_regno_mode_ok): Ditto.
4411 (rs6000_option_override_internal): Ditto.
4412 (legitimate_lo_sum_address_p): Ditto.
4413 (rs6000_legitimize_address): Ditto.
4414 (rs6000_legitimize_reload_address): Ditto.
4415 (rs6000_legitimate_address_p): Ditto.
4416 (abi_v4_pass_in_fpr): Ditto.
4417 (setup_incoming_varargs): Ditto.
4418 (rs6000_gimplify_va_arg): Ditto.
4419 (rs6000_split_multireg_move): Ditto.
4420 (rs6000_savres_strategy): Ditto.
4421 (rs6000_emit_prologue_components): Ditto.
4422 (rs6000_emit_epilogue_components): Ditto.
4423 (rs6000_emit_prologue): Ditto.
4424 (rs6000_emit_epilogue): Ditto.
4425 (rs6000_elf_file_end): Ditto.
4426 (rs6000_function_value): Ditto.
4427 (rs6000_libcall_value): Ditto.
4428 * config/rs6000/rs6000.h: Ditto.
4429 (TARGET_MINMAX_SF, TARGET_MINMAX_DF): Delete, merge to ...
4430 (TARGET_MINMAX): ... this. New.
4431 (TARGET_SF_FPR, TARGET_DF_FPR, TARGET_SF_INSN, TARGET_DF_INSN): Delete.
4432 * config/rs6000/rs6000.md: Remove Xilinx FP support.
4433 (*movsi_internal1_single): Delete.
4434 * config/rs6000/rs6000.opt (msingle-float, mdouble-float, msimple-fpu,
4435 mfpu=, mxilinx-fpu): Delete.
4436 * config/rs6000/singlefp.h: Delete.
4437 * config/rs6000/sysv4.h: Remove Xilinx FP support.
4438 * config/rs6000/t-rs6000: Ditto.
4439 * config/rs6000/t-xilinx: Delete.
4440 * gcc/config/rs6000/titan.md: Adjust for fp_type removal.
4441 * gcc/config/rs6000/vsx.md: Remove Xilinx FP support.
4442 (VStype_simple): Delete.
4443 (VSfptype_simple, VSfptype_mul, VSfptype_div, VSfptype_sqrt): Delete.
4444 * config/rs6000/xfpu.h: Delete.
4445 * config/rs6000/xfpu.md: Delete.
4446 * config/rs6000/xilinx.h: Delete.
4447 * config/rs6000/xilinx.opt: Delete.
4448 * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Remove
4449 -msingle-float, -mdouble-float, -msimple-fpu, -mfpu=, and -mxilinx-fpu.
4450
4451 2018-05-04 Tom de Vries <tom@codesourcery.com>
4452
4453 PR libgomp/85639
4454 * builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target
4455 if ignore == 0.
4456
4457 2018-05-04 Richard Biener <rguenther@suse.de>
4458
4459 PR middle-end/85627
4460 * tree-complex.c (update_complex_assignment): We are always in SSA form.
4461 (expand_complex_div_wide): Likewise.
4462 (expand_complex_operations_1): Likewise.
4463 (expand_complex_libcall): Preserve EH info of the original stmt.
4464 (tree_lower_complex): Handle removed blocks.
4465 * tree.c (build_common_builtin_nodes): Do not set ECF_NOTRHOW
4466 on complex multiplication and division libcall builtins.
4467
4468 2018-05-04 Richard Biener <rguenther@suse.de>
4469
4470 PR middle-end/85574
4471 * fold-const.c (negate_expr_p): Restrict negation of operand
4472 zero of a division to when we know that can happen without
4473 overflow.
4474 (fold_negate_expr_1): Likewise.
4475
4476 2018-05-04 Jakub Jelinek <jakub@redhat.com>
4477
4478 PR libstdc++/85466
4479 * real.h (real_nextafter): Declare.
4480 * real.c (real_nextafter): New function.
4481 * fold-const-call.c (fold_const_nextafter): New function.
4482 (fold_const_call_sss): Call it for CASE_CFN_NEXTAFTER and
4483 CASE_CFN_NEXTTOWARD.
4484 (fold_const_call_1): For CASE_CFN_NEXTTOWARD call fold_const_call_sss
4485 even when arg1_mode is different from arg0_mode.
4486
4487 2018-05-03 Nathan Sidwell <nathan@acm.org>
4488
4489 * doc/extend.texi (Deprecated Features): Remove
4490 -ffriend-injection.
4491 (Backwards Compatibility): Likewise.
4492 * doc/invoke.texi (C++ Language Options): Likewise.
4493 (C++ Dialect Options): Likewise.
4494
4495 2018-05-03 Jakub Jelinek <jakub@redhat.com>
4496
4497 PR target/85530
4498 * config/i386/avx512fintrin.h (_mm512_mullox_epi64,
4499 _mm512_mask_mullox_epi64): New intrinsics.
4500
4501 2018-05-03 Tom de Vries <tom@codesourcery.com>
4502
4503 PR testsuite/85106
4504 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
4505 dump files): Add offload-tree.
4506
4507 2018-05-03 Richard Biener <rguenther@suse.de>
4508
4509 PR tree-optimization/85615
4510 * tree-ssa-threadupdate.c (thread_block_1): Only allow exits
4511 to loops not nested in BBs loop father to avoid creating multi-entry
4512 loops.
4513
4514 2018-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4515
4516 PR tree-optimization/70291
4517 * tree-complex.c (expand_complex_libcall): Add type, inplace_p
4518 arguments. Change return type to tree. Emit libcall as a new
4519 statement rather than replacing existing one when inplace_p is true.
4520 (expand_complex_multiplication_components): New function.
4521 (expand_complex_multiplication): Expand floating-point complex
4522 multiplication using the above.
4523 (expand_complex_division): Rename inner_type parameter to type.
4524 Update expand_complex_libcall call-site.
4525 (expand_complex_operations_1): Update expand_complex_multiplication
4526 and expand_complex_division call-sites.
4527
4528 2018-05-02 Jakub Jelinek <jakub@redhat.com>
4529
4530 PR target/85582
4531 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
4532 *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
4533 *<shift_insn><dwi>3_doubleword_mask_1): In condition require that
4534 the highest significant bit of the shift count mask is clear. In
4535 check whether and[sq]i3 is needed verify that all significant bits
4536 of the shift count other than the highest are set.
4537
4538 2018-05-02 Tom de Vries <tom@codesourcery.com>
4539
4540 PR libgomp/82428
4541 * builtins.def (DEF_GOACC_BUILTIN_ONLY): Define.
4542 * omp-builtins.def (BUILT_IN_GOACC_PARLEVEL_ID)
4543 (BUILT_IN_GOACC_PARLEVEL_SIZE): New builtin.
4544 * builtins.c (expand_builtin_goacc_parlevel_id_size): New function.
4545 (expand_builtin): Call expand_builtin_goacc_parlevel_id_size.
4546 * doc/extend.texi (Other Builtins): Add __builtin_goacc_parlevel_id and
4547 __builtin_goacc_parlevel_size.
4548
4549 2018-05-02 Richard Biener <rguenther@suse.de>
4550
4551 PR tree-optimization/85597
4552 * tree-vect-stmts.c (vectorizable_operation): For ternary SLP
4553 do not use split vect_get_vec_defs call but call vect_get_slp_defs
4554 directly.
4555
4556 2018-05-02 Tom de Vries <tom@codesourcery.com>
4557
4558 PR testsuite/85106
4559 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
4560 dump files): Add ltrans-tree.
4561
4562 2018-05-02 Tom de Vries <tom@codesourcery.com>
4563
4564 PR testsuite/85106
4565 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
4566 dump files): Add wpa-ipa.
4567
4568 2018-05-02 Segher Boessenkool <segher@kernel.crashing.org>
4569
4570 * config.gcc (powerpc*-*-*): Remove paired.h. Unsupport the
4571 powerpc*-*-linux*paired* target.
4572 * config/rs6000/750cl.h: Delete.
4573 * config/rs6000/paired.h: Delete.
4574 * config/rs6000/paired.md: Delete.
4575 * config/rs6000/predicates.md (easy_vector_constant): Remove paired
4576 float support.
4577 * config/rs6000/rs6000-builtin.def: Remove paired float support.
4578 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
4579 comment. Remove paired float support.
4580 * config/rs6000/rs6000-modes.def: Remove V2SF and V2SI.
4581 * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
4582 VECTOR_PAIRED.
4583 * config/rs6000/rs6000-protos.h (paired_expand_vector_init,
4584 paired_emit_vector_cond_expr, paired_expand_vector_move): Delete
4585 declarations.
4586 * config/rs6000/rs6000.c: Remove paired float support.
4587 (paired_expand_vector_init, paired_expand_vector_move,
4588 paired_emit_vector_compare, paired_emit_vector_cond_expr,
4589 (paired_expand_lv_builtin, paired_expand_stv_builtin,
4590 paired_expand_builtin, paired_expand_predicate_builtin,
4591 paired_init_builtins): Delete.
4592 * config/rs6000/rs6000.h: Remove paired float support.
4593 * config/rs6000/rs6000.md: Remove paired float support.
4594 (move_from_CR_ov_bit): Delete.
4595 * config/rs6000/rs6000.opt (mpaired): Delete.
4596 * config/rs6000/t-rs6000: Remove paired.md from MD_INCLUDES.
4597 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mpaired.
4598
4599 2018-05-02 Richard Biener <rguenther@suse.de>
4600
4601 PR middle-end/85567
4602 * gimplify.c (gimplify_save_expr): When in SSA form allow
4603 SAVE_EXPRs to compute to SSA vars.
4604
4605 2018-05-02 Jakub Jelinek <jakub@redhat.com>
4606
4607 PR target/85582
4608 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
4609 *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
4610 *<shift_insn><dwi>3_doubleword_mask_1): If and[sq]i3 is needed, don't
4611 clobber operands[2], instead use a new pseudo. Formatting fixes.
4612
4613 2018-05-02 Richard Sandiford <richard.sandiford@linaro.org>
4614
4615 PR tree-optimization/85586
4616 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only
4617 exit early for statements in the same group if the accesses are
4618 not strided.
4619
4620 2018-05-02 Tom de Vries <tom@codesourcery.com>
4621
4622 PR lto/85451
4623 * lto-wrapper.c (compile_offload_image): Add "could not find mkoffload"
4624 error message.
4625
4626 2018-05-01 Marc Glisse <marc.glisse@inria.fr>
4627
4628 PR tree-optimization/85143
4629 * match.pd (A<B&A<C): Extend to BIT_IOR_EXPR.
4630
4631 2018-05-01 Tom de Vries <tom@codesourcery.com>
4632
4633 PR lto/85451
4634 * config/nvptx/mkoffload.c (main): Suggest using -B in "offload compiler
4635 not found" error message.
4636
4637 2018-05-01 Tom de Vries <tom@codesourcery.com>
4638
4639 PR other/83786
4640 * vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define.
4641 * vec.c (test_ordered_remove_if): New function.
4642 (vec_c_tests): Call test_ordered_remove_if.
4643 * dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO.
4644 * lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF.
4645 * tree-vect-patterns.c (vect_pattern_recog_1): Use
4646 VEC_ORDERED_REMOVE_IF.
4647
4648 2018-05-01 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
4649
4650 PR tree-optimization/82665
4651 * vr-values.c (vr_values::extract_range_from_binary_expr): Handle
4652 pointer subtraction where arguments come from a memchr call.
4653
4654 2018-05-01 Jakub Jelinek <jakub@redhat.com>
4655
4656 * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
4657 --push-state --as-needed and --pop-state instead of --as-needed and
4658 --no-as-needed if ld supports it.
4659 * configure: Regenerated.
4660
4661 PR web/85578
4662 * doc/install.texi2html: Replace _002d with - and _002a with * in
4663 generated html files using sed.
4664
4665 2018-04-30 David Malcolm <dmalcolm@redhat.com>
4666
4667 PR c++/85523
4668 * gcc-rich-location.c (blank_line_before_p): New function.
4669 (use_new_line): New function.
4670 (gcc_rich_location::add_fixit_insert_formatted): New function.
4671 * gcc-rich-location.h
4672 (gcc_rich_location::add_fixit_insert_formatted): New function.
4673
4674 2018-04-30 David Malcolm <dmalcolm@redhat.com>
4675
4676 * selftest.c (assert_streq): Rename "expected" and "actual" to
4677 "val1" and "val2". Extend NULL-handling to cover both inputs
4678 symmetrically, while still requiring both to be non-NULL for a pass.
4679 * selftest.h (assert_streq): Rename "expected" and "actual" to
4680 "val1" and "val2".
4681 (ASSERT_EQ): Likewise.
4682 (ASSERT_EQ_AT): Likewise.
4683 (ASSERT_KNOWN_EQ): Likewise.
4684 (ASSERT_KNOWN_EQ_AT): Likewise.
4685 (ASSERT_NE): Likewise.
4686 (ASSERT_MAYBE_NE): Likewise.
4687 (ASSERT_MAYBE_NE_AT): Likewise.
4688 (ASSERT_STREQ): Likewise. Clarify that both must be non-NULL for
4689 the assertion to pass.
4690 (ASSERT_STREQ_AT): Likewise.
4691
4692 2018-04-30 Jonathan Wakely <jwakely@redhat.com>
4693
4694 * doc/invoke.texi (-fpie, -fPIE): Fix grammar and clarify
4695 interaction with -pie.
4696
4697 2018-04-30 David Malcolm <dmalcolm@redhat.com>
4698
4699 * selftest.h: Fix alphabetization of per-source-file selftest
4700 declarations.
4701
4702 2018-04-30 Jason Merrill <jason@redhat.com>
4703
4704 PR c++/61982 - dead stores to destroyed objects.
4705 * gimplify.c (gimplify_modify_expr): Simplify complex lvalue on LHS
4706 of clobber.
4707
4708 2018-04-30 Jason Merrill <jason@redhat.com>
4709
4710 * tree.c (build_clobber): New.
4711 * tree.h: Declare it.
4712 * gimplify.c (gimplify_bind_expr, gimplify_target_expr): Use it.
4713
4714 2018-04-30 David Malcolm <dmalcolm@redhat.com>
4715
4716 * diagnostic-show-locus.c (layout::layout): Update for
4717 location_get_source_line returning a char_span.
4718 (struct char_span): Move to input.h.
4719 (struct correction): Update for fields in char_span becoming
4720 private.
4721 (struct source_line): Update for location_get_source_line
4722 returning a char_span.
4723 (layout::print_line): Likewise.
4724 * edit-context.c (edited_file::print_content): Likewise.
4725 (edited_file::print_diff_hunk): Likewise.
4726 (edited_file::print_run_of_changed_lines): Likewise.
4727 (edited_file::get_num_lines): Likewise.
4728 (edited_line::edited_line): Likewise.
4729 * final.c (asm_show_source): Likewise.
4730 * input.c (location_get_source_line): Convert return type
4731 from const char * to char_span, losing the final "line_len"
4732 param.
4733 (dump_location_info): Update for the above.
4734 (get_substring_ranges_for_loc): Likewise. Use a char_span
4735 when handling the literal within the line.
4736 (test_reading_source_line): Update for location_get_source_line
4737 returning a char_span.
4738 * input.h (class char_span): Move here from
4739 diagnostic-show-locus.c, converting from a struct to a class.
4740 Make data members private.
4741 (char_span::operator bool): New.
4742 (char_span::length): New.
4743 (char_span::get_buffer): New.
4744 (char_span::operator[]): New.
4745 (char_span::subspan): Make const.
4746 (char_span::xstrdup): New.
4747 (location_get_source_line): Convert return type from const char *
4748 to char_span, losing the final "line_size" param.
4749
4750 2018-04-30 Jan Hubicka <jh@suse.cz>
4751
4752 * lto-wrapper.c (ltrans_priorities): New static var.
4753 (cmp_priority): New.
4754 (run_gcc): Read priorities and if doing parallel build order
4755 the Makefile by them.
4756
4757 2018-04-30 David Malcolm <dmalcolm@redhat.com>
4758
4759 * input.h (builtins_location_check): Convert to a STATIC_ASSERT.
4760
4761 2018-04-30 Richard Biener <rguenther@suse.de>
4762
4763 * tree-cfg.c (verify_address): Remove base argument, add
4764 flag whether to check TREE_ADDRESSABLE and do that.
4765 (verify_expr): Remove.
4766 (verify_types_in_gimple_reference): Add pieces from verify_expr.
4767 (verify_gimple_assign_single): Likewise.
4768 (verify_gimple_switch): Likewise.
4769 (verify_expr_location_1): Dereference tp once. Add (disabled)
4770 piece from verify_expr.
4771 (verify_gimple_in_cfg): Do not call verify_expr on all ops.
4772
4773 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
4774
4775 * config/arc/linux.h (CLEAR_INSN_CACHE): Define.
4776
4777 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
4778
4779 * config/arc/arc-protos.h (prepare_extend_operands): Remove.
4780 (small_data_pattern): Likewise.
4781 (arc_rewrite_small_data): Likewise.
4782 * config/arc/arc.c (LEGITIMATE_SMALL_DATA_OFFSET_P): Remove.
4783 (LEGITIMATE_SMALL_DATA_ADDRESS_P): Likewise.
4784 (get_symbol_alignment): New function.
4785 (legitimate_small_data_address_p): Likewise.
4786 (legitimate_scaled_address): Update, call
4787 legitimate_small_data_address_p.
4788 (output_sdata): New static variable.
4789 (arc_print_operand): Update how we handle small data operands.
4790 (arc_print_operand_address): Likewise.
4791 (arc_legitimate_address_p): Update, use
4792 legitimate_small_data_address_p.
4793 (arc_rewrite_small_data_p): Remove.
4794 (arc_rewrite_small_data_1): Likewise.
4795 (arc_rewrite_small_data): Likewise.
4796 (small_data_pattern): Likewise.
4797 (compact_sda_memory_operand): Update to use
4798 legitimate_small_data_address_p and get_symbol_alignment.
4799 (prepare_move_operands): Don't rewite sdata pattern.
4800 (prepare_extend_operands): Remove.
4801 * config/arc/arc.md (zero_extendqihi2): Don't rewrite sdata
4802 pattern.
4803 (zero_extendqisi2): Likewise.
4804 (zero_extendhisi2): Likewise.
4805 (extendqihi2): Likewise.
4806 (extendqisi2): Likewise.
4807 (extendhisi2): Likewise.
4808 (addsi3): Likewise.
4809 (subsi3): Likewise.
4810 (andsi3): Likewise.
4811 * config/arc/constraints.md (Usd): Change it to memory constraint.
4812
4813 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
4814
4815 * config/arc/arc.c (arc_split_move): Allow signed 6-bit constants
4816 as source of std instructions.
4817 * config/arc/arc.md (movsi_insn): Update pattern predicate to
4818 allow 6-bit constants as source for store instructions.
4819 (movdi_insn): Update instruction pattern to allow 6-bit constants
4820 as source for store instructions.
4821
4822 2018-04-30 Jonathan Wakely <jwakely@redhat.com>
4823
4824 * doc/invoke.texi (-fdebug-types-section): Fix grammar.
4825
4826 2018-04-30 Nathan Sidwell <nathan@acm.org>
4827 Sandra Loosemore <sandra@codesourcery.com>
4828
4829 * dumpfile.c (dump_open): Allow '-' for stdout.
4830 * doc/invoke.texi (Developer Options): Document dump filename
4831 determination early. Document stdin/stdout selection.
4832
4833 2018-04-30 Andrew Sadek <andrew.sadek.se@gmail.com>
4834
4835 Microblaze Target: PIC data text relative
4836
4837 * config/microblaze/microblaze.opt: add new option -mpic-data-text-rel.
4838 * config/microblaze/microblaze-protos.h (microblaze_constant_address_p):
4839 Add declaration.
4840 * gcc/config/microblaze/microblaze.h (microblaze_constant_address_p):
4841 CONSTANT_ADDRESS_P definition to microblaze_constant_address_p.
4842 * config/microblaze/microblaze.c (TARGET_PIC_DATA_TEXT_REL):
4843 New addressing mode for data-text relative position indepenedent code.
4844 (microblaze_classify_unspec): add 'UNSPEC_TEXT' case ->
4845 'ADDRESS_SYMBOLIC_TXT_REL'.
4846 (microblaze_classify_address): Add handling for UNSPEC + CONST_INT.
4847 (microblaze_legitimate_pic_operand): Exclude function calls from
4848 pic operands in case of TARGET_PIC_DATA_TEXT_REL option.
4849 (microblaze_legitimize_address): Generate 'UNSPEC_TEXT' for all possible
4850 addresses cases.
4851 (microblaze_address_insns): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
4852 (print_operand): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
4853 (print_operand_address): Add 'ADDRESS_SYMBOLIC_TXT_REL' case + handling
4854 for 'address + offset'.
4855 (microblaze_expand_prologue): Add new function prologue call for
4856 'r20' assignation.
4857 (microblaze_asm_generate_pic_addr_dif_vec): Override new target hook
4858 'TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC' to disable address diff vector
4859 table in case of TARGET_PIC_DATA_TEXT_REL.
4860 (expand_pic_symbol_ref): Add handling for 'UNSPEC_TEXT'.
4861 * gcc/config/microblaze/microblaze.md (TARGET_PIC_DATA_TEXT_REL):
4862 Add new macros 'UNSPEC_TEXT',
4863 'UNSPEC_SET_TEXT' + add rule for setting r20 in function prologue
4864 + exclude function calls from 'UNSPEC_PLT' in case of data text
4865 relative mode.
4866 * doc/tm.texi.in (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
4867 new target hook for generating address diff vector tables in case of
4868 flag_pic.
4869 * doc/tm.texi : Regenerate.
4870 * stmt.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Append new condition
4871 'targetm.asm_out.generate_pic_addr_diff_vec' to flag_pic in case
4872 of addr diff vector generation.
4873 * target.def (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
4874 target hook definition.
4875 * targhooks.h, gcc/targhooks.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC):
4876 Add default function for generate_pic_addr_diff_vec -> flag_pic.
4877 * doc/invoke.texi (Add new pic option): Add new microblaze pic
4878 option for data text relative.
4879
4880 2018-04-30 Richard Biener <rguenther@suse.de>
4881
4882 * tree-chrec.h (evolution_function_is_constant_p): Remove
4883 redundant check.
4884 * tree-cfg.c (tree_node_can_be_shared): Re-order checks.
4885
4886 2018-04-30 Richard Biener <rguenther@suse.de>
4887
4888 PR bootstrap/85571
4889 * dwarf2out.c (gen_producer_string): Ignore -fchecking[=].
4890
4891 2018-04-30 Richard Biener <rguenther@suse.de>
4892
4893 PR tree-optimization/28364
4894 PR tree-optimization/85275
4895 * tree-ssa-loop-ch.c (ch_base::copy_headers): Stop after
4896 copying first exit test.
4897
4898 2018-04-28 Mark Wielaard <mark@klomp.org>
4899
4900 * dwarf2out.c (dwarf2out_finish): Add .debug_addr table header for
4901 dwarf_version >= 5.
4902 (dwarf_AT): Handle DW_AT_addr_base.
4903 (add_top_level_skeleton_die_attrs): Use dwarf_AT for DW_AT_addr_base.
4904
4905 2018-04-28 Uros Bizjak <ubizjak@gmail.com>
4906
4907 PR target/84431
4908 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask): New pattern.
4909 (*ashl<dwi>3_doubleword_mask_1): Ditto.
4910 (*<shift_insn><dwi>3_doubleword_mask): Ditto.
4911 (*<shift_insn><dwi>3_doubleword_mask_1): Ditto.
4912
4913 2018-04-28 Richard Biener <rguenther@suse.de>
4914
4915 * tree-cfg.c (verify_gimple_phi): Take a gphi * argument.
4916 (verify_gimple_in_cfg): Rename visited_stmts to visited_throwing_stmts
4917 to reflect use. Only add interesting stmts.
4918
4919 2018-04-27 Martin Jambor <mjambor@suse.cz>
4920
4921 PR ipa/85549
4922 * ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure
4923 the jump function allows for passing through aggregate values.
4924
4925 2018-04-27 David Malcolm <dmalcolm@redhat.com>
4926
4927 * input.h (in_system_header_at): Convert from macro to inline
4928 function.
4929 (from_macro_expansion_at): Likewise.
4930 (from_macro_definition_at): Likewise.
4931
4932 2018-04-27 Jeff Law <law@redhat.com>
4933
4934 * config.gcc: Mark tile* targets as deprecated/obsolete.
4935
4936 2018-04-27 Richard Biener <rguenther@suse.de>
4937
4938 * config/aarch64/aarch64.c: Simplify ap.__stack advance and
4939 fix for ILP32.
4940
4941 2018-04-27 Richard Biener <rguenther@suse.de>
4942
4943 * tree-cfg.c (verify_expr): Make dead code hit gcc_unreachable.
4944
4945 2018-04-27 Uros Bizjak <ubizjak@gmail.com>
4946
4947 * config/i386/i386.md (*movti_internal): Substitute Ye constraint
4948 with Yd constraint. Set "preferred_for_speed" attribute from
4949 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for alternatives
4950 with Yd constraint.
4951 (*movdi_internal): Ditto.
4952 (movti_interunit splitters): Remove
4953 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC from insn condition.
4954 (movdi_interunit splitters): Ditto.
4955 * config/i386/constraints.md (Ye): Remove.
4956 (Yd): Do not depend on TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC.
4957
4958 2018-04-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4959
4960 PR target/85512
4961 * config/aarch64/constraints.md (Usg): Limit to 31.
4962 (Usj): Limit to 63.
4963
4964 2018-04-27 Jakub Jelinek <jakub@redhat.com>
4965
4966 PR tree-optimization/85529
4967 * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB
4968 argument. Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE,
4969 rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious
4970 zero extension or masking of the MSB bit.
4971 (optimize_range_tests): Add FIRST_BB argument, pass it through
4972 to optimize_range_tests_var_bound.
4973 (maybe_optimize_range_tests, reassociate_bb): Adjust
4974 optimize_range_tests callers.
4975
4976 2018-04-26 Richard Biener <rguenther@suse.de>
4977 Jakub Jelinek <jakub@redhat.com>
4978
4979 * cgraph.h (symbol_table): Just declare debug method here.
4980 * symtab.c (symbol_table::debug): Define.
4981
4982 2018-04-26 Eric Botcazou <ebotcazou@adacore.com>
4983
4984 * loop-invariant.c (may_assign_reg_p): Return false for frame pointer.
4985
4986 2018-04-26 Uros Bizjak <ubizjak@gmail.com>
4987
4988 * config/i386/i386.md ("isa" attribute): Add x64_sse2.
4989 ("enabled" attribute): Handle x64_sse2 "isa" attribute.
4990 (*movdi_internal): Substitute Yi and Yj constraint with x
4991 and Ym and Yn constraint with y constraint. Update "isa"
4992 attribute and set "preferred_for_speed" attribute from
4993 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for updated alternatives.
4994 (*movsi_internal): Ditto.
4995 (*movdf_internal): Ditto.
4996 (*movsf_internal): Ditto.
4997 (*zero_extendsidi2): Ditto.
4998 * config/i386/sse.md (vec_set<mode>_0): Ditto.
4999 (sse2_loadld): Ditto.
5000 (*vec_extract<ssevecmodelower>_0): Ditto.
5001 (*vec_extractv4si_0_zext_sse4): Ditto.
5002 (vec_concatv2di): Ditto.
5003 (*vec_dup<mode>): Ditto.
5004 * config/i386/mmx.md (*mov<mode>_internal): Ditto.
5005 * config/i386/constraints.md (Yi): Remove.
5006 (Yj): Remove.
5007 (Ym): Remove.
5008 (Yn): Remove.
5009
5010 2018-04-26 Nathan Sidwell <nathan@acm.org>
5011
5012 * dumpfile.c (dump_open): New.
5013 (dump_open_alternate_stream, dump_start, dump_begin): Call it.
5014 (dump_finish): Detect stdio/stderr by value not name.
5015
5016 2018-04-26 Jonathan Wakely <jwakely@redhat.com>
5017
5018 * doc/invoke.texi (-Wreturn-type): Document default status for C++.
5019
5020 2018-04-26 Tom de Vries <tom@codesourcery.com>
5021
5022 PR target/84952
5023 * config/nvptx/nvptx.c (verify_neutering_jumps)
5024 (verify_neutering_labels): New function
5025 (nvptx_single): Use verify_neutering_jumps and verify_neutering_labels.
5026
5027 2018-04-26 Tom de Vries <tom@codesourcery.com>
5028
5029 PR target/84025
5030 * config/nvptx/nvptx.c (needs_neutering_p): New function.
5031 (nvptx_single): Use needs_neutering_p to skip over insns that do not
5032 need neutering.
5033
5034 2018-04-26 Richard Biener <rguenther@suse.de>
5035 Tom de Vries <tom@codesourcery.com>
5036
5037 PR lto/85422
5038 * lto-streamer-out.c (output_function): Fixup loops if required to match
5039 discovery done in the reader.
5040
5041 2018-04-26 Richard Biener <rguenther@suse.de>
5042
5043 PR tree-optimization/85116
5044 * tree-ssa-loop-ch.c (do_while_loop_p): A do-while loop should
5045 have a loop exit from the single latch predecessor. Remove
5046 case of header with just condition.
5047 (ch_base::copy_headers): Exclude infinite loops from any
5048 processing.
5049 (pass_ch::execute): Record exits.
5050
5051 2018-04-26 Richard Biener <rguenther@suse.de>
5052
5053 * tree-vect-data-refs.c (vect_get_data_access_cost): Get
5054 prologue cost vector and pass it to vect_get_load_cost.
5055 (vect_get_peeling_costs_all_drs): Likewise.
5056 (vect_peeling_hash_get_lowest_cost): Likewise.
5057 (vect_enhance_data_refs_alignment): Likewise.
5058
5059 2018-04-26 Richard Biener <rguenther@suse.de>
5060
5061 PR middle-end/85450
5062 * tree-cfg.c (verify_gimple_assign_unary): Restore proper
5063 checking of integer<->pointer conversions.
5064 * omp-expand.c (expand_omp_for_static_nochunk): Avoid
5065 sign-/zero-extending pointer types.
5066 (expand_omp_for_static_chunk): Likewise.
5067
5068 2018-03-22 Hans-Peter Nilsson <hp@axis.com>
5069 Jean Lee <xiaoyur347@gmail.com>
5070
5071 * config/mips/mips.c (mips_asan_shadow_offset): New function.
5072 (TARGET_ASAN_SHADOW_OFFSET): Define.
5073 * config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be
5074 true for -fsanitize=address.
5075
5076 2018-04-25 Mark Wielaard <mark@klomp.org>
5077
5078 * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before
5079 shorter ones.
5080
5081 2018-04-25 Jakub Jelinek <jakub@redhat.com>
5082
5083 * config/i386/i386.md (*x86_mov<mode>cc_0_m1): Use type "alu1" rather
5084 than "alu", remove explicit "memory" and "imm_disp" attributes.
5085 (*x86_mov<mode>cc_0_m1_se, *x86_mov<mode>cc_0_m1_neg): Likewise.
5086
5087 PR middle-end/85414
5088 * simplify-rtx.c (simplify_unary_operation_1) <case SIGN_EXTEND,
5089 case ZERO_EXTEND>: Pass SUBREG_REG (op) rather than op to
5090 gen_lowpart_no_emit.
5091
5092 2018-04-25 Sebastian Peryt <sebastian.peryt@intel.com>
5093
5094 PR target/85473
5095 * config/i386/i386.c (ix86_expand_builtin): Change memory
5096 operand to XI, extend p0 to Pmode.
5097 * config/i386/i386.md: Change unspec volatile and operand
5098 1 mode to XI, change operand 0 mode to P.
5099
5100 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
5101
5102 * config/nds32/nds32-predicates.c (nds32_can_use_bclr_p): Mask with
5103 GET_MODE_MASK before any checking.
5104 (nds32_can_use_bset_p): Likewise.
5105 (nds32_can_use_btgl_p): Likewise.
5106
5107 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
5108
5109 * config/nds32/nds32-doubleword.md: New define_split pattern for
5110 illegal register number.
5111
5112 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
5113
5114 * config/nds32/nds32.c (nds32_print_operand): Set op_value ealier.
5115
5116 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
5117
5118 * config/nds32/nds32.h (ASM_APP_ON): Add missing newline character.
5119
5120 2018-04-25 Richard Biener <rguenther@suse.de>
5121
5122 * lto-streamer.h (LTO_major_version): Bump to 8.
5123
5124 2018-04-25 Jakub Jelinek <jakub@redhat.com>
5125
5126 * BASE-VER: Set to 9.0.0.
5127
5128 2018-04-24 Segher Boessenkool <segher@kernel.crashing.org>
5129
5130 * config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes
5131 in __abskf2 and __powikf2.
5132
5133 2018-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5134
5135 PR target/85512
5136 * config/aarch64/constraints.md (Usg, Usj): New constraints.
5137 * config/aarch64/iterators.md (cmode_simd): New mode attribute.
5138 * config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_<mode>3):
5139 Use the above on operand 2. Reindent.
5140 (*aarch64_lshr_sisd_or_int_<mode>3): Likewise.
5141
5142 2018-04-24 H.J. Lu <hongjiu.lu@intel.com>
5143
5144 PR target/85485
5145 * common/config/i386/i386-common.c (ix86_handle_option): Don't
5146 handle OPT_mcet.
5147 * config/i386/i386.opt (mcet): Removed.
5148 * doc/install.texi: Remove -mcet documentation.
5149 * doc/invoke.texi: Likewise.
5150
5151 2018-04-24 H.J. Lu <hongjiu.lu@intel.com>
5152
5153 PR target/85485
5154 * doc/install.texi: Remove -mcet from bootstrap-cet.
5155
5156 2018-04-24 Jakub Jelinek <jakub@redhat.com>
5157
5158 PR target/85511
5159 * config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define
5160 __builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32
5161 if TARGET_64BIT.
5162
5163 PR target/85503
5164 * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if
5165 const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool
5166 containing a CONST_VECTOR.
5167
5168 2018-04-24 Cesar Philippidis <cesar@codesourcery.com>
5169
5170 * doc/install.texi: Update newlib dependency for nvptx.
5171
5172 2018-04-24 Jakub Jelinek <jakub@redhat.com>
5173
5174 PR target/85508
5175 * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL
5176 instead of INTVAL when shifting x left.
5177
5178 2018-04-24 Andreas Krebbel <krebbel@linux.ibm.com>
5179
5180 PR tree-optimization/85478
5181 * tree-vect-loop.c (vect_analyze_loop_2): Do not call
5182 vect_grouped_store_supported for single element vectors.
5183
5184 2018-04-24 Richard Biener <rguenther@suse.de>
5185
5186 PR target/85491
5187 * config/i386/i386.c (ix86_add_stmt_cost): Restrict strided
5188 load cost increase to the case of non-constant step.
5189
5190 2018-04-24 Jakub Jelinek <jakub@redhat.com>
5191
5192 PR target/84828
5193 * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead
5194 destination if any_malformed_asm.
5195
5196 2018-04-23 Eric Botcazou <ebotcazou@adacore.com>
5197
5198 PR middle-end/85496
5199 * expr.c (store_field): In the bitfield case, if the value comes from
5200 a function call and is returned in registers by means of a PARALLEL,
5201 do not change the mode of the temporary unless BLKmode and VOIDmode.
5202
5203 2018-04-23 Andrey Belevantsev <abel@ispras.ru>
5204
5205 PR rtl-optimization/85423
5206 * sel-sched-ir.c (has_dependence_note_mem_dep): Only discard
5207 dependencies to debug insns when the previous insn is non-debug.
5208
5209 2018-04-23 Claudiu Zissulescu <claziss@synopsys.com>
5210
5211 * config/arc/arc.md ("vunspec"): Delete it, unify all the unspec
5212 enums into a single definition.
5213 (fls): Fix predicates and printing.
5214 (seti): Likewise.
5215
5216 2018-04-23 Claudiu Zissulescu <claziss@synopsys.com>
5217
5218 * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
5219 * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
5220 and short u6 immediate.
5221 (check_if_valid_sleep_operand): Remove.
5222 * config/arc/arc.md (Sleep): Accepts registers and u6 immediates.
5223
5224 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
5225
5226 * config/nds32/nds32.c (nds32_compute_stack_frame): Consider
5227 flag_always_save_lp condition.
5228 * config/nds32/nds32.opt (malways-save-lp): New option.
5229
5230 2018-04-22 Shiva Chen <shiva0217@gmail.com>
5231
5232 * config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
5233 * config/nds32/nds32.c (nds32_use_load_post_increment): New.
5234 * config/nds32/nds32.h
5235 (USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define.
5236 (USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define.
5237
5238 2018-04-22 Shiva Chen <shiva0217@gmail.com>
5239
5240 * config/nds32/nds32-protos.h (nds32_ls_333_p): Remove.
5241 * config/nds32/nds32.c (nds32_ls_333_p): Remove.
5242
5243 2018-04-22 Shiva Chen <shiva0217@gmail.com>
5244 Chung-Ju Wu <jasonwucj@gmail.com>
5245
5246 * config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode):
5247 Declare.
5248 * config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function.
5249 * config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify.
5250
5251 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
5252
5253 * config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value.
5254
5255 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
5256
5257 * config/nds32/nds32-protos.h (nds32_data_alignment,
5258 nds32_local_alignment): Declare.
5259 * config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment,
5260 nds32_local_alignment): New functions.
5261 (TARGET_CONSTANT_ALIGNMENT): Define.
5262 * config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define.
5263
5264 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
5265
5266 * config/nds32/nds32.c
5267 (TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file.
5268 (TARGET_MODES_TIEABLE_P): Likewise.
5269
5270 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
5271
5272 * config/nds32/nds32.c (nds32_asm_file_start): Display optimization
5273 level Ofast and Og.
5274
5275 2018-04-22 Monk Chiang <sh.chiang04@gmail.com>
5276 Chung-Ju Wu <jasonwucj@gmail.com>
5277
5278 * config/nds32/constants.md (unspec_volatile_element): Add enum values
5279 for unaligned access.
5280 * config/nds32/nds32-intrinsic.c: Implementation of expanding
5281 unaligned access.
5282 * config/nds32/nds32-intrinsic.md: Likewise.
5283 * config/nds32/nds32_intrinsic.h: Likewise.
5284 * config/nds32/nds32.h (nds32_builtins): Likewise.
5285 * config/nds32/nds32.opt (munaligned-access): New option.
5286 * config/nds32/nds32.c (nds32_asm_file_start): Display
5287 flag_unaligned_access status.
5288
5289 2018-04-20 Kito Cheng <kito.cheng@gmail.com>
5290
5291 * config/riscv/elf.h (LINK_SPEC): Pass --no-relax if
5292 -mno-relax is present.
5293 * config/riscv/linux.h (LINK_SPEC): Ditto.
5294
5295 2018-04-20 Martin Sebor <msebor@redhat.com>
5296
5297 PR c/85365
5298 * gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
5299 for null pointers.
5300 (gimple_fold_builtin_stxcpy_chk): Same.
5301 * gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same.
5302
5303 2018-04-20 Michael Meissner <meissner@linux.ibm.com>
5304
5305 PR target/85456
5306 * config/rs6000/rs6000.c (init_float128_ieee): Add support to call
5307 __powikf2 when long double is IEEE 128-bit.
5308
5309 2018-04-20 Kito Cheng <kito.cheng@gmail.com>
5310
5311 * config/riscv/riscv.c (riscv_first_stack_step): Round up min
5312 step to make sure stack always aligned.
5313
5314 2018-04-20 Carl Love <cel@us.ibm.com>
5315
5316 PR target/83402
5317 * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add
5318 size check for arg0.
5319
5320 2018-04-20 Nathan Sidwell <nathan@codesourcery.com>
5321 Tom de Vries <tom@codesourcery.com>
5322
5323 PR target/85445
5324 * config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining):
5325 Emit insns for calls too.
5326 (nvptx_find_par): Always look for worker-level predecessor insn.
5327 (nvptx_propagate): Add is_call parm, return bool. Copy frame for
5328 calls.
5329 (nvptx_vpropagate, nvptx_wpropagate): Adjust.
5330 (nvptx_process_pars): Propagate frames for calls.
5331
5332 2018-04-20 H.J. Lu <hongjiu.lu@intel.com>
5333
5334 PR target/85469
5335 * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
5336 Removed.
5337 (OPTION_MASK_ISA_IBT_UNSET): Likewise.
5338 (ix86_handle_option): Don't handle OPT_mibt.
5339 * config/i386/cet.h: Check __CET__ instead of __IBT__ and
5340 __SHSTK__.
5341 * config/i386/driver-i386.c (host_detect_local_cpu): Remove
5342 has_ibt and ibt.
5343 * config/i386/i386-c.c (ix86_target_macros_internal): Don't
5344 check OPTION_MASK_ISA_IBT nor flag_cf_protection.
5345 (ix86_target_macros): Define __CET__ with flag_cf_protection
5346 for -fcf-protection.
5347 * config/i386/i386.c (isa2_opts): Remove -mibt.
5348 * config/i386/i386.h (TARGET_IBT): Removed.
5349 (TARGET_IBT_P): Likewise.
5350 (ix86_valid_target_attribute_inner_p): Don't check OPT_mibt.
5351 * config/i386/i386.md (nop_endbr): Don't check TARGET_IBT.
5352 * config/i386/i386.opt (mcet): Update help message.
5353 (mshstk): Likewise.
5354 (mibt): Removed.
5355 * doc/invoke.texi: Remove -mibt. Document __CET__. Document
5356 -mcet as an alias for -mshstk.
5357
5358 2018-04-20 Richard Biener <rguenther@suse.de>
5359
5360 PR middle-end/85475
5361 * match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential
5362 complexity by forcing a single use of the multiply operand.
5363
5364 2018-04-20 Martin Jambor <mjambor@suse.cz>
5365
5366 ipa/85449
5367 * ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding
5368 recursion dependency to only apply to non-clones.
5369
5370 2018-04-20 Martin Jambor <mjambor@suse.cz>
5371
5372 ipa/85447
5373 * ipa-cp.c (create_specialized_node): Check that clones of
5374 self-recursive edges exist during IPA-CP.
5375
5376 2018-04-19 Toon Moene <toon@moene.org>
5377
5378 * doc/invoke.texi: Add -floop-unroll-and-jam to options enabled
5379 by -O3.
5380
5381 2018-04-19 Jakub Jelinek <jakub@redhat.com>
5382
5383 PR tree-optimization/85467
5384 * fold-const.c (fold_ternary_loc) <case BIT_FIELD_REF>: Use
5385 VECTOR_TYPE_P macro. If type is vector type, VIEW_CONVERT_EXPR the
5386 VECTOR_CST element to type.
5387
5388 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
5389
5390 PR target/85397
5391 * config/i386/i386.h (STACK_SAVEAREA_MODE): New.
5392 * config/i386/i386.md (builtin_setjmp_setup): Removed.
5393 (builtin_longjmp): Likewise.
5394 (save_stack_nonlocal): New pattern.
5395 (restore_stack_nonlocal): Likewise.
5396
5397 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
5398
5399 PR target/85404
5400 * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
5401 Replace ASM_OUTPUT_LABEL with fprintf.
5402
5403 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
5404
5405 PR target/85417
5406 * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
5407 Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK.
5408 * config/i386/i386-c.c (ix86_target_macros_internal): Also
5409 define __IBT__ and __SHSTK__ for -fcf-protection.
5410 * config/i386/i386.c (pass_insert_endbranch::gate): Don't check
5411 TARGET_IBT.
5412 (ix86_trampoline_init): Likewise.
5413 (x86_output_mi_thunk): Likewise.
5414 (ix86_notrack_prefixed_insn_p): Likewise.
5415 (ix86_option_override_internal): Don't disallow -fcf-protection.
5416 * config/i386/i386.md (rdssp<mode>): Also enable for
5417 -fcf-protection.
5418 (incssp<mode>): Likewise.
5419 (nop_endbr): Likewise.
5420 * config/i386/i386.opt (mcet): Change help message to built-in
5421 functions only.
5422 (mibt): Likewise.
5423 (mshstk): Likewise.
5424 * doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition
5425 on -fcf-protection. Change -mcet, -mibt and -mshstk to only
5426 enable CET built-in functions.
5427
5428 2018-04-19 Sebastian Peryt <sebastian.peryt@intel.com>
5429
5430 * common/config/i386/i386-common.c
5431 (OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET,
5432 OPTION_MASK_ISA_MOVDIRI_UNSET,
5433 OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines.
5434 (ix86_handle_option): Handle -mmovdiri and -mmovdir64b.
5435 * config.gcc (movdirintrin.h): New header.
5436 * config/i386/cpuid.h (bit_MOVDIRI,
5437 bit_MOVDIR64B): New bits.
5438 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri
5439 and -mmvodir64b.
5440 * config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED),
5441 (VOID, PVOID, PCVOID)): New function types.
5442 * config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32,
5443 __builtin_ia32_directstoreu_u64,
5444 __builtin_ia32_movdir64b): New builtins.
5445 * config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New.
5446 * config/i386/i386.c (ix86_target_string): Added -mmovdir64b
5447 and -mmovdiri.
5448 (ix86_valid_target_attribute_inner_p): Ditto.
5449 (ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED
5450 and VOID_FTYPE_PUNSIGNED_UNSIGNED.
5451 (ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B.
5452 * config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P,
5453 TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New.
5454 * config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New.
5455 (movdiri<mode>, movdir64b_<mode>): New.
5456 * config/i386/i386.opt: Add -mmovdiri and -mmovdir64b.
5457 * config/i386/immintrin.h: Include movdirintrin.h.
5458 * config/i386/movdirintrin.h: New file.
5459 * doc/invoke.texi: Added -mmovdiri and -mmovdir64b.
5460
5461 2018-04-19 Richard Biener <rguenther@suse.de>
5462
5463 PR middle-end/85455
5464 * cfg.c (clear_bb_flags): When loop state says we have
5465 marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP.
5466
5467 2018-04-19 Richard Biener <rguenther@suse.de>
5468
5469 PR tree-optimization/84737
5470 * tree-vect-data-refs.c (vect_copy_ref_info): New function
5471 copying restrict info.
5472 (vect_setup_realignment): Use it.
5473 * tree-vectorizer.h (vect_copy_ref_info): Declare.
5474 * tree-vect-stmts.c (vectorizable_store): Copy ref info from
5475 the first DR to all generated stores.
5476 (vectorizable_load): Likewise for loads.
5477
5478 2018-04-19 Jakub Jelinek <jakub@redhat.com>
5479
5480 PR tree-optimization/85446
5481 * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
5482 the integral and pointer types to have the same precision.
5483
5484 * doc/install.texi: Document --disable-cet being the default and
5485 --enable-cet=auto.
5486
5487 2018-04-18 Martin Liska <mliska@suse.cz>
5488
5489 * ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding
5490 style.
5491
5492 2018-04-18 Martin Liska <mliska@suse.cz>
5493
5494 Revert
5495 2018-03-02 Eric Botcazou <ebotcazou@adacore.com>
5496
5497 PR ipa/83983
5498 * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
5499 arguments if they are comparable.
5500
5501 2018-04-18 Martin Liska <mliska@suse.cz>
5502
5503 Revert
5504 2018-03-13 Eric Botcazou <ebotcazou@adacore.com>
5505
5506 PR lto/84805
5507 * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
5508 incomplete types.
5509
5510 2018-04-18 H.J. Lu <hongjiu.lu@intel.com>
5511
5512 PR target/85388
5513 * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert
5514 ENDBR after calling __morestack.
5515
5516 2018-04-18 David Malcolm <dmalcolm@redhat.com>
5517
5518 PR jit/85384
5519 * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version
5520 by using gcc_base_ver to generate a gcc_driver_version, and use
5521 it when generating GCC_DRIVER_NAME.
5522 * configure: Regenerate.
5523
5524 2018-04-18 Jakub Jelinek <jakub@redhat.com>
5525
5526 PR target/81084
5527 * config.gcc: Obsolete powerpc*-*-*spe*.
5528
5529 2018-04-17 Jakub Jelinek <jakub@redhat.com>
5530
5531 PR debug/84637
5532 * dbxout.c (dbxout_int): Perform negation in unsigned int type.
5533 (stabstr_D): Change type of unum from unsigned int to
5534 unsigned HOST_WIDE_INT. Perform negation in unsigned HOST_WIDE_INT
5535 type.
5536
5537 2018-04-17 Jim Wilson <jimw@sifive.com>
5538
5539 PR 84856
5540 * config/riscv/riscv.c (riscv_compute_frame_info): Add calls to
5541 RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size.
5542 Set arg_pointer_offset after using pretend_args_size.
5543
5544 2018-04-17 Jakub Jelinek <jakub@redhat.com>
5545
5546 PR rtl-optimization/85431
5547 * dse.c (record_store): Ignore zero width stores.
5548
5549 PR sanitizer/85230
5550 * asan.c (handle_builtin_stack_restore): Adjust comment. Emit
5551 __asan_allocas_unpoison call and last_alloca_addr = new_sp before
5552 __builtin_stack_restore rather than after it.
5553 * builtins.c (expand_asan_emit_allocas_unpoison): Pass
5554 arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second
5555 argument instead of virtual_dynamic_stack_rtx.
5556
5557 2018-04-17 Kelvin Nilsen <kelvin@gcc.gnu.org>
5558
5559 * config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p):
5560 New prototype.
5561 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
5562 Add note to error message to explain internal mapping of overloaded
5563 built-in function name to non-overloaded built-in function name.
5564 * config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New
5565 function.
5566
5567 2018-04-17 Michael Meissner <meissner@linux.vnet.ibm.com>
5568
5569 PR target/85424
5570 * config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
5571 where the inputs overlap with the output.
5572
5573 2018-04-17 Jakub Jelinek <jakub@redhat.com>
5574
5575 * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add
5576 (=v, v) alternative and explicit "memory" attribute.
5577 (vec_extract_lo_<mode><mask_name>): Likewise. Also add
5578 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
5579 attributes.
5580 (vec_extract_lo_<mode><mask_name>): Add (=v, v) alternative and use
5581 "sselog1" type instead of "sselog".
5582 (vec_extract_hi_<mode><mask_name>): Use "sselog1" type instead of
5583 "sselog". Remove explicit "memory" attribute.
5584 (vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory",
5585 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
5586 attributes.
5587 (vec_extract_hi_v32hi): Merge all alternatives into one, use
5588 "sselog1" type instead of "sselog". Remove explicit "memory"
5589 attribute.
5590 (vec_extract_hi_v16hi): Merge each pair of alternatives into one,
5591 use "sselog1" type instead of "sselog". Remove explicit "memory"
5592 attribute.
5593 (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
5594 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
5595 attributes.
5596 (vec_extract_hi_v64qi): Merge all alternatives into one, use
5597 "sselog1" type instead of "sselog". Remove explicit "memory"
5598 attribute.
5599 (vec_extract_hi_v32qi): Merge each pair of alternatives into one,
5600 use "sselog1" type instead of "sselog". Remove explicit "memory"
5601 attribute.
5602
5603 PR target/85430
5604 * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu.
5605
5606 PR middle-end/85414
5607 * rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
5608 on a SUBREG.
5609
5610 2018-04-17 Martin Jambor <mjambor@suse.cz>
5611
5612 PR ipa/85421
5613 * ipa-cp.c (create_specialized_node): Call
5614 expand_all_artificial_thunks if necessary.
5615
5616 2018-04-17 Martin Liska <mliska@suse.cz>
5617
5618 PR lto/85405
5619 * ipa-devirt.c (odr_types_equivalent_p): Remove trailing
5620 in message, remote space in between '_G' and '('.
5621
5622 2018-04-17 Jakub Jelinek <jakub@redhat.com>
5623
5624 PR target/85281
5625 * config/i386/sse.md (reduces<mode><mask_scalar_name>,
5626 avx512f_vmcmp<mode>3<round_saeonly_name>,
5627 avx512f_vmcmp<mode>3_mask<round_saeonly_name>,
5628 avx512f_sgetexp<mode><mask_scalar_name><round_saeonly_scalar_name>,
5629 avx512f_rndscale<mode><round_saeonly_name>,
5630 avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
5631 avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
5632 Use %<iptr>2 instead of %2 for -masm=intel.
5633 (avx512f_vcvtss2usi<round_name>, avx512f_vcvtss2usiq<round_name>,
5634 avx512f_vcvttss2usi<round_saeonly_name>,
5635 avx512f_vcvttss2usiq<round_saeonly_name>): Use %k1 instead of %1 for
5636 -masm=intel.
5637 (avx512f_vcvtsd2usi<round_name>, avx512f_vcvtsd2usiq<round_name>,
5638 avx512f_vcvttsd2usi<round_saeonly_name>,
5639 avx512f_vcvttsd2usiq<round_saeonly_name>, ufloatv2siv2df2<mask_name>):
5640 Use %q1 instead of %1 for -masm=intel.
5641 (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
5642 avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Use %<iptr>3 instead
5643 of %3 for -masm=intel.
5644 (sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for
5645 -masm=intel.
5646 (*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
5647 -masm=intel.
5648 (*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
5649 -masm=intel.
5650 (avx512vl_<code><mode>v4qi2_mask_store): Use a single pattern with
5651 %k0 and %1 for -masm=intel rather than two patterns, one with %0 and
5652 %g1.
5653 (*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
5654 -masm=intel.
5655 (avx512vl_<code><mode>v8qi2_mask_store): Use a single pattern with
5656 %q0 and %1 for -masm=intel rather than two patterns, one with %0 and
5657 %g1 and one with %0 and %1.
5658 (avx512er_vmrcp28<mode><round_saeonly_name>,
5659 avx512er_vmrsqrt28<mode><round_saeonly_name>): Use %<iptr>1 instead of
5660 %1 for -masm=intel.
5661 (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask,
5662 avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask,
5663 avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order
5664 of %0 and %{%4%} for -masm=intel.
5665 (avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz,
5666 avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz,
5667 avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap
5668 order of %0 and %{%5%}%{z%} for -masm=intel.
5669
5670 2018-04-17 Jan Hubicka <jh@suse.cz>
5671
5672 PR lto/85405
5673 * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
5674
5675 2018-04-17 Martin Liska <mliska@suse.cz>
5676
5677 PR ipa/85329
5678 * multiple_target.c (create_dispatcher_calls): Set apostrophes
5679 for target_clone error message. Make default implementation
5680 clone to be a local declaration.
5681 (separate_attrs): Add new argument and check for an empty
5682 string.
5683 (expand_target_clones): Handle it.
5684 (ipa_target_clone): Make redirection just for target_clones
5685 functions.
5686
5687 2018-04-16 Cesar Philippidis <cesar@codesourcery.com>
5688 Tom de Vries <tom@codesourcery.com>
5689
5690 PR middle-end/84955
5691 * omp-expand.c (expand_oacc_for): Add dummy false branch for
5692 tiled basic blocks without omp continue statements.
5693
5694 2018-04-16 Aaron Sawdey <acsawdey@linux.ibm.com>
5695
5696 PR target/83660
5697 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
5698 vec_extract expression as having side effects to make sure it gets
5699 a cleanup point.
5700
5701 2018-04-16 H.J. Lu <hongjiu.lu@intel.com>
5702
5703 PR target/85403
5704 * config/i386/i386.c (get_builtin_code_for_version): Check
5705 error_mark_node.
5706
5707 2018-04-16 Olga Makhotina <olga.makhotina@intel.com>
5708
5709 PR target/84331
5710 * gcc/config.gcc: Support "skylake".
5711 * gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle
5712 PROCESSOR_SKYLAKE.
5713 * gcc/config/i386/i386.c (m_SKYLAKE): Define.
5714 (processor_target_table): Add "skylake".
5715 (ix86_option_override_internal): Add "skylake".
5716 (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
5717 PROCESSOR_CANNONLAKE.
5718 (get_builtin_code_for_version): Fix priority for
5719 PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER,
5720 PROCESSOR_SKYLAKE-AVX512.
5721 * gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
5722 (processor_type): Add PROCESSOR_SKYLAKE.
5723
5724 2018-04-16 Paolo Carlini <paolo.carlini@oracle.com>
5725 Jason Merrill <jason@redhat.com>
5726
5727 PR c++/85112
5728 * convert.c (convert_to_integer_1): Use direct recursion for
5729 enumeral types and types with a precision less than the number
5730 of bits in their mode.
5731
5732 2018-04-16 Julia Koval <julia.koval@intel.com>
5733
5734 PR target/84413
5735 * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL,
5736 X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512
5737
5738 2018-04-14 Segher Boessenkool <segher@kernel.crashing.org>
5739
5740 PR target/85293
5741 * config/rs6000/rs6000.opt (mdirect-move): Make deprecated.
5742 * doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move
5743 and -mno-direct-move.
5744
5745 2018-04-13 Paul A. Clarke <pc@us.ibm.com>
5746
5747 PR target/83402
5748 * config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}):
5749 Ensure that vec_splat_s32 is only called with 0 <= shift < 16.
5750 Ensure negative shifts result in {0}.
5751
5752 2018-04-13 Vladimir Makarov <vmakarov@redhat.com>
5753
5754 PR rtl-optimization/79916
5755 * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
5756 regs (if any) to define how to gnerate SD moves when LRA is in
5757 progress.
5758
5759 2018-04-13 Jakub Jelinek <jakub@redhat.com>
5760
5761 PR rtl-optimization/85393
5762 * except.h (expand_dw2_landing_pad_for_region): Remove declaration.
5763 * except.c (expand_dw2_landing_pad_for_region): Make static.
5764 * bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just
5765 a label and unconditional jump to old_bb, rather than
5766 expand_dw2_landing_pad_for_region insn(s) and jump to single_succ
5767 basic block.
5768
5769 PR rtl-optimization/85376
5770 * simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and
5771 zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX
5772 instead of a specific value.
5773
5774 2018-04-13 Jan Hubicka <hubicka@ucw.cz>
5775 Bin Cheng <bin.cheng@arm.com>
5776
5777 PR tree-optimization/82965
5778 PR tree-optimization/83991
5779 * cfgloopanal.c (expected_loop_iterations_unbounded): Add
5780 by_profile_only parameter.
5781 * cfgloopmanip.c (scale_loop_profile): Further scale loop's profile
5782 information if the loop was predicted to iterate too many times.
5783 * cfgloop.h (expected_loop_iterations_unbounded): Update prototype
5784
5785 2018-04-13 Jan Hubicka <hubicka@ucw.cz>
5786
5787 PR lto/71991
5788 * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
5789 always inline.
5790
5791 2018-04-13 Martin Liska <mliska@suse.cz>
5792 Jakub Jelinek <jakub@redhat.com>
5793
5794 PR middle-end/81657
5795 * expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET.
5796 * expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET.
5797 * builtins.c (expand_builtin_memory_copy_args): Use
5798 BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target,
5799 handle dest_addr == pc_rtx.
5800
5801 2018-04-12 Segher Boessenkool <segher@kernel.crashing.org>
5802
5803 PR target/85291
5804 * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
5805 asked to not generate direct moves.
5806 (fix_trunc<mode>si2_stfiwx): Similar.
5807 (fix_trunc<mode>si2_internal): Similar.
5808
5809 2018-04-12 Jakub Jelinek <jakub@redhat.com>
5810
5811 PR debug/83157
5812 * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST.
5813 * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest,
5814 lookup if dest in some wider mode is known to be const0_rtx and
5815 if so, record permanent equivalence for it to be ZERO_EXTEND of
5816 the narrower mode destination.
5817
5818 2018-04-12 Cesar Philippidis <cesar@codesourcery.com>
5819
5820 * lto-streamer-out.c (output_function): Revert 259346.
5821 * omp-expand.c (expand_oacc_for): Likewise.
5822
5823 2018-04-12 Alexander Monakov <amonakov@ispras.ru>
5824
5825 PR rtl-optimization/85354
5826 * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call...
5827 * sel-sched.c (sel_global_init): ... here.
5828
5829 2018-04-12 Eric Botcazou <ebotcazou@adacore.com>
5830
5831 PR target/85238
5832 * lto-wrapper.c (debug_objcopy): Open the files in binary mode.
5833 * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
5834 mode for PE-COFF targets.
5835 * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
5836 (i386_pe_asm_lto_end): Likewise.
5837 * config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
5838 (TARGET_ASM_LTO_END): Likewise.
5839 * config/i386/winnt.c (saved_debug_info_level): New static variable.
5840 (i386_pe_asm_lto_start): New function.
5841 (i386_pe_asm_lto_end): Likewise.
5842
5843 2018-04-12 Cesar Philippidis <cesar@codesourcery.com>
5844 Richard Biener <rguenther@suse.de>
5845
5846 PR middle-end/84955
5847 * lto-streamer-out.c (output_function): Fix CFG loop state before
5848 streaming out.
5849 * omp-expand.c (expand_oacc_for): Handle calls to internal
5850 functions like regular functions.
5851
5852 2018-04-12 Richard Biener <rguenther@suse.de>
5853
5854 PR lto/85371
5855 * dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label]
5856 for the early LTO debug to properly generate references to it
5857 during DIE emission. Do not re-use that for the skeleton for
5858 split-dwarf.
5859 (dwarf2out_early_finish): Likewise.
5860
5861 2018-04-12 Jakub Jelinek <jakub@redhat.com>
5862
5863 PR target/85328
5864 * config/i386/sse.md
5865 (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
5866 <mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
5867 vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
5868 vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
5869 and output is a reg, avoid creating invalid lowpart subreg, but
5870 instead split into a 512-bit move. Don't split if not AVX512VL,
5871 input is xmm16+ reg and output is a mem.
5872 (vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
5873 vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
5874 xmm16+ reg and output is a mem.
5875
5876 2018-04-12 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
5877
5878 * config/s390/s390.c (s390_output_indirect_thunk_function): Check
5879 also for flag_dwarf2_cfi_asm.
5880
5881 2018-04-12 Jakub Jelinek <jakub@redhat.com>
5882
5883 PR rtl-optimization/85342
5884 * regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use
5885 a bool scalar var inside of the loop instead. Don't try to update
5886 recog_data.operand after failed apply_change_group.
5887
5888 2018-04-12 Tom de Vries <tom@codesourcery.com>
5889
5890 PR target/85296
5891 * config/nvptx/nvptx.c (flexible_array_member_type_p): New function.
5892 (nvptx_assemble_decl_begin): Add undefined param. Declare undefined
5893 array with flexible array member as array without given dimension.
5894 (nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call
5895 argument for undefined param to true.
5896
5897 2018-04-11 Aaron Sawdey <acsawdey@linux.ibm.com>
5898
5899 PR target/85321
5900 * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
5901 -mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe
5902 from PowerPC section.
5903 * config/rs6000/sysv4.opt (mcall-): Improve help text.
5904 * config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim
5905 help text that is too long.
5906 * config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim
5907 help text that is too long.
5908 * config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim
5909 help text that is too long.
5910
5911 2018-04-11 Uros Bizjak <ubizjak@gmail.com>
5912
5913 * config/alpha/alpha.md (stack_probe_internal): Rename
5914 from "probe_stack". Update all callers.
5915
5916 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
5917
5918 PR rtl-optimization/84566
5919 * sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking
5920 sched_macro_fuse_insns.
5921
5922 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
5923
5924 PR target/84301
5925 * sched-rgn.c (add_branch_dependences): Move sel_sched_p check here...
5926 (compute_block_dependences): ... from here.
5927
5928 2018-04-11 Jakub Jelinek <jakub@redhat.com>
5929
5930 PR tree-optimization/85331
5931 * vec-perm-indices.h (vec_perm_indices::clamp): Change input type
5932 from int to HOST_WIDE_INT.
5933
5934 2018-04-11 Martin Jambor <mjambor@suse.cz>
5935
5936 PR ipa/84149
5937 * ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
5938 (cgraph_edge_brings_value_p): New parameter dest_val, check if it is
5939 not the same as the source val.
5940 (cgraph_edge_brings_value_p): New parameter.
5941 (gather_edges_for_value): Pass destination value to
5942 cgraph_edge_brings_value_p.
5943 (perhaps_add_new_callers): Likewise.
5944 (get_info_about_necessary_edges): Likewise and exclude values brought
5945 only by self-recursive edges.
5946 (create_specialized_node): Redirect only clones of self-calling edges.
5947 (+self_recursive_pass_through_p): New function.
5948 (find_more_scalar_values_for_callers_subset): Use it.
5949 (find_aggregate_values_for_callers_subset): Likewise.
5950 (known_aggs_to_agg_replacement_list): Removed.
5951 (decide_whether_version_node): Re-calculate known constants for all
5952 remaining context clones.
5953
5954 2018-04-11 Richard Biener <rguenther@suse.de>
5955
5956 PR lto/85339
5957 * dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute
5958 from early DWARF output.
5959 (dwarf2out_early_finish): Output line info unconditionally into
5960 early DWARF and add reference to it.
5961
5962 2018-04-11 Jakub Jelinek <jakub@redhat.com>
5963
5964 PR target/85281
5965 * config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases.
5966 (<avx512>_vec_dup<mode><mask_name>): Use a single pattern for modes
5967 other than V2DFmode using iptr mode attribute.
5968 (<avx512>_vec_dup<mode><mask_name>): Use iptr mode attribute.
5969
5970 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
5971
5972 PR rtl-optimization/84659
5973 * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
5974
5975 2018-04-11 Jakub Jelinek <jakub@redhat.com>
5976
5977 PR debug/85302
5978 * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
5979 SIZEP is NULL.
5980 (output_loc_list): Pass address of a dummy size variable even in the
5981 locview handling loop.
5982 (index_location_lists): Add comment on why skip_loc_list_entry can't
5983 call size_of_locs.
5984
5985 2018-04-11 Thomas Preud'homme <thomas.preudhomme@arm.com>
5986
5987 PR target/85261
5988 * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
5989 into register.
5990
5991 2018-04-10 Aaron Sawdey <acsawdey@linux.ibm.com>
5992
5993 PR target/85321
5994 * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
5995 -mblock-compare-inline-limit, -mblock-compare-inline-loop-limit,
5996 and -mstring-compare-inline-limit.
5997
5998 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
5999
6000 PR target/85287
6001 * gcc/config/rs6000/rs6000.md (allocate_stack): Put the residual size
6002 for stack clash protection in a register whenever we need it to be in
6003 a register.
6004
6005 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
6006
6007 * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
6008 Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.
6009
6010 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
6011
6012 PR target/85321
6013 * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
6014 the help text.
6015 (mlong-double-): Ditto.
6016 * config/rs6000/sysv4.opt (msdata=): Ditto.
6017 (mtls-size=): Ditto.
6018
6019 2018-04-10 Kelvin Nilsen <kelvin@gcc.gnu.org>
6020
6021 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
6022 erroneous entries for
6023 "vector int vec_ldl (int, long int *)", and
6024 "vector unsigned int vec_ldl (int, unsigned long int *)".
6025 Add comments and entries for
6026 "vector bool char vec_ldl (int, bool char *)",
6027 "vector bool short vec_ldl (int, bool short *)",
6028 "vector bool int vec_ldl (int, bool int *)",
6029 "vector bool long long vec_ldl (int, bool long long *)",
6030 "vector pixel vec_ldl (int, pixel *)",
6031 "vector long long vec_ldl (int, long long *)",
6032 "vector unsigned long long vec_ldl (int, unsigned long long *)".
6033 * config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new
6034 type tree bool_long_long_type_node and correct definition of
6035 bool_V2DI_type_node to make reference to this new type tree.
6036 (rs6000_mangle_type): Replace erroneous reference to
6037 bool_long_type_node with bool_long_long_type_node.
6038 * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
6039 comments to emphasize sign distinctions for char and int types and
6040 replace RS6000_BTI_bool_long constant with
6041 RS6000_BTI_bool_long_long constant. Also add comment to restrict
6042 use of RS6000_BTI_pixel.
6043 (bool_long_type_node): Remove this macro definition.
6044 (bool_long_long_type_node): New macro definition
6045
6046 2018-04-10 Jakub Jelinek <jakub@redhat.com>
6047
6048 PR rtl-optimization/85300
6049 * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
6050 into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if
6051 simplify_unary_operation fails.
6052
6053 2018-04-10 Martin Liska <mliska@suse.cz>
6054
6055 * gdbhooks.py: Add pretty-printers for varpool_node, symtab_node,
6056 cgraph_edge and ipa_ref.
6057
6058 2018-04-10 Jakub Jelinek <jakub@redhat.com>
6059
6060 PR target/85177
6061 PR target/85255
6062 * config/i386/sse.md
6063 (<extract_type>_vinsert<shuffletype><extract_suf>_mask): Fix
6064 computation of the VEC_MERGE selector from mask.
6065 (<extract_type>_vinsert<shuffletype><extract_suf>_1<mask_name>):
6066 Fix decoding of the VEC_MERGE selector into mask.
6067
6068 2018-04-10 Richard Sandiford <richard.sandiford@linaro.org>
6069
6070 PR tree-optimization/85286
6071 * tree-vect-data-refs.c (vect_get_smallest_scalar_type):
6072
6073 2018-04-10 Richard Sandiford <richard.sandiford@linaro.org>
6074
6075 * final.c (final_1): Set insn_last_address as well as
6076 insn_current_address.
6077
6078 2018-04-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6079
6080 PR target/85173
6081 * explow.c (emit_stack_probe): Call validize_mem on memory location
6082 before passing it to gen_probe_stack. Create address operand and
6083 legitimize it for the probe_stack_address case.
6084
6085 2018-04-09 Jan Hubicka <jh@suse.cz>
6086
6087 PR lto/85078
6088 * ipa-devirt.c (rebuild_type_inheritance-hash): New.
6089 * ipa-utils.h (rebuild_type_inheritance-hash): Declare.
6090 * tree.c (free_lang_data_in_type): Fix handling of binfos;
6091 walk basetypes.
6092 (free_lang_data): Rebuild type inheritance graph.
6093
6094 2018-04-09 Martin Sebor <msebor@redhat.com>
6095
6096 * invoke.texi (-finline-small-functions): Mention other optimization
6097 options.
6098 (-findirect-inlining, -fpartial-inlining): Same.
6099 (-finline-functions-called-once): Same.
6100 (-freorder-blocks-and-partition): Same.
6101
6102 2018-04-09 Jan Hubicka <jh@suse.cz>
6103
6104 PR rtl/84058
6105 * cfgcleanup.c (try_forward_edges): Do not give up on crossing
6106 jumps; choose last target that matches the criteria (i.e.
6107 no partition changes for non-crossing jumps).
6108 * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic
6109 support for redirecting crossing jumps to non-crossing.
6110
6111 2018-04-09 Alexey Brodkin <abrodkin@synopsys.com>
6112
6113 * config/arc/arc.c (arc_expand_prologue): Set stack usage info
6114 also for naked functions.
6115
6116 2018-04-09 Claudiu Zissulescu <claziss@synopsys.com>
6117
6118 * config/arc/arc.md (add_shift): New pattern.
6119 (add_shift2): Likewise.
6120 (sub_shift): Likewise.
6121 (sub_shift_cmp0_noout): Likewise.
6122 (compare_si_ashiftsi): Likewise.
6123 (xbfu_cmp0_noout): New combine pattern.
6124 (xbfu_cmp0"): Likewise.
6125 (movsi_set_cc_insn): Place the predicable variant first.
6126 (commutative_binary_cmp0_noout): Remove clobber.
6127 (commutative_binary_cmp0): New pattern.
6128 (noncommutative_binary_cmp0): Likewise.
6129 (noncommutative_binary_cmp0_noout): Likewise.
6130 (noncommutative_binary_comparison_result_used): Removed.
6131 (rsub_cmp0): New pattern.
6132 (rsub_cmp0_noout): Likewise.
6133 (extzvsi): Changed, keep only meaningful variants.
6134 (SQH, SEZ): New iterators.
6135 (SQH_postfix): New mode attribute.
6136 (SEZ_prefix): New code attribute.
6137 (<SEZ_prefix>xt<SQH_postfix>_cmp0_noout): New instruction pattern.
6138 (<SEZ_prefix>xt<SQH_postfix>_cmp0): Likewise.
6139 * config/arc/predicates.md (cc_set_register): Use CC_REG instead
6140 of numerical value.
6141 (noncommutative_operator): Check the availability of barrel
6142 shifter option.
6143
6144 2018-04-09 Richard Biener <rguenther@suse.de>
6145
6146 PR tree-optimization/85284
6147 * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
6148 Only use the niter constraining form of simple_iv when the exit
6149 is always executed.
6150
6151 2018-04-09 Tom de Vries <tom@codesourcery.com>
6152
6153 PR target/84041
6154 * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
6155 (define_expand "*memory_barrier"): New define_expand.
6156 (define_insn "memory_barrier"): New insn.
6157
6158 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
6159
6160 PR rtl-optimization/80463
6161 PR rtl-optimization/83972
6162 PR rtl-optimization/83480
6163
6164 * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
6165 correct producer for the insn.
6166 (tidy_control_flow): Fixup seqnos in case of debug insns.
6167
6168 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
6169
6170 PR rtl-optimization/83913
6171
6172 * sel-sched-ir.c (merge_expr_data): Choose the middle between two
6173 different sched-times when merging exprs.
6174
6175 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
6176
6177 PR rtl-optimization/83962
6178
6179 * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
6180 tidy_fallthru_edge and tidy_control_flow.
6181
6182 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
6183
6184 PR rtl-optimization/83530
6185
6186 * sel-sched.c (force_next_insn): New global variable.
6187 (remove_insn_for_debug): When force_next_insn is true, also leave only
6188 next insn in the ready list.
6189 (sel_sched_region): When the region wasn't scheduled, make another pass
6190 over it with force_next_insn set to 1.
6191
6192 2018-04-08 Monk Chiang <sh.chiang04@gmail.com>
6193
6194 * config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
6195 into tm_file.
6196 * config/nds32/constants.md (unspec_volatile_element): Add enum values
6197 for interrupt control.
6198 * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
6199 functions for interrupt control.
6200 * config/nds32/nds32-intrinsic.md: Likewise.
6201 * config/nds32/nds32_intrinsic.h: Likewise.
6202 * config/nds32/nds32.h (nds32_builtins): Likewise.
6203
6204 2018-04-08 Chung-Ju Wu <jasonwucj@gmail.com>
6205
6206 * config/nds32/nds32.c (nds32_init_machine_status,
6207 nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
6208 strict_aligned_p field.
6209 (nds32_expand_to_rtl_hook): New function.
6210 (TARGET_EXPAND_TO_RTL_HOOK): Define.
6211 * config/nds32/nds32.h (machine_function): Add strict_aligned_p field.
6212
6213 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
6214 Chung-Ju Wu <jasonwucj@gmail.com>
6215
6216 * config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
6217 * config/nds32/nds32-n7.md: New file.
6218 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
6219 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
6220 pipeline.
6221 * config/nds32/nds32-protos.h: More declarations for n7 pipeline.
6222 * config/nds32/nds32.md (pipeline_model): Add n7.
6223 * config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
6224 * config/nds32/pipelines.md: Include n7 settings.
6225
6226 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
6227 Chung-Ju Wu <jasonwucj@gmail.com>
6228
6229 * config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
6230 * config/nds32/nds32-e8.md: New file.
6231 * config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
6232 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
6233 pipeline.
6234 * config/nds32/nds32-protos.h: More declarations for e8 pipeline.
6235 * config/nds32/nds32.md (pipeline_model): Add e8.
6236 * config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
6237 * config/nds32/pipelines.md: Include e8 settings.
6238
6239 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
6240 Chung-Ju Wu <jasonwucj@gmail.com>
6241
6242 * config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
6243 * config/nds32/nds32-n8.md: New file.
6244 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
6245 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
6246 pipeline.
6247 * config/nds32/nds32-protos.h: More declarations for n8 pipeline.
6248 * config/nds32/nds32-utils.c: More implementations for n8 pipeline.
6249 * config/nds32/nds32.md (pipeline_model): Add n8.
6250 * config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
6251 * config/nds32/pipelines.md: Include n8 settings.
6252
6253 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
6254 Chung-Ju Wu <jasonwucj@gmail.com>
6255
6256 * config.gcc (nds32*): Add nds32-utils.o into extra_objs.
6257 * config/nds32/nds32-n9-2r1w.md: New file.
6258 * config/nds32/nds32-n9-3r2w.md: New file.
6259 * config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
6260 nds32_register_ports): New or modify for cpu n9.
6261 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
6262 pipeline.
6263 * config/nds32/nds32-protos.h: More declarations for n9 pipeline.
6264 * config/nds32/nds32-utils.c: New file.
6265 * config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE,
6266 TARGET_MUL_SLOW): Define.
6267 * config/nds32/nds32.md (pipeline_model): New attribute.
6268 * config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
6269 New options that support cpu n9.
6270 * config/nds32/pipelines.md: Include n9 settings.
6271 * config/nds32/t-nds32 (nds32-utils.o): Add dependency.
6272
6273 2018-04-08 Chung-Ju Wu <jasonwucj@gmail.com>
6274
6275 * config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
6276 information if necessary.
6277 (output_cond_branch_compare_zero): Likewise.
6278 * config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
6279 (nds32_target_alignment): Refine for alignment.
6280 * config/nds32/nds32.h (NDS32_ALIGN_P): Define.
6281 (FUNCTION_BOUNDARY): Modify.
6282 * config/nds32/nds32.md (call_internal, call_value_internal): Consider
6283 align case.
6284 * config/nds32/nds32.opt (malways-align, malign-functions): New.
6285
6286 2018-04-08 Monk Chiang <sh.chiang04@gmail.com>
6287
6288 * config/nds32/constants.md (unspec_volatile_element): Add values for
6289 TLB operation and data prefetch.
6290 * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
6291 functions for TLB operation and data prefetch.
6292 * config/nds32/nds32-intrinsic.md: Likewise.
6293 * config/nds32/nds32_intrinsic.h: Likewise.
6294 * config/nds32/nds32.c (nds32_dpref_names): Likewise.
6295 (nds32_print_operand): Likewise.
6296 * config/nds32/nds32.h (nds32_builtins): Likewise.
6297
6298 2018-04-07 Thomas Koenig <tkoenig@gcc.gnu.org>
6299 Andrew Pinski <pinsika@gcc.gnu.org>
6300
6301 PR middle-end/82976
6302 * match.pd: Use constant_boolean_node of correct type instead of
6303 boolean_true_node or boolean_false_node for simplifying
6304 pointer comparisons to zero.
6305
6306 2018-04-07 Jakub Jelinek <jakub@redhat.com>
6307
6308 PR tree-optimization/80021
6309 * tree.c (verify_type_variant): Make error call in verify_variant_match
6310 translatable and remove final full stop.
6311
6312 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
6313
6314 * config/nds32/constants.md (unspec_volatile_element): Add
6315 UNSPEC_VOLATILE_EH_RETURN.
6316 * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
6317 nds32_output_stack_pop): Support dwarf exception handling process.
6318 * config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
6319 * config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
6320 exception handling process.
6321 (nds32_compute_stack_frame): Likewise.
6322 (nds32_return_addr_rtx): Likewise.
6323 (nds32_initial_elimination_offset): Likewise.
6324 (nds32_expand_prologue): Likewise.
6325 (nds32_expand_epilogue): Likewise.
6326 (nds32_dynamic_chain_address): New function.
6327 * config/nds32/nds32.h (machine_function): Add fields for dwarf
6328 exception handling.
6329 (DYNAMIC_CHAIN_ADDRESS): Define.
6330 (EH_RETURN_DATA_REGNO): Define.
6331 (EH_RETURN_STACKADJ_RTX): Define.
6332 * config/nds32/nds32.md (eh_return, nds32_eh_return): Implement
6333 patterns for dwarf exception handling.
6334
6335 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
6336
6337 * config/nds32/nds32.h: Clean up obsolete macros.
6338
6339 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
6340
6341 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
6342 Add enum values for particular instructions.
6343 * config/nds32/nds32-intrinsic.c: Implementation of expanding
6344 particular intrinsic functions.
6345 * config/nds32/nds32-intrinsic.md: Likewise.
6346 * config/nds32/nds32_intrinsic.h: Likewise.
6347 * config/nds32/nds32.h (nds32_builtins): Likewise.
6348 * config/nds32/nds32.md (type): Add pbsad and pbsada.
6349 (btst, ave): New patterns for particular instructions.
6350
6351 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
6352
6353 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
6354 Add enum values for atomic load/store and memory sync.
6355 * config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
6356 and memory sync.
6357 * config/nds32/nds32-intrinsic.md: Likewise.
6358 * config/nds32/nds32_intrinsic.h: Likewise.
6359 * config/nds32/nds32.h (nds32_builtins): Likewise.
6360
6361 2018-04-07 Jakub Jelinek <jakub@redhat.com>
6362
6363 PR tree-optimization/85257
6364 * fold-const.c (native_encode_vector): If not all elts could fit
6365 and off is -1, return 0 rather than offset.
6366 * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
6367 (offseti - offset2) / BITS_PER_UNIT as 4th argument to
6368 native_encode_expr. Verify len * BITS_PER_UNIT >= maxsizei. Don't
6369 adjust buffer in native_interpret_expr call.
6370
6371 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
6372
6373 * config/nds32/constants.md (unspec_volatile_element): Add cache
6374 control enum values.
6375 * config/nds32/nds32-intrinsic.c: Add cache control expand functions.
6376 * config/nds32/nds32-intrinsic.md: Add cache control patterns.
6377 * config/nds32/nds32.c (nds32_cctl_names): New.
6378 (nds32_print_operand): Handle cache control register names.
6379 * config/nds32/nds32.h (nds32_builtins): New enum values.
6380 * config/nds32/nds32_intrinsic.h: Add cache control enum types and
6381 macros.
6382 * config/nds32/nds32.md (type): Add mmu.
6383 * config/nds32/pipelines.md (simple_insn): Add mmu.
6384
6385 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
6386
6387 * config/nds32/nds32.md (type): Remove call.
6388 * config/nds32/pipelines.md (simple_insn): Likewise.
6389
6390 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
6391
6392 * config/nds32/constants.md (unspec_volatile_element): Add
6393 UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and
6394 UNSPEC_VOLATILE_FMFCFG.
6395 * config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
6396 description for fmfcfg and fmfcsr.
6397 (bdesc_1arg): Add fmtcsr.
6398 (bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
6399 (nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
6400 * config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd,
6401 unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
6402 unspec_fmfcfg): New patterns.
6403 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
6404 NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS,
6405 NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD.
6406 * config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
6407 __nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
6408 __nds32__fmfcfg): Define.
6409
6410 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
6411
6412 * config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
6413 intrinsic register names.
6414 * config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
6415 intrinsic register enum values and macros.
6416
6417 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
6418
6419 * config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
6420 for load/store addressing form.
6421 (nds32_print_operand_address): Likewise.
6422
6423 2018-04-06 Eric Botcazou <ebotcazou@adacore.com>
6424
6425 PR target/85196
6426 * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
6427 based on LABEL_REF. Remove useless assertion.
6428 (pic_address_needs_scratch): Fix formatting.
6429 (sparc_legitimize_pic_address): Minor tweaks.
6430 (sparc_delegitimize_address): Adjust assertion accordingly.
6431 * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
6432 into symbolic_operand.
6433 (movsi_high_pic_label_ref): Likewise.
6434 (movsi_lo_sum_pic_label_ref): Likewise.
6435 (movdi_pic_label_ref): Likewise.
6436 (movdi_high_pic_label_ref): Likewise.
6437 (movdi_lo_sum_pic_label_ref): Likewise.
6438
6439 2018-04-06 Amaan Cheval <amaan.cheval@gmail.com>
6440
6441 * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
6442 custom LIB_SPEC setup.
6443
6444 2018-04-06 Ruslan Bukin <br@bsdpad.com>
6445 Kito Cheng <kito.cheng@gmail.com>
6446
6447 * config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
6448 * config/riscv/freebsd.h: New.
6449
6450 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
6451
6452 * config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
6453 * config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
6454 file.
6455
6456 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
6457 Kito Cheng <kito.cheng@gmail.com>
6458
6459 * config/nds32/nds32-md-auxiliary.c (nds32_output_return,
6460 nds32_output_call, nds32_symbol_binds_local_p): New functions.
6461 * config/nds32/nds32-protos.h (nds32_output_call,
6462 nds32_output_return): Declare.
6463 * config/nds32/nds32.md: Refine all the call and return patterns.
6464
6465 2018-04-06 Jakub Jelinek <jakub@redhat.com>
6466
6467 PR debug/85252
6468 * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
6469 build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.
6470
6471 PR rtl-optimization/84872
6472 * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
6473 nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
6474 EDGE_CROSSING edge.
6475
6476 2018-04-06 Tamar Christina <tamar.christina@arm.com>
6477
6478 * expr.c (copy_blkmode_to_reg): Revert 254862.
6479 * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise.
6480
6481 2018-04-06 Richard Biener <rguenther@suse.de>
6482
6483 PR middle-end/85244
6484 * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
6485 after seeing a component reference with an adjacent field. Treat
6486 refs to arrays at struct end of external decls similar to
6487 refs to unconstrained commons.
6488
6489 2018-04-06 Jakub Jelinek <jakub@redhat.com>
6490
6491 PR sanitizer/85213
6492 * fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
6493 look through SAVE_EXPRs with non-side-effects argument. Adjust
6494 recursive calls.
6495 (fold_comparison): Adjust twoval_comparison_p caller, don't handle
6496 save_p here.
6497
6498 2018-04-06 Richard Biener <rguenther@suse.de>
6499
6500 PR middle-end/85180
6501 * alias.c (find_base_term): New wrapper around find_base_term
6502 unwinding CSELIB_VAL_PTR changes.
6503 (find_base_term): Do not restore CSELIB_VAL_PTR during the
6504 recursion.
6505
6506 2018-04-06 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
6507
6508 * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
6509 instructions.
6510 * config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
6511 constant definitions.
6512 ("nop"): lr 0,0 -> nopr r0
6513 ("nop_lr0", "nop_lr1"): New insn definitions.
6514
6515 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
6516
6517 * config/nds32/nds32.md (*stack_push, *stack_pop): Use
6518 NDS32_V3PUSH_AVAILABLE_P macro.
6519
6520 2018-04-06 Monk Chiang <sh.chiang04@gmail.com>
6521 Chung-Ju Wu <jasonwucj@gmail.com>
6522
6523 * config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
6524 (nds32*-*-*): Add float and fpu_config into supported_defaults.
6525 * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
6526 Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA.
6527 * config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN,
6528 UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS.
6529 * config/nds32/constraints.md: New constraints and checking for hard
6530 float configuration.
6531 * config/nds32/iterators.md: New mode iterator and attribute for hard
6532 float configuration.
6533 * config/nds32/nds32-doubleword.md: Use hard float alternatives and
6534 patterns.
6535 * config/nds32/nds32-fpu.md: New file.
6536 * config/nds32/nds32-md-auxiliary.c: New functions and checkings to
6537 deal with hard float code generation.
6538 * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
6539 ARCH_V3S.
6540 (abi_type, float_reg_number): New enum type.
6541 * config/nds32/nds32-predicates.c: New predicates for hard float.
6542 * config/nds32/nds32-protos.h: Declare functions for hard float.
6543 * config/nds32/nds32.c: Implementation for hard float configuration.
6544 * config/nds32/nds32.h: Definitions for hard float configuration.
6545 * config/nds32/nds32.md: Include hard float machine description and
6546 modify patterns for hard float configuration.
6547 * config/nds32/nds32.opt: New options for hard float configuration.
6548 * config/nds32/predicates.md: New predicates for hard float
6549 configuration.
6550
6551 2018-04-06 Kuan-Lin Chen <kuanlinchentw@gmail.com>
6552
6553 * common/config/nds32/nds32-common.c
6554 (nds32_option_optimization_table): Enable -mreleax-hint by default.
6555
6556 2018-04-05 Jakub Jelinek <jakub@redhat.com>
6557
6558 PR middle-end/85195
6559 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
6560 CONSTRUCTOR_ELT (ctor, ...)->value.
6561
6562 2018-04-05 Uros Bizjak <ubizjak@gmail.com>
6563
6564 PR target/85193
6565 * config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
6566
6567 2018-04-05 Tom de Vries <tom@codesourcery.com>
6568
6569 PR target/85204
6570 * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
6571 cond jump.
6572
6573 2018-04-05 Shiva Chen <shiva0217@gmail.com>
6574 Kito Cheng <kito.cheng@gmail.com>
6575
6576 * config/nds32/constraints.md (U33): Fine-tune checking condition.
6577 * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
6578 * config/nds32/nds32.h (nds32_16bit_address_type): Add
6579 ADDRESS_POST_MODIFY_LO_REG_IMM3U.
6580
6581 2018-04-05 Shiva Chen <shiva0217@gmail.com>
6582 Kito Cheng <kito.cheng@gmail.com>
6583
6584 * config/nds32/constraints.md (Ufe): New memory constraint.
6585 * config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
6586 nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
6587 * config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
6588 operands.
6589 * config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
6590 * config/nds32/nds32.md (*mov<mode>): Adjust pattern.
6591
6592 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
6593
6594 * config/nds32/nds32.md: Use optimize_size in the condition for
6595 alu-shift instructions.
6596
6597 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
6598
6599 * config/nds32/nds32.md (divsi4, udivsi4): New patterns.
6600
6601 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
6602
6603 * config/nds32/nds32.md (negsi2): Refine pattern.
6604
6605 2018-04-05 Kito Cheng <kito.cheng@gmail.com>
6606 Chung-Ju Wu <jasonwucj@gmail.com>
6607
6608 * config/nds32/iterators.md (shift_rotate): New code iterator.
6609 (shift): New code attribute.
6610 * config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
6611 * config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
6612 * config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
6613 * config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for
6614 bit-wise operations.
6615 (andsi3, *andsi3): Ditto.
6616 (iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
6617 (xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
6618 (<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
6619 * config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand,
6620 nds32_ior_operand, nds32_xor_operand): New predicates.
6621
6622 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
6623
6624 * config/nds32/nds32.md (add<mode>3, sub<mode>3): Rename to ...
6625 (addsi3, subsi3): ... this.
6626
6627 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
6628
6629 * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator.
6630
6631 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
6632
6633 * config/nds32/nds32.md: Adjust indention.
6634
6635 2018-04-05 Kito Cheng <kito.cheng@gmail.com>
6636
6637 * config/nds32/nds32.md (feature): New attribute.
6638
6639 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
6640
6641 * config/nds32/nds32.md (subtype): New attribute.
6642
6643 2018-04-04 Thomas Preud'homme <thomas.preudhomme@arm.com>
6644
6645 PR target/85203
6646 * config/arm/arm-builtins.c (arm_expand_builtin): Change
6647 expansion to perform a bitwise AND of the argument followed by a
6648 boolean negation of the result.
6649
6650 2018-04-04 Peter Bergner <bergner@vnet.ibm.com>
6651
6652 PR rtl-optimization/84878
6653 * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
6654 the basic block. Assert the use reference is not artificial and that
6655 it has an associated insn.
6656
6657 2018-04-04 Michael Matz <matz@suse.de>
6658
6659 * builtins.c (compute_objsize): Pass correct operand
6660 to array_at_struct_end_p.
6661
6662 2018-04-04 Richard Biener <rguenther@suse.de>
6663
6664 PR lto/85176
6665 * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces
6666 from contexts for DINFO_LEVEL_TERSE and below.
6667
6668 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
6669
6670 * config/nds32/nds32-doubleword.md (move_<mode>): Require
6671 resiter_operand condition.
6672 * config/nds32/nds32.md (*move<mode>): Ditto.
6673
6674 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
6675 Monk Chiang <sh.chiang04@gmail.com>
6676
6677 * config/nds32/nds32.md (movmisalign<mode>): New pattern.
6678
6679 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
6680
6681 * config/nds32/nds32.md (movqi, movhi): Merge into mov<mode>.
6682
6683 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
6684 Kito Cheng <kito.cheng@gmail.com>
6685
6686 * config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code,
6687 nds32_cond_code_str, output_cond_branch,
6688 output_cond_branch_compare_zero, nds32_expand_cbranch,
6689 nds32_expand_cstore, nds32_expand_movcc,
6690 nds32_output_cbranchsi4_equality_zero,
6691 nds32_output_cbranchsi4_equality_reg,
6692 nds32_output_cbranchsi4_equality_reg_or_const_int,
6693 nds32_output_cbranchsi4_greater_less_zero: New functions.
6694 * config/nds32/nds32-protos.h (nds32_expand_cbranch,
6695 nds32_expand_cstore, nds32_expand_movcc,
6696 nds32_output_cbranchsi4_equality_zero,
6697 nds32_output_cbranchsi4_equality_reg,
6698 nds32_output_cbranchsi4_equality_reg_or_const_int,
6699 nds32_output_cbranchsi4_greater_less_zero): Declare.
6700 * config/nds32/predicates.md (nds32_movecc_comparison_operator,
6701 nds32_rimm11s_operand): New predicates.
6702 * config/nds32/nds32.h (nds32_expand_result_type): New enum type.
6703 * config/nds32/nds32.md: Rewrite all the branch and conditional move
6704 patterns.
6705
6706 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
6707
6708 * config/nds32/nds32-doubleword.md: Refine all the instruction type.
6709 * config/nds32/nds32.md: Ditto.
6710 * config/nds32/pipelines.md: Ditto.
6711
6712 2018-04-04 Richard Biener <rguenther@suse.de>
6713
6714 PR tree-optimization/85168
6715 * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
6716 propagating abnormals.
6717
6718 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
6719
6720 * config/nds32/nds32.md (enabled): Use yes/no for this attribute.
6721
6722 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
6723 Kito Cheng <kito.cheng@gmail.com>
6724
6725 * config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function.
6726 * config/nds32/nds32-protos.h (nds32_long_call_p): Declare.
6727 * config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function.
6728 (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
6729 * config/nds32/nds32.md (sibcall_internal): New.
6730 (sibcall_register): Remove.
6731 (sibcall_immediate): Remove.
6732 (sibcall_value_internal): New.
6733 (sibcall_value_register): Remove.
6734 (sibcall_value_immediate): Remove.
6735 * config/nds32/predicates.md (nds32_general_register_operand): New.
6736 (nds32_call_address_operand): New.
6737
6738 2018-04-03 Jakub Jelinek <jakub@redhat.com>
6739
6740 PR rtl-optimization/85167
6741 * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
6742 bb_defs if *split_p, instead preinitialize it to NULL.
6743
6744 PR tree-optimization/85156
6745 * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
6746 evaluating the argument multiple times.
6747
6748 2018-04-03 Bill Schmidt <wschmidt@linux.ibm.com>
6749
6750 * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
6751 than vector.
6752 (_mm_cvtpd_ps): Likewise.
6753 (_mm_cvttpd_epi32): Likewise.
6754 * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
6755 * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
6756 vector, pixel, and bool following altivec.h include.
6757
6758 2018-04-03 Martin Sebor <msebor@redhat.com>
6759
6760 * doc/extend.texi (Common Function Attributes): Clarify.
6761 (const attribute): Likewise.
6762 (pure attribute): Likewise.
6763
6764 2018-04-03 Jakub Jelinek <jakub@redhat.com>
6765
6766 PR target/85169
6767 * config/i386/i386.c (ix86_expand_vector_set): Use
6768 HOST_WIDE_INT_1U << elt instead of 1 << elt. Formatting fix.
6769
6770 2018-04-03 Uros Bizjak <ubizjak@gmail.com>
6771
6772 * config/i386/i386.c (emit_i387_cw_initialization): Always use logic
6773 instructions when changing rounding bits to preserve precision bits
6774 in the x87 control word.
6775
6776 2018-04-03 Martin Liska <mliska@suse.cz>
6777
6778 PR tree-optimization/82491
6779 * rtl.h (strip_offset_and_add): Replace += suboffset with
6780 poly_uint64 () + suboffset.
6781
6782 2018-03-29 Martin Liska <mliska@suse.cz>
6783 Martin Jambor <mjambor@suse.cz>
6784
6785 PR ipa/84947
6786 * ipa-cp.c (propagate_bits_across_jump_function): Bail out if
6787 param_type is not an integral or pointer type.
6788
6789 2018-04-03 Richard Biener <rguenther@suse.de>
6790
6791 * sese.h (recompute_all_dominators): Remove.
6792
6793 2018-04-02 Martin Sebor <msebor@redhat.com>
6794
6795 * doc/invoke.texi (-Wrestrict): Fix typos.
6796
6797 2018-04-02 Jim Wilson <jimw@sifive.com>
6798
6799 * config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero.
6800 * config/riscv/riscv.md (<optab>si3): Use QImode shift count.
6801 (<optab>di3, <optab>si3_extend): Likewise.
6802 (<optab>si3_mask, <optab>si3_mask_1): New.
6803 (<optab>di3_mask, <optab>di3_mask_1): New.
6804 (<optab>si3_extend_mask, <optab>si3_extend_mask_1): New.
6805 (lshrsi3_zero_extend_1): Use VOIDmode shift count.
6806 * config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count.
6807
6808 2018-04-02 Gerald Pfeifer <gerald@pfeifer.com>
6809
6810 * doc/cpp.texi (Variadic Macros): Fix line continuation in an
6811 example.
6812
6813 2018-04-02 Chung-Ju Wu <jasonwucj@gmail.com>
6814
6815 * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define.
6816 (nds32_canonicalize_comparison): New function.
6817
6818 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
6819 Kito Cheng <kito.cheng@gmail.com>
6820 Kuan-Lin Chen <kuanlinchentw@gmail.com>
6821
6822 * config.gcc (nds32): Add nds32-relax-opt.o into extra_objs.
6823 * config/nds32/constants.md (unspec_volatile_element): Add
6824 UNSPEC_VOLATILE_RELAX_GROUP.
6825 * config/nds32/nds32-relax-opt.c: New file.
6826 * config/nds32/nds32-predicates.c
6827 (nds32_symbol_load_store_p): New function.
6828 * config/nds32/nds32-protos.h
6829 (nds32_symbol_load_store_p): Declare function.
6830 (make_pass_nds32_relax_opt): Declare new rtl pass function.
6831 * config/nds32/nds32.c
6832 (nds32_register_pass): New function to register pass.
6833 (nds32_register_passes): New function to register passes.
6834 * config/nds32/nds32.md (relax_group): New pattern.
6835 * config/nds32/nds32.opt (mrelax-hint): New option.
6836 * config/nds32/t-nds32 (nds32-relax-opt.o): New dependency.
6837
6838 2018-04-01 Kito Cheng <kito.cheng@gmail.com>
6839
6840 * config/nds32/t-nds32: Modify files dependency.
6841
6842 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
6843
6844 * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character.
6845 (PROFILE_HOOK): Define its implementation.
6846
6847 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
6848
6849 * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int
6850 type and 32-bit size.
6851
6852 2018-04-01 Jakub Jelinek <jakub@redhat.com>
6853
6854 PR middle-end/85090
6855 * config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F.
6856 (V_128_256): New mode iterator.
6857 (*avx512dq_vextract<shuffletype>64x2_1 splitter): New define_split.
6858 (*avx512f_vextract<shuffletype>32x4_1 splitter): Likewise.
6859 (xop_pcmov_<mode><avxsizesuffix>): Use V_128_256 mode iterator instead
6860 of V.
6861 * config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and
6862 V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F.
6863
6864 2018-03-31 Segher Boessenkool <segher@kernel.crashing.org>
6865
6866 PR target/83315
6867 * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet)
6868 NaN inputs correctly.
6869
6870 2018-03-30 Peter Bergner <bergner@vnet.ibm.com>
6871
6872 PR target/80546
6873 * config/rs6000/vsx.md (??r): New mode attribute.
6874 (*vsx_mov<mode>_64bit): Use it.
6875 (*vsx_mov<mode>_32bit): Likewise.
6876
6877 2018-03-30 Martin Sebor <msebor@redhat.com>
6878
6879 PR tree-optimization/84818
6880 * builtins.c (check_access): Use warning_n.
6881
6882 2018-03-30 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
6883
6884 PR target/83822
6885 * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
6886 condition.
6887 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
6888 condition.
6889
6890 2018-03-30 Julia Koval <julia.koval@intel.com>
6891
6892 PR target/84413
6893 * x86-tune.def (movx, partial_reg_dependency): Enable for
6894 m_SKYLAKE_AVX512.
6895
6896 2018-03-29 Vladimir Makarov <vmakarov@redhat.com>
6897
6898 PR inline-asm/84985
6899 * lra-constraints.c (process_alt_operands): Move setting
6900 this_alternative_matches below.
6901
6902 2018-03-29 Martin Liska <mliska@suse.cz>
6903
6904 PR lto/84995.
6905 * doc/invoke.texi: Document how LTO works with debug info.
6906 Describe auto-load support of binutils. Mention 'x86-64'
6907 as valid option value of -march option.
6908
6909 2018-03-29 Jakub Jelinek <jakub@redhat.com>
6910
6911 * config/i386/sse.md (<avx512>_blendm<mode>): Use <sseintprefix>.
6912
6913 PR c/85094
6914 * fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
6915 For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe
6916 OEP_NO_HASH_CHECK for recursive call, to avoid exponential
6917 checking.
6918
6919 2018-03-28 Peter Bergner <bergner@vnet.ibm.com>
6920
6921 PR target/84912
6922 * config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define.
6923 (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64.
6924 * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support
6925 for RS6000_BTM_POWERPC64.
6926 (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
6927 (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
6928 * config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro
6929 definition.
6930 (DIVDE): Use it.
6931 (DIVDEU): Likewise.
6932
6933 2018-03-28 Carl Love <cel@us.ibm.com>
6934
6935 Revert
6936 2017-09-27 Carl Love <cel@us.ibm.com>
6937
6938 * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
6939 (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
6940 * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
6941 fctiw instruction.
6942
6943 2018-03-28 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
6944
6945 * config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
6946 instead of __vector bool.
6947 (_mm_max_pu8): Likewise.
6948 (_mm_min_pi16): Likewise.
6949
6950 2018-03-28 Peter Bergner <bergner@vnet.ibm.com>
6951
6952 PR target/84912
6953 * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
6954 (DIVWEUO): Likewise.
6955 (DIVDEO): Likewise.
6956 (DIVDEUO): Likewise.
6957 * config/rs6000/rs6000.c (builtin_function_type): Remove support for
6958 DIVWEUO and DIVDEUO.
6959 * config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
6960 (UNSPEC_DIV_EXTEND): Remove deleted unspecs.
6961 (div_extend): Likewise.
6962 * doc/extend.texi (__builtin_divweo): Remove documentation for deleted
6963 builtin function.
6964 (__builtin_divweuo): Likewise.
6965 (__builtin_divdeo): Likewise.
6966 (__builtin_divdeuo): Likewise.
6967
6968 2018-03-28 Jakub Jelinek <jakub@redhat.com>
6969
6970 PR target/85095
6971 * config/i386/i386.md (*add<mode>3_carry_0, *addsi3_carry_zext_0,
6972 *sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
6973
6974 PR tree-optimization/82004
6975 * gimple-match-head.c (optimize_pow_to_exp): New function.
6976 * match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
6977 Don't fold to exp if optimize_pow_to_exp is false.
6978
6979 2018-03-28 Martin Liska <mliska@suse.cz>
6980
6981 PR other/84819
6982 * calls.c (initialize_argument_information): Fix trailing space.
6983 * common.opt: Fix typo and provide better explanation for
6984 -fsanitize-coverage option.
6985 * config/i386/i386.opt: Fix typo.
6986
6987 2018-03-28 Jakub Jelinek <jakub@redhat.com>
6988 Martin Liska <mliska@suse.cz>
6989
6990 PR sanitizer/85081
6991 * gimplify.c (asan_poison_variable): Don't do the check for
6992 gimplify_omp_ctxp here.
6993 (gimplify_decl_expr): Do it here.
6994 (gimplify_target_expr): Likewise.
6995
6996 2018-03-28 Martin Liska <mliska@suse.cz>
6997
6998 PR target/84988
6999 * config/i386/i386.c (ix86_function_arg_advance): Do not call
7000 chkp_type_bounds_count if MPX is not enabled.
7001
7002 2018-03-27 Chung-Ju Wu <jasonwucj@gmail.com>
7003
7004 * config/nds32/nds32.h (BRANCH_COST): Adjust cost.
7005
7006 2018-03-27 Michael Meissner <meissner@linux.vnet.ibm.com>
7007
7008 PR target/84914
7009 * config/rs6000/rs6000.c (create_complex_muldiv): New helper
7010 function to create the function decl for complex long double
7011 multiply and divide for -mabi=ieeelongdouble.
7012 (init_float128_ieee): Call it.
7013
7014 2018-03-27 H.J. Lu <hongjiu.lu@intel.com>
7015
7016 PR target/85044
7017 * config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for
7018 -fcf-protection=branch -mibt.
7019 * config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes.
7020
7021 2018-03-27 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
7022
7023 PR target/81863
7024 * config/arm/arm.c (arm_valid_symbolic_address): Handle
7025 arm_word_relocations.
7026
7027 2018-03-27 Cesar Philippidis <cesar@codesourcery.com>
7028
7029 PR target/85056
7030 * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
7031 extern array declarations.
7032
7033 2018-03-27 Richard Biener <rguenther@suse.de>
7034
7035 PR middle-end/84067
7036 * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with
7037 explicit single_use checks.
7038
7039 2018-03-27 Richard Biener <rguenther@suse.de>
7040
7041 PR tree-optimization/85082
7042 * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces):
7043 Valueize the VUSE.
7044
7045 2018-03-27 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
7046
7047 * config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES
7048 * common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]):
7049 Turn on fasynchronous-unwind-tables and funwind-tables.
7050
7051 2018-03-26 Uros Bizjak <ubizjak@gmail.com>
7052
7053 PR target/85073
7054 * config/i386/i386.md (*bmi_blsr_<mode>_cmp): New insn pattern.
7055 (*bmi_blsr_<mode>_ccz): Ditto.
7056
7057 2018-03-26 Tom de Vries <tom@codesourcery.com>
7058
7059 PR tree-optimization/85063
7060 * omp-general.c (offloading_function_p): New function. Factor out
7061 of ...
7062 * omp-offload.c (pass_omp_target_link::gate): ... here.
7063 * omp-general.h (offloading_function_p): Declare.
7064 * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable
7065 with attribute omp declare target for offloading functions.
7066
7067 2018-03-24 Richard Sandiford <richard.sandiford@linaro.org>
7068
7069 PR tree-optimization/84005
7070 * tree-data-ref.h (get_base_for_alignment): Declare.
7071 * tree-data-ref.c (get_base_for_alignment_1): New function.
7072 (get_base_for_alignment): Likewise.
7073 * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
7074 get_base_for_alignment to find a suitable base object, instead
7075 of always using drb->base_address.
7076
7077 2018-03-23 Jakub Jelinek <jakub@redhat.com>
7078
7079 PR inline-asm/85022
7080 * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
7081 known size by default.
7082
7083 2018-03-23 Vladimir Makarov <vmakarov@redhat.com>
7084
7085 PR inline-asm/85030
7086 * lra-constraints.c (process_alt_operands): Don't match BLKmode
7087 and non BLKmode operands.
7088
7089 2018-03-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7090
7091 PR target/85026
7092 * config/arm/arm.md (unaligned_loadhis): Remove first alternative.
7093 Clean up attributes.
7094
7095 2018-03-23 Richard Biener <rguenther@suse.de>
7096
7097 PR debug/85020
7098 * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
7099 we are going to emit early debug for LTO.
7100
7101 2018-03-23 Jakub Jelinek <jakub@redhat.com>
7102
7103 PR inline-asm/85034
7104 * function.c (match_asm_constraints_1): Don't optimize if input
7105 doesn't satisfy general_operand predicate for output's mode.
7106
7107 PR inline-asm/85022
7108 * alias.c (write_dependence_p): Don't require for x_canonicalized
7109 non-VOIDmode if x has VOIDmode.
7110
7111 PR sanitizer/85029
7112 * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
7113 just don't try to optimize it rather than assert it never happens.
7114
7115 2018-03-22 Kelvin Nilsen <kelvin@gcc.gnu.org>
7116
7117 * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
7118 macro expansions for definition of ST_INTERNAL_<mode> and
7119 LD_INTERNAL_<mode> builtins.
7120 * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
7121 Remove prototype.
7122 * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
7123 function.
7124 (altivec_expand_st_builtin): Likewise.
7125 (altivec_expand_builtin): Remove calls to deleted functions.
7126 (rs6000_address_for_altivec): Delete this function.
7127 * config/rs6000/vector.md: Remove expands for
7128 vector_altivec_load_<mode> and vector_altivec_store_<mode>.
7129
7130 2018-03-22 Sudakshina Das <sudi.das@arm.com>
7131
7132 PR target/84826
7133 * config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
7134 * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
7135 re-computing once computed.
7136 (arm_expand_prologue): Compute machine->static_chain_stack_bytes.
7137 (arm_init_machine_status): Initialize
7138 machine->static_chain_stack_bytes.
7139
7140 2018-03-22 Kelvin Nilsen <kelvin@gcc.gnu.org>
7141
7142 PR target/84760
7143 * doc/extend.texi: Add four new prototypes for vec_ld.
7144 * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
7145 definitions for more logical presentation.
7146 * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
7147 entries for V1TI variants of __builtin_altivec_ld builtin.
7148 * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
7149 handling of V1TI variant of LVX icode pattern.
7150 (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
7151 (rs6000_gimple_fold_builtin): Likewise.
7152 (altivec_init_builtins): Add code to define
7153 __builtin_altivec_lvx_v1ti function.
7154
7155 2018-03-22 Jakub Jelinek <jakub@redhat.com>
7156
7157 PR inline-asm/84941
7158 * function.c (match_asm_constraints_1): Don't do the optimization
7159 if input isn't a REG, SUBREG, MEM or constant.
7160
7161 2018-03-22 Tom de Vries <tom@codesourcery.com>
7162
7163 PR tree-optimization/84956
7164 * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
7165 bb_has_abnormal_pred.
7166
7167 2018-03-22 Jakub Jelinek <jakub@redhat.com>
7168
7169 PR sanitizer/85018
7170 * dwarf2asm.c (dw2_output_indirect_constant_1): Set
7171 DECL_INITIAL (decl) to decl at the end.
7172 * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
7173 adjust the comment.
7174
7175 2018-03-21 Joseph Myers <joseph@codesourcery.com>
7176
7177 * doc/extend.texi (__builtin_tgmath): Document when complex
7178 integer types are treated as _Complex _Float64.
7179
7180 2018-03-21 Tom de Vries <tom@codesourcery.com>
7181
7182 * doc/extend.texi (__builtin_extend_pointer): Remove pasto.
7183
7184 2018-03-21 Jakub Jelinek <jakub@redhat.com>
7185
7186 PR tree-optimization/84960
7187 * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
7188 if it is ENTRY block, move them into single succ of ENTRY in that case.
7189
7190 2018-03-21 Richard Sandiford <richard.sandiford@linaro.org>
7191
7192 PR tree-optimization/84811
7193 * poly-int.h (poly_span_traits): Remove the T3 parameter and
7194 promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
7195 (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
7196 (known_subrange_p): Update accordingly. Cast each value involved
7197 in the size comparison, rather than casting the result of the
7198 subtraction.
7199
7200 2018-03-21 Jakub Jelinek <jakub@redhat.com>
7201
7202 PR tree-optimization/84982
7203 * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
7204 by flipping the least significant bit rather than all bits from
7205 bitpos to bitpos + bitsize - 1.
7206
7207 2018-03-21 Nathan Sidwell <nathan@acm.org>
7208
7209 * doc/extend.texi (Deprecated Features): Remove mention of
7210 long-deleted deprecations.
7211
7212 2018-03-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
7213
7214 PR jit/84288
7215 * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
7216 * configure: Regenerate.
7217
7218 2018-03-21 Tom de Vries <tom@codesourcery.com>
7219
7220 PR tree-optimization/83126
7221 * tree-parloops.c (num_phis): New function.
7222 (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
7223
7224 2018-03-21 Nathan Sidwell <nathan@acm.org>
7225
7226 * doc/extend.texi (Deprecated Features): Update deprecated flags,
7227 mention anon-struct/union members and trailing attributes.
7228
7229 2018-03-21 Bin Cheng <bin.cheng@arm.com>
7230
7231 PR tree-optimization/84969
7232 * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
7233 builtin memset partitions if they set different rhs values.
7234
7235 2018-03-21 Jakub Jelinek <jakub@redhat.com>
7236
7237 PR rtl-optimization/84989
7238 * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
7239 VEC_DUPLICATE with scalar result mode.
7240
7241 2018-03-21 Martin Liska <mliska@suse.cz>
7242
7243 PR ipa/84963
7244 * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
7245 not intended return statement.
7246
7247 2018-03-21 Martin Liska <mliska@suse.cz>
7248
7249 PR target/84988
7250 * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
7251 (chkp_find_bound_slots_1): Limit number of iterations.
7252
7253 2018-03-20 David H. Gutteridge <dhgutteridge@sympatico.ca>
7254
7255 PR target/84838
7256 * Minor grammar fixes for x86 options.
7257
7258 2018-03-20 Jakub Jelinek <jakub@redhat.com>
7259
7260 PR debug/84875
7261 * dce.c (delete_unmarked_insns): Don't remove frame related noop moves
7262 holding REG_CFA_RESTORE notes, instead turn them into a USE.
7263
7264 2018-03-20 Peter Bergner <bergner@vnet.ibm.com>
7265
7266 PR target/83789
7267 * config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
7268 (altivec_lvx_<mode>_1op): Likewise.
7269 (altivec_stvx_<mode>_2op): Likewise.
7270 (altivec_stvx_<mode>_1op): Likewise.
7271 (altivec_lvx_<VM2:mode>): New define_expand.
7272 (altivec_stvx_<VM2:mode>): Likewise.
7273 (altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
7274 (altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
7275 (altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
7276 (altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
7277 * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
7278 (rs6000_gen_lvx): Likewise.
7279 * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
7280 (altivec_expand_stv_builtin): Likewise.
7281 (altivec_expand_builtin): Likewise.
7282 * config/rs6000/vector.md: Likewise.
7283
7284 2018-03-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7285
7286 PR target/82518
7287 * config/arm/arm.c (arm_array_mode_supported_p): Return false for
7288 BYTES_BIG_ENDIAN.
7289
7290 2018-03-20 Richard Biener <rguenther@suse.de>
7291
7292 PR target/84986
7293 * config/i386/i386.c (ix86_add_stmt_cost): Only cost
7294 sign-conversions as zero, fall back to standard scalar_stmt
7295 cost for the rest.
7296
7297 2018-03-20 Martin Liska <mliska@suse.cz>
7298
7299 PR ipa/84825
7300 * predict.c (rebuild_frequencies): Handle case when we have
7301 PROFILE_ABSENT, but flag_guess_branch_prob is false.
7302
7303 2018-03-20 Jakub Jelinek <jakub@redhat.com>
7304
7305 PR target/84990
7306 * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
7307 flag_section_anchors.
7308 * varasm.c (use_blocks_for_decl_p): Remove hack for
7309 dw2_force_const_mem.
7310
7311 PR target/84845
7312 * config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
7313 to ...
7314 (*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this. If pseudos can't
7315 be created, use lowpart_subreg of operands[0] rather than operands[0]
7316 itself.
7317 (*aarch64_reg_<mode>3_minus_mask): Rename to ...
7318 (*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
7319 (*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
7320 and n constraint instead of aarch64_shift_imm_di and Usd.
7321 (*aarch64_reg_<optab>_minus<mode>3): Rename to ...
7322 (*aarch64_<optab>_reg_minus<mode>3): ... this.
7323
7324 2018-03-20 Sudakshina Das <sudi.das@arm.com>
7325
7326 PR target/82989
7327 * config/arm/neon.md (ashldi3_neon): Update ?s for constraints
7328 to favor GPR over NEON registers.
7329 (<shift>di3_neon): Likewise.
7330
7331 2018-03-20 Tom de Vries <tom@codesourcery.com>
7332
7333 PR target/84952
7334 * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
7335 (nvptx_process_pars): Emit bar.sync asap and alap.
7336
7337 2018-03-20 Tom de Vries <tom@codesourcery.com>
7338
7339 PR target/84954
7340 * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
7341 seen_label if seen_label is already set.
7342
7343 2018-03-20 Jakub Jelinek <jakub@redhat.com>
7344
7345 PR target/84945
7346 * config/i386/i386.c (fold_builtin_cpu): For features above 31
7347 use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
7348 Use 1U instead of 1. Formatting fixes.
7349
7350 PR c/84953
7351 * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
7352 instead of TREE_TYPE (s1) for the return value.
7353
7354 2018-03-19 Jakub Jelinek <jakub@redhat.com>
7355
7356 PR tree-optimization/84946
7357 * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
7358 bitsize + bitsize in poly_uint64 rather than poly_int64.
7359
7360 PR sanitizer/78651
7361 * dwarf2asm.c: Include fold-const.c.
7362 (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
7363 of decl rather than decl itself.
7364
7365 PR rtl-optimization/84643
7366 * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
7367
7368 2018-03-19 Maxim Ostapenko <m.ostapenko@samsung.com>
7369
7370 PR sanitizer/78651
7371 * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
7372 calling assemble_variable.
7373
7374 2018-03-19 Sudakshina Das <sudi.das@arm.com>
7375
7376 PR target/81647
7377 * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Modify
7378 instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
7379
7380 2018-03-19 Jim Wilson <jimw@sifive.com>
7381
7382 PR bootstrap/84856
7383 * config/riscv/riscv.c (riscv_function_arg_boundary): Use
7384 PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY.
7385 (riscv_first_stack_step): Likewise.
7386 (riscv_option_override): Use STACK_BOUNDARY instead of
7387 MIN_STACK_BOUNDARY.
7388 * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
7389 MIN_STACK_BOUNDARY.
7390 (BIGGEST_ALIGNMENT): Set to 128.
7391 (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY.
7392 (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of
7393 STACK_BOUNDARY.
7394
7395 2018-03-19 Richard Biener <rguenther@suse.de>
7396
7397 PR tree-optimization/84933
7398 * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
7399 values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
7400
7401 2018-03-19 Richard Biener <rguenther@suse.de>
7402
7403 PR tree-optimization/84859
7404 * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
7405 (cond_if_else_store_replacement): Perform sinking operation on
7406 single-store BBs regardless of MAX_STORES_TO_SINK setting.
7407 Generalize what a BB with a single eligible store is.
7408
7409 2018-03-19 Richard Biener <rguenther@suse.de>
7410
7411 PR tree-optimization/84929
7412 * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
7413 chrec_is_positive against non-chrec arg.
7414
7415 2018-03-19 Tamar Christina <tamar.christina@arm.com>
7416
7417 PR target/84711
7418 * config/arm/arm.c (arm_can_change_mode_class): revert r258554.
7419
7420 2018-03-18 Martin Liska <mliska@suse.cz>
7421
7422 PR rtl-optimization/84635
7423 * regrename.c (build_def_use): Use matches_mode only when
7424 matches >= 0.
7425
7426 2018-03-18 Richard Sandiford <richard.sandiford@linaro.org>
7427
7428 PR tree-optimization/84913
7429 * tree-vect-loop.c (vectorizable_reduction): Don't try to
7430 vectorize chains of COND_EXPRs.
7431
7432 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
7433
7434 * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
7435
7436 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
7437
7438 * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
7439
7440 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
7441
7442 * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
7443
7444 2018-03-17 Chung-Ju Wu <jasonwucj@gmail.com>
7445 Kito Cheng <kito.cheng@gmail.com>
7446
7447 * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
7448 * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
7449 (nds32_adjust_reg_alloc_order): New function.
7450 * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
7451
7452 2018-03-17 Kito Cheng <kito.cheng@gmail.com>
7453
7454 * config/nds32/nds32.c (nds32_asm_output_mi_thunk,
7455 nds32_print_operand, nds32_print_operand_address): Use
7456 HOST_WIDE_INT_PRINT_DEC instead.
7457
7458 2018-03-17 Chung-Ju Wu <jasonwucj@gmail.com>
7459
7460 * config/nds32/nds32.c (nds32_register_priority): Modify cost.
7461
7462 2018-03-17 Jakub Jelinek <jakub@redhat.com>
7463
7464 PR target/84902
7465 * config/i386/i386.c (initial_ix86_tune_features,
7466 initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
7467 unsigned long long.
7468 (set_ix86_tune_features): Change ix86_tune_mask from unsigned int
7469 to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
7470 rather than 1u << ix86_tune. Formatting fix.
7471 (ix86_option_override_internal): Change ix86_arch_mask from
7472 unsigned int to unsigned HOST_WIDE_INT, initialize to
7473 HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
7474 (ix86_function_specific_restore): Likewise.
7475
7476 2018-03-16 Jakub Jelinek <jakub@redhat.com>
7477
7478 PR target/84899
7479 * postreload.c (reload_combine_recognize_pattern): Perform
7480 INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
7481 truncate_int_for_mode the result for the destination's mode.
7482
7483 PR c/84909
7484 * hsa-gen.c (mem_type_for_type): Fix comment typo.
7485 * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
7486 Likewise.
7487 * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
7488 Likewise.
7489
7490 2018-03-16 Vladimir Makarov <vmakarov@redhat.com>
7491
7492 PR target/84876
7493 * lra-assigns.c (lra_split_hard_reg_for): Don't use
7494 regno_allocno_class_array and sorted_pseudos.
7495 * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
7496 insns where regno is used.
7497
7498 2018-03-16 Martin Liska <mliska@suse.cz>
7499
7500 PR ipa/84833
7501 * multiple_target.c (create_dispatcher_calls): Redirect
7502 reference in the symbol table.
7503
7504 2018-03-16 Martin Liska <mliska@suse.cz>
7505
7506 PR ipa/84722
7507 * multiple_target.c (create_dispatcher_calls): Redirect also
7508 an alias.
7509
7510 2018-03-16 Jakub Jelinek <jakub@redhat.com>
7511
7512 PR c++/79937
7513 PR c++/82410
7514 * tree.h (TARGET_EXPR_NO_ELIDE): Define.
7515 * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
7516 TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
7517
7518 2018-03-16 Julia Koval <julia.koval@intel.com>
7519
7520 * doc/invoke.texi (Skylake Server): Add CLWB.
7521 Cannonlake): Remove CLWB.
7522
7523 2018-03-16 Jakub Jelinek <jakub@redhat.com>
7524
7525 PR tree-optimization/84841
7526 * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
7527 1 << 3.
7528 (FLOAT_ONE_CONST_TYPE): Define.
7529 (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
7530 (sort_by_operand_rank): Put entries with higher constant_type last
7531 rather than first to match comments.
7532
7533 2018-03-15 Sandra Loosemore <sandra@codesourcery.com>
7534
7535 * config/nios2/nios2.md (movsi_internal): Fix thinko in
7536 split predicate.
7537
7538 2018-03-15 Jakub Jelinek <jakub@redhat.com>
7539
7540 PR c++/79085
7541 * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
7542 check and use address of target always.
7543
7544 2018-03-15 H.J. Lu <hongjiu.lu@intel.com>
7545
7546 PR target/84574
7547 * config/i386/i386.c (indirect_thunk_needed): Update comments.
7548 (indirect_thunk_bnd_needed): Likewise.
7549 (indirect_thunks_used): Likewise.
7550 (indirect_thunks_bnd_used): Likewise.
7551 (indirect_return_needed): New.
7552 (indirect_return_bnd_needed): Likewise.
7553 (output_indirect_thunk_function): Add a bool argument for
7554 function return.
7555 (output_indirect_thunk_function): Don't generate alias for
7556 function return thunk.
7557 (ix86_code_end): Call output_indirect_thunk_function to generate
7558 function return thunks.
7559 (ix86_output_function_return): Set indirect_return_bnd_needed
7560 and indirect_return_needed instead of indirect_thunk_bnd_needed
7561 and indirect_thunk_needed.
7562
7563 2018-03-15 Olga Makhotina <olga.makhotina@intel.com>
7564
7565 * config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
7566 (__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
7567 (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
7568
7569 2018-03-15 David Malcolm <dmalcolm@redhat.com>
7570 Paul Hua <paul.hua.gm@gmail.com>
7571
7572 PR c/84852
7573 * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
7574
7575 2018-03-15 Segher Boessenkool <segher@kernel.crashing.org>
7576
7577 * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
7578 TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
7579 resp. SFmode cases.
7580
7581 2018-03-15 Tamar Christina <tamar.christina@arm.com>
7582
7583 PR target/84711
7584 * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
7585 instead of GET_MODE_SIZE when comparing Units.
7586
7587 2018-03-15 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
7588
7589 PR target/68256
7590 * varasm.c (hash_section): Return an unchangeble hash value
7591 * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
7592 Return !aarch64_can_use_per_function_literal_pools_p ().
7593
7594 2018-03-15 Jakub Jelinek <jakub@redhat.com>
7595
7596 PR target/84860
7597 * optabs.c (emit_conditional_move): Pass address of cmode's copy
7598 rather than address of cmode as last argument to prepare_cmp_insn.
7599
7600 2018-03-15 Julia Koval <julia.koval@intel.com>
7601
7602 * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
7603 F_AVX512VNNI, F_AVX512BITALG): New.
7604
7605 2018-03-14 John David Anglin <danglin@gcc.gnu.org>
7606
7607 PR target/83451
7608 * config/pa/pa.c (pa_emit_move_sequence): Always emit secondary reload
7609 insn for floating-point loads and stores.
7610
7611 2018-03-14 Carl Love <cel@us.ibm.com>
7612
7613 * config/rs6000/rs6000-c.c: Add macro definitions for
7614 ALTIVEC_BUILTIN_VEC_PERMXOR.
7615 * config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
7616 * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
7617 * config/rs6000/altivec.md (altivec_vpermxor): New define expand.
7618 * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
7619 UNSPEC_VPERMXOR.
7620 * config/doc/extend.texi: Add prototypes for vec_permxor.
7621
7622 2018-03-14 David Malcolm <dmalcolm@redhat.com>
7623
7624 PR c/84852
7625 * diagnostic-show-locus.c (class layout_point): Convert m_line
7626 from int to linenum_type.
7627 (line_span::comparator): Use linenum "compare" function when
7628 comparing line numbers.
7629 (test_line_span): New function.
7630 (layout_range::contains_point): Convert param "row" from int to
7631 linenum_type.
7632 (layout_range::intersects_line_p): Likewise.
7633 (layout::will_show_line_p): Likewise.
7634 (layout::print_source_line): Likewise.
7635 (layout::should_print_annotation_line_p): Likewise.
7636 (layout::print_annotation_line): Likewise.
7637 (layout::print_leading_fixits): Likewise.
7638 (layout::annotation_line_showed_range_p): Likewise.
7639 (struct line_corrections): Likewise for field m_row.
7640 (line_corrections::line_corrections): Likewise for param "row".
7641 (layout::print_trailing_fixits): Likewise.
7642 (layout::get_state_at_point): Likewise.
7643 (layout::get_x_bound_for_row): Likewise.
7644 (layout::print_line): Likewise.
7645 (diagnostic_show_locus): Likewise for locals "last_line" and "row".
7646 (selftest::diagnostic_show_locus_c_tests): Call test_line_span.
7647 * input.c (selftest::test_linenum_comparisons): New function.
7648 (selftest::input_c_tests): Call it.
7649 * selftest.c (selftest::test_assertions): Test ASSERT_GT,
7650 ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
7651 * selftest.h (ASSERT_GT): New macro.
7652 (ASSERT_GT_AT): New macro.
7653 (ASSERT_LT): New macro.
7654 (ASSERT_LT_AT): New macro.
7655
7656 2018-03-14 Segher Boessenkool <segher@kernel.crashing.org>
7657
7658 PR rtl-optimization/84780
7659 * combine.c (distribute_links): Don't make a link based on pc_rtx.
7660
7661 2018-03-14 Martin Liska <mliska@suse.cz>
7662
7663 * tree.c (record_node_allocation_statistics): Use
7664 get_stats_node_kind.
7665 (get_stats_node_kind): New function extracted from
7666 record_node_allocation_statistics.
7667 (free_node): Use get_stats_node_kind.
7668
7669 2018-03-14 Richard Biener <rguenther@suse.de>
7670
7671 * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
7672 that the value-set of ANTIC_IN doesn't grow.
7673
7674 Revert
7675 * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
7676 member.
7677 (BB_VISITED_WITH_VISITED_SUCCS): New define.
7678 (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
7679
7680 2018-03-14 Julia Koval <julia.koval@intel.com>
7681
7682 * config.gcc (icelake-client, icelake-server): New.
7683 (icelake): Remove.
7684 * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
7685 (initial_ix86_arch_features): Ditto.
7686 (PTA_SKYLAKE): Add SGX.
7687 (PTA_ICELAKE): Remove.
7688 (PTA_ICELAKE_CLIENT): New.
7689 (PTA_ICELAKE_SERVER): New.
7690 (ix86_option_override_internal): Split up icelake on icelake client and
7691 icelake server.
7692 (get_builtin_code_for_version): Ditto.
7693 (fold_builtin_cpu): Ditto.
7694 * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
7695 * config/i386/i386-c.c (ix86_target_macros_internal): Ditto
7696 * config/i386/i386.h (processor_type): Ditto.
7697 * doc/invoke.texi: Ditto.
7698
7699 2018-03-14 Jakub Jelinek <jakub@redhat.com>
7700
7701 PR sanitizer/83392
7702 * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
7703 INTEGER_CST offset, add it together with bitpos / 8 and
7704 sign extend based on POINTER_SIZE.
7705
7706 PR target/84844
7707 Revert
7708 2017-04-20 Uros Bizjak <ubizjak@gmail.com>
7709
7710 PR target/78090
7711 * config/i386/constraints.md (Yc): New register constraint.
7712 * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
7713 Use Yc constraint for alternative 2 of operand 0. Remove
7714 preferred_for_speed attribute.
7715
7716 2018-03-14 Richard Biener <rguenther@suse.de>
7717
7718 PR tree-optimization/84830
7719 * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
7720 with the old one to avoid oscillations.
7721
7722 2018-03-13 Vladimir Makarov <vmakarov@redhat.com>
7723
7724 PR target/83712
7725 * lra-assigns.c (find_all_spills_for): Ignore uninteresting
7726 pseudos.
7727 (assign_by_spills): Return a flag of reload assignment failure.
7728 Do not process the reload assignment failures. Do not spill other
7729 reload pseudos if they has the same reg class. Update n if
7730 necessary.
7731 (lra_assign): Add a return arg. Set up from the result of
7732 assign_by_spills call.
7733 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
7734 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
7735 usage_insns if it is not NULL.
7736 (spill_hard_reg_in_range): New function.
7737 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
7738 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
7739 function prototypes.
7740 (lra_assign): Change prototype.
7741 * lra.c (lra): Add code to deal with fails by splitting hard reg
7742 live ranges.
7743
7744 2018-03-01 Palmer Dabbelt <palmer@sifive.com>
7745
7746 * config/riscv/riscv.opt (mrelax): New option.
7747 * config/riscv/riscv.c (riscv_file_start): Emit ".option
7748 "norelax" when riscv_mrelax is disabled.
7749 * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
7750
7751 2018-03-13 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
7752
7753 PR target/84743
7754 * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
7755 reassociation for int modes.
7756
7757 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
7758
7759 * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
7760 Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
7761 for big-endian.
7762 * config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
7763 * config/aarch64/aarch64-sve.md
7764 (*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
7765 (aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
7766 (*extend<mode><Vwide>2): Rename to...
7767 (aarch64_sve_extend<mode><Vwide>2): ...this.
7768 (vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
7769 renaming the old pattern to...
7770 (aarch64_sve_punpk<perm_hilo>_<mode>): ...this. Only define
7771 unsigned packs.
7772 (vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
7773 define_expand, renaming the old pattern to...
7774 (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
7775 (*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
7776 (vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
7777 account when deciding which SVE instruction the optab should use.
7778 (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
7779
7780 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
7781
7782 * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
7783 (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
7784 (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
7785 (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
7786 (tlsdesc_small_<mode>): Turn a define_expand and use
7787 tlsdesc_small_sve_<mode> for SVE. Rename original define_insn to...
7788 (tlsdesc_small_advsimd_<mode>): ...this.
7789 (tlsdesc_small_sve_<mode>): New pattern.
7790
7791 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
7792
7793 * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
7794 (UNSPEC_UMUL_HIGHPART): New constants.
7795 (MUL_HIGHPART): New int iteraor.
7796 (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
7797 * config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
7798 define_expand.
7799 (*<su>mul<mode>3_highpart): New define_insn.
7800
7801 2018-03-13 Eric Botcazou <ebotcazou@adacore.com>
7802
7803 PR lto/84805
7804 * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
7805 incomplete types.
7806
7807 2018-03-13 Martin Liska <mliska@suse.cz>
7808
7809 PR ipa/84658.
7810 * (sem_item_optimizer::sem_item_optimizer): Initialize new
7811 vector.
7812 (sem_item_optimizer::~sem_item_optimizer): Release it.
7813 (sem_item_optimizer::merge_classes): Register variable aliases.
7814 (sem_item_optimizer::fixup_pt_set): New function.
7815 (sem_item_optimizer::fixup_points_to_sets): Likewise.
7816 * ipa-icf.h: Declare new variables and functions.
7817
7818 2018-03-13 Jakub Jelinek <jakub@redhat.com>
7819
7820 PR middle-end/84834
7821 * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
7822 integer_pow2p@2 and test integer_pow2p in condition.
7823 (A < 0 ? C : 0): Similarly for @1.
7824
7825 PR middle-end/84831
7826 * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
7827 characters starting at p contain '\0' character, don't look beyond
7828 that.
7829
7830 PR target/84827
7831 * config/i386/i386.md (round<mode>2): For 387 fancy math, disable
7832 pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
7833
7834 PR target/84828
7835 * reg-stack.c (change_stack): Change update_end var from int to
7836 rtx_insn *, if non-NULL don't update just BB_END (current_block), but
7837 also call set_block_for_insn on the newly added insns and rescan.
7838
7839 PR target/84786
7840 * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
7841 on the last operand.
7842
7843 PR c++/84704
7844 * tree.c (stabilize_reference_1): Return save_expr (e) for
7845 STATEMENT_LIST even if it doesn't have side-effects.
7846
7847 2018-03-12 Jonathan Wakely <jwakely@redhat.com>
7848
7849 * doc/invoke.texi (-mclflushopt): Fix spelling of option.
7850
7851 2018-03-12 Renlin Li <renlin.li@arm.com>
7852
7853 * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
7854 aarch64_output_scalar_simd_mov_immediate.
7855
7856 2018-03-12 Martin Sebor <msebor@redhat.com>
7857
7858 PR tree-optimization/83456
7859 * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
7860 for perfectly overlapping calls to memcpy.
7861 (gimple_fold_builtin_memory_chk): Same.
7862 (gimple_fold_builtin_strcpy): Handle no-warning.
7863 (gimple_fold_builtin_stxcpy_chk): Same.
7864 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
7865
7866 2018-03-12 Segher Boessenkool <segher@kernel.crashing.org>
7867
7868 * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
7869 parameter. Use it for SFmode.
7870 (rs6000_function_arg_advance_1): Adjust.
7871 (rs6000_function_arg): Adjust.
7872 (rs6000_gimplify_va_arg): Pass false for that new parameter.
7873
7874 2018-03-12 Segher Boessenkool <segher@kernel.crashing.org>
7875
7876 PR rtl-optimization/84169
7877 PR rtl-optimization/84780
7878 * combine.c (can_combine_p): Check for a 2-insn combination whether
7879 the destination register is used between the two insns, too.
7880
7881 2018-03-12 Richard Biener <rguenther@suse.de>
7882
7883 PR tree-optimization/84803
7884 * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
7885 for refs DR analysis didn't process.
7886
7887 2018-03-12 Richard Biener <rguenther@suse.de>
7888
7889 PR tree-optimization/84777
7890 * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
7891 force-vectorize loops ignore whether we are optimizing for size.
7892
7893 2018-03-12 Chung-Ju Wu <jasonwucj@gmail.com>
7894
7895 * config/nds32/nds32.c (nds32_md_asm_adjust): New function.
7896 (TARGET_MD_ASM_ADJUST): Define.
7897
7898 2018-03-12 Monk Chiang <sh.chiang04@gmail.com>
7899 Kito Cheng <kito.cheng@gmail.com>
7900 Chung-Ju Wu <jasonwucj@gmail.com>
7901
7902 * config/nds32/nds32.c (nds32_compute_stack_frame,
7903 nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
7904 nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
7905 nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
7906 nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
7907 * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
7908 NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
7909 * config/nds32/nds32.md (prologue, epilogue): Use macro
7910 NDS32_V3PUSH_AVAILABLE_P to do checking.
7911
7912 2018-03-11 Jakub Jelinek <jakub@redhat.com>
7913
7914 PR debug/58150
7915 * dwarf2out.c (gen_enumeration_type_die): Don't guard adding
7916 DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
7917 but on TYPE_SIZE. Don't do anything for ENUM_IS_OPAQUE if not creating
7918 a new die. Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE. Guard
7919 addition of most attributes on !orig_type_die or the attribute not
7920 being present already. Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
7921
7922 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
7923 Chung-Ju Wu <jasonwucj@gmail.com>
7924
7925 * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
7926 __NDS32_VH__ macro.
7927 * config/nds32/nds32.opt (mvh): New option.
7928
7929 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
7930 Chung-Ju Wu <jasonwucj@gmail.com>
7931
7932 * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
7933 function.
7934 * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
7935 * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
7936 definition.
7937
7938 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
7939 Chung-Ju Wu <jasonwucj@gmail.com>
7940
7941 * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
7942 function.
7943 * config/nds32/nds32-multiple.md (strlensi): New pattern.
7944 * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
7945
7946 2018-03-11 Monk Chiang <sh.chiang04@gmail.com>
7947 Kito Cheng <kito.cheng@gmail.com>
7948 Chung-Ju Wu <jasonwucj@gmail.com>
7949
7950 * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
7951 UNSPEC_FFMISM and UNSPEC_FLMISM.
7952 * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
7953 for ffb, ffmism and flmism.
7954 * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
7955 (unspec_ffmism): Ditto.
7956 (unspec_flmism): Ditto.
7957 (nds32_expand_builtin_impl): Check if string extension is available.
7958 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
7959 NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
7960
7961 2018-03-10 Vladimir Makarov <vmakarov@redhat.com>
7962
7963 Reverting patch:
7964 2018-03-09 Vladimir Makarov <vmakarov@redhat.com>
7965
7966 PR target/83712
7967 * lra-assigns.c (assign_by_spills): Return a flag of reload
7968 assignment failure. Do not process the reload assignment
7969 failures. Do not spill other reload pseudos if they has the same
7970 reg class.
7971 (lra_assign): Add a return arg. Set up from the result of
7972 assign_by_spills call.
7973 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
7974 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
7975 usage_insns if it is not NULL.
7976 (spill_hard_reg_in_range): New function.
7977 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
7978 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
7979 function prototypes.
7980 (lra_assign): Change prototype.
7981 * lra.c (lra): Add code to deal with fails by splitting hard reg
7982 live ranges.
7983
7984 2018-03-10 H.J. Lu <hongjiu.lu@intel.com>
7985
7986 PR target/84807
7987 * config/i386/i386.opt: Replace Enforcment with Enforcement.
7988
7989 2018-03-10 Alexandre Oliva <aoliva@redhat.com>
7990
7991 PR debug/84620
7992 * dwarf2out.h (dw_val_class): Add dw_val_class_symview.
7993 (dw_val_node): Add val_symbolic_view.
7994 * dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
7995 (symview_upper_bound): New.
7996 (new_line_info_table): Initialize symviews_since_reset.
7997 (dwarf2out_source_line): Count symviews_since_reset and set
7998 symview_upper_bound.
7999 (dw_val_equal_p): Handle symview.
8000 (add_AT_symview): New.
8001 (print_dw_val): Handle symview.
8002 (attr_checksum, attr_checksum_ordered): Likewise.
8003 (same_dw_val_p, size_of_die): Likewise.
8004 (value_format, output_die): Likewise.
8005 (add_high_low_attributes): Use add_AT_symview for entry_view.
8006 (dwarf2out_finish): Reset symview_upper_bound, clear
8007 zero_view_p.
8008
8009 2018-03-09 Peter Bergner <bergner@vnet.ibm.com>
8010
8011 PR target/83969
8012 * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
8013 Add strict argument and use it.
8014 (rs6000_split_multireg_move): Update for new strict argument.
8015 (mem_operand_gpr): Disallow all non-offsettable addresses.
8016 * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
8017
8018 2018-03-09 Jakub Jelinek <jakub@redhat.com>
8019
8020 PR target/84772
8021 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
8022 temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
8023 * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
8024
8025 PR c++/84767
8026 * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
8027 decl, use remap_type if we want to use the type.
8028
8029 2018-03-09 Martin Sebor <msebor@redhat.com>
8030
8031 PR tree-optimization/84526
8032 * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
8033 Remove dead code.
8034 (builtin_access::generic_overlap): Be prepared to handle non-array
8035 base objects.
8036
8037 2018-03-09 Alexandre Oliva <aoliva@redhat.com>
8038
8039 PR rtl-optimization/84682
8040 * lra-constraints.c (process_address_1): Check is_address flag
8041 for address constraints.
8042 (process_alt_operands): Likewise.
8043 * lra.c (lra_set_insn_recog_data): Pass asm operand locs to
8044 preprocess_constraints.
8045 * recog.h (preprocess_constraints): Add oploc parameter.
8046 Adjust callers.
8047 * recog.c (preprocess_constraints): Test address_operand for
8048 CT_ADDRESS constraints.
8049
8050 2018-03-09 Vladimir Makarov <vmakarov@redhat.com>
8051
8052 PR target/83712
8053 * lra-assigns.c (assign_by_spills): Return a flag of reload
8054 assignment failure. Do not process the reload assignment
8055 failures. Do not spill other reload pseudos if they has the same
8056 reg class.
8057 (lra_assign): Add a return arg. Set up from the result of
8058 assign_by_spills call.
8059 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
8060 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
8061 usage_insns if it is not NULL.
8062 (spill_hard_reg_in_range): New function.
8063 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
8064 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
8065 function prototypes.
8066 (lra_assign): Change prototype.
8067 * lra.c (lra): Add code to deal with fails by splitting hard reg
8068 live ranges.
8069
8070 2018-03-09 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8071
8072 PR target/83193
8073 * common/config/arm/arm-common.c (arm_parse_arch_option_name):
8074 Accept complain bool parameter. Only emit errors if it is true.
8075 (arm_parse_cpu_option_name): Likewise.
8076 (arm_target_thumb_only): Adjust callers of the above.
8077 * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
8078 prototype to take a default true bool parameter.
8079 (arm_parse_arch_option_name): Likewise.
8080
8081 2018-03-09 David Malcolm <dmalcolm@redhat.com>
8082 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
8083
8084 PR jit/64089
8085 PR jit/84288
8086 * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
8087 * configure: Regenerate.
8088 * configure.ac ("linker --version-script option"): New.
8089 ("linker soname option"): New.
8090
8091 2018-03-09 Richard Biener <rguenther@suse.de>
8092
8093 PR tree-optimization/84775
8094 * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
8095 immediate uses of predicate stmts and mark them modified.
8096
8097 Revert
8098 PR tree-optimization/84178
8099 * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
8100 to caller.
8101 (version_loop_for_if_conversion): Delay update_ssa call.
8102 (tree_if_conversion): Delay update_ssa until after predicate
8103 insertion.
8104
8105 2018-03-09 Eric Botcazou <ebotcazou@adacore.com>
8106
8107 PR target/84763
8108 * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
8109 when the function accesses prior frames.
8110
8111 2018-03-08 Jakub Jelinek <jakub@redhat.com>
8112
8113 PR debug/84456
8114 * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
8115 gen_llsym, otherwise call maybe_gen_llsym.
8116
8117 PR inline-asm/84742
8118 * recog.c (asm_operand_ok): Return 0 if multi-character constraint
8119 has ',' character inside of it.
8120
8121 2018-03-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8122
8123 PR target/84748
8124 * config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
8125 as clobbering CC_REGNUM.
8126
8127 2018-03-08 Richard Biener <rguenther@suse.de>
8128
8129 PR middle-end/84552
8130 * tree-scalar-evolution.c: Include tree-into-ssa.h.
8131 (follow_copies_to_constant): Do not follow SSA names registered
8132 for update.
8133
8134 2018-03-08 Richard Biener <rguenther@suse.de>
8135
8136 PR tree-optimization/84178
8137 * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
8138 to caller.
8139 (version_loop_for_if_conversion): Delay update_ssa call.
8140 (tree_if_conversion): Delay update_ssa until after predicate
8141 insertion.
8142
8143 2018-03-08 David Malcolm <dmalcolm@redhat.com>
8144
8145 PR tree-optimization/84178
8146 * tree-if-conv.c (release_bb_predicate): Remove the
8147 the assertion that the stmts have NULL use_ops.
8148 Discard the statements, asserting that they haven't
8149 yet been added to a BB.
8150
8151 2018-03-08 Richard Biener <rguenther@suse.de>
8152
8153 PR tree-optimization/84746
8154 * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
8155 (phi_translate): Pass in destination ANTIC_OUT set.
8156 (phi_translate_1): Likewise. For a simplified result lookup
8157 a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
8158 (phi_translate_set): Adjust.
8159 (do_pre_regular_insertion): Likewise.
8160 (do_pre_partial_partial_insertion): Likewise.
8161
8162 2018-03-08 Martin Liska <mliska@suse.cz>
8163
8164 PR gcov-profile/84735
8165 * doc/gcov.texi: Document usage of profile files.
8166 * gcov-io.h: Document changes in the format.
8167
8168 2018-03-08 Alexandre Oliva <aoliva@redhat.com>
8169
8170 PR debug/84404
8171 PR debug/84408
8172 * dwarf2out.c (struct dw_line_info_table): Update comments for
8173 view == -1.
8174 (FORCE_RESET_NEXT_VIEW): New.
8175 (FORCE_RESETTING_VIEW_P): New.
8176 (RESETTING_VIEW_P): Check for -1 too.
8177 (ZERO_VIEW_P): Likewise.
8178 (new_line_info_table): Force-reset next view.
8179 (dwarf2out_begin_function): Likewise.
8180 (dwarf2out_source_line): Simplify zero_view_p initialization.
8181 Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
8182 view directly. Omit view when omitting .loc at line 0.
8183
8184 2018-03-08 Jakub Jelinek <jakub@redhat.com>
8185
8186 PR tree-optimization/84740
8187 * tree-switch-conversion.c (process_switch): Call build_constructors
8188 only if info.phi_count is non-zero.
8189
8190 PR tree-optimization/84739
8191 * tree-tailcall.c (find_tail_calls): Check call arguments against
8192 DECL_ARGUMENTS (current_function_decl) rather than
8193 DECL_ARGUMENTS (func) when checking for tail recursion.
8194
8195 2018-03-07 Jakub Jelinek <jakub@redhat.com>
8196
8197 * doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
8198 Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
8199 Volker Reichelt's entry and add entries for people that perform
8200 GCC fuzzy testing and report numerous bugs.
8201
8202 2018-03-07 Segher Boessenkool <segher@kernel.crashing.org>
8203
8204 PR target/82411
8205 * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
8206 readonly data in sdata, if that is disabled.
8207 * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
8208 * doc/invoke.texi (RS/6000 and PowerPC Options): Document
8209 -mreadonly-in-sdata option.
8210
8211 2018-03-07 Martin Sebor <msebor@redhat.com>
8212
8213 PR tree-optimization/84468
8214 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
8215 basic block when looking for nul assignment.
8216
8217 2018-03-07 Eric Botcazou <ebotcazou@adacore.com>
8218
8219 PR target/84277
8220 * except.h (output_function_exception_table): Adjust prototype.
8221 * except.c (output_function_exception_table): Remove FNNAME parameter
8222 and add SECTION parameter. Ouput one part of the table at a time.
8223 * final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
8224 the first part of the exception table and emit unwind directives.
8225 * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
8226 (i386_pe_seh_cold_init): Likewise.
8227 * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
8228 (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
8229 * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
8230 (ix86_output_call_insn): Emit a nop in one more case for SEH.
8231 * config/i386/winnt.c: Include except.h.
8232 (struct seh_frame_state): Add reg_offset, after_prologue and
8233 in_cold_section fields.
8234 (i386_pe_seh_end_prologue): Set seh->after_prologue.
8235 (i386_pe_seh_cold_init): New function.
8236 (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
8237 to seh->in_cold_section.
8238 (seh_emit_push): Record the offset of the push.
8239 (seh_emit_save): Record the offet of the save.
8240 (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
8241 Test seh->after_prologue to disregard the epilogue.
8242 (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
8243 (i386_pe_end_cold_function): New function.
8244
8245 2018-03-07 Jakub Jelinek <jakub@redhat.com>
8246
8247 PR fortran/84565
8248 * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
8249 aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
8250
8251 PR c++/84704
8252 * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
8253 on tmp_var.
8254 * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
8255 don't print names of DECL_NAMELESS DECL_IGNORED_P decls.
8256
8257 PR middle-end/84723
8258 * multiple_target.c: Include tree-inline.h and intl.h.
8259 (expand_target_clones): Diagnose and fail if node->definition and
8260 !tree_versionable_function_p (node->decl).
8261
8262 2018-03-06 John David Anglin <danglin@gcc.gnu.org>
8263
8264 * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
8265 sprint_ul.
8266 (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
8267 (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
8268 * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
8269
8270 2018-03-06 Jakub Jelinek <jakub@redhat.com>
8271
8272 PR target/84710
8273 * combine.c (try_combine): Use reg_or_subregno instead of handling
8274 just paradoxical SUBREGs and REGs.
8275
8276 2018-03-06 Claudiu Zissulescu <claziss@synopsys.com>
8277
8278 * config/arc/arc.c (arc_finalize_pic): Remove function.
8279 (arc_must_save_register): We use single base PIC register, remove
8280 checks to save/restore the PIC register.
8281 (arc_expand_prologue): Likewise.
8282 * config/arc/arc-protos.h (arc_set_default_type_attributes):
8283 Remove.
8284 (arc_verify_short): Likewise.
8285 (arc_attr_type): Likewise.
8286 * config/arc/arc.c (arc_set_default_type_attributes): Remove.
8287 (walk_stores): Likewise.
8288 (arc_address_cost): Make it static.
8289 (arc_verify_short): Likewise.
8290 (branch_dest): Likewise.
8291 (arc_attr_type): Likewise.
8292 * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
8293 (TARGET_INSN_LENGTH_PARAMETERS): Likewise.
8294 (arc_final_prescan_insn): Remove inserting the nops due to
8295 hardware hazards. It is done in reorg step.
8296 (insn_length_variant_t): Remove.
8297 (insn_length_parameters_t): Likewise.
8298 (arc_insn_length_parameters): Likewise.
8299 (arc_get_insn_variants): Likewise.
8300 * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
8301
8302 2018-03-06 Jakub Jelinek <jakub@redhat.com>
8303
8304 PR inline-asm/84683
8305 * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
8306 assertion failure.
8307
8308 PR tree-optimization/84687
8309 * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
8310 on new_node->decl.
8311 * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
8312
8313 2018-03-05 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
8314
8315 * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
8316 Rename to ppc_speculation_barrier.
8317 * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
8318 __builtin_ppc_speculation_barrier.
8319
8320 2018-03-05 Jakub Jelinek <jakub@redhat.com>
8321
8322 PR target/84700
8323 * combine.c (combine_simplify_rtx): Don't try to simplify if
8324 if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
8325 are equal to x.
8326
8327 2018-03-05 Segher Boessenkool <segher@kernel.crashing.org>
8328
8329 * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
8330 to 32 bytes when compiling for POWER9.
8331
8332 2018-03-05 Jakub Jelinek <jakub@redhat.com>
8333
8334 PR target/84564
8335 * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
8336 regparm >= 3 with no arg reg available also for calls with
8337 flag_force_indirect_call. Pass decl to ix86_function_regparm.
8338
8339 PR target/84524
8340 * config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
8341 orig,vex.
8342 (*<plusminus_insn><mode>3): Likewise. Remove <mask_operand3> uses.
8343
8344 2018-03-05 Peter Bergner <bergner@vnet.ibm.com>
8345
8346 PR target/84264
8347 * config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
8348
8349 2018-03-05 Richard Biener <rguenther@suse.de>
8350
8351 PR tree-optimization/84486
8352 * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
8353 When inserting a __builtin_assume_aligned call set the LHS
8354 SSA name alignment info accordingly.
8355
8356 2018-03-05 Wilco Dijkstra <wdijkstr@arm.com>
8357
8358 PR tree-optimization/84114
8359 * config/aarch64/aarch64.c (aarch64_reassociation_width)
8360 Avoid reassociation of FLOAT_MODE addition.
8361
8362 2018-03-05 Olga Makhotina <olga.makhotina@intel.com>
8363
8364 * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
8365 OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
8366 OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
8367 (ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
8368 * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
8369 * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
8370 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
8371 and -mwbnoinvd.
8372 * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
8373 __builtin_ia32_wbinvd): New builtins.
8374 (SPECIAL_ARGS2): New.
8375 * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
8376 (SPECIAL_ARGS2): New.
8377 * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
8378 (ix86_valid_target_attribute_inner_p): Ditto.
8379 (ix86_init_mmx_sse_builtins): Add special_args2.
8380 * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
8381 TARGET_WBNOINVD_P): New.
8382 * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
8383 (define_insn "wbinvd", define_insn "wbnoinvd"): New.
8384 * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
8385 * config/i386/immintrin.h (_wbinvd): New intrinsic.
8386 * config/i386/pconfigintrin.h: New file.
8387 * config/i386/wbnoinvdintrin.h: Ditto.
8388 * config/i386/x86intrin.h: Add headers pconfigintrin.h and
8389 wbnoinvdintrin.h.
8390 * doc/invoke.texi (-mpconfig, -mwbnoinvd): New.
8391
8392 2018-03-05 Richard Biener <rguenther@suse.de>
8393
8394 PR tree-optimization/84670
8395 * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
8396 member.
8397 (BB_VISITED_WITH_VISITED_SUCCS): New define.
8398 (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
8399 (compute_antic_aux): Only assert the number of values in ANTIC_IN
8400 doesn't grow if all successors (recursively) were visited at least
8401 once.
8402
8403 2018-03-05 Richard Biener <rguenther@suse.de>
8404
8405 PR tree-optimization/84650
8406 * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
8407 if executed in the loop pipeline.
8408
8409 2018-03-05 Sandra Loosemore <sandra@codesourcery.com>
8410
8411 * doc/configfiles.texi (Configuration Files): Move info about
8412 conditionalizing $target-protos.h to...
8413 * doc/sourcebuild.texi (Back End): Here. Explain how $target.h
8414 differs from $target-protos.h.
8415
8416 2018-03-05 Kito Cheng <kito.cheng@gmail.com>
8417 Chung-Ju Wu <jasonwucj@gmail.com>
8418
8419 * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
8420 * config/nds32/nds32-multiple.md (setmemsi): Define.
8421 * config/nds32/nds32-memory-manipulation.c
8422 (nds32_gen_dup_4_byte_to_word_value): New.
8423 (emit_setmem_word_loop): New.
8424 (emit_setmem_byte_loop): New.
8425 (nds32_expand_setmem_loop): New.
8426 (nds32_expand_setmem_loop_v3m): New.
8427 (nds32_expand_setmem_unroll): New.
8428 (nds32_expand_setmem): New.
8429
8430 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
8431 Chung-Ju Wu <jasonwucj@gmail.com>
8432
8433 * config/nds32/nds32-memory-manipulation.c
8434 (nds32_emit_load_store): New.
8435 (nds32_emit_post_inc_load_store): New.
8436 (nds32_emit_mem_move): New.
8437 (nds32_emit_mem_move_block): New.
8438 (nds32_expand_movmemsi_loop_unknown_size): New.
8439 (nds32_expand_movmemsi_loop_known_size): New.
8440 (nds32_expand_movmemsi_loop): New.
8441 (nds32_expand_movmemsi_unroll): New.
8442 (nds32_expand_movmemqi): Rename ...
8443 (nds32_expand_movmemsi): ... to this.
8444 * config/nds32/nds32-multiple.md (movmemqi): Rename ...
8445 (movmemsi): ... to this.
8446 * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
8447 (nds32_expand_movmemsi): ... to this.
8448
8449 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
8450 Monk Chiang <sh.chiang04@gmail.com>
8451 Chung-Ju Wu <jasonwucj@gmail.com>
8452
8453 * config/nds32/nds32-protos.h
8454 (nds32_expand_load_multiple): New arguments.
8455 (nds32_expand_store_multiple): Ditto.
8456 (nds32_valid_multiple_load_store): Rename ...
8457 (nds32_valid_multiple_load_store_p): ... to this.
8458 * config/nds32/nds32-memory-manipulation.c
8459 (nds32_expand_load_multiple): Refine implementation.
8460 (nds32_expand_store_multiple): Ditto.
8461 * config/nds32/nds32-multiple.md
8462 (load_multiple): Update nds32_expand_load_multiple interface.
8463 (store_multiple): Update nds32_expand_store_multiple interface.
8464 * config/nds32/nds32-predicates.c
8465 (nds32_valid_multiple_load_store): Rename ...
8466 (nds32_valid_multiple_load_store_p): ... to this and refine
8467 implementation.
8468 * config/nds32/predicates.md
8469 (nds32_load_multiple_and_update_address_operation): New predicate.
8470 (nds32_store_multiple_and_update_address_operation): New predicate.
8471
8472 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
8473 Chung-Ju Wu <jasonwucj@gmail.com>
8474
8475 * config/nds32/nds32.md (type): Add load_multiple and store_multiple.
8476 (combo): New attribute.
8477 * config/nds32/nds32-multiple.md: Refine patterns with new attributes.
8478
8479 2018-03-03 Chung-Ju Wu <jasonwucj@gmail.com>
8480
8481 * config/nds32/nds32.opt: Change -mcmodel= default value.
8482
8483 2018-03-03 Kito Cheng <kito.cheng@gmail.com>
8484 Monk Chiang <sh.chiang04@gmail.com>
8485 Chung-Ju Wu <jasonwucj@gmail.com>
8486
8487 * config/nds32/constants.md (unspec_element): New enum.
8488 * config/nds32/constraints.md (Umw): New constraint.
8489 * config/nds32/nds32-intrinsic.c: Add more builtin functions.
8490 * config/nds32/nds32-intrinsic.md: Likewise.
8491 * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
8492 (nds32_valid_smw_lwm_base_p): New.
8493 (nds32_output_smw_single_word): New.
8494 (nds32_output_lmw_single_word): New.
8495 (nds32_expand_unaligned_load): New.
8496 (nds32_expand_unaligned_store): New.
8497 * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
8498 (nds32_output_smw_single_word): Declare.
8499 (nds32_output_lmw_single_word): Declare.
8500 (nds32_expand_unaligned_load): Declare.
8501 (nds32_expand_unaligned_store): Declare.
8502 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
8503 NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
8504 NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
8505 NDS32_BUILTIN_UASTORE_DW.
8506 * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
8507 predicate.
8508
8509 2018-03-03 Monk Chiang <sh.chiang04@gmail.com>
8510 Kito Cheng <kito.cheng@gmail.com>
8511 Chung-Ju Wu <jasonwucj@gmail.com>
8512
8513 * config/nds32/nds32-intrinsic.c
8514 (nds32_expand_builtin_null_ftype_reg): Delete.
8515 (nds32_expand_builtin_reg_ftype_imm): Ditto.
8516 (nds32_expand_builtin_null_ftype_reg_imm): Ditto.
8517 (nds32_read_argument): New.
8518 (nds32_legitimize_target): Ditto.
8519 (nds32_legitimize_argument): Ditto.
8520 (nds32_check_constant_argument): Ditto.
8521 (nds32_expand_unop_builtin): Ditto.
8522 (nds32_expand_unopimm_builtin): Ditto.
8523 (nds32_expand_binop_builtin): Ditto.
8524 (nds32_builtin_decl_impl): Ditto.
8525 (builtin_description): Ditto.
8526 (nds32_expand_builtin_impl): Rewrite with new infrastructure.
8527 (nds32_init_builtins_impl): Ditto.
8528 * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
8529 (nds32_builtin_decl): New.
8530 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
8531 * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.
8532
8533 2018-03-02 Jeff Law <law@redhat.com>
8534
8535 * reorg.c (stop_search_p): Handle DEBUG_INSN.
8536 (redundant_insn, fill_simple_delay_slots): Likewise.
8537 (fill_slots_from_thread): Likewise.
8538 * resource.c (mark_referenced_resources): Likewise.
8539 (mark_set_resources, find_dead_or_set_registers): Likewise.
8540
8541 2018-03-02 Jakub Jelinek <jakub@redhat.com>
8542
8543 * substring-locations.h (format_warning_va): Formatting fix for
8544 ATTRIBUTE_GCC_DIAG.
8545 (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second
8546 argument.
8547 (format_warning_n_va, format_warning_at_substring_n): New prototypes.
8548 * substring-locations.c: Include intl.h.
8549 (format_warning_va): Turned into small wrapper around
8550 format_warning_n_va, renamed to ...
8551 (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments,
8552 rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID,
8553 use ngettext.
8554 (format_warning_at_substring_n): New function.
8555 * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma.
8556 (fmtwarn): Add ATTRIBUTE_GCC_DIAG. Turn into a copy of
8557 format_warning_at_substring with just a shorter name instead of
8558 const function pointer.
8559 (fmtwarn_n): New function.
8560 (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where
8561 appropriate, get rid of all the fmtstr temporaries, move conditionals
8562 with G_() wrapped string literals directly into fmtwarn arguments,
8563 cast dir.len to (int), formatting fixes.
8564
8565 2018-03-02 Thomas Schwinge <thomas@codesourcery.com>
8566
8567 * doc/invoke.texi: Remove "Cilk Plus" references.
8568
8569 2018-03-02 Jakub Jelinek <jakub@redhat.com>
8570 Richard Biener <rguenther@suse.de>
8571
8572 PR ipa/84628
8573 * expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
8574 for error or warning attributes if CALL_FROM_THUNK_P is set.
8575 Formatting fixes.
8576
8577 2018-03-02 Jakub Jelinek <jakub@redhat.com>
8578
8579 PR target/56540
8580 * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
8581 __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
8582
8583 PR target/56540
8584 * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine
8585 __SIZEOF_{FPREG,FLOAT{80,128}}__ macros.
8586
8587 * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED
8588 instead of -1U in last predictors element's probability member.
8589
8590 2018-03-02 Eric Botcazou <ebotcazou@adacore.com>
8591
8592 PR ipa/83983
8593 * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
8594 arguments if they are comparable.
8595
8596 2018-03-02 Richard Sandiford <richard.sandiford@linaro.org>
8597
8598 PR tree-optimization/84634
8599 * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace
8600 masks and masked_loop_p with a single loop_masks, making sure it's
8601 null for bb vectorization.
8602
8603 2018-03-02 Richard Sandiford <richard.sandiford@linaro.org>
8604
8605 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
8606 (vect_analyze_data_ref_access): Use loop->safe_len rather than
8607 loop->force_vectorize to check whether there is no alias.
8608
8609 2018-03-02 Jakub Jelinek <jakub@redhat.com>
8610
8611 PR target/84614
8612 * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
8613 prototypes.
8614 * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
8615 comments.
8616 (next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
8617 * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
8618 instead of a loop around prev_real_insn.
8619 * combine.c (move_deaths): Use prev_real_nondebug_insn instead of
8620 prev_real_insn.
8621
8622 PR inline-asm/84625
8623 * config/i386/i386.c (ix86_print_operand): Use conditional
8624 output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
8625 zero vector.
8626
8627 2018-03-02 Richard Biener <rguenther@suse.de>
8628
8629 PR tree-optimization/84427
8630 * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
8631 (bitmap_set_subtract_values): Rewrite to handle multiple
8632 exprs per value.
8633 (clean): Likewise.
8634 (prune_clobbered_mems): Likewise.
8635 (phi_translate): Take edge instead of pred/phiblock.
8636 (phi_translate_1): Likewise.
8637 (phi_translate_set): Likewise. Insert all translated
8638 exprs for a value into the set, keeping possibly multiple
8639 expressions per value.
8640 (compute_antic_aux): Adjust for phi_translate changes.
8641 When intersecting union the expressions and prune those
8642 not in the final value set, keeping possibly multiple
8643 expressions per value. Do not use value-insertion
8644 for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
8645 all expressions. Add verification that the value-sets
8646 only shrink during iteration.
8647 (compute_partial_antic_aux): Adjust for the phi_translate changes.
8648 (do_pre_regular_insertion): Likewise.
8649 (do_pre_partial_partial_insertion): Likewise.
8650
8651 2018-03-02 Richard Biener <rguenther@suse.de>
8652
8653 PR target/82005
8654 * config/darwin.c (saved_debug_info_level): New static global.
8655 (darwin_asm_lto_start): Disable debug info generation for LTO out.
8656 (darwin_asm_lto_end): Restore debug info generation settings.
8657
8658 2018-03-01 Martin Liska <mliska@suse.cz>
8659
8660 PR sanitizer/82484
8661 * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
8662 volatile arguments.
8663
8664 2018-03-01 Richard Biener <rguenther@suse.de>
8665
8666 PR debug/84645
8667 * dwarf2out.c (gen_variable_die): Properly handle late VLA
8668 type annotation with LTO when debug was disabled at compile-time.
8669
8670 2018-03-01 Matthew Fortune <mfortune@gmail.com>
8671
8672 * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
8673 XINT with INTVAL.
8674 (mips_final_postscan_insn): Likewise.
8675
8676 2018-03-01 Richard Sandiford <richard.sandiford@linaro.org>
8677
8678 PR rtl-optimization/84528
8679 * alias.c (init_alias_target): Add commentary.
8680 (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
8681 a unique base value if the frame pointer is not eliminated
8682 to the stack pointer.
8683
8684 2018-03-01 Tom de Vries <tom@codesourcery.com>
8685
8686 PR rtl-optimization/83327
8687 * lra-int.h (hard_regs_spilled_into): Declare.
8688 * lra.c (hard_regs_spilled_into): Define.
8689 (init_reg_info): Init hard_regs_spilled_into.
8690 * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
8691 * lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
8692 (process_bb_lives): Handle hard_regs_spilled_into.
8693 (lra_create_live_ranges_1): Before doing liveness propagation, clear
8694 regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
8695
8696 2018-02-28 David Edelsohn <dje.gcc@gmail.com>
8697
8698 * config.gcc (powerpc-ibm-aix7.1.*): New stanza.
8699 (powerpc-ibm-aix[789]*): Default to AIX 7.2.
8700 * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
8701 * config/rs6000/aix72.h: New file.
8702
8703 2018-02-28 Jakub Jelinek <jakub@redhat.com>
8704
8705 * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n
8706 instead of warning_at with conditional singular and plural messages
8707 where possible.
8708
8709 PR target/52991
8710 * stor-layout.c (update_alignment_for_field): For
8711 targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
8712 && !DECL_PACKED (field), do the alignment update, just use
8713 only desired_align instead of MAX (type_align, desired_align)
8714 as the alignment.
8715 (place_field): Don't do known_align < desired_align handling
8716 early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
8717 is non-NULL, instead do it after rli->prev_field handling and
8718 only if not within a bitfield word. For DECL_PACKED (field)
8719 use type_align of BITS_PER_UNIT.
8720
8721 2018-02-28 Eric Botcazou <ebotcazou@adacore.com>
8722
8723 * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove
8724 superfluous parentheses and trailing spaces.
8725
8726 2018-02-28 Richard Biener <rguenther@suse.de>
8727
8728 PR tree-optimization/84584
8729 * graphite-scop-detection.c (scop_detection::add_scop): Discard
8730 SCoPs with fake exit edge.
8731
8732 2018-02-28 Martin Liska <mliska@suse.cz>
8733
8734 PR testsuite/84597
8735 * timevar.c (timer::print): Fix format to properly print 100%
8736 values.
8737
8738 2018-02-28 Richard Biener <rguenther@suse.de>
8739
8740 PR middle-end/84607
8741 * genmatch.c (capture_info::walk_match): Do not mark
8742 captured expressions without operands as expr_p given
8743 they act more like predicates and should be subject to
8744 "lost tail" side-effect preserving.
8745
8746 2018-02-28 Alexandre Oliva <aoliva@redhat.com>
8747
8748 PR rtl-optimization/81611
8749 * auto-inc-dec.c (attempt_change): Move dead note from
8750 mem_insn if it's the next use of regno
8751 (find_address): Take address use of reg holding
8752 non-incremented value. Add parm to limit search to the named
8753 reg only.
8754 (merge_in_block): Attempt to use a mem insn that is the next
8755 use of the original regno.
8756
8757 2018-02-27 Martin Sebor <msebor@redhat.com>
8758
8759 PR c++/83871
8760 * gcc/doc/invoke.texi (-Wmissing-attributes): New option.
8761 * gcc/print-tree.c (print_node): Handle DECL_UNINLINABLE.
8762
8763 2018-02-27 Martin Sebor <msebor@redhat.com>
8764
8765 PR translation/84207
8766 * diagnostic-core.h (warning_n, error_n, inform_n): Change
8767 n argument to unsigned HOST_WIDE_INT.
8768 * diagnostic.c (warning_n, error_n, inform_n): Ditto.
8769 (diagnostic_n_impl): Ditto. Handle arguments in excess of LONG_MAX.
8770 * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
8771 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
8772
8773 2018-02-27 Richard Biener <rguenther@suse.de>
8774
8775 PR tree-optimization/84512
8776 * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
8777 Do not use the estimate returned from record_stmt_cost for
8778 the scalar iteration cost but sum properly using add_stmt_cost.
8779
8780 2018-02-27 Richard Biener <rguenther@suse.de>
8781
8782 PR tree-optimization/84466
8783 * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
8784 Adjust last change to less strictly validate use operands.
8785
8786 2018-02-27 Martin Liska <mliska@suse.cz>
8787
8788 PR gcov-profile/84548
8789 * gcov.c (process_file): Allow partial overlap and consider it
8790 also as group functions.
8791 (output_lines): Properly calculate range of lines for a group.
8792
8793 2018-02-27 Martin Liska <mliska@suse.cz>
8794
8795 * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
8796 'ggc' suffixes. Change first column width.
8797 (timer::print): Fix formatting of the column.
8798
8799 2018-02-27 Alexandre Oliva <aoliva@redhat.com>
8800
8801 * tree-ssa-live.c (remove_unused_scope_block_p): Do not
8802 preserve inline entry blocks for the sake of debug inline
8803 entry point markers alone.
8804 (remove_unused_locals): Suggest in comments a better place to
8805 force the preservation of inline entry blocks that are
8806 otherwise unused, but do not preserve them.
8807
8808 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
8809
8810 * config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
8811
8812 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
8813
8814 PR target/84039
8815 * config/i386/constraints.md (Bs): Replace
8816 ix86_indirect_branch_register with
8817 TARGET_INDIRECT_BRANCH_REGISTER.
8818 (Bw): Likewise.
8819 * config/i386/i386.md (indirect_jump): Likewise.
8820 (tablejump): Likewise.
8821 (*sibcall_memory): Likewise.
8822 (*sibcall_value_memory): Likewise.
8823 Peepholes of indirect call and jump via memory: Likewise.
8824 (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
8825 (*sibcall_value_GOT_32): Likewise.
8826 * config/i386/predicates.md (indirect_branch_operand): Likewise.
8827 (GOT_memory_operand): Likewise.
8828 (call_insn_operand): Likewise.
8829 (sibcall_insn_operand): Likewise.
8830 (GOT32_symbol_operand): Likewise.
8831 * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
8832
8833 2018-02-26 Eric Botcazou <ebotcazou@adacore.com>
8834
8835 PR rtl-optimization/83496
8836 * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
8837 booleans to RTXes. Call fix_reg_dead_note on every non-null element.
8838 (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
8839 redundant insn, if any.
8840 (relax_delay_slots): Likewise.
8841 (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
8842
8843 2018-02-26 Richard Sandiford <richard.sandiford@linaro.org>
8844
8845 PR tree-optimization/83965
8846 * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
8847 that grouped statements are part of a reduction chain. Return
8848 true if the statement is not marked as a reduction itself but
8849 is part of a group.
8850 (vect_recog_dot_prod_pattern): Don't check whether the statement
8851 is part of a group here.
8852 (vect_recog_sad_pattern): Likewise.
8853 (vect_recog_widen_sum_pattern): Likewise.
8854
8855 2018-02-26 Eric Botcazou <ebotcazou@adacore.com>
8856
8857 PR debug/84545
8858 * final.c (rest_of_clean_state): Also look for calls inside sequences.
8859
8860 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
8861
8862 PR target/84530
8863 * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
8864 the bool argument.
8865 (ix86_output_indirect_function_return): New prototype.
8866 (ix86_split_simple_return_pop_internal): Likewise.
8867 * config/i386/i386.c (indirect_return_via_cx): New.
8868 (indirect_return_via_cx_bnd): Likewise.
8869 (indirect_thunk_name): Handle return va CX_REG.
8870 (output_indirect_thunk_function): Create alias for
8871 __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
8872 (ix86_output_indirect_jmp): Remove the bool argument.
8873 (ix86_output_indirect_function_return): New function.
8874 (ix86_split_simple_return_pop_internal): Likewise.
8875 * config/i386/i386.md (*indirect_jump): Don't pass false
8876 to ix86_output_indirect_jmp.
8877 (*tablejump_1): Likewise.
8878 (simple_return_pop_internal): Change it to define_insn_and_split.
8879 Call ix86_split_simple_return_pop_internal to split it for
8880 -mfunction-return=.
8881 (simple_return_indirect_internal): Call
8882 ix86_output_indirect_function_return instead of
8883 ix86_output_indirect_jmp.
8884
8885 2018-02-26 Jakub Jelinek <jakub@redhat.com>
8886
8887 PR bootstrap/84405
8888 * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use
8889 memset and value initialization afterwards.
8890
8891 2018-02-26 Christophe Lyon <christophe.lyon@linaro.org>
8892
8893 * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS.
8894
8895 2018-02-26 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
8896
8897 PR target/84521
8898 * common/config/aarch64/aarch64-common.c
8899 (aarch_option_optimization_table[]): Switch
8900 off fomit-frame-pointer
8901
8902 2018-02-26 Kito Cheng <kito.cheng@gmail.com>
8903 Chung-Ju Wu <jasonwucj@gmail.com>
8904
8905 * config/nds32/nds32-multiple.md (load_multiple): Disallow
8906 volatile memory.
8907 (store_multiple): Ditto.
8908
8909 2018-02-26 Kito Cheng <kito.cheng@gmail.com>
8910
8911 * config.gcc: Add --with-cpu support for nds32 target.
8912 * config/nds32/nds32-opts.h (nds32_cpu_type): New.
8913 * config/nds32/nds32.opt: Add -mcpu= option.
8914
8915 2018-02-25 Segher Boessenkool <segher@kernel.crashing.org>
8916
8917 * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no,
8918 isel=yes): Warn for these deprecated options.
8919
8920 2018-02-23 David Edelsohn <dje.gcc@gmail.com>
8921
8922 * config/rs6000/aix71.h (TARGET_DEFAULT): Change to
8923 ISA_2_5_MASKS_EMBEDDED.
8924
8925 2018-02-23 Jakub Jelinek <jakub@redhat.com>
8926
8927 * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
8928 p->max as pointers rather than using iterative_hash_expr.
8929
8930 2018-02-23 Carl Love <cel@us.ibm.com>
8931
8932 * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2
8933 macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to
8934 BU_P8V_OVERLOAD_2.
8935 * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to
8936 P8V_BUILTIN_VEC_VSIGNED2. Change VSX_BUILTIN_VEC_VUNSIGNED2 to
8937 P8V_BUILTIN_VEC_VUNSIGNED2.
8938
8939 2018-02-22 Vladimir Makarov <vmakarov@redhat.com>
8940
8941 PR target/81572
8942 * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
8943 * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
8944 LRA_UNKNOWN_ALT.
8945 * lra-constraints.c (curr_insn_transform): Set up
8946 LRA_NON_CLOBBERED_ALT for moves processed on the fast path. Use
8947 LRA_UNKNOWN_ALT.
8948 (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
8949 * lra-eliminations.c (spill_pseudos): Ditto.
8950 (process_insn_for_elimination): Ditto.
8951 * lra-lives.c (reg_early_clobber_p): Use the new macros.
8952 * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
8953 LRA_NON_CLOBBERED_ALT.
8954
8955 2018-02-22 Martin Sebor <msebor@redhat.com>
8956
8957 PR tree-optimization/84480
8958 * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings
8959 to maybe_diag_stxncpy_trunc. Call it.
8960 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings
8961 from gimple_fold_builtin_strcpy. Print inlining stack.
8962 (handle_builtin_stxncpy): Print inlining stack.
8963 * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare.
8964
8965 2018-02-22 H.J. Lu <hongjiu.lu@intel.com>
8966
8967 PR target/84176
8968 * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
8969 error when -mindirect-branch=thunk-extern, -fcf-protection=branch
8970 and -fcheck-pointer-bounds are used together.
8971 (indirect_thunk_prefix): New enum.
8972 (indirect_thunk_need_prefix): New function.
8973 (indirect_thunk_name): Replace need_bnd_p with need_prefix. Use
8974 "_nt" instead of "_bnd" for NOTRACK prefix.
8975 (output_indirect_thunk): Replace need_bnd_p with need_prefix.
8976 (output_indirect_thunk_function): Likewise.
8977 (): Likewise.
8978 (ix86_code_end): Update output_indirect_thunk_function calls.
8979 (ix86_output_indirect_branch_via_reg): Replace
8980 ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix.
8981 (ix86_output_indirect_branch_via_push): Likewise.
8982 (ix86_output_function_return): Likewise.
8983 * doc/invoke.texi: Document -mindirect-branch=thunk-extern is
8984 incompatible with -fcf-protection=branch and
8985 -fcheck-pointer-bounds.
8986
8987 2018-02-22 Steve Ellcey <sellcey@cavium.com>
8988
8989 PR target/83335
8990 * config/aarch64/aarch64.c (aarch64_print_address_internal):
8991 Change gcc_assert call to output_operand_lossage.
8992
8993 2018-02-22 Steve Ellcey <sellcey@cavium.com>
8994
8995 * doc/extend.texi (__builtin_extend_pointer): Document builtin.
8996
8997 2018-02-22 DJ Delorie <dj@redhat.com>
8998 Sebastian Perta <sebastian.perta@renesas.com>
8999 Oleg Endo <olegendo@gcc.gnu.org>
9000
9001 * config/rx/rx.c (rx_rtx_costs): New function.
9002 (TARGET_RTX_COSTS): Override to use rx_rtx_costs.
9003
9004 2018-02-22 Thomas Preud'homme <thomas.preudhomme@arm.com>
9005
9006 * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.
9007
9008 2018-02-22 Martin Liska <mliska@suse.cz>
9009
9010 PR driver/83193
9011 * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
9012 Add "native" as a possible value.
9013
9014 2018-02-22 Martin Liska <mliska@suse.cz>
9015
9016 PR driver/83193
9017 * config/i386/i386.c (ix86_option_override_internal):
9018 Add "native" as a possible value for -march and -mtune.
9019
9020 2018-02-22 Jakub Jelinek <jakub@redhat.com>
9021
9022 PR target/84502
9023 * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag
9024 to all type variants.
9025
9026 PR tree-optimization/84503
9027 * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute
9028 width as info->bitpos + info->bitsize - start.
9029 (merged_store_group::merge_overlapping): Simplify width computation.
9030 (check_no_overlap): New function.
9031 (imm_store_chain_info::try_coalesce_bswap): Compute expected
9032 start + width and last_order of the group, fail if check_no_overlap
9033 fails.
9034 (imm_store_chain_info::coalesce_immediate_stores): Don't merge info
9035 to group if check_no_overlap fails.
9036
9037 2018-02-21 Segher Boessenkool <segher@kernel.crashing.org>
9038
9039 * config/rs6000/altivec.md: Delete contraint arguments to
9040 define_expand, define_split, and define_peephole2, and in
9041 define_insn_and_split if always unused.
9042 * config/rs6000/darwin.md: Ditto.
9043 * config/rs6000/dfp.md: Ditto.
9044 * config/rs6000/rs6000.md: Ditto.
9045 * config/rs6000/sync.md: Ditto.
9046 * config/rs6000/vector.md: Ditto.
9047 * config/rs6000/vsx.md: Ditto.
9048
9049 2018-02-21 Segher Boessenkool <segher@kernel.crashing.org>
9050
9051 * config/rs6000/altivec.md: Write output control strings as braced
9052 blocks instead of double-quoted strings.
9053 * config/rs6000/darwin.md: Ditto.
9054 * config/rs6000/rs6000.md: Ditto.
9055 * config/rs6000/vector.md: Ditto.
9056 * config/rs6000/vsx.md: Ditto.
9057
9058 2018-02-21 Jason Merrill <jason@redhat.com>
9059
9060 PR c++/84314 - ICE with templates and fastcall attribute.
9061 * attribs.c (build_type_attribute_qual_variant): Remove assert.
9062
9063 2018-02-21 Jan Hubicka <hubicka@ucw.cz>
9064
9065 * ipa-cp.c (determine_versionability): Fix comment typos.
9066
9067 2018-02-21 Jan Hubicka <hubicka@ucw.cz>
9068
9069 PR c/84229
9070 * ipa-cp.c (determine_versionability): Do not version functions caling
9071 va_arg_pack.
9072
9073 2018-02-21 Martin Liska <mliska@suse.cz>
9074
9075 PR driver/83193
9076 * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
9077 Add "native" as a possible value.
9078 * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT): Define
9079 the macro when native cpu detection is available.
9080
9081 2018-02-21 Martin Liska <mliska@suse.cz>
9082
9083 PR driver/83193
9084 * common/config/arm/arm-common.c (arm_print_hint_for_arch_option):
9085 Add "native" as a possible value.
9086 * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro
9087 when native cpu detection is available.
9088
9089 2018-02-21 Jakub Jelinek <jakub@redhat.com>
9090 Martin Sebor <msebor@redhat.com>
9091
9092 PR tree-optimization/84478
9093 * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to
9094 false.
9095 * gimple-fold.c (get_range_strlen): Make minlen const and assume it
9096 can't be NULL. Change FUZZY from bool to int, for 1 add PHI/COND_EXPR
9097 support which is conservatively correct, for 2 only stay conservative
9098 for maxlen. Formatting and comment capitalization fixes. Add STRICT
9099 argument to the 2 argument get_range_strlen, adjust 6 arg
9100 get_range_strlen caller and clear minmaxlen[0] and [1] if it returned
9101 false.
9102 (get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
9103 (gimple_fold_builtin_strlen): Pass true as last argument to
9104 get_range_strlen.
9105
9106 2018-02-20 Martin Sebor <msebor@redhat.com>
9107
9108 PR middle-end/84095
9109 * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New.
9110 (builtin_memref::set_base_and_offset): Same. Handle inner references.
9111 (builtin_memref::builtin_memref): Factor out parts into
9112 set_base_and_offset and call it.
9113
9114 2018-02-20 Richard Sandiford <richard.sandiford@linaro.org>
9115
9116 PR middle-end/84406
9117 * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode
9118 is a scalar_int_mode, assert that to_mode is a scalar_int_mode with
9119 greater precision. If to_mode is a MODE_PARTIAL_INT, stop the
9120 search at the associated MODE_INT.
9121
9122 2018-02-20 Jeff Law <law@redhat.com>
9123
9124 PR middle-end/82123
9125 PR tree-optimization/81592
9126 PR middle-end/79257
9127 * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer
9128 for range data rather than using global data.
9129 * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
9130 range data rather than using global data.
9131 * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
9132 pass it to children as needed.
9133 (struct directive::fmtresult): Similarly.
9134 (struct directive::set_width): Similarly.
9135 (struct directive::set_precision): Similarly.
9136 (format_integer, format_directive, parse_directive): Similarly.
9137 (format_none): Accept unnamed vr_values parameter.
9138 (format_percent, format_floating, format_character): Similarly.
9139 (format_string, format_plain): Similarly.
9140 * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query
9141 the EVRP range analyzer for range data rather than using global data.
9142 * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and
9143 gimple-ssa-evrp-analyze.h
9144 (class sprintf_dom_walker): Add after_dom_children member function.
9145 Add evrp_range_analyzer member.
9146 (sprintf_dom_walker::before_dom_children): Call into the EVRP
9147 range analyzer as needed.
9148 (sprintf_dom_walker::after_dom_children): New member function.
9149 * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
9150 if not optimizing.
9151 (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
9152 (evrp_range_analyzer::pop_to_marker): Likewise.
9153
9154 2018-02-20 Richard Sandiford <richard.sandiford@linaro.org>
9155
9156 PR tree-optimization/84419
9157 * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF
9158 with the required type if its current type is compatible but
9159 different.
9160
9161 2018-02-20 Jakub Jelinek <jakub@redhat.com>
9162
9163 PR middle-end/82004
9164 * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until
9165 after vectorization.
9166
9167 2018-02-20 Martin Liska <mliska@suse.cz>
9168
9169 PR driver/83193
9170 * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print
9171 possible values if we don't have a hint.
9172
9173 2018-02-20 Martin Liska <mliska@suse.cz>
9174
9175 PR c/84310
9176 PR target/79747
9177 * final.c (shorten_branches): Build align_tab array with one
9178 more element.
9179 * opts.c (finish_options): Add alignment option limit check.
9180 (MAX_CODE_ALIGN): Likewise.
9181 (MAX_CODE_ALIGN_VALUE): Likewise.
9182 * doc/invoke.texi: Document maximum allowed option value for
9183 all -falign-* options.
9184
9185 2018-02-19 Jakub Jelinek <jakub@redhat.com>
9186
9187 PR target/84146
9188 * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note.
9189 * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove.
9190 * var-tracking.c (emit_note_insn_var_location): Remove all references
9191 to NOTE_INSN_CALL_ARG_LOCATION.
9192 (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on
9193 the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note.
9194 Use copy_rtx_if_shared.
9195 * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of
9196 NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note.
9197 (dwarf2out_var_location): Remove handling of
9198 NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note
9199 on call_insn.
9200 * final.c (final_scan_insn): Remove all references to
9201 NOTE_INSN_CALL_ARG_LOCATION.
9202 (rest_of_clean_state): Likewise. Remove REG_CALL_ARG_LOCATION notes
9203 before dumping final insns.
9204 * except.c (emit_note_eh_region_end): Remove all references to
9205 NOTE_INSN_CALL_ARG_LOCATION.
9206 * config/alpha/alpha.c (alpha_pad_function_end): Likewise.
9207 * config/c6x/c6x.c (c6x_gen_bundles): Likewise.
9208 * config/arc/arc.c (hwloop_optimize): Likewise.
9209 * config/arm/arm.c (create_fix_barrier): Likewise.
9210 * config/s390/s390.c (s390_chunkify_start): Likewise.
9211 * config/sh/sh.c (find_barrier): Likewise.
9212 * config/i386/i386.c (rest_of_insert_endbranch,
9213 ix86_seh_fixup_eh_fallthru): Likewise.
9214 * config/xtensa/xtensa.c (hwloop_optimize): Likewise.
9215 * config/iq2000/iq2000.c (final_prescan_insn): Likewise.
9216 * config/frv/frv.c (frv_function_prologue): Likewise.
9217 * emit-rtl.c (try_split): Likewise. Copy over REG_CALL_ARG_LOCATION
9218 reg note.
9219 (note_outside_basic_block_p): Remove all references to
9220 NOTE_INSN_CALL_ARG_LOCATION.
9221 * gengtype.c (adjust_field_rtx_def): Likewise.
9222 * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn):
9223 Likewise.
9224 * jump.c (cleanup_barriers, delete_related_insns): Likewise.
9225 * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
9226
9227 PR c++/84444
9228 * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
9229 is ADDR_EXPR.
9230
9231 PR tree-optimization/84452
9232 * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call
9233 expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen
9234 is NULL.
9235
9236 2018-02-19 Martin Liska <mliska@suse.cz>
9237
9238 PR sanitizer/82183
9239 * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0.
9240
9241 2018-02-19 Martin Liska <mliska@suse.cz>
9242 Richard Sandiford <richard.sandiford@linaro.org>
9243
9244 PR tree-optimization/82491
9245 * gimple-fold.c (get_base_constructor): Make earlier bail out
9246 to prevent ubsan.
9247
9248 2018-02-19 Carl Love <cel@us.ibm.com>
9249
9250 * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from
9251 BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to
9252 BU_P8V_OVERLOAD_1.
9253 * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to
9254 P8V_BUILTIN_VEC_NEG.
9255
9256 2018-02-19 Sebastian Perta <sebastian.perta@renesas.com>
9257
9258 * config/rl78/rl78.md (movdf): New define expand.
9259
9260 2018-02-19 Martin Liska <mliska@suse.cz>
9261
9262 PR other/80589
9263 * doc/invoke.texi: Fix typo.
9264 * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
9265
9266 2018-02-18 Segher Boessenkool <segher@kernel.crashing.org>
9267
9268 * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
9269 handle rs6000_single_float and rs6000_double_float specially for
9270 e500 family CPUs.
9271
9272 2018-02-16 Jeff Law <law@redhat.com>
9273
9274 * config/rx/rx.c (add_pop_cfi_notes): New function.;
9275 (pop_regs): Use it.
9276
9277 2018-02-16 Jakub Jelinek <jakub@redhat.com>
9278
9279 PR ipa/84425
9280 * ipa-inline.c (inline_small_functions): Fix a typo.
9281
9282 2018-02-16 Nathan Sidwell <nathan@acm.org>
9283
9284 * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'.
9285
9286 2018-02-16 Carl Love <cel@us.ibm.com>
9287
9288 * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition.
9289 Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and
9290 from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2.
9291 * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2
9292 expansion to P8V_BUILTIN_VEC_FLOAT2.
9293
9294 2018-02-16 Vladimir Makarov <vmakarov@redhat.com>
9295
9296 PR rtl-optimization/70023
9297 * lra-constraints.c (inherit_in_ebb): Take hard reg mode of
9298 src_regno into account.
9299
9300 2018-02-16 Carl Love <cel@us.ibm.com>
9301
9302 * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
9303 * config/rs6000/rs6000-builtin.def: Remove macro expansion for
9304 VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B.
9305 * config/rs6000/rs6000.c: Remove case statements for
9306 P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B,
9307 P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
9308 and P9V_BUILTIN_VEC_VINSERT4B.
9309 * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
9310 P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
9311 * config/rs6000/vsx.md:
9312 * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
9313 vec_insert4b.
9314
9315 2018-02-16 Carl Love <cel@us.ibm.com>
9316
9317 * config/rs6000/altivec.h: Add builtin names vec_extract4b
9318 vec_insert4b.
9319 * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
9320 definitions.
9321 * config/rs6000/rs6000-c.c: Add the definitions for
9322 P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
9323 * config/rs6000/rs6000.c (altivec_expand_builtin): Add
9324 P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
9325 * config/rs6000/vsx.md: Add define_insn extract4b. Add define_expand
9326 definition for insert4b and define insn *insert3b_internal.
9327 * doc/extend.texi: Add documentation for vec_extract4b.
9328
9329 2018-02-16 Nathan Sidwell <nathan@acm.org>
9330
9331 * doc/extend.texi (Backwards Compatibility): Mention friend
9332 injection. Note for-scope is deprecated.
9333 * doc/invoke.texi (-ffriend-injection): Deprecate.
9334
9335 2018-02-16 Segher Boessenkool <segher@kernel.crashing.org>
9336
9337 * combine.c (try_combine): When adjusting LOG_LINKS for the destination
9338 that moved to I2, also allow destinations that are a paradoxical
9339 subreg (instead of a normal reg).
9340
9341 2018-02-16 Oleg Endo <olegendo@gcc.gnu.org>
9342
9343 PR target/83831
9344 * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
9345 to QImode.
9346
9347 2018-02-16 Richard Biener <rguenther@suse.de>
9348
9349 PR tree-optimization/84037
9350 PR tree-optimization/84016
9351 PR target/82862
9352 * config/i386/i386.c (ix86_builtin_vectorization_cost):
9353 Adjust vec_construct for the fact we need additional higher latency
9354 128bit inserts for AVX256 and AVX512 vector builds.
9355 (ix86_add_stmt_cost): Scale vector construction cost for
9356 elementwise loads.
9357
9358 2018-02-16 Richard Biener <rguenther@suse.de>
9359
9360 PR tree-optimization/84417
9361 * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain
9362 the MEM_REF offset when conversion to BIT_FIELD_REF is desired.
9363 (non_rewritable_lvalue_p): Likewise, use poly-ints.
9364
9365 2018-02-16 Martin Liska <mliska@suse.cz>
9366
9367 PR sanitizer/84307
9368 * internal-fn.def (ASAN_CHECK): Set proper flags.
9369 (ASAN_MARK): Likewise.
9370
9371 2018-02-16 Julia Koval <julia.koval@intel.com>
9372
9373 * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB
9374 from PTA_CANNONLAKE.
9375
9376 2018-02-16 Jakub Jelinek <jakub@redhat.com>
9377
9378 PR target/84272
9379 * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest):
9380 Use ++iter rather than iter++ for std::list iterators.
9381 (func_fma_steering::dfs): Likewise. Don't delete nodes right away,
9382 defer deleting them until all nodes in the forest are processed. Do
9383 free even leaf nodes. Change to_process into auto_vec.
9384
9385 PR bootstrap/84405
9386 * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3.
9387 * vec.h (vec_default_construct): Use memset instead of placement new
9388 if BROKEN_VALUE_INITIALIZATION is defined.
9389 * hash-table.h (hash_table<Descriptor, Allocator>::empty_slow): Use
9390 memset instead of value initialization if BROKEN_VALUE_INITIALIZATION
9391 is defined.
9392
9393 PR rtl-optimization/83723
9394 * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument.
9395 * lra.c (lra_substitute_pseudo): Likewise. If true, use
9396 gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG. Pass DEBUG_P to
9397 recursive calls.
9398 (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
9399 callers.
9400 * lra-constraints.c (inherit_reload_reg, split_reg): Likewise.
9401
9402 2018-02-16 Eric Botcazou <ebotcazou@adacore.com>
9403
9404 PR rtl-optimization/81443
9405 * rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
9406 from inner REGs to paradoxical SUBREGs.
9407
9408 2018-02-16 Richard Biener <rguenther@suse.de>
9409
9410 PR tree-optimization/84399
9411 * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
9412 For operands we can analyze at their definition make sure we can
9413 analyze them at each use as well.
9414
9415 2018-02-16 Richard Biener <rguenther@suse.de>
9416
9417 PR tree-optimization/84190
9418 * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
9419 volatile accesses if the decl isn't volatile.
9420
9421 2018-02-15 Jason Merrill <jason@redhat.com>
9422
9423 PR c++/84314 - ICE with templates and fastcall attribute.
9424 * attribs.c (build_type_attribute_qual_variant): Don't clobber
9425 TYPE_CANONICAL on an existing type.
9426
9427 2018-02-15 Jakub Jelinek <jakub@redhat.com>
9428
9429 PR tree-optimization/84383
9430 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at
9431 dstoff nor call operand_equal_p if dstbase is NULL.
9432
9433 PR tree-optimization/84334
9434 * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is
9435 also a CONSTANT_CLASS_P, punt.
9436
9437 2018-02-14 Jim Wilson <jimw@sifive.com>
9438
9439 * config/riscv/riscv.c (riscv_first_stack_step): Move locals after
9440 first SMALL_OPERAND check. New local min_second_step. Move assert
9441 to where locals are set. Add TARGET_RVC support.
9442 * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New.
9443
9444 2018-02-14 Indu Bhagat <indu.bhagat@oracle.com>
9445
9446 * doc/invoke.texi: Correct -Wformat-overflow code sample.
9447
9448 2018-02-14 Martin Sebor <msebor@redhat.com>
9449
9450 PR tree-optimization/83698
9451 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For
9452 arrays constrain the offset range to their bounds.
9453 (builtin_access::strcat_overlap): Adjust the bounds of overlap offset.
9454 (builtin_access::overlap): Avoid setting the size of overlap if it's
9455 already been set.
9456 (maybe_diag_overlap): Also consider arrays when deciding what values
9457 of offsets to include in diagnostics.
9458
9459 2018-02-14 Martin Sebor <msebor@redhat.com>
9460
9461 PR c/84108
9462 * attribs.c (diag_attr_exclusions): Consider the exclusion(s)
9463 that correspond to the kind of a declaration.
9464
9465 2018-02-14 John David Anglin <danglin@gcc.gnu.org>
9466
9467 PR target/83984
9468 * config/pa/pa.md: Load address of PIC label using the linkage table
9469 if the label is nonlocal.
9470
9471 2018-02-14 Kelvin Nilsen <kelvin@gcc.gnu.org>
9472
9473 * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue
9474 warning message if user requests -maltivec=be.
9475 * doc/invoke.texi: Document deprecation of -maltivec=be.
9476
9477 2018-02-14 Will Schmidt <will_schmidt@vnet.ibm.com>
9478
9479 PR target/84220
9480 * config/rs6000/rs6000-c.c: Update definitions for
9481 ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW,
9482 VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins.
9483
9484 2018-02-14 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
9485
9486 PR target/84239
9487 * config/i386/cetintrin.h: Remove _rdssp[d|q] and
9488 add _get_ssp intrinsics. Remove argument from
9489 __builtin_ia32_rdssp[d|q].
9490 * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
9491 * config/i386/i386-builtin.def: Remove argument from
9492 __builtin_ia32_rdssp[d|q].
9493 * config/i386/i386.c: Use UINT_FTYPE_VOID. Use
9494 ix86_expand_special_args_builtin for _rdssp[d|q].
9495 * config/i386/i386.md: Remove argument from rdssp[si|di] insn.
9496 Clear register before usage.
9497 * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
9498 Add documentation for new _get_ssp and _inc_ssp intrinsics.
9499
9500 2018-02-14 Richard Sandiford <richard.sandiford@linaro.org>
9501
9502 PR tree-optimization/84357
9503 * tree-data-ref.c (object_address_invariant_in_loop_p): Check
9504 operand 1 of an ARRAY_REF too.
9505
9506 2018-02-14 Oleg Endo <olegendo@gcc.gnu.org>
9507
9508 PR target/83831
9509 * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn,
9510 rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
9511 declarations.
9512 (set_of_reg): New struct.
9513 (rx_find_set_of_reg, rx_find_use_of_reg): New functions.
9514 * config/rx/rx.c (rx_reg_dead_or_unused_after_insn,
9515 rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
9516 functions.
9517 * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split.
9518 Split into bitclr, bitset, bitinvert patterns if appropriate.
9519 (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and
9520 use rx_fuse_in_memory_bitop.
9521 (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
9522 to named insn, correct maximum insn length.
9523
9524 2018-02-14 Jozef Lawrynowicz <jozefl.gcc@gmail.com>
9525
9526 PR target/79242
9527 * machmode.def: Define a complex mode for PARTIAL_INT.
9528 * genmodes.c (complex_class): Return MODE_COMPLEX_INT for
9529 MODE_PARTIAL_INT.
9530 * doc/rtl.texi: Document CSPImode.
9531 * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
9532 handling.
9533 (msp430_hard_regno_nregs_with_padding): Likewise.
9534
9535 2018-02-13 Peter Bergner <bergner@vnet.ibm.com>
9536
9537 PR target/84279
9538 * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
9539
9540 2018-02-13 Segher Boessenkool <segher@kernel.crashing.org>
9541
9542 PR rtl-optimization/84169
9543 * combine.c (try_combine): New variable split_i2i3. Set it to true if
9544 we generated a parallel as new i3 and we split that to new i2 and i3
9545 instructions. Handle split_i2i3 similar to swap_i2i3: scan the
9546 LOG_LINKs of i3 to see which of those need to link to i2 now. Link
9547 those to i2, not i1. Partially rewrite this scan code.
9548
9549 2018-02-13 Jakub Jelinek <jakub@redhat.com>
9550
9551 PR c/82210
9552 * stor-layout.c (place_field): For variable length fields, adjust
9553 offset_align afterwards not just based on the field's alignment,
9554 but also on the size.
9555
9556 PR middle-end/84309
9557 * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead
9558 of exps and logs in the use_exp2 case.
9559
9560 2018-02-13 Jeff Law <law@redhat.com>
9561
9562 * config/rl/rl78.c (rl78_attribute_table): Fix terminator and
9563 entry for "vector".
9564
9565 * config/rl78/rl78.c (rl78_handle_func_attribute): Mark
9566 ARGS as unused.
9567
9568 2018-02-13 Alexandre Oliva <aoliva@redhat.com>
9569
9570 PR debug/84342
9571 PR debug/84319
9572 * common.opt (gas-loc-support, gas-locview-support): New.
9573 (ginline-points, ginternal-reset-location-views): New.
9574 * doc/invoke.texi: Document them. Use @itemx where intended.
9575 (gvariable-location-views): Adjust.
9576 * target.def (reset_location_view): New.
9577 * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
9578 (TARGET_RESET_LOCATION_VIEW): New.
9579 * doc/tm.texi: Rebuilt.
9580 * dwarf2out.c (dwarf2out_default_as_loc_support): New.
9581 (dwarf2out_default_as_locview_support): New.
9582 (output_asm_line_debug_info): Use option variables.
9583 (dwarf2out_maybe_output_loclist_view_pair): Likewise.
9584 (output_loc_list): Likewise.
9585 (add_high_low_attributes): Check option variables.
9586 Don't output entry view attribute in strict mode.
9587 (gen_inlined_subroutine_die): Check option variables.
9588 (dwarf2out_inline_entry): Likewise.
9589 (init_sections_and_labels): Likewise.
9590 (dwarf2out_early_finish): Likewise.
9591 (maybe_reset_location_view): New, from...
9592 (dwarf2out_var_location): ... here. Call it.
9593 * debug.h (dwarf2out_default_as_loc_support): Declare.
9594 (dwarf2out_default_as_locview_support): Declare.
9595 * hooks.c (hook_int_rtx_insn_0): New.
9596 * hooks.h (hook_int_rtx_insn_0): Declare.
9597 * toplev.c (process_options): Take -gas-loc-support and
9598 -gas-locview-support from dwarf2out. Enable
9599 -gvariable-location-views by default only with locview
9600 assembler support. Enable -ginternal-reset-location-views by
9601 default only if the target defines the corresponding hook.
9602 Enable -ginline-points by default if location views are
9603 enabled; force it disabled if statement frontiers are
9604 disabled.
9605 * tree-inline.c (expand_call_inline): Check option variables.
9606 * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
9607
9608 2018-02-13 Richard Sandiford <richard.sandiford@linaro.org>
9609
9610 PR tree-optimization/84321
9611 * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE
9612 handling. Also check whether the anti-range contains any values
9613 that satisfy the mask; switch to a VR_RANGE if not.
9614
9615 2018-02-13 Paolo Bonzini <bonzini@gnu.org>
9616
9617 PR sanitizer/84340
9618 * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
9619
9620 2018-02-13 Martin Jambor <mjambor@suse.cz>
9621
9622 PR c++/83990
9623 * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location
9624 of call statements, also set location of a load to a temporary.
9625
9626 2018-02-13 Sebastian Perta <sebastian.perta@renesas.com>
9627
9628 * config/rl78/rl78.c (add_vector_labels): New function.
9629 * config/rl78/rl78.c (rl78_handle_vector_attribute): New function.
9630 * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels.
9631 * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert
9632 which checks that no arguments are passed.
9633 * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute.
9634 * doc/extend.texi: Documentation for the new attribute.
9635
9636 2018-02-13 Andreas Schwab <schwab@suse.de>
9637
9638 * config/riscv/linux.h (CPP_SPEC): Define.
9639
9640 2018-02-13 Jakub Jelinek <jakub@redhat.com>
9641
9642 PR target/84335
9643 * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass
9644 OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of
9645 OPTION_MASK_ISA_AES as first argument to def_builtin_const
9646 for AES builtins. Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2
9647 instead of OPTION_MASK_ISA_PCLMUL as first argument to
9648 def_builtin_const for __builtin_ia32_pclmulqdq128 builtin.
9649 * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it
9650 temporarily for AES and PCLMUL builtins.
9651
9652 PR tree-optimization/84339
9653 * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling
9654 ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF.
9655 Formatting fixes.
9656
9657 PR middle-end/84309
9658 * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into
9659 exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available.
9660 * generic-match-head.c (canonicalize_math_after_vectorization_p): New
9661 inline function.
9662 * gimple-match-head.c (canonicalize_math_after_vectorization_p): New
9663 inline function.
9664 * omp-simd-clone.h: New file.
9665 * omp-simd-clone.c: Include omp-simd-clone.h.
9666 (expand_simd_clones): No longer static.
9667 * tree-vect-patterns.c: Include fold-const-call.h, attribs.h,
9668 cgraph.h and omp-simd-clone.h.
9669 (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x).
9670 (vect_recog_widen_shift_pattern): Formatting fix.
9671 (vect_pattern_recog_1): Don't check optab for calls.
9672
9673 PR target/84336
9674 * config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
9675 operands[2] into a REG before using gen_lowpart on it.
9676
9677 2018-02-12 Jeff Law <law@redhat.com>
9678
9679 PR target/83760
9680 * config/sh/sh.c (find_barrier): Consider a sibling call
9681 a barrier as well.
9682
9683 * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
9684 successfully back substituting a reg.
9685
9686 2018-02-12 Richard Biener <rguenther@suse.de>
9687
9688 PR tree-optimization/84037
9689 * tree-vect-slp.c (vect_analyze_slp_cost): Add visited
9690 parameter, move visited init to caller.
9691 (vect_slp_analyze_operations): Separate cost from validity
9692 check, initialize visited once for all instances.
9693 (vect_schedule_slp): Analyze map to CSE vectorized nodes once
9694 for all instances.
9695 * tree-vect-stmts.c (vect_model_simple_cost): Make early
9696 out an assert.
9697 (vect_model_promotion_demotion_cost): Likewise.
9698 (vectorizable_bswap): Guard cost modeling with !slp_node
9699 instead of !PURE_SLP_STMT to avoid double-counting on hybrid
9700 SLP stmts.
9701 (vectorizable_call): Likewise.
9702 (vectorizable_conversion): Likewise.
9703 (vectorizable_assignment): Likewise.
9704 (vectorizable_shift): Likewise.
9705 (vectorizable_operation): Likewise.
9706 (vectorizable_store): Likewise.
9707 (vectorizable_load): Likewise.
9708 (vectorizable_condition): Likewise.
9709 (vectorizable_comparison): Likewise.
9710
9711 2018-02-12 Paolo Bonzini <bonzini@gnu.org>
9712
9713 PR sanitizer/84307
9714 * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
9715 (ASAN_MARK): Fix fnspec to account for return value, change pointer
9716 argument from 'R' to 'W' so that the pointed-to datum is clobbered.
9717
9718 2018-02-08 Jan Hubicka <hubicka@ucw.cz>
9719
9720 PR middle-end/83665
9721 * params.def (inline-min-speedup): Increase from 8 to 15.
9722 (max-inline-insns-auto): Decrease from 40 to 30.
9723 * ipa-split.c (consider_split): Add some buffer for function to
9724 be considered inlining candidate.
9725 * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
9726 default values.
9727
9728 2018-02-12 Richard Biener <rguenther@suse.de>
9729
9730 PR tree-optimization/84037
9731 * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the
9732 matched stmts if we cannot swap the non-matched ones.
9733
9734 2018-02-12 Olga Makhotina <olga.makhotina@intel.com>
9735
9736 * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd,
9737 _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss,
9738 _mm_maskz_scalef_round_ss): New intrinsics.
9739 (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix.
9740 * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round,
9741 __builtin_ia32_scalefss_round): Remove.
9742 (__builtin_ia32_scalefsd_mask_round,
9743 __builtin_ia32_scalefss_mask_round): New intrinsics.
9744 * config/i386/sse.md (vmscalef<mode><round_name>): Renamed to ...
9745 (vmscalef<mode><mask_scalar_name><round_scalar_name>): ... this.
9746 ((match_operand:VF_128 2 "<round_nimm_predicate>"
9747 "<round_constraint>")): Changed to ...
9748 ((match_operand:VF_128 2 "<round_scalar_nimm_predicate>"
9749 "<round_scalar_constraint>")): ... this.
9750 ("vscalef<ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|
9751 %0, %1, %2<round_op3>}"): Changed to ...
9752 ("vscalef<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1,
9753 %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1,
9754 %2<round_scalar_mask_op3>}"): ... this.
9755 * config/i386/subst.md (round_scalar_nimm_predicate): New.
9756
9757 2018-02-12 Olga Makhotina <olga.makhotina@intel.com>
9758
9759 * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd)
9760 (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss)
9761 (_mm_maskz_sqrt_round_ss): New intrinsics.
9762 (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove.
9763 (__builtin_ia32_sqrtsd_mask_round)
9764 (__builtin_ia32_sqrtss_mask_round): New builtins.
9765 * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round)
9766 (__builtin_ia32_sqrtss_round): Remove.
9767 (__builtin_ia32_sqrtsd_mask_round)
9768 (__builtin_ia32_sqrtss_mask_round): New builtins.
9769 * config/i386/sse.md (vmsqrt<mode>2<round_name>): Renamed to ...
9770 (vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): ... this.
9771 ((match_operand:VF_128 1 "vector_operand"
9772 "xBm,<round_constraint>")): Changed to ...
9773 ((match_operand:VF_128 1 "vector_operand"
9774 "xBm,<round_scalar_constraint>")): ... this.
9775 (vsqrt<ssescalarmodesuffix>\t{<round_op3>%1, %2, %0|
9776 %0, %2, %<iptr>1<round_op3>}): Changed to ...
9777 (vsqrt<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%1, %2,
9778 %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %2,
9779 %<iptr>1<round_scalar_mask_op3>}): ... this.
9780 ((set_attr "prefix" "<round_prefix>")): Changed to ...
9781 ((set_attr "prefix" "<round_scalar_prefix>")): ... this.
9782
9783 2018-02-11 Steven Munroe <munroesj@gcc.gnu.org>
9784
9785 PR target/84266
9786 * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
9787 Cast vec_cmpeq result to correct type.
9788 * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
9789 Cast vec_cmpgt result to correct type.
9790
9791 2018-02-11 Alexandre Oliva <aoliva@redhat.com>
9792
9793 * final.c (final_scan_insn_1): Renamed from...
9794 (final_scan_insn): ... this. New wrapper, to recover
9795 seen from the outermost call in recursive ones.
9796 * config/sparc/sparc.c (output_return): Drop seen from call.
9797 (output_sibcall): Likewise.
9798 * config/visium/visium.c (output_branch): Likewise.
9799
9800 2018-02-10 John David Anglin <danglin@gcc.gnu.org>
9801
9802 * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
9803 function label.
9804
9805 2018-02-10 Alan Modra <amodra@gmail.com>
9806
9807 PR target/84300
9808 * config/rs6000/rs6000.md (split_stack_return): Remove (use ..).
9809 Specify LR as an input.
9810
9811 2018-02-10 Jakub Jelinek <jakub@redhat.com>
9812
9813 PR sanitizer/83987
9814 * omp-low.c (maybe_remove_omp_member_access_dummy_vars,
9815 remove_member_access_dummy_vars): New functions.
9816 (lower_omp_for, lower_omp_taskreg, lower_omp_target,
9817 lower_omp_1, execute_lower_omp): Use them.
9818
9819 PR rtl-optimization/84308
9820 * shrink-wrap.c (spread_components): Release todo vector.
9821
9822 2018-02-09 Vladimir Makarov <vmakarov@redhat.com>
9823
9824 PR rtl-optimization/57193
9825 * ira-color.c (struct allocno_color_data): Add member
9826 conflict_allocno_hard_prefs.
9827 (update_conflict_allocno_hard_prefs): New.
9828 (bucket_allocno_compare_func): Add a preference based on
9829 conflict_allocno_hard_prefs.
9830 (push_allocno_to_stack): Update conflict_allocno_hard_prefs.
9831 (color_allocnos): Remove a dead code. Initiate
9832 conflict_allocno_hard_prefs. Call update_costs_from_prefs.
9833
9834 2018-02-09 Jakub Jelinek <jakub@redhat.com>
9835
9836 PR target/84226
9837 * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand
9838 constraint from =wa to wa. Avoid a subreg on the output operand,
9839 instead use a pseudo and subreg it in a move.
9840 (p9_xxbrd_<mode>): Changed to ...
9841 (p9_xxbrd_v2di): ... this insn, without VSX_D iterator.
9842 (p9_xxbrd_v2df): New expander.
9843 (p9_xxbrw_<mode>): Changed to ...
9844 (p9_xxbrw_v4si): ... this insn, without VSX_W iterator.
9845 (p9_xxbrw_v4sf): New expander.
9846
9847 2018-02-09 Sebastian Perta <sebastian.perta@renesas.com>
9848
9849 * config/rx/rx.md (movsicc): Update expander to be matched by GCC.
9850
9851 2018-02-09 Peter Bergner <bergner@vnet.ibm.com>
9852
9853 PR target/83926
9854 * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit
9855 multiply in 32-bit mode.
9856 (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode.
9857 (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit
9858 mode.
9859
9860 2018-02-09 Sebastian Perta <sebastian.perta@renesas.com>
9861
9862 * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint
9863 to allow or block "symbol_ref" depending on the value of TARGET_JSR.
9864 * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF.
9865 * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF.
9866
9867 2018-02-09 Pierre-Marie de Rodat <derodat@adacore.com>
9868
9869 PR lto/84213
9870 * dwarf2out.c (is_trivial_indirect_ref): New function.
9871 (dwarf2out_late_global_decl): Do not generate a location
9872 attribute for variables that have a non-trivial DECL_VALUE_EXPR
9873 and that are not defined in the current unit.
9874
9875 2018-02-09 Eric Botcazou <ebotcazou@adacore.com>
9876
9877 * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison
9878 instead of a libcall for UNORDERED.
9879
9880 2018-02-09 Tamar Christina <tamar.christina@arm.com>
9881
9882 PR target/82641
9883 * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX,
9884 __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP.
9885
9886 2018-02-09 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
9887
9888 PR target/PR84295
9889 * config/s390/s390.c (s390_set_current_function): Invoke
9890 s390_indirect_branch_settings also if fndecl didn't change.
9891
9892 2018-02-09 Alexandre Oliva <aoliva@redhat.com>
9893
9894 * config/rs6000/rs6000.md (blockage): Set length to zero.
9895
9896 2018-02-09 Eric Botcazou <ebotcazou@adacore.com>
9897
9898 * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
9899
9900 2018-02-09 Jakub Jelinek <jakub@redhat.com>
9901
9902 PR sanitizer/84285
9903 * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
9904 STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
9905 -static-lib*san.
9906
9907 PR debug/84252
9908 * var-tracking.c (vt_add_function_parameter): Punt for non-onepart
9909 PARALLEL incoming that failed vt_get_decl_and_offset check.
9910
9911 PR middle-end/84237
9912 * output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
9913 * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
9914 TREE_READONLY bit.
9915 (get_variable_section): For decls in named .bss* sections pass true as
9916 second argument to bss_initializer_p.
9917
9918 2018-02-09 Marek Polacek <polacek@redhat.com>
9919 Jakub Jelinek <jakub@redhat.com>
9920
9921 PR c++/83659
9922 * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
9923 Formatting fixes. Verify first that tree_fits_poly_int64_p (op01).
9924 Sync some changes from cxx_fold_indirect_ref.
9925
9926 2018-02-09 Alexandre Oliva <aoliva@redhat.com>
9927
9928 * cfgexpand.c (expand_gimple_basic_block): Handle inline entry
9929 markers.
9930 * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
9931 (BLOCK_INLINE_ENTRY_LABEL): New.
9932 (dwarf2out_var_location): Disregard inline entry markers.
9933 (inline_entry_data): New struct.
9934 (inline_entry_data_hasher): New hashtable type.
9935 (inline_entry_data_hasher::hash): New.
9936 (inline_entry_data_hasher::equal): New.
9937 (inline_entry_data_table): New variable.
9938 (add_high_low_attributes): Add DW_AT_entry_pc and
9939 DW_AT_GNU_entry_view attributes if a pending entry is found
9940 in inline_entry_data_table. Add old entry_pc attribute only
9941 if debug nonbinding markers are disabled.
9942 (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
9943 markers are enabled.
9944 (block_within_block_p, dwarf2out_inline_entry): New.
9945 (dwarf2out_finish): Check that no entries remained in
9946 inline_entry_data_table.
9947 * final.c (reemit_insn_block_notes): Handle inline entry notes.
9948 (final_scan_insn, notice_source_line): Likewise.
9949 (rest_of_clean_state): Skip inline entry markers.
9950 * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
9951 markers.
9952 * gimple.c (gimple_build_debug_inline_entry): New.
9953 * gimple.h (enum gimple_debug_subcode): Add
9954 GIMPLE_DEBUG_INLINE_ENTRY.
9955 (gimple_build_debug_inline_entry): Declare.
9956 (gimple_debug_inline_entry_p): New.
9957 (gimple_debug_nonbind_marker_p): Adjust.
9958 * insn-notes.def (INLINE_ENTRY): New.
9959 * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
9960 inline entry marker notes.
9961 (print_insn): Likewise.
9962 * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support.
9963 (INSN_DEBUG_MARKER_KIND): Likewise.
9964 (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
9965 * tree-inline.c (expand_call_inline): Build and insert
9966 debug_inline_entry stmt.
9967 * tree-ssa-live.c (remove_unused_scope_block_p): Preserve
9968 inline entry blocks early, if nonbind markers are enabled.
9969 (dump_scope_block): Dump fragment info.
9970 * var-tracking.c (reemit_marker_as_note): Handle inline entry note.
9971 * doc/gimple.texi (gimple_debug_inline_entry_p): New.
9972 (gimple_build_debug_inline_entry): New.
9973 * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
9974 Enable/disable inline entry points too.
9975 * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
9976 (DEBUG_INSN): Describe inline entry markers.
9977
9978 * common.opt (gvariable-location-views): New.
9979 (gvariable-location-views=incompat5): New.
9980 * config.in: Rebuilt.
9981 * configure: Rebuilt.
9982 * configure.ac: Test assembler for view support.
9983 * dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
9984 * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
9985 * dwarf2out.c (var_loc_view): New typedef.
9986 (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
9987 (dwarf2out_locviews_in_attribute): New.
9988 (dwarf2out_locviews_in_loclist): New.
9989 (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
9990 (enum dw_line_info_opcode): Add LI_adv_address.
9991 (struct dw_line_info_table): Add view.
9992 (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
9993 (DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
9994 (zero_view_p): New variable.
9995 (ZERO_VIEW_P): New macro.
9996 (output_asm_line_debug_info): New.
9997 (struct var_loc_node): Add view.
9998 (add_AT_view_list, AT_loc_list): New.
9999 (add_var_loc_to_decl): Add view param. Test it against last.
10000 (new_loc_list): Add view params. Record them.
10001 (AT_loc_list_ptr): Handle loc and view lists.
10002 (view_list_to_loc_list_val_node): New.
10003 (print_dw_val): Handle dw_val_class_view_list.
10004 (size_of_die): Likewise.
10005 (value_format): Likewise.
10006 (loc_list_has_views): New.
10007 (gen_llsym): Set vl_symbol too.
10008 (maybe_gen_llsym, skip_loc_list_entry): New.
10009 (dwarf2out_maybe_output_loclist_view_pair): New.
10010 (output_loc_list): Output view list or entries too.
10011 (output_view_list_offset): New.
10012 (output_die): Handle dw_val_class_view_list.
10013 (output_dwarf_version): New.
10014 (output_compilation_unit_header): Use it.
10015 (output_skeleton_debug_sections): Likewise.
10016 (output_rnglists, output_line_info): Likewise.
10017 (output_pubnames, output_aranges): Update version comments.
10018 (output_one_line_info_table): Output view numbers in asm comments.
10019 (dw_loc_list): Determine current endview, pass it to new_loc_list.
10020 Call maybe_gen_llsym.
10021 (loc_list_from_tree_1): Adjust.
10022 (add_AT_location_description): Create view list attribute if
10023 needed, check it's absent otherwise.
10024 (convert_cfa_to_fb_loc_list): Adjust.
10025 (maybe_emit_file): Call output_asm_line_debug_info for test.
10026 (dwarf2out_var_location): Reset views as needed. Precompute
10027 add_var_loc_to_decl args. Call get_attr_min_length only if we have the
10028 attribute. Set view.
10029 (new_line_info_table): Reset next view.
10030 (set_cur_line_info_table): Call output_asm_line_debug_info for test.
10031 (dwarf2out_source_line): Likewise. Output view resets and labels to
10032 the assembler, or select appropriate line info opcodes.
10033 (prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
10034 (optimize_string_length): Catch it. Adjust.
10035 (resolve_addr): Copy vl_symbol along with ll_symbol. Handle
10036 dw_val_class_view_list, and remove it if no longer needed.
10037 (hash_loc_list): Hash view numbers.
10038 (loc_list_hasher::equal): Compare them.
10039 (optimize_location_lists): Check whether a view list symbol is
10040 needed, and whether the locview attribute is present, and
10041 whether they match. Remove the locview attribute if no longer
10042 needed.
10043 (index_location_lists): Call skip_loc_list_entry for test.
10044 (dwarf2out_finish): Call output_asm_line_debug_info for test.
10045 Use output_dwarf_version.
10046 * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
10047 (struct dw_val_node): Add val_view_list.
10048 * final.c (SEEN_NEXT_VIEW): New.
10049 (set_next_view_needed): New.
10050 (clear_next_view_needed): New.
10051 (maybe_output_next_view): New.
10052 (final_start_function): Rename to...
10053 (final_start_function_1): ... this. Take pointer to FIRST,
10054 add SEEN parameter. Emit param bindings in the initial view.
10055 (final_start_function): Reintroduce SEEN-less interface.
10056 (final): Rename to...
10057 (final_1): ... this. Take SEEN parameter. Output final pending
10058 next view at the end.
10059 (final): Reintroduce seen-less interface.
10060 (final_scan_insn): Output pending next view before switching
10061 sections or ending a block. Mark the next view as needed when
10062 outputting variable locations. Notify debug backend of section
10063 changes, and of location view changes.
10064 (rest_of_handle_final): Adjust.
10065 * toplev.c (process_options): Autodetect value for debug variable
10066 location views option. Warn on incompat5 without -gdwarf-5.
10067 * doc/invoke.texi (gvariable-location-views): New.
10068 (gvariable-location-views=incompat5): New.
10069 (gno-variable-location-views): New.
10070
10071 2018-02-08 David Malcolm <dmalcolm@redhat.com>
10072
10073 PR tree-optimization/84136
10074 * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion
10075 that the result of find_edge is non-NULL.
10076
10077 2018-02-08 Sergey Shalnov <sergey.shalnov@intel.com>
10078
10079 PR target/83008
10080 * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of
10081 storing integer register in SImode. Fix cost of 256 and 512
10082 byte aligned SSE register store.
10083
10084 2018-02-08 Sergey Shalnov <sergey.shalnov@intel.com>
10085
10086 * config/i386/i386.c (ix86_multiplication_cost): Fix
10087 multiplication cost for TARGET_AVX512DQ.
10088
10089 2018-02-08 Marek Polacek <polacek@redhat.com>
10090
10091 PR tree-optimization/84238
10092 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
10093 get_range_strlen.
10094
10095 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
10096
10097 PR tree-optimization/84265
10098 * tree-vect-stmts.c (vectorizable_store): Don't treat
10099 VMAT_CONTIGUOUS accesses as grouped.
10100 (vectorizable_load): Likewise.
10101
10102 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
10103
10104 PR tree-optimization/81635
10105 * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
10106 * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
10107 (test_round_for_mask): New functions.
10108 (wide_int_cc_tests): Call test_round_for_mask.
10109 * tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
10110 * tree-vrp.c (intersect_range_with_nonzero_bits): New function.
10111 * tree-data-ref.c (split_constant_offset_1): Use it to refine the
10112 range returned by get_range_info.
10113
10114 2018-02-08 Jan Hubicka <hubicka@ucw.cz>
10115
10116 PR ipa/81360
10117 * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
10118 * symtab.c: Include builtins.h
10119 (symtab_node::output_to_lto_symbol_table_p): Move here
10120 from lto-streamer-out.c:output_symbol_p.
10121 * lto-streamer-out.c (write_symbol): Turn early exit to assert.
10122 (output_symbol_p): Move all logic to symtab.c
10123 (produce_symtab): Update.
10124
10125 2018-02-08 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
10126
10127 * config/s390/s390-opts.h (enum indirect_branch): Define.
10128 * config/s390/s390-protos.h (s390_return_addr_from_memory)
10129 (s390_indirect_branch_via_thunk)
10130 (s390_indirect_branch_via_inline_thunk): Add function prototypes.
10131 (enum s390_indirect_branch_type): Define.
10132 * config/s390/s390.c (struct s390_frame_layout, struct
10133 machine_function): Remove.
10134 (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
10135 (indirect_branch_table_label_no, indirect_branch_table_name):
10136 Define variables.
10137 (INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
10138 (enum s390_indirect_branch_option): Define.
10139 (s390_return_addr_from_memory): New function.
10140 (s390_handle_string_attribute): New function.
10141 (s390_attribute_table): Add new attribute handler.
10142 (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
10143 (s390_indirect_branch_via_thunk): New function.
10144 (s390_indirect_branch_via_inline_thunk): New function.
10145 (s390_function_ok_for_sibcall): When jumping via thunk disallow
10146 sibling call optimization for non z10 compiles.
10147 (s390_emit_call): Force indirect branch target to be a single
10148 register. Add r1 clobber for non-z10 compiles.
10149 (s390_emit_epilogue): Emit return jump via return_use expander.
10150 (s390_reorg): Handle JUMP_INSNs as execute targets.
10151 (s390_option_override_internal): Perform validity checks for the
10152 new command line options.
10153 (s390_indirect_branch_attrvalue): New function.
10154 (s390_indirect_branch_settings): New function.
10155 (s390_set_current_function): Invoke s390_indirect_branch_settings.
10156 (s390_output_indirect_thunk_function): New function.
10157 (s390_code_end): Implement target hook.
10158 (s390_case_values_threshold): Implement target hook.
10159 (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
10160 macros.
10161 * config/s390/s390.h (struct s390_frame_layout)
10162 (struct machine_function): Move here from s390.c.
10163 (TARGET_INDIRECT_BRANCH_NOBP_RET)
10164 (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
10165 (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
10166 (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
10167 (TARGET_INDIRECT_BRANCH_NOBP_CALL)
10168 (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
10169 (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
10170 (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
10171 (TARGET_INDIRECT_BRANCH_TABLE): Define macros.
10172 * config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
10173 (INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
10174 (mnemonic attribute): Add values which aren't recognized
10175 automatically.
10176 ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
10177 pattern for branch conversion. Fix mnemonic attribute.
10178 ("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
10179 indirect branch via thunk if requested.
10180 ("indirect_jump", "<code>"): Expand patterns for branch conversion.
10181 ("*indirect_jump"): Disable for branch conversion using out of
10182 line thunks.
10183 ("indirect_jump_via_thunk<mode>_z10")
10184 ("indirect_jump_via_thunk<mode>")
10185 ("indirect_jump_via_inlinethunk<mode>_z10")
10186 ("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
10187 ("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
10188 ("casesi_jump_via_inlinethunk<mode>_z10")
10189 ("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
10190 ("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
10191 ("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
10192 ("*indirect2_jump"): Disable for branch conversion.
10193 ("casesi_jump"): Turn into expander and expand patterns for branch
10194 conversion.
10195 ("return_use"): New expander.
10196 ("*return"): Emit return via thunk and rename it to ...
10197 ("*return<mode>"): ... this one.
10198 * config/s390/s390.opt: Add new options and and enum for the
10199 option values.
10200
10201 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
10202
10203 * lra-constraints.c (match_reload): Unconditionally use
10204 gen_lowpart_SUBREG, rather than selecting between that
10205 and equivalent gen_rtx_SUBREG code.
10206
10207 2018-02-08 Richard Biener <rguenther@suse.de>
10208
10209 PR tree-optimization/84233
10210 * tree-ssa-phiprop.c (propagate_with_phi): Use separate
10211 changed flag instead of boguously re-using phi_inserted.
10212
10213 2018-02-08 Martin Jambor <mjambor@suse.cz>
10214
10215 * hsa-gen.c (get_symbol_for_decl): Set program allocation for
10216 static local variables.
10217
10218 2018-02-08 Richard Biener <rguenther@suse.de>
10219
10220 PR tree-optimization/84278
10221 * tree-vect-stmts.c (vectorizable_store): When looking for
10222 smaller vector types to perform grouped strided loads/stores
10223 make sure the mode is supported by the target.
10224 (vectorizable_load): Likewise.
10225
10226 2018-02-08 Wilco Dijkstra <wdijkstr@arm.com>
10227
10228 * config/aarch64/aarch64.c (aarch64_components_for_bb):
10229 Increase LDP/STP opportunities by adding adjacent callee-saves.
10230
10231 2018-02-08 Wilco Dijkstra <wdijkstr@arm.com>
10232
10233 PR rtl-optimization/84068
10234 PR rtl-optimization/83459
10235 * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
10236
10237 2018-02-08 Aldy Hernandez <aldyh@redhat.com>
10238
10239 PR tree-optimization/84224
10240 * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
10241 * calls.c (gimple_alloca_call_p): Only return TRUE when we have
10242 non-zero arguments.
10243
10244 2018-02-07 Iain Sandoe <iain@codesourcery.com>
10245
10246 PR target/84113
10247 * config/rs6000/altivec.md (*restore_world): Remove LR use.
10248 * config/rs6000/predicates.md (restore_world_operation): Adjust op
10249 count, remove one USE.
10250
10251 2018-02-07 Michael Meissner <meissner@linux.vnet.ibm.com>
10252
10253 * doc/install.texi (Configuration): Document the
10254 --with-long-double-format={ibm,ieee} PowerPC configuration
10255 options.
10256
10257 PR target/84154
10258 * config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
10259 Convert from define_expand to be define_insn_and_split. Rework
10260 float/double/_Float128 conversions to QI/HI/SImode to work with
10261 both ISA 2.07 (power8) or ISA 3.0 (power9). Fix regression where
10262 conversions to QI/HImode types did a store and then a load to
10263 truncate the value. For conversions to VSX registers, don't split
10264 the insn, instead emit the code directly. Use the code iterator
10265 any_fix to combine signed and unsigned conversions.
10266 (fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
10267 (fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
10268 (fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
10269 (fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
10270 (fix_<mode>di2_hw): Likewise.
10271 (fixuns_<mode>di2_hw): Likewise.
10272 (fix_<mode>si2_hw): Likewise.
10273 (fixuns_<mode>si2_hw): Likewise.
10274 (fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
10275 (fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
10276 (fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
10277 fix<uns>_trunc<SFDF:mode>si2_p8.
10278 (fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer used.
10279 (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
10280 (fix<uns>_<mode>_mem): Likewise.
10281 (fctiw<u>z_<mode>_mem): Likewise.
10282 (fix<uns>_<mode>_mem): Likewise.
10283 (fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
10284 the register allocator from doing a direct move to the GPRs to do
10285 a store, and instead use the ISA 3.0 store byte/half-word from
10286 vector register instruction. For IEEE 128-bit floating point,
10287 also optimize stores of 32-bit ints.
10288 (fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
10289
10290 2018-02-07 Alan Hayward <alan.hayward@arm.com>
10291
10292 * genextract.c (push_pathstr_operand): New function to support
10293 [a-zA-Z].
10294 (walk_rtx): Call push_pathstr_operand.
10295 (print_path): Support [a-zA-Z].
10296
10297 2018-02-07 Richard Biener <rguenther@suse.de>
10298
10299 PR tree-optimization/84037
10300 * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
10301 (cse_and_gimplify_to_preheader): Declare.
10302 (vect_get_place_in_interleaving_chain): Likewise.
10303 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
10304 ivexpr_map.
10305 (_loop_vec_info::~_loop_vec_info): Delete it.
10306 (cse_and_gimplify_to_preheader): New function.
10307 * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
10308 * tree-vect-stmts.c (vectorizable_store): CSE base and steps.
10309 (vectorizable_load): Likewise. For grouped stores always base
10310 the IV on the first element.
10311 * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
10312 condition before gimplifying.
10313
10314 2018-02-07 Jakub Jelinek <jakub@redhat.com>
10315
10316 * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
10317 *DIV_EXPR and *MOD_EXPR.
10318
10319 2018-02-07 H.J. Lu <hongjiu.lu@intel.com>
10320
10321 PR target/84248
10322 * config/i386/i386.c (ix86_option_override_internal): Mask out
10323 the CF_SET bit when checking -fcf-protection.
10324
10325 2018-02-07 Tom de Vries <tom@codesourcery.com>
10326
10327 PR libgomp/84217
10328 * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
10329 enough.
10330
10331 2018-02-07 Richard Biener <rguenther@suse.de>
10332
10333 PR tree-optimization/84204
10334 * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
10335 this place.
10336
10337 PR tree-optimization/84205
10338 * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
10339 special-case isl_ast_op_zdiv_r.
10340
10341 PR tree-optimization/84223
10342 * graphite-scop-detection.c (gather_bbs::before_dom_children):
10343 Only add conditions from within the region.
10344 (gather_bbs::after_dom_children): Adjust.
10345
10346 2018-02-07 Georg-Johann Lay <avr@gjlay.de>
10347
10348 PR target/84209
10349 * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
10350 * config/avr/avr.md: Only post-reload split REG-REG moves if
10351 either register is GENERAL_REG_P.
10352
10353 2018-02-07 Jakub Jelinek <jakub@redhat.com>
10354
10355 PR tree-optimization/84235
10356 * tree-ssa-scopedtables.c
10357 (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
10358 if the subtraction is performed in floating point type where NaNs are
10359 honored. For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
10360 build 1. Formatting fix.
10361
10362 2018-02-06 Jakub Jelinek <jakub@redhat.com>
10363
10364 PR target/84146
10365 * config/i386/i386.c (rest_of_insert_endbranch): Only skip
10366 NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
10367 and skip it regardless of bb boundaries. Use CALL_P macro,
10368 don't test INSN_P (insn) together with CALL_P or JUMP_P check
10369 unnecessarily, formatting fix.
10370
10371 2018-02-06 Michael Collison <michael.collison@arm.com>
10372
10373 * config/arm/thumb2.md:
10374 (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
10375 (*thumb_mov_notscc): Ditto.
10376
10377 2018-02-06 Michael Meissner <meissner@linux.vnet.ibm.com>
10378
10379 PR target/84154
10380 * config/rs6000/rs6000.md (su code attribute): Use "u" for
10381 unsigned_fix, not "s".
10382
10383 2018-02-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
10384
10385 * configure.ac (gcc_fn_eh_frame_ro): New function.
10386 (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
10387 correct .eh_frame permissions.
10388 * configure: Regenerate.
10389
10390 2018-02-06 Andrew Jenner <andrew@codeourcery.com>
10391
10392 * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
10393 irrelevant options.
10394
10395 2018-02-06 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
10396
10397 * config/rs6000/rs6000.c (rs6000_option_override_internal):
10398 Display warning message for -mno-speculate-indirect-jumps.
10399
10400 2018-02-06 Andrew Jenner <andrew@codesourcery.com>
10401
10402 * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
10403 Undocumented.
10404 * config/powerpcspe/sysv4.opt (mbit-align): Likewise.
10405
10406 2018-02-06 Aldy Hernandez <aldyh@redhat.com>
10407
10408 PR tree-optimization/84225
10409 * tree-eh.c (find_trapping_overflow): Only call
10410 operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
10411
10412 2018-02-06 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
10413
10414 PR target/84145
10415 * config/i386/i386.c: Reimplement the check of possible options
10416 -mibt/-mshstk conbination. Change error messages.
10417 * doc/invoke.texi: Fix a typo: remove extra '='.
10418
10419 2018-02-06 Marek Polacek <polacek@redhat.com>
10420
10421 PR tree-optimization/84228
10422 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
10423
10424 2018-02-06 Tamar Christina <tamar.christina@arm.com>
10425
10426 PR target/82641
10427 * config/arm/arm.c (arm_print_asm_arch_directives): Record already
10428 emitted arch directives.
10429 * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
10430 __ARM_FEATURE_COPROC before changing architectures.
10431
10432 2018-02-06 Richard Biener <rguenther@suse.de>
10433
10434 * config/i386/i386.c (print_reg): Fix typo.
10435 (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
10436
10437 2018-02-06 Eric Botcazou <ebotcazou@adacore.com>
10438
10439 * configure: Regenerate.
10440
10441 2018-02-05 Martin Sebor <msebor@redhat.com>
10442
10443 PR tree-optimization/83369
10444 * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
10445 inlining context.
10446
10447 2018-02-05 Martin Liska <mliska@suse.cz>
10448
10449 * doc/invoke.texi: Cherry-pick upstream r323995.
10450
10451 2018-02-05 Richard Sandiford <richard.sandiford@linaro.org>
10452
10453 * ira.c (ira_init_register_move_cost): Adjust comment.
10454
10455 2018-02-05 Martin Liska <mliska@suse.cz>
10456
10457 PR gcov-profile/84137
10458 * doc/gcov.texi: Fix typo in documentation.
10459
10460 2018-02-05 Martin Liska <mliska@suse.cz>
10461
10462 PR gcov-profile/83879
10463 * doc/gcov.texi: Document necessity of --dynamic-list-data when
10464 using dlopen functionality.
10465
10466 2018-02-05 Olga Makhotina <olga.makhotina@intel.com>
10467
10468 * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
10469 _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
10470 _mm_maskz_range_ss, _mm_mask_range_round_ss,
10471 _mm_maskz_range_round_ss): New intrinsics.
10472 (__builtin_ia32_rangesd128_round)
10473 (__builtin_ia32_rangess128_round): Remove.
10474 (__builtin_ia32_rangesd128_mask_round,
10475 __builtin_ia32_rangess128_mask_round): New builtins.
10476 * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
10477 __builtin_ia32_rangess128_round): Remove.
10478 (__builtin_ia32_rangesd128_mask_round,
10479 __builtin_ia32_rangess128_mask_round): New builtins.
10480 * config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
10481 (ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
10482 ((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
10483 "<round_saeonly_constraint>")): Changed to ...
10484 ((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
10485 "<round_saeonly_scalar_constraint>")): ... this.
10486 ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
10487 %0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
10488 ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
10489 %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
10490 %2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
10491
10492 2018-02-02 Andrew Jenner <andrew@codesourcery.com>
10493
10494 * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
10495 options.
10496 * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
10497 Remove all values except native, 8540 and 8548.
10498
10499 2018-02-02 H.J. Lu <hongjiu.lu@intel.com>
10500
10501 * config/i386/i386.c (ix86_output_function_return): Pass
10502 INVALID_REGNUM, instead of -1, as invalid register number to
10503 indirect_thunk_name and output_indirect_thunk.
10504
10505 2018-02-02 Julia Koval <julia.koval@intel.com>
10506
10507 * config.gcc: Add -march=icelake.
10508 * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
10509 * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
10510 * config/i386/i386.c (processor_costs): Add m_ICELAKE.
10511 (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
10512 PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
10513 (processor_target_table): Add icelake.
10514 (ix86_option_override_internal): Handle new PTAs.
10515 (get_builtin_code_for_version): Handle icelake.
10516 (M_INTEL_COREI7_ICELAKE): New.
10517 (fold_builtin_cpu): Handle icelake.
10518 * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
10519 * doc/invoke.texi: Add -march=icelake.
10520
10521 2018-02-02 Julia Koval <julia.koval@intel.com>
10522
10523 * config/i386/i386.c (ix86_option_override_internal): Change flags type
10524 to wide_int_bitmask.
10525 * wide-int-bitmask.h: New.
10526
10527 2018-02-02 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
10528
10529 PR target/84066
10530 * config/i386/i386.md: Replace Pmode with word_mode in
10531 builtin_setjmp_setup and builtin_longjmp to support x32.
10532
10533 2018-02-01 Peter Bergner <bergner@vnet.ibm.com>
10534
10535 PR target/56010
10536 PR target/83743
10537 * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
10538 #include "opts.h".
10539 (rs6000_supported_cpu_names): New static variable.
10540 (linux_cpu_translation_table): Likewise.
10541 (elf_platform) <cpu>: Define new static variable and use it.
10542 Translate kernel AT_PLATFORM name to canonical name if needed.
10543 Error if platform name is unknown.
10544
10545 2018-02-01 Aldy Hernandez <aldyh@redhat.com>
10546
10547 PR target/84089
10548 * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
10549
10550 2018-02-01 Jeff Law <law@redhat.com>
10551
10552 PR target/84128
10553 * config/i386/i386.c (release_scratch_register_on_entry): Add new
10554 OFFSET and RELEASE_VIA_POP arguments. Use SP+OFFSET to restore
10555 the scratch if RELEASE_VIA_POP is false.
10556 (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
10557 If we have to save a temporary register, decrement SIZE appropriately.
10558 Pass new arguments to release_scratch_register_on_entry.
10559 (ix86_adjust_stack_and_probe): Likewise.
10560 (ix86_emit_probe_stack_range): Pass new arguments to
10561 release_scratch_register_on_entry.
10562
10563 2018-02-01 Uros Bizjak <ubizjak@gmail.com>
10564
10565 PR rtl-optimization/84157
10566 * combine.c (change_zero_ext): Use REG_P predicate in
10567 front of HARD_REGISTER_P predicate.
10568
10569 2018-02-01 Georg-Johann Lay <avr@gjlay.de>
10570
10571 * config/avr/avr.c (avr_option_override): Move disabling of
10572 -fdelete-null-pointer-checks to...
10573 * common/config/avr/avr-common.c (avr_option_optimization_table):
10574 ...here.
10575
10576 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
10577
10578 PR tree-optimization/81635
10579 * tree-data-ref.c (split_constant_offset_1): For types that
10580 wrap on overflow, try to use range info to prove that wrapping
10581 cannot occur.
10582
10583 2018-02-01 Renlin Li <renlin.li@arm.com>
10584
10585 PR target/83370
10586 * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
10587 TAILCALL_ADDR_REGS.
10588 (aarch64_register_move_cost): Likewise.
10589 * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
10590 TAILCALL_ADDR_REGS.
10591 (REG_CLASS_NAMES): Likewise.
10592 (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
10593 TAILCALL_ADDR_REGS. Remove IP registers.
10594 * config/aarch64/aarch64.md (Ucs): Update register constraint.
10595
10596 2018-02-01 Richard Biener <rguenther@suse.de>
10597
10598 * domwalk.h (dom_walker::dom_walker): Add additional constructor
10599 for specifying RPO order and allow NULL for that.
10600 * domwalk.c (dom_walker::dom_walker): Likewise.
10601 (dom_walker::walk): Handle NULL RPO order.
10602 * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
10603 in RPO order.
10604 (rewrite_update_dom_walker): Likewise.
10605 (mark_def_dom_walker): Likewise.
10606
10607 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
10608
10609 * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
10610 (aarch64_maybe_expand_sve_subreg_move): Declare.
10611 * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
10612 * config/aarch64/predicates.md (aarch64_any_register_operand): New
10613 predicate.
10614 * config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
10615 that are semantically a reverse operation.
10616 (*aarch64_sve_mov<mode>_subreg_be): New pattern.
10617 * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
10618 (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
10619 functions.
10620 (aarch64_can_change_mode_class): For big-endian, forbid changes
10621 between two SVE modes if they have different element sizes.
10622
10623 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
10624
10625 * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
10626 the TImode handling for big-endian targets.
10627
10628 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
10629
10630 * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
10631 (*sve_ld1rq<Vesize>): ... this new pattern. Handle all element sizes,
10632 not just bytes.
10633 * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
10634 Remove BSWAP handing for big-endian targets and use the form of
10635 LD1RQ appropariate for the mode.
10636
10637 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
10638
10639 * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
10640 all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
10641 duplicated element.
10642
10643 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
10644
10645 PR tearget/83845
10646 * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
10647 check for operands that need to go through aarch64_sve_reload_be.
10648
10649 2018-02-01 Jakub Jelinek <jakub@redhat.com>
10650
10651 PR tree-optimization/81661
10652 PR tree-optimization/84117
10653 * tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
10654 * tree-eh.c: Include gimplify.h.
10655 (find_trapping_overflow, replace_trapping_overflow,
10656 rewrite_to_non_trapping_overflow): New functions.
10657 * tree-vect-loop.c: Include tree-eh.h.
10658 (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
10659 * tree-data-ref.c: Include tree-eh.h.
10660 (get_segment_min_max): Use rewrite_to_non_trapping_overflow.
10661
10662 2018-01-31 Uros Bizjak <ubizjak@gmail.com>
10663
10664 PR rtl-optimization/84123
10665 * combine.c (change_zero_ext): Check if hard register satisfies
10666 can_change_dest_mode before calling gen_lowpart_SUBREG.
10667
10668 2018-01-31 Vladimir Makarov <vmakarov@redhat.com>
10669
10670 PR target/82444
10671 * ira.c (ira_init_register_move_cost): Remove assert.
10672
10673 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
10674
10675 PR rtl-optimization/84071
10676 * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
10677 * doc/tm.texi: Regenerate.
10678
10679 2018-01-31 Richard Biener <rguenther@suse.de>
10680
10681 PR tree-optimization/84132
10682 * tree-data-ref.c (analyze_miv_subscript): Properly
10683 check whether evolution_function_is_affine_multivariate_p
10684 before calling gcd_of_steps_may_divide_p.
10685
10686 2018-01-31 Julia Koval <julia.koval@intel.com>
10687
10688 PR target/83618
10689 * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
10690 * config/i386/i386.md (rdpid_rex64) New.
10691 (rdpid): Make 32bit only.
10692
10693 2018-01-29 Aldy Hernandez <aldyh@redhat.com>
10694
10695 PR lto/84105
10696 * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
10697 an IDENTIFIER_NODE for FUNCTION_TYPE's.
10698
10699 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
10700
10701 Revert
10702 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
10703
10704 * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
10705
10706 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
10707
10708 PR rtl-optimization/84071
10709 * combine.c (record_dead_and_set_regs_1): Record the source unmodified
10710 for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
10711
10712 2018-01-31 Claudiu Zissulescu <claziss@synopsys.com>
10713
10714 * config/arc/arc.c (arc_handle_aux_attribute): New function.
10715 (arc_attribute_table): Add 'aux' attribute.
10716 (arc_in_small_data_p): Consider aux like variables.
10717 (arc_is_aux_reg_p): New function.
10718 (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
10719 (arc_get_aux_arg): New function.
10720 (prepare_move_operands): Handle aux-register access.
10721 (arc_handle_aux_attribute): New function.
10722 * doc/extend.texi (ARC Variable attributes): Add subsection.
10723
10724 2018-01-31 Claudiu Zissulescu <claziss@synopsys.com>
10725
10726 * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
10727 * config/arc/arc.c (arc_handle_uncached_attribute): New function.
10728 (arc_attribute_table): Add 'uncached' attribute.
10729 (arc_print_operand): Print '.di' flag for uncached memory
10730 accesses.
10731 (arc_in_small_data_p): Do not consider for small data the uncached
10732 types.
10733 (arc_is_uncached_mem_p): New function.
10734 * config/arc/predicates.md (compact_store_memory_operand): Check
10735 for uncached memory accesses.
10736 (nonvol_nonimm_operand): Likewise.
10737 * gcc/doc/extend.texi (ARC Type Attribute): New subsection.
10738
10739 2018-01-31 Jakub Jelinek <jakub@redhat.com>
10740
10741 PR c/84100
10742 * common.opt (falign-functions=, falign-jumps=, falign-labels=,
10743 falign-loops=): Add Optimization flag.
10744
10745 2018-01-30 Jeff Law <law@redhat.com>
10746
10747 PR target/84064
10748 * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
10749 INT_REGISTERS_SAVED. Check it prior to calling
10750 get_scratch_register_on_entry.
10751 (ix86_adjust_stack_and_probe): Similarly.
10752 (ix86_emit_probe_stack_range): Similarly.
10753 (ix86_expand_prologue): Corresponding changes.
10754
10755 2018-01-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
10756
10757 PR target/40411
10758 * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*,
10759 -std=iso9899:199409 instead of -pedantic to select values-Xc.o.
10760
10761 2018-01-30 Vladimir Makarov <vmakarov@redhat.com>
10762
10763 PR target/84112
10764 * lra-constraints.c (curr_insn_transform): Process AND in the
10765 address.
10766
10767 2018-01-30 Jakub Jelinek <jakub@redhat.com>
10768
10769 PR rtl-optimization/83986
10770 * sched-deps.c (sched_analyze_insn): For frame related insns, add anti
10771 dependence against last_pending_memory_flush in addition to
10772 pending_jump_insns.
10773
10774 2018-01-30 Alexandre Oliva <aoliva@redhat.com>
10775
10776 PR tree-optimization/81611
10777 * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
10778 copies.
10779
10780 2018-01-30 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
10781
10782 PR target/83758
10783 * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
10784 a reg rtx.
10785
10786 2018-01-30 Richard Biener <rguenther@suse.de>
10787 Jakub Jelinek <jakub@redhat.com>
10788
10789 PR tree-optimization/84111
10790 * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip
10791 inner loops added during recursion, as they don't have up-to-date
10792 SSA form.
10793
10794 2018-01-30 Jan Hubicka <hubicka@ucw.cz>
10795
10796 PR ipa/81360
10797 * ipa-inline.c (can_inline_edge_p): Break out late tests to...
10798 (can_inline_edge_by_limits_p): ... here.
10799 (can_early_inline_edge_p, check_callers,
10800 update_caller_keys, update_callee_keys, recursive_inlining,
10801 add_new_edges_to_heap, speculation_useful_p,
10802 inline_small_functions,
10803 inline_small_functions, flatten_function,
10804 inline_to_all_callers_1): Update.
10805
10806 2018-01-30 Jan Hubicka <hubicka@ucw.cz>
10807
10808 * profile-count.c (profile_count::combine_with_ipa_count): Handle
10809 zeros correctly.
10810
10811 2018-01-30 Richard Biener <rguenther@suse.de>
10812
10813 PR tree-optimization/83008
10814 * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost
10815 invariant and constant vector uses in stmts when they need
10816 more than one stmt.
10817
10818 2018-01-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
10819
10820 PR bootstrap/84017
10821 * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
10822 * configure: Regenerate.
10823
10824 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
10825
10826 * config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_0): New
10827 pattern.
10828 (*vec_extract<mode><Vel>_v128): Require a nonzero lane number.
10829 Use gen_rtx_REG rather than gen_lowpart.
10830
10831 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
10832
10833 * lra-constraints.c (match_reload): Use subreg_lowpart_offset
10834 rather than 0 when creating partial subregs.
10835
10836 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
10837
10838 * vec-perm-indices.c (vec_perm_indices::series_p): Give examples
10839 of usage.
10840
10841 2018-01-29 Michael Meissner <meissner@linux.vnet.ibm.com>
10842
10843 PR target/81550
10844 * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode
10845 and SFmode can go in Altivec registers (-mcpu=power7 for DFmode,
10846 -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY
10847 flags. This restores the settings used before the 2017-07-24.
10848 Turning off pre increment/decrement/modify allows IVOPTS to
10849 optimize DF/SF loops where the index is an int.
10850
10851 2018-01-29 Richard Biener <rguenther@suse.de>
10852 Kelvin Nilsen <kelvin@gcc.gnu.org>
10853
10854 PR bootstrap/80867
10855 * tree-vect-stmts.c (vectorizable_call): Don't call
10856 targetm.vectorize_builtin_md_vectorized_function if callee is
10857 NULL.
10858
10859 2018-01-22 Carl Love <cel@us.ibm.com>
10860
10861 * doc/extend.tex: Fix typo in second arg in
10862 __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
10863
10864 2018-01-29 Richard Biener <rguenther@suse.de>
10865
10866 PR tree-optimization/84086
10867 * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
10868 (flush_ssaname_freelist): When SSA names were released reset
10869 the SCEV hash table.
10870
10871 2018-01-29 Richard Biener <rguenther@suse.de>
10872
10873 PR tree-optimization/84057
10874 * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
10875 removed paths when removing edges.
10876
10877 2018-01-27 H.J. Lu <hongjiu.lu@intel.com>
10878
10879 * doc/invoke.texi: Replace -mfunction-return==@var{choice} with
10880 -mfunction-return=@var{choice}.
10881
10882 2018-01-27 Bernd Edlinger <bernd.edlinger@hotmail.de>
10883
10884 PR diagnostic/84034
10885 * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
10886 Handle CR like TAB.
10887 (layout::print_source_line): Likewise.
10888 (test_get_line_width_without_trailing_whitespace): Add test cases.
10889
10890 2018-01-27 Jakub Jelinek <jakub@redhat.com>
10891
10892 PR middle-end/84040
10893 * sched-deps.c (sched_macro_fuse_insns): Return immediately for
10894 debug insns.
10895
10896 2018-01-26 Jim Wilson <jimw@sifive.com>
10897
10898 * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
10899
10900 * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs
10901 specified.
10902
10903 2018-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10904
10905 * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS
10906 and CMP + SUB-immediate -> SUBS.
10907
10908 2018-01-26 Martin Sebor <msebor@redhat.com>
10909
10910 PR tree-optimization/83896
10911 * tree-ssa-strlen.c (get_string_len): Rename...
10912 (get_string_cst_length): ...to this. Return HOST_WIDE_INT.
10913 Avoid assuming length is constant.
10914 (handle_char_store): Use HOST_WIDE_INT for string length.
10915
10916 2018-01-26 Uros Bizjak <ubizjak@gmail.com>
10917
10918 PR target/81763
10919 * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
10920 to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
10921
10922 2018-01-26 Richard Biener <rguenther@suse.de>
10923
10924 PR rtl-optimization/84003
10925 * dse.c (record_store): Only record redundant stores when
10926 the earlier store aliases at least all accesses the later one does.
10927
10928 2018-01-26 Jakub Jelinek <jakub@redhat.com>
10929
10930 PR rtl-optimization/83985
10931 * dce.c (deletable_insn_p): Return false for separate shrink wrapping
10932 REG_CFA_RESTORE insns.
10933 (delete_unmarked_insns): Don't ignore separate shrink wrapping
10934 REG_CFA_RESTORE insns here.
10935
10936 PR c/83989
10937 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't
10938 use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR.
10939
10940 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
10941
10942 * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3.
10943 * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... .
10944 (arc_init): Likewise.
10945 (arc_override_options): Likewise.
10946 (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune
10947 value.
10948 (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
10949 support.
10950 * config/arc/arc.h (TARGET_DBNZ): Define.
10951 * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to
10952 properly set the tune attribute.
10953 (dbnz): Use TARGET_DBNZ guard.
10954 * config/arc/arc.opt (mtune): Add core3 option.
10955
10956 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
10957
10958 * config/arc/arc.c (arc_delegitimize_address_0): Refactored to
10959 recognize new pic like addresses.
10960 (arc_delegitimize_address): Clean up.
10961
10962 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
10963
10964 * config/arc/arc-arches.def: Option mrf16 valid for all
10965 architectures.
10966 * config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
10967 * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
10968 * config/arc/arc-options.def (FL_RF16): Add mrf16 option.
10969 * config/arc/arc-tables.opt: Regenerate.
10970 * config/arc/arc.c (arc_conditional_register_usage): Handle
10971 reduced register file case.
10972 (arc_file_start): Set must have build attributes.
10973 * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
10974 mrf16 option value.
10975 * config/arc/arc.opt (mrf16): Add new option.
10976 * config/arc/elf.h (ATTRIBUTE_PCS): Define.
10977 * config/arc/genmultilib.awk: Handle new mrf16 option.
10978 * config/arc/linux.h (ATTRIBUTE_PCS): Define.
10979 * config/arc/t-multilib: Regenerate.
10980 * doc/invoke.texi (ARC Options): Document mrf16 option.
10981
10982 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
10983
10984 * config/arc/arc-protos.h: Add arc_is_secure_call_p proto.
10985 * config/arc/arc.c (arc_handle_secure_attribute): New function.
10986 (arc_attribute_table): Add 'secure_call' attribute.
10987 (arc_print_operand): Print secure call operand.
10988 (arc_function_ok_for_sibcall): Don't optimize tail calls when
10989 secure.
10990 (arc_is_secure_call_p): New function. * config/arc/arc.md
10991 (call_i): Add support for sjli instruction.
10992 (call_value_i): Likewise.
10993 * config/arc/constraints.md (Csc): New constraint.
10994
10995 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
10996 John Eric Martin <John.Martin@emmicro-us.com>
10997
10998 * config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
10999 * config/arc/arc.c (_arc_jli_section): New struct.
11000 (arc_jli_section): New type.
11001 (rc_jli_sections): New static variable.
11002 (arc_handle_jli_attribute): New function.
11003 (arc_attribute_table): Add jli_always and jli_fixed attribute.
11004 (arc_file_end): New function.
11005 (TARGET_ASM_FILE_END): Define.
11006 (arc_print_operand): Reuse 'S' letter for JLI output instruction.
11007 (arc_add_jli_section): New function.
11008 (jli_call_scan): Likewise.
11009 (arc_reorg): Call jli_call_scan.
11010 (arc_output_addsi): Remove 'S' from printing asm operand.
11011 (arc_is_jli_call_p): New function.
11012 * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm
11013 operand.
11014 (movhi_insn): Likewise.
11015 (movsi_insn): Likewise.
11016 (movsi_set_cc_insn): Likewise.
11017 (loadqi_update): Likewise.
11018 (load_zeroextendqisi_update): Likewise.
11019 (load_signextendqisi_update): Likewise.
11020 (loadhi_update): Likewise.
11021 (load_zeroextendhisi_update): Likewise.
11022 (load_signextendhisi_update): Likewise.
11023 (loadsi_update): Likewise.
11024 (loadsf_update): Likewise.
11025 (movsicc_insn): Likewise.
11026 (bset_insn): Likewise.
11027 (bxor_insn): Likewise.
11028 (bclr_insn): Likewise.
11029 (bmsk_insn): Likewise.
11030 (bicsi3_insn): Likewise.
11031 (cmpsi_cc_c_insn): Likewise.
11032 (movsi_ne): Likewise.
11033 (movsi_cond_exec): Likewise.
11034 (clrsbsi2): Likewise.
11035 (norm_f): Likewise.
11036 (normw): Likewise.
11037 (swap): Likewise.
11038 (divaw): Likewise.
11039 (flag): Likewise.
11040 (sr): Likewise.
11041 (kflag): Likewise.
11042 (ffs): Likewise.
11043 (ffs_f): Likewise.
11044 (fls): Likewise.
11045 (call_i): Remove 'S' asm letter, add jli instruction.
11046 (call_value_i): Likewise.
11047 * config/arc/arc.op (mjli-always): New option.
11048 * config/arc/constraints.md (Cji): New constraint.
11049 * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm
11050 operand.
11051 (subsf3_fpx): Likewise.
11052 (mulsf3_fpx): Likewise.
11053 * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
11054 asm operand.
11055 * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed'
11056 function attrbutes.
11057 * doc/invoke.texi (ARC): Document mjli-always option.
11058
11059 2018-01-26 Sebastian Perta <sebastian.perta@renesas.com>
11060
11061 * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const
11062 avoid addition with 0 and use incw and decw where possible.
11063
11064 2018-01-26 Richard Biener <rguenther@suse.de>
11065
11066 PR tree-optimization/81082
11067 * fold-const.c (fold_plusminus_mult_expr): Do not perform the
11068 association if it requires casting to unsigned.
11069 * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived
11070 from fold_plusminus_mult_expr to catch important cases late when
11071 range info is available.
11072
11073 2018-01-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
11074
11075 * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
11076 * configure.ac (hidden_linkonce): New test.
11077 * configure: Regenerate.
11078 * config.in: Regenerate.
11079
11080 2018-01-26 Julia Koval <julia.koval@intel.com>
11081
11082 * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
11083 _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
11084 _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
11085 _mm_mask_bitshuffle_epi64_mask): Fix type.
11086 * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
11087 USI_FTYPE_V4DI_V4DI_USI): Remove.
11088 * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
11089 __builtin_ia32_vpshufbitqmb256_mask,
11090 __builtin_ia32_vpshufbitqmb128_mask): Fix types.
11091 * config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
11092 * config/i386/sse.md (VI1_AVX512VLBW): Change types.
11093
11094 2018-01-26 Alan Modra <amodra@gmail.com>
11095
11096 PR target/84033
11097 * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude
11098 UNSPEC_VBPERMQ. Sort other unspecs.
11099
11100 2018-01-25 David Edelsohn <dje.gcc@gmail.com>
11101
11102 * doc/invoke.texi (PowerPC Options): Document 'native' cpu type.
11103
11104 2018-01-25 Jan Hubicka <hubicka@ucw.cz>
11105
11106 PR middle-end/83055
11107 * predict.c (drop_profile): Do not push/pop cfun; update also
11108 node->count.
11109 (handle_missing_profiles): Fix logic looking for zero profiles.
11110
11111 2018-01-25 Jakub Jelinek <jakub@redhat.com>
11112
11113 PR middle-end/83977
11114 * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature
11115 on functions with #pragma omp declare simd or functions with simd
11116 attribute.
11117 * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change.
11118 * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
11119 Remove trailing \n from warning_at calls.
11120
11121 2018-01-25 Tom de Vries <tom@codesourcery.com>
11122
11123 PR target/84028
11124 * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
11125 for neutered workers.
11126
11127 2018-01-24 Joseph Myers <joseph@codesourcery.com>
11128
11129 PR target/68467
11130 * config/m68k/m68k.c (m68k_promote_function_mode): New function.
11131 (TARGET_PROMOTE_FUNCTION_MODE): New macro.
11132
11133 2018-01-24 Jeff Law <law@redhat.com>
11134
11135 PR target/83994
11136 * i386.c (get_probe_interval): Move to earlier point.
11137 (ix86_compute_frame_layout): If -fstack-clash-protection and
11138 the frame is larger than the probe interval, then use pushes
11139 to save registers rather than reg->mem moves.
11140 (ix86_expand_prologue): Remove conditional for int_registers_saved
11141 assertion.
11142
11143 2018-01-24 Vladimir Makarov <vmakarov@redhat.com>
11144
11145 PR target/84014
11146 * ira-build.c (setup_min_max_allocno_live_range_point): Set up
11147 min/max for never referenced object.
11148
11149 2018-01-24 Jakub Jelinek <jakub@redhat.com>
11150
11151 PR middle-end/83977
11152 * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN
11153 here.
11154 * omp-low.c (create_omp_child_function): Remove "omp declare simd"
11155 attributes from DECL_ATTRIBUTES (decl) without affecting
11156 DECL_ATTRIBUTES (current_function_decl).
11157 * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL
11158 functions with non-NULL DECL_ABSTRACT_ORIGIN.
11159
11160 2018-01-24 Richard Sandiford <richard.sandiford@linaro.org>
11161
11162 PR tree-optimization/83979
11163 * fold-const.c (fold_comparison): Use constant_boolean_node
11164 instead of boolean_{true,false}_node.
11165
11166 2018-01-24 Jan Hubicka <hubicka@ucw.cz>
11167
11168 * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
11169 with zero counts.
11170
11171 2018-01-24 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
11172
11173 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
11174 Simplify the clause that sets the length attribute.
11175 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
11176 (*sibcall_nonlocal_sysv<mode>): Clean up code block; simplify the
11177 clause that sets the length attribute.
11178 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
11179
11180 2018-01-24 Tom de Vries <tom@codesourcery.com>
11181
11182 PR target/83589
11183 * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1.
11184 (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c.
11185 Add strict parameter.
11186 (prevent_branch_around_nothing): Insert dummy insn between branch to
11187 label and label with no ptx insn inbetween.
11188 * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn.
11189
11190 2018-01-24 Tom de Vries <tom@codesourcery.com>
11191
11192 PR target/81352
11193 * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
11194 for neutered threads in warp.
11195 * config/nvptx/nvptx.md (define_insn "exit"): New insn.
11196
11197 2018-01-24 Richard Biener <rguenther@suse.de>
11198
11199 PR tree-optimization/83176
11200 * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
11201 operands.
11202
11203 2018-01-24 Richard Biener <rguenther@suse.de>
11204
11205 PR tree-optimization/82819
11206 * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid
11207 code generating pluses that are no-ops in the target precision.
11208
11209 2018-01-24 Richard Biener <rguenther@suse.de>
11210
11211 PR middle-end/84000
11212 * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind.
11213
11214 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
11215
11216 * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count
11217 to merge probabilities.
11218 * predict.c (probably_never_executed): Also mark as cold functions
11219 with global 0 profile and guessed local profile.
11220 * profile-count.c (profile_probability::combine_with_count): New
11221 member function.
11222 * profile-count.h (profile_probability::operator*,
11223 profile_probability::operator*=, profile_probability::operator/,
11224 profile_probability::operator/=): Reduce precision to adjusted
11225 and set value to guessed on contradictory divisions.
11226 (profile_probability::combine_with_freq): Remove.
11227 (profile_probability::combine_wiht_count): Declare.
11228 (profile_count::force_nonzero):: Set to adjusted.
11229 (profile_count::probability_in):: Set quality to adjusted.
11230 * tree-ssa-tail-merge.c (replace_block_by): Use
11231 combine_with_count.
11232
11233 2018-01-23 Andrew Waterman <andrew@sifive.com>
11234 Jim Wilson <jimw@sifive.com>
11235
11236 * config/riscv/riscv.c (riscv_stack_boundary): New.
11237 (riscv_option_override): Set riscv_stack_boundary. Handle
11238 riscv_preferred_stack_boundary_arg.
11239 * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New.
11240 (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY.
11241 (STACK_BOUNDARY): Set to riscv_stack_boundary.
11242 (RISCV_STACK_ALIGN): Use STACK_BOUNDARY.
11243 * config/riscv/riscv.opt (mpreferred-stack-boundary): New.
11244 * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary.
11245
11246 2018-01-23 H.J. Lu <hongjiu.lu@intel.com>
11247
11248 PR target/83905
11249 * config/i386/i386.c (ix86_expand_prologue): Use cost reference
11250 of struct ix86_frame.
11251 (ix86_expand_epilogue): Likewise. Add a local variable for
11252 the reg_save_offset field in struct ix86_frame.
11253
11254 2018-01-23 Bin Cheng <bin.cheng@arm.com>
11255
11256 PR tree-optimization/82604
11257 * tree-loop-distribution.c (enum partition_kind): New enum item
11258 PKIND_PARTIAL_MEMSET.
11259 (partition_builtin_p): Support above new enum item.
11260 (generate_code_for_partition): Ditto.
11261 (compute_access_range): Differentiate cases that equality can be
11262 proven at all loops, the innermost loops or no loops.
11263 (classify_builtin_st, classify_builtin_ldst): Adjust call to above
11264 function. Set PKIND_PARTIAL_MEMSET for partition appropriately.
11265 (finalize_partitions, distribute_loop): Don't fuse partition of
11266 PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest.
11267 (prepare_perfect_loop_nest): Distribute 3-level loop nest only if
11268 parloop is enabled.
11269
11270 2018-01-23 Martin Liska <mliska@suse.cz>
11271
11272 * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in
11273 order to ignore the predictor.
11274 (PRED_POLYMORPHIC_CALL): Likewise.
11275 (PRED_RECURSIVE_CALL): Likewise.
11276
11277 2018-01-23 Martin Liska <mliska@suse.cz>
11278
11279 * tree-profile.c (tree_profiling): Print function header to
11280 aware reader which function we are working on.
11281 * value-prof.c (gimple_find_values_to_profile): Do not print
11282 not interesting value histograms.
11283
11284 2018-01-23 Martin Liska <mliska@suse.cz>
11285
11286 * profile-count.h (enum profile_quality): Add
11287 profile_uninitialized as the first value. Do not number values
11288 as they are zero based.
11289 (profile_count::verify): Update sanity check.
11290 (profile_probability::verify): Likewise.
11291
11292 2018-01-23 Nathan Sidwell <nathan@acm.org>
11293
11294 * doc/invoke.texi (ffor-scope): Deprecate.
11295
11296 2018-01-23 David Malcolm <dmalcolm@redhat.com>
11297
11298 PR tree-optimization/83510
11299 * domwalk.c (set_all_edges_as_executable): New function.
11300 (dom_walker::dom_walker): Convert bool param
11301 "skip_unreachable_blocks" to enum reachability. Move setup of
11302 edge flags to set_all_edges_as_executable and only do it when
11303 reachability is REACHABLE_BLOCKS.
11304 * domwalk.h (enum dom_walker::reachability): New enum.
11305 (dom_walker::dom_walker): Convert bool param
11306 "skip_unreachable_blocks" to enum reachability.
11307 (set_all_edges_as_executable): New decl.
11308 * graphite-scop-detection.c (gather_bbs::gather_bbs): Convert
11309 from false for "skip_unreachable_blocks" to ALL_BLOCKS for
11310 "reachability".
11311 * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
11312 but converting true to REACHABLE_BLOCKS.
11313 * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
11314 * tree-vrp.c
11315 (check_array_bounds_dom_walker::check_array_bounds_dom_walker):
11316 Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
11317 (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
11318 REACHABLE_BLOCKS.
11319 (vrp_prop::vrp_finalize): Call set_all_edges_as_executable
11320 if check_all_array_refs will be called.
11321
11322 2018-01-23 David Malcolm <dmalcolm@redhat.com>
11323
11324 * tree.c (selftest::test_location_wrappers): Add more test
11325 coverage.
11326
11327 2018-01-23 David Malcolm <dmalcolm@redhat.com>
11328
11329 * sbitmap.c (selftest::test_set_range): Fix memory leaks.
11330 (selftest::test_bit_in_range): Likewise.
11331
11332 2018-01-23 Richard Sandiford <richard.sandiford@linaro.org>
11333
11334 PR testsuite/83888
11335 * doc/sourcebuild.texi (vect_float): Say that the selector
11336 only describes the situation when -funsafe-math-optimizations is on.
11337 (vect_float_strict): Document.
11338
11339 2018-01-23 Richard Sandiford <richard.sandiford@linaro.org>
11340
11341 PR tree-optimization/83965
11342 * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
11343 (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
11344 instead of checking only for a reduction.
11345 (vect_recog_widen_sum_pattern): Likewise.
11346
11347 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
11348
11349 * predict.c (probably_never_executed): Only use precise profile info.
11350 (compute_function_frequency): Skip after inlining hack since we now
11351 have quality checking.
11352
11353 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
11354
11355 * profile-count.h (profile_probability::very_unlikely,
11356 profile_probability::unlikely, profile_probability::even): Set
11357 precision to guessed.
11358
11359 2018-01-23 Richard Biener <rguenther@suse.de>
11360
11361 PR tree-optimization/83963
11362 * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
11363 Properly terminate dominator walk when crossing the exit edge not
11364 when visiting its source block.
11365
11366 2018-01-23 Jakub Jelinek <jakub@redhat.com>
11367
11368 PR c++/83918
11369 * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
11370 VIEW_CONVERT_EXPR to wrap CONST_DECLs.
11371
11372 2018-01-22 Jakub Jelinek <jakub@redhat.com>
11373
11374 PR tree-optimization/83957
11375 * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs. Remove
11376 semicolon after for body surrounded by braces.
11377
11378 PR tree-optimization/83081
11379 * profile-count.h (profile_probability::split): New method.
11380 * dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
11381 Use profile_probability::split.
11382 (do_compare_rtx_and_jump): Fix adjustment of probabilities
11383 when splitting a single conditional jump into 2.
11384
11385 2018-01-22 David Malcolm <dmalcolm@redhat.com>
11386
11387 PR tree-optimization/69452
11388 * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
11389 decl.
11390
11391 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
11392
11393 * config/rl78/rl78-expand.md (bswaphi2): New define_expand.
11394 * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn.
11395 * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn.
11396
11397 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
11398
11399 * config/rl78/rl78-protos.h (rl78_split_movdi): New function
11400 declaration.
11401 * config/rl78/rl78.md (movdi): New define_expand.
11402 * config/rl78/rl78.c (rl78_split_movdi): New function.
11403
11404 2018-01-22 Michael Meissner <meissner@linux.vnet.ibm.com>
11405
11406 PR target/83862
11407 * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
11408 no longer used.
11409 * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
11410 * config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
11411 128-bit to produce an UNSPEC move to get the double word with the
11412 signbit and then a shift directly to do signbit.
11413 (signbit<mode>2_dm): Replace old IEEE 128-bit signbit
11414 implementation with a new version that just does either a direct
11415 move or a regular move. Move memory interface to separate insns.
11416 Move insns so they are next to the expander.
11417 (signbit<mode>2_dm_mem_be): New combiner insns to combine load
11418 with signbit move. Split big and little endian case.
11419 (signbit<mode>2_dm_mem_le): Likewise.
11420 (signbit<mode>2_dm_<su>ext): Delete, no longer used.
11421 (signbit<mode>2_dm2): Likewise.
11422
11423 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
11424
11425 * config/rl78/rl78.md (anddi3): New define_expand.
11426
11427 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
11428
11429 * config/rl78/rl78.md (umindi3): New define_expand.
11430
11431 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
11432
11433 * config/rl78/rl78.md (smindi3): New define_expand.
11434
11435 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
11436
11437 * config/rl78/rl78.md (smaxdi3): New define_expand.
11438
11439 2018-01-22 Carl Love <cel@us.ibm.com>
11440
11441 * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
11442 LVX_V1TI): Add macro expansion.
11443 * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
11444 definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
11445 VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
11446 * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
11447 Change check to determine if the instruction is a byte reversing
11448 entry. Fix typo in comment.
11449 * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
11450 for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
11451 Add def_builtin calls for new builtins.
11452 * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
11453 Add define_insn expansion.
11454
11455 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
11456
11457 * config/rl78/rl78.md (umaxdi3): New define_expand.
11458
11459 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
11460
11461 * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check
11462 for non-QImode registers.
11463
11464 2018-01-22 Richard Biener <rguenther@suse.de>
11465
11466 PR tree-optimization/83963
11467 * graphite-scop-detection.c (scop_detection::get_sese): Delay
11468 including the loop exit block.
11469 (scop_detection::merge_sese): Likewise.
11470 (scop_detection::add_scop): Do it here instead.
11471
11472 2018-01-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11473
11474 * doc/sourcebuild.texi (arm_softfloat): Document.
11475
11476 2018-01-21 John David Anglin <danglin@gcc.gnu.org>
11477
11478 PR gcc/77734
11479 * config/pa/pa.c (pa_function_ok_for_sibcall): Use
11480 targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
11481 Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
11482
11483 2018-01-21 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
11484 David Edelsohn <dje.gcc@gmail.com>
11485
11486 PR target/83946
11487 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
11488 Change "crset eq" to "crset 2".
11489 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
11490 (*call_indirect_aix<mode>_nospec): Likewise.
11491 (*call_value_indirect_aix<mode>_nospec): Likewise.
11492 (*call_indirect_elfv2<mode>_nospec): Likewise.
11493 (*call_value_indirect_elfv2<mode>_nospec): Likewise.
11494 (*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
11495 change assembly output from . to $.
11496 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
11497 (indirect_jump<mode>_nospec): Change assembly output from . to $.
11498 (*tablejump<mode>_internal1_nospec): Likewise.
11499
11500 2018-01-21 Oleg Endo <olegendo@gcc.gnu.org>
11501
11502 PR target/80870
11503 * config/sh/sh_optimize_sett_clrt.cc:
11504 Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
11505
11506 2018-01-20 Richard Sandiford <richard.sandiford@linaro.org>
11507
11508 PR tree-optimization/83940
11509 * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
11510 offset_dt to vect_constant_def rather than vect_unknown_def_type.
11511 (vect_check_load_store_mask): Add a mask_dt_out parameter and
11512 use it to pass back the definition type.
11513 (vect_check_store_rhs): Likewise rhs_dt_out.
11514 (vect_build_gather_load_calls): Add a mask_dt argument and use
11515 it instead of a call to vect_is_simple_use.
11516 (vectorizable_store): Update calls to vect_check_load_store_mask
11517 and vect_check_store_rhs. Use the dt returned by the latter instead
11518 of scatter_src_dt. Use the cached mask_dt and gs_info.offset_dt
11519 instead of calls to vect_is_simple_use. Pass the scalar rather
11520 than the vector operand to vect_is_simple_use when handling
11521 second and subsequent copies of an rhs value.
11522 (vectorizable_load): Update calls to vect_check_load_store_mask
11523 and vect_build_gather_load_calls. Use the cached mask_dt and
11524 gs_info.offset_dt instead of calls to vect_is_simple_use.
11525
11526 2018-01-20 Jakub Jelinek <jakub@redhat.com>
11527
11528 PR middle-end/83945
11529 * tree-emutls.c: Include gimplify.h.
11530 (lower_emutls_2): New function.
11531 (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
11532 with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
11533 it before further processing.
11534
11535 PR target/83930
11536 * simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
11537 UINTVAL (trueop1) instead of INTVAL (op1).
11538
11539 2018-01-19 Jakub Jelinek <jakub@redhat.com>
11540
11541 PR debug/81570
11542 PR debug/83728
11543 * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
11544 INCOMING_FRAME_SP_OFFSET if not defined.
11545 (scan_trace): Add ENTRY argument. If true and
11546 DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
11547 emit a note to adjust the CFA offset.
11548 (create_cfi_notes): Adjust scan_trace callers.
11549 (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
11550 INCOMING_FRAME_SP_OFFSET in the CIE.
11551 * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
11552 * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
11553 Likewise.
11554 * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
11555 * doc/tm.texi: Regenerated.
11556
11557 2018-01-19 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
11558
11559 PR rtl-optimization/83147
11560 * lra-constraints.c (remove_inheritance_pseudos): Use
11561 lra_substitute_pseudo_within_insn.
11562
11563 2018-01-19 Tom de Vries <tom@codesourcery.com>
11564 Cesar Philippidis <cesar@codesourcery.com>
11565
11566 PR target/83920
11567 * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
11568
11569 2018-01-19 Cesar Philippidis <cesar@codesourcery.com>
11570
11571 PR target/83790
11572 * config/nvptx/nvptx.c (output_init_frag): Don't use generic address
11573 spaces for function labels.
11574
11575 2018-01-19 Martin Liska <mliska@suse.cz>
11576
11577 * predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
11578 (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
11579 (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
11580 (PRED_OPCODE_POSITIVE): Change from 64 to 59.
11581 (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
11582 (PRED_CONST_RETURN): Change from 69 to 65.
11583 (PRED_NULL_RETURN): Change from 91 to 71.
11584 (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
11585 (PRED_LOOP_GUARD): Change from 66 to 73.
11586
11587 2018-01-19 Martin Liska <mliska@suse.cz>
11588
11589 * predict.c (predict_insn_def): Add new assert.
11590 (struct branch_predictor): Change type to signed integer.
11591 (test_prediction_value_range): Amend test to cover
11592 PROB_UNINITIALIZED.
11593 * predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
11594 (PRED_LOOP_ITERATIONS_GUESSED): Likewise.
11595 (PRED_LOOP_ITERATIONS_MAX): Likewise.
11596 (PRED_LOOP_IV_COMPARE): Likewise.
11597 * predict.h (PROB_UNINITIALIZED): Define new constant.
11598
11599 2018-01-19 Martin Liska <mliska@suse.cz>
11600
11601 * predict.c (dump_prediction): Add new format for
11602 analyze_brprob.py script which is enabled with -details
11603 suboption.
11604 * profile-count.h (precise_p): New function.
11605
11606 2018-01-19 Richard Sandiford <richard.sandiford@linaro.org>
11607
11608 PR tree-optimization/83922
11609 * tree-vect-loop.c (vect_verify_full_masking): Return false if
11610 there are no statements that need masking.
11611 (vect_active_double_reduction_p): New function.
11612 (vect_analyze_loop_operations): Use it when handling phis that
11613 are not in the loop header.
11614
11615 2018-01-19 Richard Sandiford <richard.sandiford@linaro.org>
11616
11617 PR tree-optimization/83914
11618 * tree-vect-loop.c (vectorizable_induction): Don't convert
11619 init_expr or apply the peeling adjustment for inductions
11620 that are nested within the vectorized loop.
11621
11622 2018-01-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11623
11624 * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
11625 instead of NEG.
11626
11627 2018-01-18 Jakub Jelinek <jakub@redhat.com>
11628
11629 PR sanitizer/81715
11630 PR testsuite/83882
11631 * function.h (gimplify_parameters): Add gimple_seq * argument.
11632 * function.c: Include gimple.h and options.h.
11633 (gimplify_parameters): Add cleanup argument, add CLOBBER stmts
11634 for the added local temporaries if needed.
11635 * gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
11636 if there are any parameter cleanups, wrap whole body into a
11637 try/finally with the cleanups.
11638
11639 2018-01-18 Wilco Dijkstra <wdijkstr@arm.com>
11640
11641 PR target/82964
11642 * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
11643 Use GET_MODE_CLASS for scalar floating point.
11644
11645 2018-01-18 Jan Hubicka <hubicka@ucw.cz>
11646
11647 PR ipa/82256
11648 patch by PaX Team
11649 * cgraphclones.c (cgraph_node::create_version_clone_with_body):
11650 Fix call of call_cgraph_insertion_hooks.
11651
11652 2018-01-18 Martin Sebor <msebor@redhat.com>
11653
11654 * doc/invoke.texi (-Wclass-memaccess): Tweak text.
11655
11656 2018-01-18 Jan Hubicka <hubicka@ucw.cz>
11657
11658 PR ipa/83619
11659 * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
11660 frequencies.
11661
11662 2018-01-18 Boris Kolpackov <boris@codesynthesis.com>
11663
11664 PR other/70268
11665 * common.opt: (-ffile-prefix-map): New option.
11666 * opts.c (common_handle_option): Defer it.
11667 * opts-global.c (handle_common_deferred_options): Handle it.
11668 * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
11669 * file-prefix-map.h: New file.
11670 (remap_debug_filename, add_debug_prefix_map): ...here.
11671 (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
11672 * final.c (debug_prefix_map, add_debug_prefix_map
11673 remap_debug_filename): Move to...
11674 * file-prefix-map.c: New file.
11675 (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
11676 generalize, get rid of alloca(), use strrchr() instead of strchr().
11677 (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
11678 Implement in terms of add_prefix_map().
11679 (remap_macro_filename, remap_debug_filename): Implement in term of
11680 remap_filename().
11681 * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
11682 * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
11683 * dbxout.c: Include file-prefix-map.h.
11684 * varasm.c: Likewise.
11685 * vmsdbgout.c: Likewise.
11686 * xcoffout.c: Likewise.
11687 * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
11688 * doc/cppopts.texi (-fmacro-prefix-map): Document.
11689 * doc/invoke.texi (-ffile-prefix-map): Document.
11690 (-fdebug-prefix-map): Update description.
11691
11692 2018-01-18 Martin Liska <mliska@suse.cz>
11693
11694 * config/i386/i386.c (indirect_thunk_name): Document that also
11695 lfence is emitted.
11696 (output_indirect_thunk): Document why both instructions
11697 (pause and lfence) are generated.
11698
11699 2018-01-18 Richard Biener <rguenther@suse.de>
11700
11701 PR tree-optimization/83887
11702 * graphite-scop-detection.c
11703 (scop_detection::get_nearest_dom_with_single_entry): Remove.
11704 (scop_detection::get_nearest_pdom_with_single_exit): Likewise.
11705 (scop_detection::merge_sese): Re-implement with a flood-fill
11706 algorithm that properly finds a SESE region if it exists.
11707
11708 2018-01-18 Jakub Jelinek <jakub@redhat.com>
11709
11710 PR c/61240
11711 * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For
11712 pointer_diff optimizations use view_convert instead of convert.
11713
11714 2018-01-17 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
11715
11716 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
11717 Generate different code for -mno-speculate-indirect-jumps.
11718 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
11719 (*call_indirect_aix<mode>): Disable for
11720 -mno-speculate-indirect-jumps.
11721 (*call_indirect_aix<mode>_nospec): New define_insn.
11722 (*call_value_indirect_aix<mode>): Disable for
11723 -mno-speculate-indirect-jumps.
11724 (*call_value_indirect_aix<mode>_nospec): New define_insn.
11725 (*sibcall_nonlocal_sysv<mode>): Generate different code for
11726 -mno-speculate-indirect-jumps.
11727 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
11728
11729 2018-01-17 Michael Meissner <meissner@linux.vnet.ibm.com>
11730
11731 * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a
11732 long double type, set the flags for noting the default long double
11733 type, even if we don't pass or return a long double type.
11734
11735 2018-01-17 Jan Hubicka <hubicka@ucw.cz>
11736
11737 PR ipa/83051
11738 * ipa-inline.c (flatten_function): Do not overwrite final inlining
11739 failure.
11740
11741 2018-01-17 Will Schmidt <will_schmidt@vnet.ibm.com>
11742
11743 * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
11744 support for merge[hl].
11745 (fold_mergehl_helper): New helper function.
11746 (tree-vector-builder.h): New #include for tree_vector_builder usage.
11747 * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn.
11748 (altivec_vmrglw_direct): Add xxmrglw insn.
11749
11750 2018-01-17 Andrew Waterman <andrew@sifive.com>
11751
11752 * config/riscv/riscv.c (riscv_conditional_register_usage): If
11753 UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs.
11754
11755 2018-01-17 David Malcolm <dmalcolm@redhat.com>
11756
11757 PR lto/83121
11758 * ipa-devirt.c (add_type_duplicate): When comparing memory layout,
11759 call the lto_location_cache before reading the
11760 DECL_SOURCE_LOCATION of the types.
11761
11762 2018-01-17 Wilco Dijkstra <wdijkstr@arm.com>
11763 Richard Sandiford <richard.sandiford@linaro.org>
11764
11765 * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint.
11766 * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function.
11767 (aarch64_legitimate_constant_p): Just support CONST_DOUBLE
11768 SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates.
11769 * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate):
11770 Add declaration.
11771 * config/aarch64/constraints.md (aarch64_movti_operand):
11772 Limit immediates.
11773 * config/aarch64/predicates.md (Uti): Add new constraint.
11774
11775 2018-01-17 Carl Love <cel@us.ibm.com>
11776
11777 * config/rs6000/vsx.md (define_expand xl_len_r,
11778 define_expand stxvl, define_expand *stxvl): Add match_dup argument.
11779 (define_insn): Add, match_dup 1 argument to define_insn stxvll and
11780 lxvll.
11781 (define_expand, define_insn): Move the shift left from the
11782 define_insn to the define_expand for lxvl and stxvl instructions.
11783 * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL
11784 and XL_LEN_R definitions to PURE.
11785
11786 2018-01-17 Uros Bizjak <ubizjak@gmail.com>
11787
11788 * config/i386/i386.c (indirect_thunk_name): Declare regno
11789 as unsigned int. Compare regno with INVALID_REGNUM.
11790 (output_indirect_thunk): Ditto.
11791 (output_indirect_thunk_function): Ditto.
11792 (ix86_code_end): Declare regno as unsigned int. Use INVALID_REGNUM
11793 in the call to output_indirect_thunk_function.
11794
11795 2018-01-17 Richard Sandiford <richard.sandiford@linaro.org>
11796
11797 PR middle-end/83884
11798 * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
11799 rather than the size of inner_type to determine the stack slot size
11800 when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
11801
11802 2018-01-16 Sebastian Peryt <sebastian.peryt@intel.com>
11803
11804 PR target/83546
11805 * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
11806 to PTA_SILVERMONT.
11807
11808 2018-01-16 Michael Meissner <meissner@linux.vnet.ibm.com>
11809
11810 * config.gcc (powerpc*-linux*-*): Add support for 64-bit little
11811 endian Linux systems to optionally enable multilibs for selecting
11812 the long double type if the user configured an explicit type.
11813 * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
11814 have no long double multilibs if not defined.
11815 * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
11816 warn if the user used -mabi={ieee,ibm}longdouble and we built
11817 multilibs for long double.
11818 * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
11819 appropriate multilib option.
11820 (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
11821 multilib options.
11822 * config/rs6000/t-ldouble-linux64le-ibm: New configuration files
11823 for building long double multilibs.
11824 * config/rs6000/t-ldouble-linux64le-ieee: Likewise.
11825
11826 2018-01-16 John David Anglin <danglin@gcc.gnu.org>
11827
11828 * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
11829 copies.
11830
11831 * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
11832 64 bits.
11833 * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
11834 128 bits.
11835
11836 * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
11837 variables.
11838
11839 * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
11840 return value.
11841
11842 2018-01-16 Eric Botcazou <ebotcazou@adacore.com>
11843
11844 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
11845 ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
11846
11847 2018-01-16 Kelvin Nilsen <kelvin@gcc.gnu.org>
11848
11849 * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
11850 different rtl trees depending on TARGET_64BIT.
11851 (rs6000_gen_lvx): Likewise.
11852
11853 2018-01-16 Eric Botcazou <ebotcazou@adacore.com>
11854
11855 * config/visium/visium.md (nop): Tweak comment.
11856 (hazard_nop): Likewise.
11857
11858 2018-01-16 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
11859
11860 * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
11861 -mspeculate-indirect-jumps.
11862 * config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
11863 for -mno-speculate-indirect-jumps.
11864 (*call_indirect_elfv2<mode>_nospec): New define_insn.
11865 (*call_value_indirect_elfv2<mode>): Disable for
11866 -mno-speculate-indirect-jumps.
11867 (*call_value_indirect_elfv2<mode>_nospec): New define_insn.
11868 (indirect_jump): Emit different RTL for
11869 -mno-speculate-indirect-jumps.
11870 (*indirect_jump<mode>): Disable for
11871 -mno-speculate-indirect-jumps.
11872 (*indirect_jump<mode>_nospec): New define_insn.
11873 (tablejump): Emit different RTL for
11874 -mno-speculate-indirect-jumps.
11875 (tablejumpsi): Disable for -mno-speculate-indirect-jumps.
11876 (tablejumpsi_nospec): New define_expand.
11877 (tablejumpdi): Disable for -mno-speculate-indirect-jumps.
11878 (tablejumpdi_nospec): New define_expand.
11879 (*tablejump<mode>_internal1): Disable for
11880 -mno-speculate-indirect-jumps.
11881 (*tablejump<mode>_internal1_nospec): New define_insn.
11882 * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
11883 option.
11884
11885 2018-01-16 Artyom Skrobov tyomitch@gmail.com
11886
11887 * caller-save.c (insert_save): Drop unnecessary parameter. All
11888 callers updated.
11889
11890 2018-01-16 Jakub Jelinek <jakub@redhat.com>
11891 Richard Biener <rguenth@suse.de>
11892
11893 PR libgomp/83590
11894 * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
11895 return early, inline manually is_gimple_sizepos. Make sure if we
11896 call gimplify_expr we don't end up with a gimple constant.
11897 * tree.c (variably_modified_type_p): Don't return true for
11898 is_gimple_constant (_t). Inline manually is_gimple_sizepos.
11899 * gimplify.h (is_gimple_sizepos): Remove.
11900
11901 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
11902
11903 PR tree-optimization/83857
11904 * tree-vect-loop.c (vect_analyze_loop_operations): Don't call
11905 vectorizable_live_operation for pure SLP statements.
11906 (vectorizable_live_operation): Handle PHIs.
11907
11908 2018-01-16 Richard Biener <rguenther@suse.de>
11909
11910 PR tree-optimization/83867
11911 * tree-vect-stmts.c (vect_transform_stmt): Precompute
11912 nested_in_vect_loop_p since the scalar stmt may get invalidated.
11913
11914 2018-01-16 Jakub Jelinek <jakub@redhat.com>
11915
11916 PR c/83844
11917 * stor-layout.c (handle_warn_if_not_align): Use byte_position and
11918 multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
11919 If off is not INTEGER_CST, issue a may not be aligned warning
11920 rather than isn't aligned. Use isn%'t rather than isn't.
11921 * fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
11922 into MULT_EXPR.
11923 <case MULT_EXPR>: Improve the case when bottom and one of the
11924 MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
11925 operand, in that case check if the other operand is multiple of
11926 bottom divided by the INTEGER_CST operand.
11927
11928 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
11929
11930 PR target/83858
11931 * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
11932 * config/pa/pa-protos.h (pa_function_arg_size): Declare.
11933 * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
11934 pa_function_arg_size instead of FUNCTION_ARG_SIZE.
11935 * config/pa/pa.c (pa_function_arg_advance): Likewise.
11936 (pa_function_arg, pa_arg_partial_bytes): Likewise.
11937 (pa_function_arg_size): New function.
11938
11939 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
11940
11941 * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
11942 in a separate statement.
11943
11944 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
11945
11946 PR tree-optimization/83847
11947 * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't
11948 group gathers and scatters.
11949
11950 2018-01-16 Jakub Jelinek <jakub@redhat.com>
11951
11952 PR rtl-optimization/86620
11953 * params.def (max-sched-ready-insns): Bump minimum value to 1.
11954
11955 PR rtl-optimization/83213
11956 * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
11957 to last if both are JUMP_INSNs.
11958
11959 PR tree-optimization/83843
11960 * gimple-ssa-store-merging.c
11961 (imm_store_chain_info::output_merged_store): Handle bit_not_p on
11962 store_immediate_info for bswap/nop orig_stores.
11963
11964 2018-01-15 Andrew Waterman <andrew@sifive.com>
11965
11966 * config/riscv/riscv.c (riscv_rtx_costs) <MULT>: Increase cost if
11967 !TARGET_MUL.
11968 <UDIV>: Increase cost if !TARGET_DIV.
11969
11970 2018-01-15 Segher Boessenkool <segher@kernel.crashing.org>
11971
11972 * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr.
11973 (define_attr "cr_logical_3op"): New.
11974 (cceq_ior_compare): Adjust.
11975 (cceq_ior_compare_complement): Adjust.
11976 (*cceq_rev_compare): Adjust.
11977 * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust.
11978 (is_cracked_insn): Adjust.
11979 (insn_must_be_first_in_group): Adjust.
11980 * config/rs6000/40x.md: Adjust.
11981 * config/rs6000/440.md: Adjust.
11982 * config/rs6000/476.md: Adjust.
11983 * config/rs6000/601.md: Adjust.
11984 * config/rs6000/603.md: Adjust.
11985 * config/rs6000/6xx.md: Adjust.
11986 * config/rs6000/7450.md: Adjust.
11987 * config/rs6000/7xx.md: Adjust.
11988 * config/rs6000/8540.md: Adjust.
11989 * config/rs6000/cell.md: Adjust.
11990 * config/rs6000/e300c2c3.md: Adjust.
11991 * config/rs6000/e500mc.md: Adjust.
11992 * config/rs6000/e500mc64.md: Adjust.
11993 * config/rs6000/e5500.md: Adjust.
11994 * config/rs6000/e6500.md: Adjust.
11995 * config/rs6000/mpc.md: Adjust.
11996 * config/rs6000/power4.md: Adjust.
11997 * config/rs6000/power5.md: Adjust.
11998 * config/rs6000/power6.md: Adjust.
11999 * config/rs6000/power7.md: Adjust.
12000 * config/rs6000/power8.md: Adjust.
12001 * config/rs6000/power9.md: Adjust.
12002 * config/rs6000/rs64.md: Adjust.
12003 * config/rs6000/titan.md: Adjust.
12004
12005 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
12006
12007 * config/i386/predicates.md (indirect_branch_operand): Rewrite
12008 ix86_indirect_branch_register logic.
12009
12010 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
12011
12012 * config/i386/constraints.md (Bs): Update
12013 ix86_indirect_branch_register check. Don't check
12014 ix86_indirect_branch_register with GOT_memory_operand.
12015 (Bw): Likewise.
12016 * config/i386/predicates.md (GOT_memory_operand): Don't check
12017 ix86_indirect_branch_register here.
12018 (GOT32_symbol_operand): Likewise.
12019
12020 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
12021
12022 * config/i386/predicates.md (constant_call_address_operand):
12023 Rewrite ix86_indirect_branch_register logic.
12024 (sibcall_insn_operand): Likewise.
12025
12026 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
12027
12028 * config/i386/constraints.md (Bs): Replace
12029 ix86_indirect_branch_thunk_register with
12030 ix86_indirect_branch_register.
12031 (Bw): Likewise.
12032 * config/i386/i386.md (indirect_jump): Likewise.
12033 (tablejump): Likewise.
12034 (*sibcall_memory): Likewise.
12035 (*sibcall_value_memory): Likewise.
12036 Peepholes of indirect call and jump via memory: Likewise.
12037 * config/i386/i386.opt: Likewise.
12038 * config/i386/predicates.md (indirect_branch_operand): Likewise.
12039 (GOT_memory_operand): Likewise.
12040 (call_insn_operand): Likewise.
12041 (sibcall_insn_operand): Likewise.
12042 (GOT32_symbol_operand): Likewise.
12043
12044 2018-01-15 Jakub Jelinek <jakub@redhat.com>
12045
12046 PR middle-end/83837
12047 * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val
12048 type rather than type addr's type points to.
12049 (expand_omp_atomic_mutex): Likewise.
12050 (expand_omp_atomic): Likewise.
12051
12052 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
12053
12054 PR target/83839
12055 * config/i386/i386.c (output_indirect_thunk_function): Use
12056 ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
12057 for __x86_return_thunk.
12058
12059 2018-01-15 Richard Biener <rguenther@suse.de>
12060
12061 PR middle-end/83850
12062 * expmed.c (extract_bit_field_1): Fix typo.
12063
12064 2018-01-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12065
12066 PR target/83687
12067 * config/arm/iterators.md (VF): New mode iterator.
12068 * config/arm/neon.md (neon_vabd<mode>_2): Use the above.
12069 Remove integer-related logic from pattern.
12070 (neon_vabd<mode>_3): Likewise.
12071
12072 2018-01-15 Jakub Jelinek <jakub@redhat.com>
12073
12074 PR middle-end/82694
12075 * common.opt (fstrict-overflow): No longer an alias.
12076 (fwrapv-pointer): New option.
12077 * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
12078 also for pointer types based on flag_wrapv_pointer.
12079 * opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
12080 opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
12081 opts->x_flag_wrapv got set.
12082 * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
12083 changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
12084 POINTER_TYPE_OVERFLOW_UNDEFINED.
12085 * match.pd: Likewise in address comparison pattern.
12086 * doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
12087
12088 2018-01-15 Richard Biener <rguenther@suse.de>
12089
12090 PR lto/83804
12091 * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
12092 from TYPE_FIELDS. Free TYPE_BINFO if not used by devirtualization.
12093 Reset type names to their identifier if their TYPE_DECL doesn't
12094 have linkage (and thus is used for ODR and devirt).
12095 (save_debug_info_for_decl): Remove.
12096 (save_debug_info_for_type): Likewise.
12097 (add_tree_to_fld_list): Adjust.
12098 * tree-pretty-print.c (dump_generic_node): Make dumping of
12099 type names more robust.
12100
12101 2018-01-15 Richard Biener <rguenther@suse.de>
12102
12103 * BASE-VER: Bump to 8.0.1.
12104
12105 2018-01-14 Martin Sebor <msebor@redhat.com>
12106
12107 PR other/83508
12108 * builtins.c (check_access): Avoid warning when the no-warning bit
12109 is set.
12110
12111 2018-01-14 Cory Fields <cory-nospam-@coryfields.com>
12112
12113 * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
12114 * ira-color (allocno_hard_regs_compare): Likewise.
12115
12116 2018-01-14 Nathan Rossi <nathan@nathanrossi.com>
12117
12118 PR target/83013
12119 * config/microblaze/microblaze.c (microblaze_asm_output_ident):
12120 Use .pushsection/.popsection.
12121
12122 2018-01-14 Martin Sebor <msebor@redhat.com>
12123
12124 PR c++/81327
12125 * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
12126
12127 2018-01-14 Jakub Jelinek <jakub@redhat.com>
12128
12129 * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
12130 entry from extra_headers.
12131 (x86_64-*-*): Remove two duplicate gfniintrin.h entries from
12132 extra_headers, make the list bitwise identical to the i?86-*-* one.
12133
12134 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
12135
12136 * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
12137 -mcmodel=large with -mindirect-branch=thunk,
12138 -mindirect-branch=thunk-extern, -mfunction-return=thunk and
12139 -mfunction-return=thunk-extern.
12140 * doc/invoke.texi: Document -mcmodel=large is incompatible with
12141 -mindirect-branch=thunk, -mindirect-branch=thunk-extern,
12142 -mfunction-return=thunk and -mfunction-return=thunk-extern.
12143
12144 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
12145
12146 * config/i386/i386.c (print_reg): Print the name of the full
12147 integer register without '%'.
12148 (ix86_print_operand): Handle 'V'.
12149 * doc/extend.texi: Document 'V' modifier.
12150
12151 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
12152
12153 * config/i386/constraints.md (Bs): Disallow memory operand for
12154 -mindirect-branch-register.
12155 (Bw): Likewise.
12156 * config/i386/predicates.md (indirect_branch_operand): Likewise.
12157 (GOT_memory_operand): Likewise.
12158 (call_insn_operand): Likewise.
12159 (sibcall_insn_operand): Likewise.
12160 (GOT32_symbol_operand): Likewise.
12161 * config/i386/i386.md (indirect_jump): Call convert_memory_address
12162 for -mindirect-branch-register.
12163 (tablejump): Likewise.
12164 (*sibcall_memory): Likewise.
12165 (*sibcall_value_memory): Likewise.
12166 Disallow peepholes of indirect call and jump via memory for
12167 -mindirect-branch-register.
12168 (*call_pop): Replace m with Bw.
12169 (*call_value_pop): Likewise.
12170 (*sibcall_pop_memory): Replace m with Bs.
12171 * config/i386/i386.opt (mindirect-branch-register): New option.
12172 * doc/invoke.texi: Document -mindirect-branch-register option.
12173
12174 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
12175
12176 * config/i386/i386-protos.h (ix86_output_function_return): New.
12177 * config/i386/i386.c (ix86_set_indirect_branch_type): Also
12178 set function_return_type.
12179 (indirect_thunk_name): Add ret_p to indicate thunk for function
12180 return.
12181 (output_indirect_thunk_function): Pass false to
12182 indirect_thunk_name.
12183 (ix86_output_indirect_branch_via_reg): Likewise.
12184 (ix86_output_indirect_branch_via_push): Likewise.
12185 (output_indirect_thunk_function): Create alias for function
12186 return thunk if regno < 0.
12187 (ix86_output_function_return): New function.
12188 (ix86_handle_fndecl_attribute): Handle function_return.
12189 (ix86_attribute_table): Add function_return.
12190 * config/i386/i386.h (machine_function): Add
12191 function_return_type.
12192 * config/i386/i386.md (simple_return_internal): Use
12193 ix86_output_function_return.
12194 (simple_return_internal_long): Likewise.
12195 * config/i386/i386.opt (mfunction-return=): New option.
12196 (indirect_branch): Mention -mfunction-return=.
12197 * doc/extend.texi: Document function_return function attribute.
12198 * doc/invoke.texi: Document -mfunction-return= option.
12199
12200 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
12201
12202 * config/i386/i386-opts.h (indirect_branch): New.
12203 * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
12204 * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
12205 with local indirect jump when converting indirect call and jump.
12206 (ix86_set_indirect_branch_type): New.
12207 (ix86_set_current_function): Call ix86_set_indirect_branch_type.
12208 (indirectlabelno): New.
12209 (indirect_thunk_needed): Likewise.
12210 (indirect_thunk_bnd_needed): Likewise.
12211 (indirect_thunks_used): Likewise.
12212 (indirect_thunks_bnd_used): Likewise.
12213 (INDIRECT_LABEL): Likewise.
12214 (indirect_thunk_name): Likewise.
12215 (output_indirect_thunk): Likewise.
12216 (output_indirect_thunk_function): Likewise.
12217 (ix86_output_indirect_branch_via_reg): Likewise.
12218 (ix86_output_indirect_branch_via_push): Likewise.
12219 (ix86_output_indirect_branch): Likewise.
12220 (ix86_output_indirect_jmp): Likewise.
12221 (ix86_code_end): Call output_indirect_thunk_function if needed.
12222 (ix86_output_call_insn): Call ix86_output_indirect_branch if
12223 needed.
12224 (ix86_handle_fndecl_attribute): Handle indirect_branch.
12225 (ix86_attribute_table): Add indirect_branch.
12226 * config/i386/i386.h (machine_function): Add indirect_branch_type
12227 and has_local_indirect_jump.
12228 * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
12229 to true.
12230 (tablejump): Likewise.
12231 (*indirect_jump): Use ix86_output_indirect_jmp.
12232 (*tablejump_1): Likewise.
12233 (simple_return_indirect_internal): Likewise.
12234 * config/i386/i386.opt (mindirect-branch=): New option.
12235 (indirect_branch): New.
12236 (keep): Likewise.
12237 (thunk): Likewise.
12238 (thunk-inline): Likewise.
12239 (thunk-extern): Likewise.
12240 * doc/extend.texi: Document indirect_branch function attribute.
12241 * doc/invoke.texi: Document -mindirect-branch= option.
12242
12243 2018-01-14 Jan Hubicka <hubicka@ucw.cz>
12244
12245 PR ipa/83051
12246 * ipa-inline.c (edge_badness): Tolerate roundoff errors.
12247
12248 2018-01-14 Richard Sandiford <richard.sandiford@linaro.org>
12249
12250 * ipa-inline.c (want_inline_small_function_p): Return false if
12251 inlining has already failed with CIF_FINAL_ERROR.
12252 (update_caller_keys): Call want_inline_small_function_p before
12253 can_inline_edge_p.
12254 (update_callee_keys): Likewise.
12255
12256 2018-01-10 Kelvin Nilsen <kelvin@gcc.gnu.org>
12257
12258 * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
12259 New function.
12260 (rs6000_quadword_masked_address_p): Likewise.
12261 (quad_aligned_load_p): Likewise.
12262 (quad_aligned_store_p): Likewise.
12263 (const_load_sequence_p): Add comment to describe the outer-most loop.
12264 (mimic_memory_attributes_and_flags): New function.
12265 (rs6000_gen_stvx): Likewise.
12266 (replace_swapped_aligned_store): Likewise.
12267 (rs6000_gen_lvx): Likewise.
12268 (replace_swapped_aligned_load): Likewise.
12269 (replace_swapped_load_constant): Capitalize argument name in
12270 comment describing this function.
12271 (rs6000_analyze_swaps): Add a third pass to search for vector loads
12272 and stores that access quad-word aligned addresses and replace
12273 with stvx or lvx instructions when appropriate.
12274 * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
12275 New function prototype.
12276 (rs6000_quadword_masked_address_p): Likewise.
12277 (rs6000_gen_lvx): Likewise.
12278 (rs6000_gen_stvx): Likewise.
12279 * config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
12280 VSX_D (V2DF, V2DI), modify this split to select lvx instruction
12281 when memory address is aligned.
12282 (*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
12283 this split to select lvx instruction when memory address is aligned.
12284 (*vsx_le_perm_load_v8hi): Modify this split to select lvx
12285 instruction when memory address is aligned.
12286 (*vsx_le_perm_load_v16qi): Likewise.
12287 (four unnamed splitters): Modify to select the stvx instruction
12288 when memory is aligned.
12289
12290 2018-01-13 Jan Hubicka <hubicka@ucw.cz>
12291
12292 * predict.c (determine_unlikely_bbs): Handle correctly BBs
12293 which appears in the queue multiple times.
12294
12295 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12296 Alan Hayward <alan.hayward@arm.com>
12297 David Sherwood <david.sherwood@arm.com>
12298
12299 * tree-vectorizer.h (vec_lower_bound): New structure.
12300 (_loop_vec_info): Add check_nonzero and lower_bounds.
12301 (LOOP_VINFO_CHECK_NONZERO): New macro.
12302 (LOOP_VINFO_LOWER_BOUNDS): Likewise.
12303 (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
12304 * tree-data-ref.h (dr_with_seg_len): Add access_size and align
12305 fields. Make seg_len the distance travelled, not including the
12306 access size.
12307 (dr_direction_indicator): Declare.
12308 (dr_zero_step_indicator): Likewise.
12309 (dr_known_forward_stride_p): Likewise.
12310 * tree-data-ref.c: Include stringpool.h, tree-vrp.h and
12311 tree-ssanames.h.
12312 (runtime_alias_check_p): Allow runtime alias checks with
12313 variable strides.
12314 (operator ==): Compare access_size and align.
12315 (prune_runtime_alias_test_list): Rework for new distinction between
12316 the access_size and seg_len.
12317 (create_intersect_range_checks_index): Likewise. Cope with polynomial
12318 segment lengths.
12319 (get_segment_min_max): New function.
12320 (create_intersect_range_checks): Use it.
12321 (dr_step_indicator): New function.
12322 (dr_direction_indicator): Likewise.
12323 (dr_zero_step_indicator): Likewise.
12324 (dr_known_forward_stride_p): Likewise.
12325 * tree-loop-distribution.c (data_ref_segment_size): Return
12326 DR_STEP * (niters - 1).
12327 (compute_alias_check_pairs): Update call to the dr_with_seg_len
12328 constructor.
12329 * tree-vect-data-refs.c (vect_check_nonzero_value): New function.
12330 (vect_preserves_scalar_order_p): New function, split out from...
12331 (vect_analyze_data_ref_dependence): ...here. Check for zero steps.
12332 (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
12333 (vect_vfa_access_size): New function.
12334 (vect_vfa_align): Likewise.
12335 (vect_compile_time_alias): Take access_size_a and access_b arguments.
12336 (dump_lower_bound): New function.
12337 (vect_check_lower_bound): Likewise.
12338 (vect_small_gap_p): Likewise.
12339 (vectorizable_with_step_bound_p): Likewise.
12340 (vect_prune_runtime_alias_test_list): Ignore cross-iteration
12341 depencies if the vectorization factor is 1. Convert the checks
12342 for nonzero steps into checks on the bounds of DR_STEP. Try using
12343 a bunds check for variable steps if the minimum required step is
12344 relatively small. Update calls to the dr_with_seg_len
12345 constructor and to vect_compile_time_alias.
12346 * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
12347 function.
12348 (vect_loop_versioning): Call it.
12349 * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
12350 when retrying.
12351 (vect_estimate_min_profitable_iters): Account for any bounds checks.
12352
12353 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12354 Alan Hayward <alan.hayward@arm.com>
12355 David Sherwood <david.sherwood@arm.com>
12356
12357 * doc/sourcebuild.texi (vect_scatter_store): Document.
12358 * optabs.def (scatter_store_optab, mask_scatter_store_optab): New
12359 optabs.
12360 * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
12361 Document.
12362 * genopinit.c (main): Add supports_vec_scatter_store and
12363 supports_vec_scatter_store_cached to target_optabs.
12364 * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and
12365 IFN_MASK_SCATTER_STORE.
12366 * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal
12367 functions.
12368 * internal-fn.h (internal_store_fn_p): Declare.
12369 (internal_fn_stored_value_index): Likewise.
12370 * internal-fn.c (scatter_store_direct): New macro.
12371 (expand_scatter_store_optab_fn): New function.
12372 (direct_scatter_store_optab_supported_p): New macro.
12373 (internal_store_fn_p): New function.
12374 (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and
12375 IFN_MASK_SCATTER_STORE.
12376 (internal_fn_mask_index): Likewise.
12377 (internal_fn_stored_value_index): New function.
12378 (internal_gather_scatter_fn_supported_p): Adjust operand numbers
12379 for scatter stores.
12380 * optabs-query.h (supports_vec_scatter_store_p): Declare.
12381 * optabs-query.c (supports_vec_scatter_store_p): New function.
12382 * tree-vectorizer.h (vect_get_store_rhs): Declare.
12383 * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return
12384 true for scatter stores.
12385 (vect_gather_scatter_fn_p): Handle scatter stores too.
12386 (vect_check_gather_scatter): Consider using scatter stores if
12387 supports_vec_scatter_store_p.
12388 * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle
12389 scatter stores too.
12390 * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
12391 internal_fn_stored_value_index.
12392 (check_load_store_masking): Handle scatter stores too.
12393 (vect_get_store_rhs): Make public.
12394 (vectorizable_call): Use internal_store_fn_p.
12395 (vectorizable_store): Handle scatter store internal functions.
12396 (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE
12397 when deciding whether the end of the group has been reached.
12398 * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec.
12399 * config/aarch64/aarch64-sve.md (scatter_store<mode>): New expander.
12400 (mask_scatter_store<mode>): New insns.
12401
12402 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12403 Alan Hayward <alan.hayward@arm.com>
12404 David Sherwood <david.sherwood@arm.com>
12405
12406 * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare.
12407 * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public.
12408 * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New
12409 function.
12410 (vect_use_strided_gather_scatters_p): Take a masked_p argument.
12411 Use vect_truncate_gather_scatter_offset if we can't treat the
12412 operation as a normal gather load or scatter store.
12413 (get_group_load_store_type): Take the gather_scatter_info
12414 as argument. Try using a gather load or scatter store for
12415 single-element groups.
12416 (get_load_store_type): Update calls to get_group_load_store_type
12417 and vect_use_strided_gather_scatters_p.
12418
12419 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12420 Alan Hayward <alan.hayward@arm.com>
12421 David Sherwood <david.sherwood@arm.com>
12422
12423 * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra
12424 optional tree argument.
12425 * tree-vect-data-refs.c (vect_check_gather_scatter): Check for
12426 null target hooks.
12427 (vect_create_data_ref_ptr): Take the iv_step as an optional argument,
12428 but continue to use the current value as a fallback.
12429 (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare
12430 to compare the updates.
12431 * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function.
12432 (get_load_store_type): Use it when handling a strided access.
12433 (vect_get_strided_load_store_ops): New function.
12434 (vect_get_data_ptr_increment): Likewise.
12435 (vectorizable_load): Handle strided gather loads. Always pass
12436 a step to vect_create_data_ref_ptr and bump_vector_ptr.
12437
12438 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12439 Alan Hayward <alan.hayward@arm.com>
12440 David Sherwood <david.sherwood@arm.com>
12441
12442 * doc/md.texi (gather_load@var{m}): Document.
12443 (mask_gather_load@var{m}): Likewise.
12444 * genopinit.c (main): Add supports_vec_gather_load and
12445 supports_vec_gather_load_cached to target_optabs.
12446 * optabs-tree.c (init_tree_optimization_optabs): Use
12447 ggc_cleared_alloc to allocate target_optabs.
12448 * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs.
12449 * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal
12450 functions.
12451 * internal-fn.h (internal_load_fn_p): Declare.
12452 (internal_gather_scatter_fn_p): Likewise.
12453 (internal_fn_mask_index): Likewise.
12454 (internal_gather_scatter_fn_supported_p): Likewise.
12455 * internal-fn.c (gather_load_direct): New macro.
12456 (expand_gather_load_optab_fn): New function.
12457 (direct_gather_load_optab_supported_p): New macro.
12458 (direct_internal_fn_optab): New function.
12459 (internal_load_fn_p): Likewise.
12460 (internal_gather_scatter_fn_p): Likewise.
12461 (internal_fn_mask_index): Likewise.
12462 (internal_gather_scatter_fn_supported_p): Likewise.
12463 * optabs-query.c (supports_at_least_one_mode_p): New function.
12464 (supports_vec_gather_load_p): Likewise.
12465 * optabs-query.h (supports_vec_gather_load_p): Declare.
12466 * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type
12467 and memory_type field.
12468 (NUM_PATTERNS): Bump to 15.
12469 * tree-vect-data-refs.c: Include internal-fn.h.
12470 (vect_gather_scatter_fn_p): New function.
12471 (vect_describe_gather_scatter_call): Likewise.
12472 (vect_check_gather_scatter): Try using internal functions for
12473 gather loads. Recognize existing calls to a gather load function.
12474 (vect_analyze_data_refs): Consider using gather loads if
12475 supports_vec_gather_load_p.
12476 * tree-vect-patterns.c (vect_get_load_store_mask): New function.
12477 (vect_get_gather_scatter_offset_type): Likewise.
12478 (vect_convert_mask_for_vectype): Likewise.
12479 (vect_add_conversion_to_patterm): Likewise.
12480 (vect_try_gather_scatter_pattern): Likewise.
12481 (vect_recog_gather_scatter_pattern): New pattern recognizer.
12482 (vect_vect_recog_func_ptrs): Add it.
12483 * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
12484 internal_fn_mask_index and internal_gather_scatter_fn_p.
12485 (check_load_store_masking): Take the gather_scatter_info as an
12486 argument and handle gather loads.
12487 (vect_get_gather_scatter_ops): New function.
12488 (vectorizable_call): Check internal_load_fn_p.
12489 (vectorizable_load): Likewise. Handle gather load internal
12490 functions.
12491 (vectorizable_store): Update call to check_load_store_masking.
12492 * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec.
12493 * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators.
12494 * config/aarch64/predicates.md (aarch64_gather_scale_operand_w)
12495 (aarch64_gather_scale_operand_d): New predicates.
12496 * config/aarch64/aarch64-sve.md (gather_load<mode>): New expander.
12497 (mask_gather_load<mode>): New insns.
12498
12499 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12500 Alan Hayward <alan.hayward@arm.com>
12501 David Sherwood <david.sherwood@arm.com>
12502
12503 * optabs.def (fold_left_plus_optab): New optab.
12504 * doc/md.texi (fold_left_plus_@var{m}): Document.
12505 * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function.
12506 * internal-fn.c (fold_left_direct): Define.
12507 (expand_fold_left_optab_fn): Likewise.
12508 (direct_fold_left_optab_supported_p): Likewise.
12509 * fold-const-call.c (fold_const_fold_left): New function.
12510 (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS.
12511 * tree-parloops.c (valid_reduction_p): New function.
12512 (gather_scalar_reductions): Use it.
12513 * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type.
12514 (vect_finish_replace_stmt): Declare.
12515 * tree-vect-loop.c (fold_left_reduction_fn): New function.
12516 (needs_fold_left_reduction_p): New function, split out from...
12517 (vect_is_simple_reduction): ...here. Accept reductions that
12518 forbid reassociation, but give them type FOLD_LEFT_REDUCTION.
12519 (vect_force_simple_reduction): Also store the reduction type in
12520 the assignment's STMT_VINFO_REDUC_TYPE.
12521 (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION.
12522 (merge_with_identity): New function.
12523 (vect_expand_fold_left): Likewise.
12524 (vectorize_fold_left_reduction): Likewise.
12525 (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION. Leave the
12526 scalar phi in place for it. Check for target support and reject
12527 cases that would reassociate the operation. Defer the transform
12528 phase to vectorize_fold_left_reduction.
12529 * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec.
12530 * config/aarch64/aarch64-sve.md (fold_left_plus_<mode>): New expander.
12531 (*fold_left_plus_<mode>, *pred_fold_left_plus_<mode>): New insns.
12532
12533 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12534
12535 * tree-if-conv.c (predicate_mem_writes): Remove redundant
12536 call to ifc_temp_var.
12537
12538 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12539 Alan Hayward <alan.hayward@arm.com>
12540 David Sherwood <david.sherwood@arm.com>
12541
12542 * target.def (legitimize_address_displacement): Take the original
12543 offset as a poly_int.
12544 * targhooks.h (default_legitimize_address_displacement): Update
12545 accordingly.
12546 * targhooks.c (default_legitimize_address_displacement): Likewise.
12547 * doc/tm.texi: Regenerate.
12548 * lra-constraints.c (base_plus_disp_to_reg): Take the displacement
12549 as an argument, moving assert of ad->disp == ad->disp_term to...
12550 (process_address_1): ...here. Update calls to base_plus_disp_to_reg.
12551 Try calling targetm.legitimize_address_displacement before expanding
12552 the address rather than afterwards, and adjust for the new interface.
12553 * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
12554 Match the new hook interface. Handle SVE addresses.
12555 * config/sh/sh.c (sh_legitimize_address_displacement): Make the
12556 new hook interface.
12557
12558 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12559
12560 * Makefile.in (OBJS): Add early-remat.o.
12561 * target.def (select_early_remat_modes): New hook.
12562 * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
12563 * doc/tm.texi: Regenerate.
12564 * targhooks.h (default_select_early_remat_modes): Declare.
12565 * targhooks.c (default_select_early_remat_modes): New function.
12566 * timevar.def (TV_EARLY_REMAT): New timevar.
12567 * passes.def (pass_early_remat): New pass.
12568 * tree-pass.h (make_pass_early_remat): Declare.
12569 * early-remat.c: New file.
12570 * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
12571 function.
12572 (TARGET_SELECT_EARLY_REMAT_MODES): Define.
12573
12574 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12575 Alan Hayward <alan.hayward@arm.com>
12576 David Sherwood <david.sherwood@arm.com>
12577
12578 * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
12579 vfm1 with a bound_epilog parameter.
12580 (vect_do_peeling): Update calls accordingly, and move the prologue
12581 call earlier in the function. Treat the base bound_epilog as 0 for
12582 fully-masked loops and retain vf - 1 for other loops. Add 1 to
12583 this base when peeling for gaps.
12584 * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
12585 with fully-masked loops.
12586 (vect_estimate_min_profitable_iters): Handle the single peeled
12587 iteration in that case.
12588
12589 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12590 Alan Hayward <alan.hayward@arm.com>
12591 David Sherwood <david.sherwood@arm.com>
12592
12593 * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow
12594 single-element interleaving even if the size is not a power of 2.
12595 * tree-vect-stmts.c (get_load_store_type): Disallow elementwise
12596 accesses for single-element interleaving if the group size is
12597 not a power of 2.
12598
12599 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12600 Alan Hayward <alan.hayward@arm.com>
12601 David Sherwood <david.sherwood@arm.com>
12602
12603 * doc/md.texi (fold_extract_last_@var{m}): Document.
12604 * doc/sourcebuild.texi (vect_fold_extract_last): Likewise.
12605 * optabs.def (fold_extract_last_optab): New optab.
12606 * internal-fn.def (FOLD_EXTRACT_LAST): New internal function.
12607 * internal-fn.c (fold_extract_direct): New macro.
12608 (expand_fold_extract_optab_fn): Likewise.
12609 (direct_fold_extract_optab_supported_p): Likewise.
12610 * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type.
12611 * tree-vect-loop.c (vect_model_reduction_cost): Handle
12612 EXTRACT_LAST_REDUCTION.
12613 (get_initial_def_for_reduction): Do not create an initial vector
12614 for EXTRACT_LAST_REDUCTION reductions.
12615 (vectorizable_reduction): Leave the scalar phi in place for
12616 EXTRACT_LAST_REDUCTIONs. Try using EXTRACT_LAST_REDUCTION
12617 ahead of INTEGER_INDUC_COND_REDUCTION. Do not check for an
12618 epilogue code for EXTRACT_LAST_REDUCTION and defer the
12619 transform phase to vectorizable_condition.
12620 * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function,
12621 split out from...
12622 (vect_finish_stmt_generation): ...here.
12623 (vect_finish_replace_stmt): New function.
12624 (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION.
12625 * config/aarch64/aarch64-sve.md (fold_extract_last_<mode>): New
12626 pattern.
12627 * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec.
12628
12629 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12630 Alan Hayward <alan.hayward@arm.com>
12631 David Sherwood <david.sherwood@arm.com>
12632
12633 * doc/md.texi (extract_last_@var{m}): Document.
12634 * optabs.def (extract_last_optab): New optab.
12635 * internal-fn.def (EXTRACT_LAST): New internal function.
12636 * internal-fn.c (cond_unary_direct): New macro.
12637 (expand_cond_unary_optab_fn): Likewise.
12638 (direct_cond_unary_optab_supported_p): Likewise.
12639 * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked
12640 loops using EXTRACT_LAST.
12641 * config/aarch64/aarch64-sve.md (aarch64_sve_lastb<mode>): Rename to...
12642 (extract_last_<mode>): ...this optab.
12643 (vec_extract<mode><Vel>): Update accordingly.
12644
12645 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12646 Alan Hayward <alan.hayward@arm.com>
12647 David Sherwood <david.sherwood@arm.com>
12648
12649 * target.def (empty_mask_is_expensive): New hook.
12650 * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
12651 * doc/tm.texi: Regenerate.
12652 * targhooks.h (default_empty_mask_is_expensive): Declare.
12653 * targhooks.c (default_empty_mask_is_expensive): New function.
12654 * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores
12655 if the target says that empty masks are expensive.
12656 * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive):
12657 New function.
12658 (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.
12659
12660 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12661 Alan Hayward <alan.hayward@arm.com>
12662 David Sherwood <david.sherwood@arm.com>
12663
12664 * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field.
12665 (LOOP_VINFO_MASK_SKIP_NITERS): New macro.
12666 (vect_use_loop_mask_for_alignment_p): New function.
12667 (vect_prepare_for_masked_peels, vect_gen_while_not): Declare.
12668 * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an
12669 niters_skip argument. Make sure that the first niters_skip elements
12670 of the first iteration are inactive.
12671 (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS.
12672 Update call to vect_set_loop_masks_directly.
12673 (get_misalign_in_elems): New function, split out from...
12674 (vect_gen_prolog_loop_niters): ...here.
12675 (vect_update_init_of_dr): Take a code argument that specifies whether
12676 the adjustment should be added or subtracted.
12677 (vect_update_init_of_drs): Likewise.
12678 (vect_prepare_for_masked_peels): New function.
12679 (vect_do_peeling): Skip prologue peeling if we're using a mask
12680 instead. Update call to vect_update_inits_of_drs.
12681 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
12682 mask_skip_niters.
12683 (vect_analyze_loop_2): Allow fully-masked loops with peeling for
12684 alignment. Do not include the number of peeled iterations in
12685 the minimum threshold in that case.
12686 (vectorizable_induction): Adjust the start value down by
12687 LOOP_VINFO_MASK_SKIP_NITERS iterations.
12688 (vect_transform_loop): Call vect_prepare_for_masked_peels.
12689 Take the number of skipped iterations into account when calculating
12690 the loop bounds.
12691 * tree-vect-stmts.c (vect_gen_while_not): New function.
12692
12693 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12694 Alan Hayward <alan.hayward@arm.com>
12695 David Sherwood <david.sherwood@arm.com>
12696
12697 * doc/sourcebuild.texi (vect_fully_masked): Document.
12698 * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
12699 default value to 0.
12700 * tree-vect-loop.c (vect_analyze_loop_costing): New function,
12701 split out from...
12702 (vect_analyze_loop_2): ...here. Don't check the vectorization
12703 factor against the number of loop iterations if the loop is
12704 fully-masked.
12705
12706 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12707 Alan Hayward <alan.hayward@arm.com>
12708 David Sherwood <david.sherwood@arm.com>
12709
12710 * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into...
12711 (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types.
12712 (dump_groups): Update accordingly.
12713 (iv_use::mem_type): New member variable.
12714 (address_p): New function.
12715 (record_use): Add a mem_type argument and initialize the new
12716 mem_type field.
12717 (record_group_use): Add a mem_type argument. Use address_p.
12718 Remove obsolete null checks of base_object. Update call to record_use.
12719 (find_interesting_uses_op): Update call to record_group_use.
12720 (find_interesting_uses_cond): Likewise.
12721 (find_interesting_uses_address): Likewise.
12722 (get_mem_type_for_internal_fn): New function.
12723 (find_address_like_use): Likewise.
12724 (find_interesting_uses_stmt): Try find_address_like_use before
12725 calling find_interesting_uses_op.
12726 (addr_offset_valid_p): Use the iv mem_type field as the type
12727 of the addressed memory.
12728 (add_autoinc_candidates): Likewise.
12729 (get_address_cost): Likewise.
12730 (split_small_address_groups_p): Use address_p.
12731 (split_address_groups): Likewise.
12732 (add_iv_candidate_for_use): Likewise.
12733 (autoinc_possible_for_pair): Likewise.
12734 (rewrite_groups): Likewise.
12735 (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS.
12736 (determine_group_iv_cost): Update after split of USE_ADDRESS.
12737 (get_alias_ptr_type_for_ptr_address): New function.
12738 (rewrite_use_address): Rewrite address uses in calls that were
12739 identified by find_address_like_use.
12740
12741 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12742 Alan Hayward <alan.hayward@arm.com>
12743 David Sherwood <david.sherwood@arm.com>
12744
12745 * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of
12746 TARGET_MEM_REFs.
12747 * gimple-expr.h (is_gimple_addressable: Likewise.
12748 * gimple-expr.c (is_gimple_address): Likewise.
12749 * internal-fn.c (expand_call_mem_ref): New function.
12750 (expand_mask_load_optab_fn): Use it.
12751 (expand_mask_store_optab_fn): Likewise.
12752
12753 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12754 Alan Hayward <alan.hayward@arm.com>
12755 David Sherwood <david.sherwood@arm.com>
12756
12757 * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode})
12758 (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode})
12759 (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode})
12760 (cond_umax@var{mode}): Document.
12761 * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab)
12762 (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab)
12763 (cond_umin_optab, cond_umax_optab): New optabs.
12764 * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND)
12765 (COND_IOR, COND_XOR): New internal functions.
12766 * internal-fn.h (get_conditional_internal_fn): Declare.
12767 * internal-fn.c (cond_binary_direct): New macro.
12768 (expand_cond_binary_optab_fn): Likewise.
12769 (direct_cond_binary_optab_supported_p): Likewise.
12770 (get_conditional_internal_fn): New function.
12771 * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops.
12772 Cope with reduction statements that are vectorized as calls rather
12773 than assignments.
12774 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New insns.
12775 * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB)
12776 (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN)
12777 (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
12778 (UNSPEC_COND_EOR): New unspecs.
12779 (optab): Add mappings for them.
12780 (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators.
12781 (sve_int_op, sve_fp_op): New int attributes.
12782
12783 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12784 Alan Hayward <alan.hayward@arm.com>
12785 David Sherwood <david.sherwood@arm.com>
12786
12787 * optabs.def (while_ult_optab): New optab.
12788 * doc/md.texi (while_ult@var{m}@var{n}): Document.
12789 * internal-fn.def (WHILE_ULT): New internal function.
12790 * internal-fn.h (direct_internal_fn_supported_p): New override
12791 that takes two types as argument.
12792 * internal-fn.c (while_direct): New macro.
12793 (expand_while_optab_fn): New function.
12794 (convert_optab_supported_p): Likewise.
12795 (direct_while_optab_supported_p): New macro.
12796 * wide-int.h (wi::udiv_ceil): New function.
12797 * tree-vectorizer.h (rgroup_masks): New structure.
12798 (vec_loop_masks): New typedef.
12799 (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p
12800 and fully_masked_p.
12801 (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P)
12802 (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros.
12803 (vect_max_vf): New function.
12804 (slpeel_make_loop_iterate_ntimes): Delete.
12805 (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while)
12806 (vect_halve_mask_nunits, vect_double_mask_nunits): Declare.
12807 (vect_record_loop_mask, vect_get_loop_mask): Likewise.
12808 * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h,
12809 internal-fn.h, stor-layout.h and optabs-query.h.
12810 (vect_set_loop_mask): New function.
12811 (add_preheader_seq): Likewise.
12812 (add_header_seq): Likewise.
12813 (interleave_supported_p): Likewise.
12814 (vect_maybe_permute_loop_masks): Likewise.
12815 (vect_set_loop_masks_directly): Likewise.
12816 (vect_set_loop_condition_masked): Likewise.
12817 (vect_set_loop_condition_unmasked): New function, split out from
12818 slpeel_make_loop_iterate_ntimes.
12819 (slpeel_make_loop_iterate_ntimes): Rename to..
12820 (vect_set_loop_condition): ...this. Use vect_set_loop_condition_masked
12821 for fully-masked loops and vect_set_loop_condition_unmasked otherwise.
12822 (vect_do_peeling): Update call accordingly.
12823 (vect_gen_vector_loop_niters): Use VF as the step for fully-masked
12824 loops.
12825 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
12826 mask_compare_type, can_fully_mask_p and fully_masked_p.
12827 (release_vec_loop_masks): New function.
12828 (_loop_vec_info): Use it to free the loop masks.
12829 (can_produce_all_loop_masks_p): New function.
12830 (vect_get_max_nscalars_per_iter): Likewise.
12831 (vect_verify_full_masking): Likewise.
12832 (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around
12833 retries, and free the mask rgroups before retrying. Check loop-wide
12834 reasons for disallowing fully-masked loops. Make the final decision
12835 about whether use a fully-masked loop or not.
12836 (vect_estimate_min_profitable_iters): Do not assume that peeling
12837 for the number of iterations will be needed for fully-masked loops.
12838 (vectorizable_reduction): Disable fully-masked loops.
12839 (vectorizable_live_operation): Likewise.
12840 (vect_halve_mask_nunits): New function.
12841 (vect_double_mask_nunits): Likewise.
12842 (vect_record_loop_mask): Likewise.
12843 (vect_get_loop_mask): Likewise.
12844 (vect_transform_loop): Handle the case in which the final loop
12845 iteration might handle a partial vector. Call vect_set_loop_condition
12846 instead of slpeel_make_loop_iterate_ntimes.
12847 * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h.
12848 (check_load_store_masking): New function.
12849 (prepare_load_store_mask): Likewise.
12850 (vectorizable_store): Handle fully-masked loops.
12851 (vectorizable_load): Likewise.
12852 (supportable_widening_operation): Use vect_halve_mask_nunits for
12853 booleans.
12854 (supportable_narrowing_operation): Likewise vect_double_mask_nunits.
12855 (vect_gen_while): New function.
12856 * config/aarch64/aarch64.md (umax<mode>3): New expander.
12857 (aarch64_uqdec<mode>): New insn.
12858
12859 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12860 Alan Hayward <alan.hayward@arm.com>
12861 David Sherwood <david.sherwood@arm.com>
12862
12863 * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab)
12864 (reduc_xor_scal_optab): New optabs.
12865 * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m})
12866 (reduc_xor_scal_@var{m}): Document.
12867 * doc/sourcebuild.texi (vect_logical_reduc): Likewise.
12868 * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New
12869 internal functions.
12870 * fold-const-call.c (fold_const_call): Handle them.
12871 * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new
12872 internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
12873 * config/aarch64/aarch64-sve.md (reduc_<bit_reduc>_scal_<mode>):
12874 (*reduc_<bit_reduc>_scal_<mode>): New patterns.
12875 * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV)
12876 (UNSPEC_XORV): New unspecs.
12877 (optab): Add entries for them.
12878 (BITWISEV): New int iterator.
12879 (bit_reduc_op): New int attributes.
12880
12881 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12882 Alan Hayward <alan.hayward@arm.com>
12883 David Sherwood <david.sherwood@arm.com>
12884
12885 * doc/md.texi (vec_shl_insert_@var{m}): New optab.
12886 * internal-fn.def (VEC_SHL_INSERT): New internal function.
12887 * optabs.def (vec_shl_insert_optab): New optab.
12888 * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare.
12889 (duplicate_and_interleave): Likewise.
12890 * tree-vect-loop.c: Include internal-fn.h.
12891 (neutral_op_for_slp_reduction): New function, split out from
12892 get_initial_defs_for_reduction.
12893 (get_initial_def_for_reduction): Handle option 2 for variable-length
12894 vectors by loading the neutral value into a vector and then shifting
12895 the initial value into element 0.
12896 (get_initial_defs_for_reduction): Replace the code argument with
12897 the neutral value calculated by neutral_op_for_slp_reduction.
12898 Use gimple_build_vector for constant-length vectors.
12899 Use IFN_VEC_SHL_INSERT for variable-length vectors if all
12900 but the first group_size elements have a neutral value.
12901 Use duplicate_and_interleave otherwise.
12902 (vect_create_epilog_for_reduction): Take a neutral_op parameter.
12903 Update call to get_initial_defs_for_reduction. Handle SLP
12904 reductions for variable-length vectors by creating one vector
12905 result for each scalar result, with the elements associated
12906 with other scalar results stubbed out with the neutral value.
12907 (vectorizable_reduction): Call neutral_op_for_slp_reduction.
12908 Require IFN_VEC_SHL_INSERT for double reductions on
12909 variable-length vectors, or SLP reductions that have
12910 a neutral value. Require can_duplicate_and_interleave_p
12911 support for variable-length unchained SLP reductions if there
12912 is no neutral value, such as for MIN/MAX reductions. Also require
12913 the number of vector elements to be a multiple of the number of
12914 SLP statements when doing variable-length unchained SLP reductions.
12915 Update call to vect_create_epilog_for_reduction.
12916 * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public
12917 and remove initial values.
12918 (duplicate_and_interleave): Make public.
12919 * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec.
12920 * config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): New insn.
12921
12922 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12923 Alan Hayward <alan.hayward@arm.com>
12924 David Sherwood <david.sherwood@arm.com>
12925
12926 * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
12927 (can_duplicate_and_interleave_p): New function.
12928 (vect_get_and_check_slp_defs): Take the vector of statements
12929 rather than just the current one. Remove excess parentheses.
12930 Restriction rejectinon of vect_constant_def and vect_external_def
12931 for variable-length vectors to boolean types, or types for which
12932 can_duplicate_and_interleave_p is false.
12933 (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
12934 (duplicate_and_interleave): New function.
12935 (vect_get_constant_vectors): Use gimple_build_vector for
12936 constant-length vectors and suitable variable-length constant
12937 vectors. Use duplicate_and_interleave for other variable-length
12938 vectors. Don't defer the update when inserting new statements.
12939
12940 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12941 Alan Hayward <alan.hayward@arm.com>
12942 David Sherwood <david.sherwood@arm.com>
12943
12944 * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
12945 min_profitable_iters doesn't go negative.
12946
12947 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12948 Alan Hayward <alan.hayward@arm.com>
12949 David Sherwood <david.sherwood@arm.com>
12950
12951 * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
12952 (vec_mask_store_lanes@var{m}@var{n}): Likewise.
12953 * optabs.def (vec_mask_load_lanes_optab): New optab.
12954 (vec_mask_store_lanes_optab): Likewise.
12955 * internal-fn.def (MASK_LOAD_LANES): New internal function.
12956 (MASK_STORE_LANES): Likewise.
12957 * internal-fn.c (mask_load_lanes_direct): New macro.
12958 (mask_store_lanes_direct): Likewise.
12959 (expand_mask_load_optab_fn): Handle masked operations.
12960 (expand_mask_load_lanes_optab_fn): New macro.
12961 (expand_mask_store_optab_fn): Handle masked operations.
12962 (expand_mask_store_lanes_optab_fn): New macro.
12963 (direct_mask_load_lanes_optab_supported_p): Likewise.
12964 (direct_mask_store_lanes_optab_supported_p): Likewise.
12965 * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
12966 parameter.
12967 (vect_load_lanes_supported): Likewise.
12968 * tree-vect-data-refs.c (strip_conversion): New function.
12969 (can_group_stmts_p): Likewise.
12970 (vect_analyze_data_ref_accesses): Use it instead of checking
12971 for a pair of assignments.
12972 (vect_store_lanes_supported): Take a masked_p parameter.
12973 (vect_load_lanes_supported): Likewise.
12974 * tree-vect-loop.c (vect_analyze_loop_2): Update calls to
12975 vect_store_lanes_supported and vect_load_lanes_supported.
12976 * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
12977 * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
12978 parameter. Don't allow gaps for masked accesses.
12979 Use vect_get_store_rhs. Update calls to vect_store_lanes_supported
12980 and vect_load_lanes_supported.
12981 (get_load_store_type): Take a masked_p parameter and update
12982 call to get_group_load_store_type.
12983 (vectorizable_store): Update call to get_load_store_type.
12984 Handle IFN_MASK_STORE_LANES.
12985 (vectorizable_load): Update call to get_load_store_type.
12986 Handle IFN_MASK_LOAD_LANES.
12987
12988 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12989 Alan Hayward <alan.hayward@arm.com>
12990 David Sherwood <david.sherwood@arm.com>
12991
12992 * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector
12993 modes for SVE.
12994 * config/aarch64/aarch64-protos.h
12995 (aarch64_sve_struct_memory_operand_p): Declare.
12996 * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator.
12997 (vector_count, insn_length, VSINGLE, vsingle): New mode attributes.
12998 (VPRED, vpred): Handle SVE structure modes.
12999 * config/aarch64/constraints.md (Utx): New constraint.
13000 * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand)
13001 (aarch64_sve_struct_nonimmediate_operand): New predicates.
13002 * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs.
13003 * config/aarch64/aarch64-sve.md (mov<mode>, *aarch64_sve_mov<mode>_le)
13004 (*aarch64_sve_mov<mode>_be, pred_mov<mode>): New patterns for
13005 structure modes. Split into pieces after RA.
13006 (vec_load_lanes<mode><vsingle>, vec_mask_load_lanes<mode><vsingle>)
13007 (vec_store_lanes<mode><vsingle>, vec_mask_store_lanes<mode><vsingle>):
13008 New patterns.
13009 * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
13010 SVE structure modes.
13011 (aarch64_classify_address): Likewise.
13012 (sizetochar): Move earlier in file.
13013 (aarch64_print_operand): Handle SVE register lists.
13014 (aarch64_array_mode): New function.
13015 (aarch64_sve_struct_memory_operand_p): Likewise.
13016 (TARGET_ARRAY_MODE): Redefine.
13017
13018 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
13019 Alan Hayward <alan.hayward@arm.com>
13020 David Sherwood <david.sherwood@arm.com>
13021
13022 * target.def (array_mode): New target hook.
13023 * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook.
13024 * doc/tm.texi: Regenerate.
13025 * hooks.h (hook_optmode_mode_uhwi_none): Declare.
13026 * hooks.c (hook_optmode_mode_uhwi_none): New function.
13027 * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use
13028 targetm.array_mode.
13029 * stor-layout.c (mode_for_array): Likewise. Support polynomial
13030 type sizes.
13031
13032 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
13033 Alan Hayward <alan.hayward@arm.com>
13034 David Sherwood <david.sherwood@arm.com>
13035
13036 * fold-const.c (fold_binary_loc): Check the argument types
13037 rather than the result type when testing for a vector operation.
13038
13039 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
13040
13041 * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
13042 * doc/tm.texi: Regenerate.
13043
13044 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
13045 Alan Hayward <alan.hayward@arm.com>
13046 David Sherwood <david.sherwood@arm.com>
13047
13048 * doc/invoke.texi (-msve-vector-bits=): Document new option.
13049 (sve): Document new AArch64 extension.
13050 * doc/md.texi (w): Extend the description of the AArch64
13051 constraint to include SVE vectors.
13052 (Upl, Upa): Document new AArch64 predicate constraints.
13053 * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New
13054 enum.
13055 * config/aarch64/aarch64.opt (sve_vector_bits): New enum.
13056 (msve-vector-bits=): New option.
13057 * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable
13058 SVE when these are disabled.
13059 (sve): New extension.
13060 * config/aarch64/aarch64-modes.def: Define SVE vector and predicate
13061 modes. Adjust their number of units based on aarch64_sve_vg.
13062 (MAX_BITSIZE_MODE_ANY_MODE): Define.
13063 * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New
13064 aarch64_addr_query_type.
13065 (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode)
13066 (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p)
13067 (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries)
13068 (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate)
13069 (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate)
13070 (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare.
13071 (aarch64_simd_imm_zero_p): Delete.
13072 (aarch64_check_zero_based_sve_index_immediate): Declare.
13073 (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
13074 (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
13075 (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
13076 (aarch64_sve_float_mul_immediate_p): Likewise.
13077 (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
13078 rather than an rtx.
13079 (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare.
13080 (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback.
13081 (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare.
13082 (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float)
13083 (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare.
13084 (aarch64_regmode_natural_size): Likewise.
13085 * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro.
13086 (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift
13087 left one place.
13088 (AARCH64_ISA_SVE, TARGET_SVE): New macros.
13089 (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries
13090 for VG and the SVE predicate registers.
13091 (V_ALIASES): Add a "z"-prefixed alias.
13092 (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1.
13093 (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros.
13094 (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise.
13095 (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes.
13096 (REG_CLASS_NAMES): Add entries for them.
13097 (REG_CLASS_CONTENTS): Likewise. Update ALL_REGS to include VG
13098 and the predicate registers.
13099 (aarch64_sve_vg): Declare.
13100 (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED)
13101 (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros.
13102 (REGMODE_NATURAL_SIZE): Define.
13103 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
13104 SVE macros.
13105 * config/aarch64/aarch64.c: Include cfgrtl.h.
13106 (simd_immediate_info): Add a constructor for series vectors,
13107 and an associated step field.
13108 (aarch64_sve_vg): New variable.
13109 (aarch64_dbx_register_number): Handle VG and the predicate registers.
13110 (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete.
13111 (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE)
13112 (VEC_ANY_DATA, VEC_STRUCT): New constants.
13113 (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p)
13114 (aarch64_classify_vector_mode, aarch64_vector_data_mode_p)
13115 (aarch64_sve_data_mode_p, aarch64_sve_pred_mode)
13116 (aarch64_get_mask_mode): New functions.
13117 (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS
13118 and FP_LO_REGS. Handle PR_REGS, PR_LO_REGS and PR_HI_REGS.
13119 (aarch64_hard_regno_mode_ok): Handle VG. Also handle the SVE
13120 predicate modes and predicate registers. Explicitly restrict
13121 GPRs to modes of 16 bytes or smaller. Only allow FP registers
13122 to store a vector mode if it is recognized by
13123 aarch64_classify_vector_mode.
13124 (aarch64_regmode_natural_size): New function.
13125 (aarch64_hard_regno_caller_save_mode): Return the original mode
13126 for predicates.
13127 (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate)
13128 (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl)
13129 (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate)
13130 (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New
13131 functions.
13132 (aarch64_add_offset): Add a temp2 parameter. Assert that temp1
13133 does not overlap dest if the function is frame-related. Handle
13134 SVE constants.
13135 (aarch64_split_add_offset): New function.
13136 (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass
13137 them aarch64_add_offset.
13138 (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter
13139 and update call to aarch64_sub_sp.
13140 (aarch64_add_cfa_expression): New function.
13141 (aarch64_expand_prologue): Pass extra temporary registers to the
13142 functions above. Handle the case in which we need to emit new
13143 DW_CFA_expressions for registers that were originally saved
13144 relative to the stack pointer, but now have to be expressed
13145 relative to the frame pointer.
13146 (aarch64_output_mi_thunk): Pass extra temporary registers to the
13147 functions above.
13148 (aarch64_expand_epilogue): Likewise. Prevent inheritance of
13149 IP0 and IP1 values for SVE frames.
13150 (aarch64_expand_vec_series): New function.
13151 (aarch64_expand_sve_widened_duplicate): Likewise.
13152 (aarch64_expand_sve_const_vector): Likewise.
13153 (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter.
13154 Handle SVE constants. Use emit_move_insn to move a force_const_mem
13155 into the register, rather than emitting a SET directly.
13156 (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move)
13157 (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p)
13158 (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p)
13159 (offset_9bit_signed_scaled_p): New functions.
13160 (aarch64_replicate_bitmask_imm): New function.
13161 (aarch64_bitmask_imm): Use it.
13162 (aarch64_cannot_force_const_mem): Reject expressions involving
13163 a CONST_POLY_INT. Update call to aarch64_classify_symbol.
13164 (aarch64_classify_index): Handle SVE indices, by requiring
13165 a plain register index with a scale that matches the element size.
13166 (aarch64_classify_address): Handle SVE addresses. Assert that
13167 the mode of the address is VOIDmode or an integer mode.
13168 Update call to aarch64_classify_symbol.
13169 (aarch64_classify_symbolic_expression): Update call to
13170 aarch64_classify_symbol.
13171 (aarch64_const_vec_all_in_range_p): New function.
13172 (aarch64_print_vector_float_operand): Likewise.
13173 (aarch64_print_operand): Handle 'N' and 'C'. Use "zN" rather than
13174 "vN" for FP registers with SVE modes. Handle (const ...) vectors
13175 and the FP immediates 1.0 and 0.5.
13176 (aarch64_print_address_internal): Handle SVE addresses.
13177 (aarch64_print_operand_address): Use ADDR_QUERY_ANY.
13178 (aarch64_regno_regclass): Handle predicate registers.
13179 (aarch64_secondary_reload): Handle big-endian reloads of SVE
13180 data modes.
13181 (aarch64_class_max_nregs): Handle SVE modes and predicate registers.
13182 (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions.
13183 (aarch64_convert_sve_vector_bits): New function.
13184 (aarch64_override_options): Use it to handle -msve-vector-bits=.
13185 (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
13186 rather than an rtx.
13187 (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode.
13188 Handle SVE vector and predicate modes. Accept VL-based constants
13189 that need only one temporary register, and VL offsets that require
13190 no temporary registers.
13191 (aarch64_conditional_register_usage): Mark the predicate registers
13192 as fixed if SVE isn't available.
13193 (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode.
13194 Return true for SVE vector and predicate modes.
13195 (aarch64_simd_container_mode): Take the number of bits as a poly_int64
13196 rather than an unsigned int. Handle SVE modes.
13197 (aarch64_preferred_simd_mode): Update call accordingly. Handle
13198 SVE modes.
13199 (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
13200 if SVE is enabled.
13201 (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
13202 (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
13203 (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
13204 (aarch64_sve_float_mul_immediate_p): New functions.
13205 (aarch64_sve_valid_immediate): New function.
13206 (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors.
13207 Explicitly reject structure modes. Check for INDEX constants.
13208 Handle PTRUE and PFALSE constants.
13209 (aarch64_check_zero_based_sve_index_immediate): New function.
13210 (aarch64_simd_imm_zero_p): Delete.
13211 (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for
13212 vector modes. Accept constants in the range of CNT[BHWD].
13213 (aarch64_simd_scalar_immediate_valid_for_move): Explicitly
13214 ask for an Advanced SIMD mode.
13215 (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions.
13216 (aarch64_simd_vector_alignment): Handle SVE predicates.
13217 (aarch64_vectorize_preferred_vector_alignment): New function.
13218 (aarch64_simd_vector_alignment_reachable): Use it instead of
13219 the vector size.
13220 (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
13221 (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
13222 functions.
13223 (MAX_VECT_LEN): Delete.
13224 (expand_vec_perm_d): Add a vec_flags field.
13225 (emit_unspec2, aarch64_expand_sve_vec_perm): New functions.
13226 (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
13227 (aarch64_evpc_ext): Don't apply a big-endian lane correction
13228 for SVE modes.
13229 (aarch64_evpc_rev): Rename to...
13230 (aarch64_evpc_rev_local): ...this. Use a predicated operation for SVE.
13231 (aarch64_evpc_rev_global): New function.
13232 (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP.
13233 (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of
13234 MAX_VECT_LEN.
13235 (aarch64_evpc_sve_tbl): New function.
13236 (aarch64_expand_vec_perm_const_1): Update after rename of
13237 aarch64_evpc_rev. Handle SVE permutes too, trying
13238 aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather
13239 than aarch64_evpc_tbl.
13240 (aarch64_vectorize_vec_perm_const): Initialize vec_flags.
13241 (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code)
13242 (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int)
13243 (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or)
13244 (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float)
13245 (aarch64_expand_sve_vcond): New functions.
13246 (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead
13247 of aarch64_vector_mode_p.
13248 (aarch64_dwarf_poly_indeterminate_value): New function.
13249 (aarch64_compute_pressure_classes): Likewise.
13250 (aarch64_can_change_mode_class): Likewise.
13251 (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine.
13252 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise.
13253 (TARGET_VECTORIZE_GET_MASK_MODE): Likewise.
13254 (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise.
13255 (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise.
13256 (TARGET_CAN_CHANGE_MODE_CLASS): Likewise.
13257 * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr)
13258 (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New
13259 constraints.
13260 (Dn, Dl, Dr): Accept const as well as const_vector.
13261 (Dz): Likewise. Compare against CONST0_RTX.
13262 * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead
13263 of "vector" where appropriate.
13264 (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD)
13265 (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators.
13266 (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT)
13267 (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE)
13268 (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS)
13269 (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs.
13270 (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV)
13271 (v_int_equiv): Extend to SVE modes.
13272 (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New
13273 mode attributes.
13274 (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators.
13275 (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt.
13276 (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs.
13277 (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP)
13278 (SVE_COND_FP_CMP): New int iterators.
13279 (perm_hilo): Handle the new unpack unspecs.
13280 (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int
13281 attributes.
13282 * config/aarch64/predicates.md (aarch64_sve_cnt_immediate)
13283 (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate)
13284 (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand)
13285 (aarch64_equality_operator, aarch64_constant_vector_operand)
13286 (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates.
13287 (aarch64_sve_nonimmediate_operand): Likewise.
13288 (aarch64_sve_general_operand): Likewise.
13289 (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise.
13290 (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate)
13291 (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise.
13292 (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise.
13293 (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise.
13294 (aarch64_sve_float_arith_immediate): Likewise.
13295 (aarch64_sve_float_arith_with_sub_immediate): Likewise.
13296 (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise.
13297 (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise.
13298 (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise.
13299 (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise.
13300 (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise.
13301 (aarch64_sve_float_arith_operand): Likewise.
13302 (aarch64_sve_float_arith_with_sub_operand): Likewise.
13303 (aarch64_sve_float_mul_operand): Likewise.
13304 (aarch64_sve_vec_perm_operand): Likewise.
13305 (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate.
13306 (aarch64_mov_operand): Accept const_poly_int and const_vector.
13307 (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const
13308 as well as const_vector.
13309 (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier
13310 in file. Use CONST0_RTX and CONSTM1_RTX.
13311 (aarch64_simd_or_scalar_imm_zero): Likewise. Add match_codes.
13312 (aarch64_simd_reg_or_zero): Accept const as well as const_vector.
13313 Use aarch64_simd_imm_zero.
13314 * config/aarch64/aarch64-sve.md: New file.
13315 * config/aarch64/aarch64.md: Include it.
13316 (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers.
13317 (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE)
13318 (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI)
13319 (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK)
13320 (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants.
13321 (sve): New attribute.
13322 (enabled): Disable instructions with the sve attribute unless
13323 TARGET_SVE.
13324 (movqi, movhi): Pass CONST_POLY_INT operaneds through
13325 aarch64_expand_mov_immediate.
13326 (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Handle
13327 CNT[BHSD] immediates.
13328 (movti): Split CONST_POLY_INT moves into two halves.
13329 (add<mode>3): Accept aarch64_pluslong_or_poly_operand.
13330 Split additions that need a temporary here if the destination
13331 is the stack pointer.
13332 (*add<mode>3_aarch64): Handle ADDVL and ADDPL immediates.
13333 (*add<mode>3_poly_1): New instruction.
13334 (set_clobber_cc): New expander.
13335
13336 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
13337
13338 * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes
13339 parameter and use it instead of GET_MODE_SIZE (innermode). Use
13340 inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode).
13341 Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of
13342 GET_MODE_NUNITS (innermode). Also add a first_elem parameter.
13343 Change innermode from fixed_mode_size to machine_mode.
13344 (simplify_subreg): Update call accordingly. Handle a constant-sized
13345 subreg of a variable-length CONST_VECTOR.
13346
13347 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
13348 Alan Hayward <alan.hayward@arm.com>
13349 David Sherwood <david.sherwood@arm.com>
13350
13351 * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function.
13352 (add_offset_to_base): New function, split out from...
13353 (create_mem_ref): ...here. When handling a scale other than 1,
13354 check first whether the address is valid without the offset.
13355 Add it into the base if so, leaving the index and scale as-is.
13356
13357 2018-01-12 Jakub Jelinek <jakub@redhat.com>
13358
13359 PR c++/83778
13360 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call
13361 fold_for_warn before checking if arg2 is INTEGER_CST.
13362
13363 2018-01-12 Segher Boessenkool <segher@kernel.crashing.org>
13364
13365 * config/rs6000/predicates.md (load_multiple_operation): Delete.
13366 (store_multiple_operation): Delete.
13367 * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING.
13368 * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete.
13369 * config/rs6000/rs6000-string.c (expand_block_move): Delete everything
13370 guarded by TARGET_STRING.
13371 (rs6000_output_load_multiple): Delete.
13372 * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
13373 OPTION_MASK_STRING / TARGET_STRING handling.
13374 (print_operand) <'N', 'O'>: Add comment that these are unused now.
13375 (const rs6000_opt_masks) <"string">: Change mask to 0.
13376 * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING.
13377 (MASK_STRING): Delete.
13378 * config/rs6000/rs6000.md (*mov<mode>_string): Delete TARGET_STRING
13379 parts. Simplify.
13380 (load_multiple): Delete.
13381 (*ldmsi8): Delete.
13382 (*ldmsi7): Delete.
13383 (*ldmsi6): Delete.
13384 (*ldmsi5): Delete.
13385 (*ldmsi4): Delete.
13386 (*ldmsi3): Delete.
13387 (store_multiple): Delete.
13388 (*stmsi8): Delete.
13389 (*stmsi7): Delete.
13390 (*stmsi6): Delete.
13391 (*stmsi5): Delete.
13392 (*stmsi4): Delete.
13393 (*stmsi3): Delete.
13394 (movmemsi_8reg): Delete.
13395 (corresponding unnamed define_insn): Delete.
13396 (movmemsi_6reg): Delete.
13397 (corresponding unnamed define_insn): Delete.
13398 (movmemsi_4reg): Delete.
13399 (corresponding unnamed define_insn): Delete.
13400 (movmemsi_2reg): Delete.
13401 (corresponding unnamed define_insn): Delete.
13402 (movmemsi_1reg): Delete.
13403 (corresponding unnamed define_insn): Delete.
13404 * config/rs6000/rs6000.opt (mno-string): New.
13405 (mstring): Replace by deprecation warning stub.
13406 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring.
13407
13408 2018-01-12 Jakub Jelinek <jakub@redhat.com>
13409
13410 * regrename.c (regrename_do_replace): If replacing the same
13411 reg multiple times, try to reuse last created gen_raw_REG.
13412
13413 PR debug/81155
13414 * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition
13415 main to workaround a bug in GDB.
13416
13417 2018-01-12 Tom de Vries <tom@codesourcery.com>
13418
13419 PR target/83737
13420 * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap.
13421
13422 2018-01-12 Vladimir Makarov <vmakarov@redhat.com>
13423
13424 PR rtl-optimization/80481
13425 * ira-color.c (get_cap_member): New function.
13426 (allocnos_conflict_by_live_ranges_p): Use it.
13427 (slot_coalesced_allocno_live_ranges_intersect_p): Add assert.
13428 (setup_slot_coalesced_allocno_live_ranges): Ditto.
13429
13430 2018-01-12 Uros Bizjak <ubizjak@gmail.com>
13431
13432 PR target/83628
13433 * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
13434 (*saddl_se_1): Ditto.
13435 (*ssubsi_1): Ditto.
13436 (*ssubl_se_1): Ditto.
13437
13438 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
13439
13440 * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest
13441 rather than wi::to_widest for DR_INITs.
13442 * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use
13443 wi::to_poly_offset rather than wi::to_offset for DR_INIT.
13444 (vect_analyze_data_ref_accesses): Require both DR_INITs to be
13445 INTEGER_CSTs.
13446 (vect_analyze_group_access_1): Note that here.
13447
13448 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
13449
13450 * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
13451 polynomial type sizes.
13452
13453 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
13454
13455 * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
13456 poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
13457 (gimple_add_tmp_var): Likewise.
13458
13459 2018-01-12 Martin Liska <mliska@suse.cz>
13460
13461 * gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
13462 (gimple_alloc_sizes): Likewise.
13463 (dump_gimple_statistics): Use PRIu64 in printf format.
13464 * gimple.h: Change uint64_t to int.
13465
13466 2018-01-12 Martin Liska <mliska@suse.cz>
13467
13468 * tree-core.h: Use uint64_t instead of int.
13469 * tree.c (tree_node_counts): Likewise.
13470 (tree_node_sizes): Likewise.
13471 (dump_tree_statistics): Use PRIu64 in printf format.
13472
13473 2018-01-12 Martin Liska <mliska@suse.cz>
13474
13475 * Makefile.in: As qsort_chk is implemented in vec.c, add
13476 vec.o to linkage of gencfn-macros.
13477 * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's
13478 passing the info to record_node_allocation_statistics.
13479 (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration
13480 and pass the info.
13481 * ggc-common.c (struct ggc_usage): Add operator== and use
13482 it in operator< and compare function.
13483 * mem-stats.h (struct mem_usage): Likewise.
13484 * vec.c (struct vec_usage): Remove operator< and compare
13485 function. Can be simply inherited.
13486
13487 2018-01-12 Martin Jambor <mjambor@suse.cz>
13488
13489 PR target/81616
13490 * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS.
13491 * tree-ssa-math-opts.c: Include domwalk.h.
13492 (convert_mult_to_fma_1): New function.
13493 (fma_transformation_info): New type.
13494 (fma_deferring_state): Likewise.
13495 (cancel_fma_deferring): New function.
13496 (result_of_phi): Likewise.
13497 (last_fma_candidate_feeds_initial_phi): Likewise.
13498 (convert_mult_to_fma): Added deferring logic, split actual
13499 transformation to convert_mult_to_fma_1.
13500 (math_opts_dom_walker): New type.
13501 (math_opts_dom_walker::after_dom_children): New method, body moved
13502 here from pass_optimize_widening_mul::execute, added deferring logic
13503 bits.
13504 (pass_optimize_widening_mul::execute): Moved most of code to
13505 math_opts_dom_walker::after_dom_children.
13506 * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New.
13507 * config/i386/i386.c (ix86_option_override_internal): Added
13508 maybe_setting of PARAM_AVOID_FMA_MAX_BITS.
13509
13510 2018-01-12 Richard Biener <rguenther@suse.de>
13511
13512 PR debug/83157
13513 * dwarf2out.c (gen_variable_die): Do not reset old_die for
13514 inline instance vars.
13515
13516 2018-01-12 Oleg Endo <olegendo@gcc.gnu.org>
13517
13518 PR target/81819
13519 * config/rx/rx.c (rx_is_restricted_memory_address):
13520 Handle SUBREG case.
13521
13522 2018-01-12 Richard Biener <rguenther@suse.de>
13523
13524 PR tree-optimization/80846
13525 * target.def (split_reduction): New target hook.
13526 * targhooks.c (default_split_reduction): New function.
13527 * targhooks.h (default_split_reduction): Declare.
13528 * tree-vect-loop.c (vect_create_epilog_for_reduction): If the
13529 target requests first reduce vectors by combining low and high
13530 parts.
13531 * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust.
13532 (get_vectype_for_scalar_type_and_size): Export.
13533 * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare.
13534 * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document.
13535 * doc/tm.texi: Regenerate.
13536 * config/i386/i386.c (ix86_split_reduction): Implement
13537 TARGET_VECTORIZE_SPLIT_REDUCTION.
13538
13539 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
13540
13541 PR target/83368
13542 * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
13543 in PIC mode except for TARGET_VXWORKS_RTP.
13544 * config/sparc/sparc.c: Include cfgrtl.h.
13545 (TARGET_INIT_PIC_REG): Define.
13546 (TARGET_USE_PSEUDO_PIC_REG): Likewise.
13547 (sparc_pic_register_p): New predicate.
13548 (sparc_legitimate_address_p): Use it.
13549 (sparc_legitimize_pic_address): Likewise.
13550 (sparc_delegitimize_address): Likewise.
13551 (sparc_mode_dependent_address_p): Likewise.
13552 (gen_load_pcrel_sym): Remove 4th parameter.
13553 (load_got_register): Adjust call to above. Remove obsolete stuff.
13554 (sparc_expand_prologue): Do not call load_got_register here.
13555 (sparc_flat_expand_prologue): Likewise.
13556 (sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
13557 (sparc_use_pseudo_pic_reg): New function.
13558 (sparc_init_pic_reg): Likewise.
13559 * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
13560 (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.
13561
13562 2018-01-12 Christophe Lyon <christophe.lyon@linaro.org>
13563
13564 * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
13565 Add item for branch_cost.
13566
13567 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
13568
13569 PR rtl-optimization/83565
13570 * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
13571 not extend the result to a larger mode for rotate operations.
13572 (num_sign_bit_copies1): Likewise.
13573
13574 2018-01-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
13575
13576 PR target/40411
13577 * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
13578 -symbolic.
13579 Use values-Xc.o for -pedantic.
13580 Link with values-xpg4.o for C90, values-xpg6.o otherwise.
13581
13582 2018-01-12 Martin Liska <mliska@suse.cz>
13583
13584 PR ipa/83054
13585 * ipa-devirt.c (final_warning_record::grow_type_warnings):
13586 New function.
13587 (possible_polymorphic_call_targets): Use it.
13588 (ipa_devirt): Likewise.
13589
13590 2018-01-12 Martin Liska <mliska@suse.cz>
13591
13592 * profile-count.h (enum profile_quality): Use 0 as invalid
13593 enum value of profile_quality.
13594
13595 2018-01-12 Chung-Ju Wu <jasonwucj@gmail.com>
13596
13597 * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
13598 -mext-string options.
13599
13600 2018-01-12 Richard Biener <rguenther@suse.de>
13601
13602 * lto-streamer-out.c (DFS::DFS_write_tree_body): Process
13603 DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P.
13604 * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
13605 Likewise.
13606 * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
13607
13608 2018-01-11 Michael Meissner <meissner@linux.vnet.ibm.com>
13609
13610 * configure.ac (--with-long-double-format): Add support for the
13611 configuration option to change the default long double format on
13612 PowerPC systems.
13613 * config.gcc (powerpc*-linux*-*): Likewise.
13614 * configure: Regenerate.
13615 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
13616 double is IEEE, define __KC__ and __KF__ to allow floatn.h to be
13617 used without modification.
13618
13619 2018-01-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
13620
13621 * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define.
13622 (SPEC_BARRIER): New instantiation of BU_P7_MISC_X.
13623 * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle
13624 MISC_BUILTIN_SPEC_BARRIER.
13625 (rs6000_init_builtins): Likewise.
13626 * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV
13627 enum value.
13628 (speculation_barrier): New define_insn.
13629 * doc/extend.texi: Document __builtin_speculation_barrier.
13630
13631 2018-01-11 Jakub Jelinek <jakub@redhat.com>
13632
13633 PR target/83203
13634 * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
13635 is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set<mode>_0.
13636 * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
13637 iterators.
13638 (ssescalarmodesuffix): Add 512-bit vectors. Use "d" or "q" for
13639 integral modes instead of "ss" and "sd".
13640 (vec_set<mode>_0): New define_insns for 256-bit and 512-bit
13641 vectors with 32-bit and 64-bit elements.
13642 (vecdupssescalarmodesuffix): New mode attribute.
13643 (vec_dup<mode>): Use it.
13644
13645 2018-01-11 H.J. Lu <hongjiu.lu@intel.com>
13646
13647 PR target/83330
13648 * config/i386/i386.c (ix86_compute_frame_layout): Align stack
13649 frame if argument is passed on stack.
13650
13651 2018-01-11 Jakub Jelinek <jakub@redhat.com>
13652
13653 PR target/82682
13654 * ree.c (combine_reaching_defs): Optimize also
13655 reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
13656 reg2=any_extend(exp); reg1=reg2;, formatting fix.
13657
13658 2018-01-11 Jan Hubicka <hubicka@ucw.cz>
13659
13660 PR middle-end/83189
13661 * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.
13662
13663 2018-01-11 Jan Hubicka <hubicka@ucw.cz>
13664
13665 PR middle-end/83718
13666 * tree-inline.c (copy_cfg_body): Adjust num&den for scaling
13667 after they are computed.
13668
13669 2018-01-11 Bin Cheng <bin.cheng@arm.com>
13670
13671 PR tree-optimization/83695
13672 * gimple-loop-linterchange.cc
13673 (tree_loop_interchange::interchange_loops): Call scev_reset_htab to
13674 reset cached scev information after interchange.
13675 (pass_linterchange::execute): Remove call to scev_reset_htab.
13676
13677 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13678
13679 * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32,
13680 vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32,
13681 vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32,
13682 vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32,
13683 vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32,
13684 vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define.
13685 * config/arm/arm_neon_builtins.def (vfmal_lane_low,
13686 vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high,
13687 vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low,
13688 vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high,
13689 vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins.
13690 * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes.
13691 (V_lane_reg): Likewise.
13692 * config/arm/neon.md (neon_vfm<vfml_op>l_lane_<vfml_half><VCVTF:mode>):
13693 New define_expand.
13694 (neon_vfm<vfml_op>l_lane_<vfml_half><vfmlsel2><mode>): Likewise.
13695 (vfmal_lane_low<mode>_intrinsic,
13696 vfmal_lane_low<vfmlsel2><mode>_intrinsic,
13697 vfmal_lane_high<vfmlsel2><mode>_intrinsic,
13698 vfmal_lane_high<mode>_intrinsic, vfmsl_lane_low<mode>_intrinsic,
13699 vfmsl_lane_low<vfmlsel2><mode>_intrinsic,
13700 vfmsl_lane_high<vfmlsel2><mode>_intrinsic,
13701 vfmsl_lane_high<mode>_intrinsic): New define_insns.
13702
13703 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13704
13705 * config/arm/arm-cpus.in (fp16fml): New feature.
13706 (ALL_SIMD): Add fp16fml.
13707 (armv8.2-a): Add fp16fml as an option.
13708 (armv8.3-a): Likewise.
13709 (armv8.4-a): Add fp16fml as part of fp16.
13710 * config/arm/arm.h (TARGET_FP16FML): Define.
13711 * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML
13712 when appropriate.
13713 * config/arm/arm-modes.def (V2HF): Define.
13714 * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
13715 vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32,
13716 vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define.
13717 * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high,
13718 vfmsl_low, vfmsl_high): New set of builtins.
13719 * config/arm/iterators.md (PLUSMINUS): New code iterator.
13720 (vfml_op): New code attribute.
13721 (VFMLHALVES): New int iterator.
13722 (VFML, VFMLSEL): New mode attributes.
13723 (V_reg): Define mapping for V2HF.
13724 (V_hi, V_lo): New mode attributes.
13725 (VF_constraint): Likewise.
13726 (vfml_half, vfml_half_selector): New int attributes.
13727 * config/arm/neon.md (neon_vfm<vfml_op>l_<vfml_half><mode>): New
13728 define_expand.
13729 (vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
13730 vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
13731 New define_insn.
13732 * config/arm/t-arm-elf (v8_fps): Add fp16fml.
13733 * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml.
13734 * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs.
13735 * doc/invoke.texi (ARM Options): Document fp16fml. Update armv8.4-a
13736 documentation.
13737 * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
13738 Document new effective target and option set.
13739
13740 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13741
13742 * config/arm/arm-cpus.in (armv8_4): New feature.
13743 (ARMv8_4a): New fgroup.
13744 (armv8.4-a): New arch.
13745 * config/arm/arm-tables.opt: Regenerate.
13746 * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a.
13747 * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a.
13748 * config/arm/t-multilib (v8_4_a_simd_variants): New variable.
13749 Add matching rules for -march=armv8.4-a and extensions.
13750 * doc/invoke.texi (ARM Options): Document -march=armv8.4-a.
13751
13752 2018-01-11 Oleg Endo <olegendo@gcc.gnu.org>
13753
13754 PR target/81821
13755 * config/rx/rx.md (BW): New mode attribute.
13756 (sync_lock_test_and_setsi): Add mode suffix to insn output.
13757
13758 2018-01-11 Richard Biener <rguenther@suse.de>
13759
13760 PR tree-optimization/83435
13761 * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
13762 * graphite-scop-detection.c (scop_detection::get_sese): Likewise.
13763 * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
13764
13765 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
13766 Alan Hayward <alan.hayward@arm.com>
13767 David Sherwood <david.sherwood@arm.com>
13768
13769 * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset
13770 field.
13771 (aarch64_classify_address): Initialize it. Track polynomial offsets.
13772 (aarch64_print_address_internal): Use it to check for a zero offset.
13773
13774 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
13775 Alan Hayward <alan.hayward@arm.com>
13776 David Sherwood <david.sherwood@arm.com>
13777
13778 * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2.
13779 * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset):
13780 Return a poly_int64 rather than a HOST_WIDE_INT.
13781 (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64
13782 rather than a HOST_WIDE_INT.
13783 * config/aarch64/aarch64.h (aarch64_frame): Protect with
13784 HAVE_POLY_INT_H rather than HOST_WIDE_INT. Change locals_offset,
13785 hard_fp_offset, frame_size, initial_adjust, callee_offset and
13786 final_offset from HOST_WIDE_INT to poly_int64.
13787 * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
13788 to_constant when getting the number of units in an Advanced SIMD
13789 mode.
13790 (aarch64_builtin_vectorized_function): Check for a constant number
13791 of units.
13792 * config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
13793 GET_MODE_SIZE.
13794 (aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): Use the nunits
13795 attribute instead of GET_MODE_NUNITS.
13796 * config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
13797 (aarch64_class_max_nregs): Use the constant_lowest_bound of the
13798 GET_MODE_SIZE for fixed-size registers.
13799 (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p.
13800 (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index)
13801 (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address)
13802 (aarch64_legitimize_address_displacement, aarch64_secondary_reload)
13803 (aarch64_print_operand, aarch64_print_address_internal)
13804 (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost)
13805 (aarch64_short_vector_p, aapcs_vfp_sub_candidate)
13806 (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp):
13807 Handle polynomial GET_MODE_SIZE.
13808 (aarch64_hard_regno_caller_save_mode): Likewise. Return modes
13809 wider than SImode without modification.
13810 (tls_symbolic_operand_type): Use strip_offset instead of split_const.
13811 (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward)
13812 (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle
13813 passing and returning SVE modes.
13814 (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode
13815 rather than GEN_INT.
13816 (aarch64_emit_probe_stack_range): Take the size as a poly_int64
13817 rather than a HOST_WIDE_INT, but call sorry if it isn't constant.
13818 (aarch64_allocate_and_probe_stack_space): Likewise.
13819 (aarch64_layout_frame): Cope with polynomial offsets.
13820 (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the
13821 start_offset as a poly_int64 rather than a HOST_WIDE_INT. Track
13822 polynomial offsets.
13823 (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p)
13824 (aarch64_offset_7bit_signed_scaled_p): Take the offset as a
13825 poly_int64 rather than a HOST_WIDE_INT.
13826 (aarch64_get_separate_components, aarch64_process_components)
13827 (aarch64_expand_prologue, aarch64_expand_epilogue)
13828 (aarch64_use_return_insn_p): Handle polynomial frame offsets.
13829 (aarch64_anchor_offset): New function, split out from...
13830 (aarch64_legitimize_address): ...here.
13831 (aarch64_builtin_vectorization_cost): Handle polynomial
13832 TYPE_VECTOR_SUBPARTS.
13833 (aarch64_simd_check_vect_par_cnst_half): Handle polynomial
13834 GET_MODE_NUNITS.
13835 (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the
13836 number of elements from the PARALLEL rather than the mode.
13837 (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE
13838 rather than GET_MODE_BITSIZE.
13839 (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext)
13840 (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip)
13841 (aarch64_expand_vec_perm_const_1): Handle polynomial
13842 d->perm.length () and d->perm elements.
13843 (aarch64_evpc_tbl): Likewise. Use nelt rather than GET_MODE_NUNITS.
13844 Apply to_constant to d->perm elements.
13845 (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle
13846 polynomial CONST_VECTOR_NUNITS.
13847 (aarch64_move_pointer): Take amount as a poly_int64 rather
13848 than an int.
13849 (aarch64_progress_pointer): Avoid temporary variable.
13850 * config/aarch64/aarch64.md (aarch64_<crc_variant>): Use
13851 the mode attribute instead of GET_MODE.
13852
13853 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
13854 Alan Hayward <alan.hayward@arm.com>
13855 David Sherwood <david.sherwood@arm.com>
13856
13857 * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that
13858 x exists before using it.
13859 (aarch64_add_constant_internal): Rename to...
13860 (aarch64_add_offset_1): ...this. Replace regnum with separate
13861 src and dest rtxes. Handle the case in which they're different,
13862 including when the offset is zero. Replace scratchreg with an rtx.
13863 Use 2 additions if there is no spare register into which we can
13864 move a 16-bit constant.
13865 (aarch64_add_constant): Delete.
13866 (aarch64_add_offset): Replace reg with separate src and dest
13867 rtxes. Take a poly_int64 offset instead of a HOST_WIDE_INT.
13868 Use aarch64_add_offset_1.
13869 (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as
13870 an rtx rather than an int. Take the delta as a poly_int64
13871 rather than a HOST_WIDE_INT. Use aarch64_add_offset.
13872 (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset.
13873 (aarch64_expand_prologue): Update calls to aarch64_sub_sp,
13874 aarch64_allocate_and_probe_stack_space and aarch64_add_offset.
13875 (aarch64_expand_epilogue): Update calls to aarch64_add_offset
13876 and aarch64_add_sp.
13877 (aarch64_output_mi_thunk): Use aarch64_add_offset rather than
13878 aarch64_add_constant.
13879
13880 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
13881
13882 * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
13883 Use scalar_float_mode.
13884
13885 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
13886
13887 * config/aarch64/aarch64-simd.md
13888 (aarch64_fml<f16mac1>l<f16quad>_low<mode>): Avoid GET_MODE_NUNITS.
13889 (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Likewise.
13890 (aarch64_fml<f16mac1>l_lane_lowv2sf): Likewise.
13891 (aarch64_fml<f16mac1>l_lane_highv2sf): Likewise.
13892 (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Likewise.
13893 (aarch64_fml<f16mac1>lq_laneq_highv4sf): Likewise.
13894 (aarch64_fml<f16mac1>l_laneq_lowv2sf): Likewise.
13895 (aarch64_fml<f16mac1>l_laneq_highv2sf): Likewise.
13896 (aarch64_fml<f16mac1>lq_lane_lowv4sf): Likewise.
13897 (aarch64_fml<f16mac1>lq_lane_highv4sf): Likewise.
13898
13899 2018-01-11 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
13900
13901 PR target/83514
13902 * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if
13903 targ_options->x_arm_arch_string is non NULL.
13904
13905 2018-01-11 Tamar Christina <tamar.christina@arm.com>
13906
13907 * config/aarch64/aarch64.h
13908 (AARCH64_FL_FOR_ARCH8_4): Add AARCH64_FL_DOTPROD.
13909
13910 2018-01-11 Sudakshina Das <sudi.das@arm.com>
13911
13912 PR target/82096
13913 * expmed.c (emit_store_flag_force): Swap if const op0
13914 and change VOIDmode to mode of op0.
13915
13916 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
13917
13918 PR rtl-optimization/83761
13919 * caller-save.c (replace_reg_with_saved_mem): Pass bits rather
13920 than bytes to mode_for_size.
13921
13922 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
13923
13924 PR middle-end/83189
13925 * gfortran.fortran-torture/compile/pr83189.f90: New testcase.
13926 * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
13927 profile.
13928
13929 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
13930
13931 PR middle-end/83575
13932 * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
13933 when in layout mode.
13934 (cfg_layout_finalize): Do not verify cfg before we are out of layout.
13935 * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
13936 partition fixup.
13937
13938 2018-01-10 Michael Collison <michael.collison@arm.com>
13939
13940 * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
13941 * config/aarch64/aarch64-option-extension.def: Add
13942 AARCH64_OPT_EXTENSION of 'fp16fml'.
13943 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
13944 (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
13945 * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
13946 * config/aarch64/constraints.md (Ui7): New constraint.
13947 * config/aarch64/iterators.md (VFMLA_W): New mode iterator.
13948 (VFMLA_SEL_W): Ditto.
13949 (f16quad): Ditto.
13950 (f16mac1): Ditto.
13951 (VFMLA16_LOW): New int iterator.
13952 (VFMLA16_HIGH): Ditto.
13953 (UNSPEC_FMLAL): New unspec.
13954 (UNSPEC_FMLSL): Ditto.
13955 (UNSPEC_FMLAL2): Ditto.
13956 (UNSPEC_FMLSL2): Ditto.
13957 (f16mac): New code attribute.
13958 * config/aarch64/aarch64-simd-builtins.def
13959 (aarch64_fmlal_lowv2sf): Ditto.
13960 (aarch64_fmlsl_lowv2sf): Ditto.
13961 (aarch64_fmlalq_lowv4sf): Ditto.
13962 (aarch64_fmlslq_lowv4sf): Ditto.
13963 (aarch64_fmlal_highv2sf): Ditto.
13964 (aarch64_fmlsl_highv2sf): Ditto.
13965 (aarch64_fmlalq_highv4sf): Ditto.
13966 (aarch64_fmlslq_highv4sf): Ditto.
13967 (aarch64_fmlal_lane_lowv2sf): Ditto.
13968 (aarch64_fmlsl_lane_lowv2sf): Ditto.
13969 (aarch64_fmlal_laneq_lowv2sf): Ditto.
13970 (aarch64_fmlsl_laneq_lowv2sf): Ditto.
13971 (aarch64_fmlalq_lane_lowv4sf): Ditto.
13972 (aarch64_fmlsl_lane_lowv4sf): Ditto.
13973 (aarch64_fmlalq_laneq_lowv4sf): Ditto.
13974 (aarch64_fmlsl_laneq_lowv4sf): Ditto.
13975 (aarch64_fmlal_lane_highv2sf): Ditto.
13976 (aarch64_fmlsl_lane_highv2sf): Ditto.
13977 (aarch64_fmlal_laneq_highv2sf): Ditto.
13978 (aarch64_fmlsl_laneq_highv2sf): Ditto.
13979 (aarch64_fmlalq_lane_highv4sf): Ditto.
13980 (aarch64_fmlsl_lane_highv4sf): Ditto.
13981 (aarch64_fmlalq_laneq_highv4sf): Ditto.
13982 (aarch64_fmlsl_laneq_highv4sf): Ditto.
13983 * config/aarch64/aarch64-simd.md:
13984 (aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
13985 (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
13986 (aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
13987 (aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
13988 (aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
13989 (aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
13990 (aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
13991 (aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
13992 (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
13993 (aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
13994 (aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
13995 (aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
13996 (aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
13997 (aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
13998 (aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
13999 (aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
14000 (aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
14001 (aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
14002 (aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
14003 (aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
14004 * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
14005 (vfmlsl_low_u32): Ditto.
14006 (vfmlalq_low_u32): Ditto.
14007 (vfmlslq_low_u32): Ditto.
14008 (vfmlal_high_u32): Ditto.
14009 (vfmlsl_high_u32): Ditto.
14010 (vfmlalq_high_u32): Ditto.
14011 (vfmlslq_high_u32): Ditto.
14012 (vfmlal_lane_low_u32): Ditto.
14013 (vfmlsl_lane_low_u32): Ditto.
14014 (vfmlal_laneq_low_u32): Ditto.
14015 (vfmlsl_laneq_low_u32): Ditto.
14016 (vfmlalq_lane_low_u32): Ditto.
14017 (vfmlslq_lane_low_u32): Ditto.
14018 (vfmlalq_laneq_low_u32): Ditto.
14019 (vfmlslq_laneq_low_u32): Ditto.
14020 (vfmlal_lane_high_u32): Ditto.
14021 (vfmlsl_lane_high_u32): Ditto.
14022 (vfmlal_laneq_high_u32): Ditto.
14023 (vfmlsl_laneq_high_u32): Ditto.
14024 (vfmlalq_lane_high_u32): Ditto.
14025 (vfmlslq_lane_high_u32): Ditto.
14026 (vfmlalq_laneq_high_u32): Ditto.
14027 (vfmlslq_laneq_high_u32): Ditto.
14028 * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
14029 (AARCH64_FL_FOR_ARCH8_4): New.
14030 (AARCH64_ISA_F16FML): New ISA flag.
14031 (TARGET_F16FML): New feature flag for fp16fml.
14032 (doc/invoke.texi): Document new fp16fml option.
14033
14034 2018-01-10 Michael Collison <michael.collison@arm.com>
14035
14036 * config/aarch64/aarch64-builtins.c:
14037 (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
14038 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
14039 (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
14040 * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
14041 (AARCH64_ISA_SHA3): New ISA flag.
14042 (TARGET_SHA3): New feature flag for sha3.
14043 * config/aarch64/iterators.md (sha512_op): New int attribute.
14044 (CRYPTO_SHA512): New int iterator.
14045 (UNSPEC_SHA512H): New unspec.
14046 (UNSPEC_SHA512H2): Ditto.
14047 (UNSPEC_SHA512SU0): Ditto.
14048 (UNSPEC_SHA512SU1): Ditto.
14049 * config/aarch64/aarch64-simd-builtins.def
14050 (aarch64_crypto_sha512hqv2di): New builtin.
14051 (aarch64_crypto_sha512h2qv2di): Ditto.
14052 (aarch64_crypto_sha512su0qv2di): Ditto.
14053 (aarch64_crypto_sha512su1qv2di): Ditto.
14054 (aarch64_eor3qv8hi): Ditto.
14055 (aarch64_rax1qv2di): Ditto.
14056 (aarch64_xarqv2di): Ditto.
14057 (aarch64_bcaxqv8hi): Ditto.
14058 * config/aarch64/aarch64-simd.md:
14059 (aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
14060 (aarch64_crypto_sha512su0qv2di): Ditto.
14061 (aarch64_crypto_sha512su1qv2di): Ditto.
14062 (aarch64_eor3qv8hi): Ditto.
14063 (aarch64_rax1qv2di): Ditto.
14064 (aarch64_xarqv2di): Ditto.
14065 (aarch64_bcaxqv8hi): Ditto.
14066 * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
14067 (vsha512h2q_u64): Ditto.
14068 (vsha512su0q_u64): Ditto.
14069 (vsha512su1q_u64): Ditto.
14070 (veor3q_u16): Ditto.
14071 (vrax1q_u64): Ditto.
14072 (vxarq_u64): Ditto.
14073 (vbcaxq_u16): Ditto.
14074 * config/arm/types.md (crypto_sha512): New type attribute.
14075 (crypto_sha3): Ditto.
14076 (doc/invoke.texi): Document new sha3 option.
14077
14078 2018-01-10 Michael Collison <michael.collison@arm.com>
14079
14080 * config/aarch64/aarch64-builtins.c:
14081 (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
14082 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
14083 (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
14084 (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
14085 * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
14086 (AARCH64_ISA_SM4): New ISA flag.
14087 (TARGET_SM4): New feature flag for sm4.
14088 * config/aarch64/aarch64-simd-builtins.def
14089 (aarch64_sm3ss1qv4si): Ditto.
14090 (aarch64_sm3tt1aq4si): Ditto.
14091 (aarch64_sm3tt1bq4si): Ditto.
14092 (aarch64_sm3tt2aq4si): Ditto.
14093 (aarch64_sm3tt2bq4si): Ditto.
14094 (aarch64_sm3partw1qv4si): Ditto.
14095 (aarch64_sm3partw2qv4si): Ditto.
14096 (aarch64_sm4eqv4si): Ditto.
14097 (aarch64_sm4ekeyqv4si): Ditto.
14098 * config/aarch64/aarch64-simd.md:
14099 (aarch64_sm3ss1qv4si): Ditto.
14100 (aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
14101 (aarch64_sm3partw<sm3part_op>qv4si): Ditto.
14102 (aarch64_sm4eqv4si): Ditto.
14103 (aarch64_sm4ekeyqv4si): Ditto.
14104 * config/aarch64/iterators.md (sm3tt_op): New int iterator.
14105 (sm3part_op): Ditto.
14106 (CRYPTO_SM3TT): Ditto.
14107 (CRYPTO_SM3PART): Ditto.
14108 (UNSPEC_SM3SS1): New unspec.
14109 (UNSPEC_SM3TT1A): Ditto.
14110 (UNSPEC_SM3TT1B): Ditto.
14111 (UNSPEC_SM3TT2A): Ditto.
14112 (UNSPEC_SM3TT2B): Ditto.
14113 (UNSPEC_SM3PARTW1): Ditto.
14114 (UNSPEC_SM3PARTW2): Ditto.
14115 (UNSPEC_SM4E): Ditto.
14116 (UNSPEC_SM4EKEY): Ditto.
14117 * config/aarch64/constraints.md (Ui2): New constraint.
14118 * config/aarch64/predicates.md (aarch64_imm2): New predicate.
14119 * config/arm/types.md (crypto_sm3): New type attribute.
14120 (crypto_sm4): Ditto.
14121 * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
14122 (vsm3tt1aq_u32): Ditto.
14123 (vsm3tt1bq_u32): Ditto.
14124 (vsm3tt2aq_u32): Ditto.
14125 (vsm3tt2bq_u32): Ditto.
14126 (vsm3partw1q_u32): Ditto.
14127 (vsm3partw2q_u32): Ditto.
14128 (vsm4eq_u32): Ditto.
14129 (vsm4ekeyq_u32): Ditto.
14130 (doc/invoke.texi): Document new sm4 option.
14131
14132 2018-01-10 Michael Collison <michael.collison@arm.com>
14133
14134 * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
14135 * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
14136 (AARCH64_FL_FOR_ARCH8_4): New.
14137 (AARCH64_FL_V8_4): New flag.
14138 (doc/invoke.texi): Document new armv8.4-a option.
14139
14140 2018-01-10 Michael Collison <michael.collison@arm.com>
14141
14142 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
14143 (__ARM_FEATURE_AES): Define if TARGET_AES is true.
14144 (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
14145 * config/aarch64/aarch64-option-extension.def: Add
14146 AARCH64_OPT_EXTENSION of 'sha2'.
14147 (aes): Add AARCH64_OPT_EXTENSION of 'aes'.
14148 (crypto): Disable sha2 and aes if crypto disabled.
14149 (crypto): Enable aes and sha2 if enabled.
14150 (simd): Disable sha2 and aes if simd disabled.
14151 * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
14152 New flags.
14153 (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
14154 (TARGET_SHA2): New feature flag for sha2.
14155 (TARGET_AES): New feature flag for aes.
14156 * config/aarch64/aarch64-simd.md:
14157 (aarch64_crypto_aes<aes_op>v16qi): Make pattern
14158 conditional on TARGET_AES.
14159 (aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
14160 (aarch64_crypto_sha1hsi): Make pattern conditional
14161 on TARGET_SHA2.
14162 (aarch64_crypto_sha1hv4si): Ditto.
14163 (aarch64_be_crypto_sha1hv4si): Ditto.
14164 (aarch64_crypto_sha1su1v4si): Ditto.
14165 (aarch64_crypto_sha1<sha1_op>v4si): Ditto.
14166 (aarch64_crypto_sha1su0v4si): Ditto.
14167 (aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
14168 (aarch64_crypto_sha256su0v4si): Ditto.
14169 (aarch64_crypto_sha256su1v4si): Ditto.
14170 (doc/invoke.texi): Document new aes and sha2 options.
14171
14172 2018-01-10 Martin Sebor <msebor@redhat.com>
14173
14174 PR tree-optimization/83781
14175 * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
14176 as string arrays.
14177
14178 2018-01-11 Martin Sebor <msebor@gmail.com>
14179 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
14180
14181 PR tree-optimization/83501
14182 PR tree-optimization/81703
14183
14184 * tree-ssa-strlen.c (get_string_cst): Rename...
14185 (get_string_len): ...to this. Handle global constants.
14186 (handle_char_store): Adjust.
14187
14188 2018-01-10 Kito Cheng <kito.cheng@gmail.com>
14189 Jim Wilson <jimw@sifive.com>
14190
14191 * config/riscv/riscv-protos.h (riscv_output_return): New.
14192 * config/riscv/riscv.c (struct machine_function): New naked_p field.
14193 (riscv_attribute_table, riscv_output_return),
14194 (riscv_handle_fndecl_attribute, riscv_naked_function_p),
14195 (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
14196 (riscv_compute_frame_info): Only compute frame->mask if not a naked
14197 function.
14198 (riscv_expand_prologue): Add early return for naked function.
14199 (riscv_expand_epilogue): Likewise.
14200 (riscv_function_ok_for_sibcall): Return false for naked function.
14201 (riscv_set_current_function): New.
14202 (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
14203 (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
14204 * config/riscv/riscv.md (simple_return): Call riscv_output_return.
14205 * doc/extend.texi (RISC-V Function Attributes): New.
14206
14207 2018-01-10 Michael Meissner <meissner@linux.vnet.ibm.com>
14208
14209 * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
14210 check for 128-bit long double before checking TCmode.
14211 * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
14212 128-bit long doubles before checking TFmode or TCmode.
14213 (FLOAT128_IBM_P): Likewise.
14214
14215 2018-01-10 Martin Sebor <msebor@redhat.com>
14216
14217 PR tree-optimization/83671
14218 * builtins.c (c_strlen): Unconditionally return zero for the empty
14219 string.
14220 Use -Warray-bounds for warnings.
14221 * gimple-fold.c (get_range_strlen): Handle non-constant lengths
14222 for non-constant array indices with COMPONENT_REF, arrays of
14223 arrays, and pointers to arrays.
14224 (gimple_fold_builtin_strlen): Determine and set length range for
14225 non-constant character arrays.
14226
14227 2018-01-10 Aldy Hernandez <aldyh@redhat.com>
14228
14229 PR middle-end/81897
14230 * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
14231 empty blocks.
14232
14233 2018-01-10 Eric Botcazou <ebotcazou@adacore.com>
14234
14235 * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf.
14236
14237 2018-01-10 Peter Bergner <bergner@vnet.ibm.com>
14238
14239 PR target/83399
14240 * config/rs6000/rs6000.c (print_operand) <'y'>: Use
14241 VECTOR_MEM_ALTIVEC_OR_VSX_P.
14242 * config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
14243 indexed_or_indirect_operand predicate.
14244 (*vsx_le_perm_load_<mode> for VSX_W): Likewise.
14245 (*vsx_le_perm_load_v8hi): Likewise.
14246 (*vsx_le_perm_load_v16qi): Likewise.
14247 (*vsx_le_perm_store_<mode> for VSX_D): Likewise.
14248 (*vsx_le_perm_store_<mode> for VSX_W): Likewise.
14249 (*vsx_le_perm_store_v8hi): Likewise.
14250 (*vsx_le_perm_store_v16qi): Likewise.
14251 (eight unnamed splitters): Likewise.
14252
14253 2018-01-10 Peter Bergner <bergner@vnet.ibm.com>
14254
14255 * config/rs6000/x86intrin.h: Change #warning to #error. Update message.
14256 * config/rs6000/emmintrin.h: Likewise.
14257 * config/rs6000/mmintrin.h: Likewise.
14258 * config/rs6000/xmmintrin.h: Likewise.
14259
14260 2018-01-10 David Malcolm <dmalcolm@redhat.com>
14261
14262 PR c++/43486
14263 * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
14264 "public_flag".
14265 * tree.c (tree_nop_conversion): Return true for location wrapper
14266 nodes.
14267 (maybe_wrap_with_location): New function.
14268 (selftest::check_strip_nops): New function.
14269 (selftest::test_location_wrappers): New function.
14270 (selftest::tree_c_tests): Call it.
14271 * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
14272 (maybe_wrap_with_location): New decl.
14273 (EXPR_LOCATION_WRAPPER_P): New macro.
14274 (location_wrapper_p): New inline function.
14275 (tree_strip_any_location_wrapper): New inline function.
14276
14277 2018-01-10 H.J. Lu <hongjiu.lu@intel.com>
14278
14279 PR target/83735
14280 * config/i386/i386.c (ix86_compute_frame_layout): Always adjust
14281 stack_realign_offset for the largest alignment of stack slot
14282 actually used.
14283 (ix86_find_max_used_stack_alignment): New function.
14284 (ix86_finalize_stack_frame_flags): Use it. Set
14285 max_used_stack_alignment if we don't realign stack.
14286 * config/i386/i386.h (machine_function): Add
14287 max_used_stack_alignment.
14288
14289 2018-01-10 Christophe Lyon <christophe.lyon@linaro.org>
14290
14291 * config/arm/arm.opt (-mbranch-cost): New option.
14292 * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
14293 account.
14294
14295 2018-01-10 Segher Boessenkool <segher@kernel.crashing.org>
14296
14297 PR target/83629
14298 * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
14299 load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
14300
14301 2018-01-10 Richard Biener <rguenther@suse.de>
14302
14303 PR debug/83765
14304 * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
14305 early out so it also covers the case where we have a non-NULL
14306 origin.
14307
14308 2018-01-10 Richard Sandiford <richard.sandiford@linaro.org>
14309
14310 PR tree-optimization/83753
14311 * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
14312 for non-strided grouped accesses if the number of elements is 1.
14313
14314 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
14315
14316 PR target/81616
14317 * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
14318 * i386.h (TARGET_USE_GATHER): Define.
14319 * x86-tune.def (X86_TUNE_USE_GATHER): New.
14320
14321 2018-01-10 Martin Liska <mliska@suse.cz>
14322
14323 PR bootstrap/82831
14324 * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
14325 * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
14326 partitioning.
14327 * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
14328 CLEANUP_NO_PARTITIONING is not set.
14329
14330 2018-01-10 Richard Sandiford <richard.sandiford@linaro.org>
14331
14332 * doc/rtl.texi: Remove documentation of (const ...) wrappers
14333 for vectors, as a partial revert of r254296.
14334 * rtl.h (const_vec_p): Delete.
14335 (const_vec_duplicate_p): Don't test for vector CONSTs.
14336 (unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
14337 * expmed.c (make_tree): Likewise.
14338
14339 Revert:
14340 * common.md (E, F): Use CONSTANT_P instead of checking for
14341 CONST_VECTOR.
14342 * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
14343 checking for CONST_VECTOR.
14344
14345 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
14346
14347 PR middle-end/83575
14348 * predict.c (force_edge_cold): Handle in more sane way edges
14349 with no prediction.
14350
14351 2018-01-09 Carl Love <cel@us.ibm.com>
14352
14353 * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
14354 V4SI, V4SF types.
14355 (p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
14356 * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
14357 VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
14358 VMRGOW_V2DI, VMRGOW_V2DF. Remove definition for VMRGOW.
14359 * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
14360 P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW): Add definitions.
14361 * config/rs6000/rs6000-protos.h: Add extern defition for
14362 rs6000_generate_float2_double_code.
14363 * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
14364 function.
14365 * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
14366 (float2_v2df): Add define_expand.
14367
14368 2018-01-09 Uros Bizjak <ubizjak@gmail.com>
14369
14370 PR target/83628
14371 * combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
14372 op_mode in the force_to_mode call.
14373
14374 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
14375
14376 * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
14377 instead of checking each element individually.
14378 (aarch64_evpc_uzp): Likewise.
14379 (aarch64_evpc_zip): Likewise.
14380 (aarch64_evpc_ext): Likewise.
14381 (aarch64_evpc_rev): Likewise.
14382 (aarch64_evpc_dup): Test the encoding for a single duplicated element,
14383 instead of checking each element individually. Return true without
14384 generating rtl if
14385 (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
14386 whether all selected elements come from the same input, instead of
14387 checking each element individually. Remove calls to gen_rtx_REG,
14388 start_sequence and end_sequence and instead assert that no rtl is
14389 generated.
14390
14391 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
14392
14393 * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
14394 order of HIGH and CONST checks.
14395
14396 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
14397
14398 * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
14399 if the destination isn't an SSA_NAME.
14400
14401 2018-01-09 Richard Biener <rguenther@suse.de>
14402
14403 PR tree-optimization/83668
14404 * graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
14405 move prologue...
14406 (canonicalize_loop_form): ... here, renamed from ...
14407 (canonicalize_loop_closed_ssa_form): ... this and amended to
14408 swap successor edges for loop exit blocks to make us use
14409 the RPO order we need for initial schedule generation.
14410
14411 2018-01-09 Joseph Myers <joseph@codesourcery.com>
14412
14413 PR tree-optimization/64811
14414 * match.pd: When optimizing comparisons with Inf, avoid
14415 introducing or losing exceptions from comparisons with NaN.
14416
14417 2018-01-09 Martin Liska <mliska@suse.cz>
14418
14419 PR sanitizer/82517
14420 * asan.c (shadow_mem_size): Add gcc_assert.
14421
14422 2018-01-09 Georg-Johann Lay <avr@gjlay.de>
14423
14424 Don't save registers in main().
14425
14426 PR target/83738
14427 * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
14428 * config/avr/avr.opt (-mmain-is-OS_task): New target option.
14429 * config/avr/avr.c (avr_set_current_function): Don't error if
14430 naked, OS_task or OS_main are specified at the same time.
14431 (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
14432 OS_main.
14433 (avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
14434 attribute.
14435 * common/config/avr/avr-common.c (avr_option_optimization_table):
14436 Switch on -mmain-is-OS_task for optimizing compilations.
14437
14438 2018-01-09 Richard Biener <rguenther@suse.de>
14439
14440 PR tree-optimization/83572
14441 * graphite.c: Include cfganal.h.
14442 (graphite_transform_loops): Connect infinite loops to exit
14443 and remove fake edges at the end.
14444
14445 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
14446
14447 * ipa-inline.c (edge_badness): Revert accidental checkin.
14448
14449 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
14450
14451 PR ipa/80763
14452 * ipa-comdats.c (set_comdat_group): Only set comdat group of real
14453 symbols; not inline clones.
14454
14455 2018-01-09 Jakub Jelinek <jakub@redhat.com>
14456
14457 PR target/83507
14458 * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
14459 hard registers. Formatting fixes.
14460
14461 PR preprocessor/83722
14462 * gcc.c (try_generate_repro): Pass
14463 &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
14464 &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
14465 do_report_bug.
14466
14467 2018-01-08 Monk Chiang <sh.chiang04@gmail.com>
14468 Kito Cheng <kito.cheng@gmail.com>
14469
14470 * config/riscv/riscv.c (machine_function::is_leaf): Remove field.
14471 (riscv_leaf_function_p): Delete.
14472 (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
14473
14474 2018-01-08 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
14475
14476 * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
14477 function.
14478 (do_ifelse): New function.
14479 (do_isel): New function.
14480 (do_sub3): New function.
14481 (do_add3): New function.
14482 (do_load_mask_compare): New function.
14483 (do_overlap_load_compare): New function.
14484 (expand_compare_loop): New function.
14485 (expand_block_compare): Call expand_compare_loop() when appropriate.
14486 * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
14487 option description.
14488 (-mblock-compare-inline-loop-limit): New option.
14489
14490 2018-01-08 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
14491
14492 PR target/83677
14493 * config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
14494 Reverse order of second and third operands in first alternative.
14495 * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
14496 of first and second elements in UNSPEC_VPERMR vector.
14497 (altivec_expand_vec_perm_le): Likewise.
14498
14499 2018-01-08 Jeff Law <law@redhat.com>
14500
14501 PR rtl-optimizatin/81308
14502 * tree-switch-conversion.c (cfg_altered): New file scoped static.
14503 (process_switch): If group_case_labels makes a change, then set
14504 cfg_altered.
14505 (pass_convert_switch::execute): If a switch is converted, then
14506 set cfg_altered. Return TODO_cfg_cleanup if cfg_altered is true.
14507
14508 PR rtl-optimization/81308
14509 * recog.c (split_all_insns): Conditionally cleanup the CFG after
14510 splitting insns.
14511
14512 2018-01-08 Vidya Praveen <vidyapraveen@arm.com>
14513
14514 PR target/83663 - Revert r255946
14515 * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
14516 generation for cases where splatting a value is not useful.
14517 * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
14518 across a vec_duplicate and a paradoxical subreg forming a vector
14519 mode to a vec_concat.
14520
14521 2018-01-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14522
14523 * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
14524 -march=armv8.3-a variants.
14525 * config/arm/t-multilib: Likewise.
14526 * config/arm/t-arm-elf: Likewise. Handle dotprod extension.
14527
14528 2018-01-08 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
14529
14530 * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
14531 to generate rtl.
14532 (cceq_ior_compare_complement): Give it a name so I can use it, and
14533 change boolean_or_operator predicate to boolean_operator so it can
14534 be used to generate a crand.
14535 (eqne): New code iterator.
14536 (bd/bd_neg): New code_attrs.
14537 (<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
14538 a single define_insn.
14539 (<bd>tf_<mode>): A new insn pattern for the conditional form branch
14540 decrement (bdnzt/bdnzf/bdzt/bdzf).
14541 * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
14542 with the new names of the branch decrement patterns, and added the
14543 names of the branch decrement conditional patterns.
14544
14545 2018-01-08 Richard Biener <rguenther@suse.de>
14546
14547 PR tree-optimization/83563
14548 * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
14549 cache.
14550
14551 2018-01-08 Richard Biener <rguenther@suse.de>
14552
14553 PR middle-end/83713
14554 * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
14555
14556 2018-01-08 Richard Biener <rguenther@suse.de>
14557
14558 PR tree-optimization/83685
14559 * tree-ssa-pre.c (create_expression_by_pieces): Do not insert
14560 references to abnormals.
14561
14562 2018-01-08 Richard Biener <rguenther@suse.de>
14563
14564 PR lto/83719
14565 * dwarf2out.c (output_indirect_strings): Handle empty
14566 skeleton_debug_str_hash.
14567 (dwarf2out_early_finish): Index strings for -gsplit-dwarf.
14568
14569 2018-01-08 Claudiu Zissulescu <claziss@synopsys.com>
14570
14571 * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
14572 (emit_store_direct): Likewise.
14573 (arc_trampoline_adjust_address): Likewise.
14574 (arc_asm_trampoline_template): New function.
14575 (arc_initialize_trampoline): Use asm_trampoline_template.
14576 (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
14577 * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
14578 * config/arc/arc.md (flush_icache): Delete pattern.
14579
14580 2018-01-08 Claudiu Zissulescu <claziss@synopsys.com>
14581
14582 * config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
14583 * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
14584 munaligned-access.
14585
14586 2018-01-08 Sebastian Huber <sebastian.huber@embedded-brains.de>
14587
14588 PR target/83681
14589 * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
14590 by not USED_FOR_TARGET.
14591 (make_pass_resolve_sw_modes): Likewise.
14592
14593 2018-01-08 Sebastian Huber <sebastian.huber@embedded-brains.de>
14594
14595 * config/nios2/nios2.h (nios2_section_threshold): Guard by not
14596 USED_FOR_TARGET.
14597
14598 2018-01-08 Richard Biener <rguenther@suse.de>
14599
14600 PR middle-end/83580
14601 * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
14602
14603 2018-01-08 Richard Biener <rguenther@suse.de>
14604
14605 PR middle-end/83517
14606 * match.pd ((t * 2) / 2) -> t): Add missing :c.
14607
14608 2018-01-06 Aldy Hernandez <aldyh@redhat.com>
14609
14610 PR middle-end/81897
14611 * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
14612 basic blocks with a small number of successors.
14613 (convert_control_dep_chain_into_preds): Improve handling of
14614 forwarder blocks.
14615 (dump_predicates): Split apart into...
14616 (dump_pred_chain): ...here...
14617 (dump_pred_info): ...and here.
14618 (can_one_predicate_be_invalidated_p): Add debugging printfs.
14619 (can_chain_union_be_invalidated_p): Improve check for invalidation
14620 of paths.
14621 (uninit_uses_cannot_happen): Avoid unnecessary if
14622 convert_control_dep_chain_into_preds yielded nothing.
14623
14624 2018-01-06 Martin Sebor <msebor@redhat.com>
14625
14626 PR tree-optimization/83640
14627 * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
14628 subtracting negative offset from size.
14629 (builtin_access::overlap): Adjust offset bounds of the access to fall
14630 within the size of the object if possible.
14631
14632 2018-01-06 Richard Sandiford <richard.sandiford@linaro.org>
14633
14634 PR rtl-optimization/83699
14635 * expmed.c (extract_bit_field_1): Restrict the vector usage of
14636 extract_bit_field_as_subreg to cases in which the extracted
14637 value is also a vector.
14638
14639 * lra-constraints.c (process_alt_operands): Test for the equivalence
14640 substitutions when detecting a possible reload cycle.
14641
14642 2018-01-06 Jakub Jelinek <jakub@redhat.com>
14643
14644 PR debug/83480
14645 * toplev.c (process_options): Don't enable debug_nonbind_markers_p
14646 by default if flag_selective_schedling{,2}. Formatting fixes.
14647
14648 PR rtl-optimization/83682
14649 * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
14650 if it has non-VECTOR_MODE element mode.
14651 (vec_duplicate_p): Likewise.
14652
14653 PR middle-end/83694
14654 * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
14655 and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
14656
14657 2018-01-05 Jakub Jelinek <jakub@redhat.com>
14658
14659 PR target/83604
14660 * config/i386/i386-builtin.def
14661 (__builtin_ia32_vgf2p8affineinvqb_v64qi,
14662 __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
14663 Require also OPTION_MASK_ISA_AVX512F in addition to
14664 OPTION_MASK_ISA_GFNI.
14665 (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
14666 __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
14667 OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
14668 to OPTION_MASK_ISA_GFNI.
14669 (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
14670 OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
14671 OPTION_MASK_ISA_AVX512BW.
14672 (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
14673 OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
14674 addition to OPTION_MASK_ISA_GFNI.
14675 (__builtin_ia32_vgf2p8affineinvqb_v16qi,
14676 __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
14677 Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
14678 to OPTION_MASK_ISA_GFNI.
14679 * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
14680 a requirement for all ISAs rather than any of them with a few
14681 exceptions.
14682 (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
14683 processing.
14684 (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
14685 bitmasks to be enabled with 3 exceptions, instead of requiring any
14686 enabled ISA with lots of exceptions.
14687 * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
14688 vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
14689 Change avx512bw in isa attribute to avx512f.
14690 * config/i386/sgxintrin.h: Add license boilerplate.
14691 * config/i386/vaesintrin.h: Likewise. Fix macro spelling __AVX512F
14692 to __AVX512F__ and __AVX512VL to __AVX512VL__.
14693 (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
14694 _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
14695 defined.
14696 * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
14697 _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
14698 temporarily sse2 rather than sse if not enabled already.
14699
14700 PR target/83604
14701 * config/i386/sse.md (VI248_VLBW): Rename to ...
14702 (VI248_AVX512VL): ... this. Don't guard V32HI with TARGET_AVX512BW.
14703 (vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
14704 vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
14705 vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
14706 vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
14707 mode iterator instead of VI248_VLBW.
14708
14709 2018-01-05 Jan Hubicka <hubicka@ucw.cz>
14710
14711 * ipa-fnsummary.c (record_modified_bb_info): Add OP.
14712 (record_modified): Skip clobbers; add debug output.
14713 (param_change_prob): Use sreal frequencies.
14714
14715 2018-01-05 Richard Sandiford <richard.sandiford@linaro.org>
14716
14717 * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
14718 punt for user-aligned variables.
14719
14720 2018-01-05 Richard Sandiford <richard.sandiford@linaro.org>
14721
14722 * tree-chrec.c (chrec_contains_symbols): Return true for
14723 POLY_INT_CST.
14724
14725 2018-01-05 Sudakshina Das <sudi.das@arm.com>
14726
14727 PR target/82439
14728 * simplify-rtx.c (simplify_relational_operation_1): Add simplifications
14729 of (x|y) == x for BICS pattern.
14730
14731 2018-01-05 Jakub Jelinek <jakub@redhat.com>
14732
14733 PR tree-optimization/83605
14734 * gimple-ssa-strength-reduction.c: Include tree-eh.h.
14735 (find_candidates_dom_walker::before_dom_children): Ignore stmts that
14736 can throw.
14737
14738 2018-01-05 Sebastian Huber <sebastian.huber@embedded-brains.de>
14739
14740 * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
14741 * config/epiphany/rtems.h: New file.
14742
14743 2018-01-04 Jakub Jelinek <jakub@redhat.com>
14744 Uros Bizjak <ubizjak@gmail.com>
14745
14746 PR target/83554
14747 * config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
14748 QIreg_operand instead of register_operand predicate.
14749 * config/i386/i386.c (ix86_rop_should_change_byte_p,
14750 set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
14751 comments instead of -fmitigate[-_]rop.
14752
14753 2018-01-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
14754
14755 PR bootstrap/81926
14756 * cgraphunit.c (symbol_table::compile): Switch to text_section
14757 before calling assembly_start debug hook.
14758 * run-rtl-passes.c (run_rtl_passes): Likewise.
14759 Include output.h.
14760
14761 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
14762
14763 * tree-vrp.c (extract_range_from_binary_expr_1): Check
14764 range_int_cst_p rather than !symbolic_range_p before calling
14765 extract_range_from_multiplicative_op_1.
14766
14767 2018-01-04 Jeff Law <law@redhat.com>
14768
14769 * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
14770 redundant test in assertion.
14771
14772 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
14773
14774 * doc/rtl.texi: Document machine_mode wrapper classes.
14775
14776 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
14777
14778 * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
14779 using tree_to_uhwi.
14780
14781 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
14782
14783 * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
14784 the VEC_PERM_EXPR fold to fail.
14785
14786 2018-01-04 Jakub Jelinek <jakub@redhat.com>
14787
14788 PR debug/83585
14789 * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
14790 to switched_sections.
14791
14792 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
14793
14794 PR target/83680
14795 * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
14796 test for d.testing.
14797
14798 2018-01-04 Peter Bergner <bergner@vnet.ibm.com>
14799
14800 PR target/83387
14801 * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not
14802 allow arguments in FP registers if TARGET_HARD_FLOAT is false.
14803
14804 2018-01-04 Jakub Jelinek <jakub@redhat.com>
14805
14806 PR debug/83666
14807 * cfgexpand.c (expand_debug_expr) <case BIT_FIELD_REF>: Punt if mode
14808 is BLKmode and bitpos not zero or mode change is needed.
14809
14810 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
14811
14812 PR target/83675
14813 * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
14814 TARGET_VIS2.
14815
14816 2018-01-04 Uros Bizjak <ubizjak@gmail.com>
14817
14818 PR target/83628
14819 * config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
14820 instead of MULT rtx. Update all corresponding splitters.
14821 (*saddl_se): Ditto.
14822 (*ssub<modesuffix>): Ditto.
14823 (*ssubl_se): Ditto.
14824 (*cmp_sadd_di): Update split patterns.
14825 (*cmp_sadd_si): Ditto.
14826 (*cmp_sadd_sidi): Ditto.
14827 (*cmp_ssub_di): Ditto.
14828 (*cmp_ssub_si): Ditto.
14829 (*cmp_ssub_sidi): Ditto.
14830 * config/alpha/predicates.md (const23_operand): New predicate.
14831 * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
14832 Look for ASHIFT, not MULT inner operand.
14833 (alpha_split_conditional_move): Update for *sadd<modesuffix> change.
14834
14835 2018-01-04 Martin Liska <mliska@suse.cz>
14836
14837 PR gcov-profile/83669
14838 * gcov.c (output_intermediate_file): Add version to intermediate
14839 gcov file.
14840 * doc/gcov.texi: Document new field 'version' in intermediate
14841 file format. Fix location of '-k' option of gcov command.
14842
14843 2018-01-04 Martin Liska <mliska@suse.cz>
14844
14845 PR ipa/82352
14846 * ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
14847
14848 2018-01-04 Jakub Jelinek <jakub@redhat.com>
14849
14850 * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi.
14851
14852 2018-01-03 Martin Sebor <msebor@redhat.com>
14853
14854 PR tree-optimization/83655
14855 * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid
14856 checking calls with invalid arguments.
14857
14858 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14859
14860 * tree-vect-stmts.c (vect_get_store_rhs): New function.
14861 (vectorizable_mask_load_store): Delete.
14862 (vectorizable_call): Return false for masked loads and stores.
14863 (vectorizable_store): Handle IFN_MASK_STORE. Use vect_get_store_rhs
14864 instead of gimple_assign_rhs1.
14865 (vectorizable_load): Handle IFN_MASK_LOAD.
14866 (vect_transform_stmt): Don't set is_store for call_vec_info_type.
14867
14868 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14869
14870 * tree-vect-stmts.c (vect_build_gather_load_calls): New function,
14871 split out from..,
14872 (vectorizable_mask_load_store): ...here.
14873 (vectorizable_load): ...and here.
14874
14875 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14876
14877 * tree-vect-stmts.c (vect_build_all_ones_mask)
14878 (vect_build_zero_merge_argument): New functions, split out from...
14879 (vectorizable_load): ...here.
14880
14881 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14882
14883 * tree-vect-stmts.c (vect_check_store_rhs): New function,
14884 split out from...
14885 (vectorizable_mask_load_store): ...here.
14886 (vectorizable_store): ...and here.
14887
14888 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14889
14890 * tree-vect-stmts.c (vect_check_load_store_mask): New function,
14891 split out from...
14892 (vectorizable_mask_load_store): ...here.
14893
14894 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14895
14896 * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c
14897 (vect_model_store_cost): Take a vec_load_store_type instead of a
14898 vect_def_type.
14899 * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h.
14900 (vect_model_store_cost): Take a vec_load_store_type instead of a
14901 vect_def_type.
14902 (vectorizable_mask_load_store): Update accordingly.
14903 (vectorizable_store): Likewise.
14904 * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly.
14905
14906 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14907
14908 * tree-vect-loop.c (vect_transform_loop): Stub out scalar
14909 IFN_MASK_LOAD calls here rather than...
14910 * tree-vect-stmts.c (vectorizable_mask_load_store): ...here.
14911
14912 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14913 Alan Hayward <alan.hayward@arm.com>
14914 David Sherwood <david.sherwood@arm.com>
14915
14916 * expmed.c (extract_bit_field_1): For vector extracts,
14917 fall back to extract_bit_field_as_subreg if vec_extract
14918 isn't available.
14919
14920 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14921 Alan Hayward <alan.hayward@arm.com>
14922 David Sherwood <david.sherwood@arm.com>
14923
14924 * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether
14925 they are variable or constant sized.
14926 (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized
14927 slots for constant-sized data.
14928
14929 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14930 Alan Hayward <alan.hayward@arm.com>
14931 David Sherwood <david.sherwood@arm.com>
14932
14933 * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When
14934 handling COND_EXPRs with boolean comparisons, try to find a better
14935 basis for the mask type than the boolean itself.
14936
14937 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14938
14939 * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default
14940 is calculated and how it can be overridden.
14941 * genmodes.c (max_bitsize_mode_any_mode): New variable.
14942 (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE,
14943 if defined.
14944 (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
14945 if nonzero.
14946
14947 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14948 Alan Hayward <alan.hayward@arm.com>
14949 David Sherwood <david.sherwood@arm.com>
14950
14951 * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate):
14952 Remove the mode argument.
14953 (aarch64_simd_valid_immediate): Remove the mode and inverse
14954 arguments.
14955 * config/aarch64/iterators.md (bitsize): New iterator.
14956 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>, and<mode>3)
14957 (ior<mode>3): Update calls to aarch64_output_simd_mov_immediate.
14958 * config/aarch64/constraints.md (Do, Db, Dn): Update calls to
14959 aarch64_simd_valid_immediate.
14960 * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise.
14961 (aarch64_reg_or_bic_imm): Likewise.
14962 * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn
14963 with an insn_type enum and msl with a modifier_type enum.
14964 Replace element_width with a scalar_mode. Change the shift
14965 to unsigned int. Add constructors for scalar_float_mode and
14966 scalar_int_mode elements.
14967 (aarch64_vect_float_const_representable_p): Delete.
14968 (aarch64_can_const_movi_rtx_p)
14969 (aarch64_simd_scalar_immediate_valid_for_move)
14970 (aarch64_simd_make_constant): Update call to
14971 aarch64_simd_valid_immediate.
14972 (aarch64_advsimd_valid_immediate_hs): New function.
14973 (aarch64_advsimd_valid_immediate): Likewise.
14974 (aarch64_simd_valid_immediate): Remove mode and inverse
14975 arguments. Rewrite to use the above. Use const_vec_duplicate_p
14976 to detect duplicated constants and use aarch64_float_const_zero_rtx_p
14977 and aarch64_float_const_representable_p on the result.
14978 (aarch64_output_simd_mov_immediate): Remove mode argument.
14979 Update call to aarch64_simd_valid_immediate and use of
14980 simd_immediate_info.
14981 (aarch64_output_scalar_simd_mov_immediate): Update call
14982 accordingly.
14983
14984 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
14985 Alan Hayward <alan.hayward@arm.com>
14986 David Sherwood <david.sherwood@arm.com>
14987
14988 * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION.
14989 (mode_nunits): Likewise CONST_MODE_NUNITS.
14990 * machmode.def (ADJUST_NUNITS): Document.
14991 * genmodes.c (mode_data::need_nunits_adj): New field.
14992 (blank_mode): Update accordingly.
14993 (adj_nunits): New variable.
14994 (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ
14995 parameter.
14996 (emit_mode_size_inline): Set need_bytesize_adj for all modes
14997 listed in adj_nunits.
14998 (emit_mode_nunits_inline): Set need_nunits_adj for all modes
14999 listed in adj_nunits. Don't emit case statements for such modes.
15000 (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS
15001 and CONST_MODE_PRECISION. Make CONST_MODE_SIZE expand to
15002 nothing if adj_nunits is nonnull.
15003 (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl.
15004 (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit)
15005 (emit_mode_fbit): Update use of print_maybe_const_decl.
15006 (emit_move_size): Likewise. Treat the array as non-const
15007 if adj_nunits.
15008 (emit_mode_adjustments): Handle adj_nunits.
15009
15010 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15011
15012 * machmode.def (VECTOR_MODES_WITH_PREFIX): Document.
15013 * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro.
15014 (VECTOR_MODES): Use it.
15015 (make_vector_modes): Take the prefix as an argument.
15016
15017 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15018 Alan Hayward <alan.hayward@arm.com>
15019 David Sherwood <david.sherwood@arm.com>
15020
15021 * mode-classes.def (MODE_VECTOR_BOOL): New mode class.
15022 * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
15023 for MODE_VECTOR_BOOL.
15024 * machmode.def (VECTOR_BOOL_MODE): Document.
15025 * genmodes.c (VECTOR_BOOL_MODE): New macro.
15026 (make_vector_bool_mode): New function.
15027 (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
15028 MODE_VECTOR_BOOL.
15029 * lto-streamer-in.c (lto_input_mode_table): Likewise.
15030 * rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
15031 Likewise.
15032 * stor-layout.c (int_mode_for_mode): Likewise.
15033 * tree.c (build_vector_type_for_mode): Likewise.
15034 * varasm.c (output_constant_pool_2): Likewise.
15035 * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
15036 CONSTM1_RTX (BImode) are the same thing. Initialize const_tiny_rtx
15037 for MODE_VECTOR_BOOL.
15038 * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
15039 of mode class checks.
15040 * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
15041 instead of a list of mode class checks.
15042 (expand_vector_scalar_condition): Likewise.
15043 (type_for_widest_vector_mode): Handle BImode as an inner mode.
15044
15045 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15046 Alan Hayward <alan.hayward@arm.com>
15047 David Sherwood <david.sherwood@arm.com>
15048
15049 * machmode.h (mode_size): Change from unsigned short to
15050 poly_uint16_pod.
15051 (mode_to_bytes): Return a poly_uint16 rather than an unsigned short.
15052 (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
15053 or if measurement_type is not polynomial.
15054 (fixed_size_mode::includes_p): Check for constant-sized modes.
15055 * genmodes.c (emit_mode_size_inline): Make mode_size_inline
15056 return a poly_uint16 rather than an unsigned short.
15057 (emit_mode_size): Change the type of mode_size from unsigned short
15058 to poly_uint16_pod. Use ZERO_COEFFS for the initializer.
15059 (emit_mode_adjustments): Cope with polynomial vector sizes.
15060 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
15061 for GET_MODE_SIZE.
15062 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
15063 for GET_MODE_SIZE.
15064 * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial.
15065 * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise.
15066 * caller-save.c (setup_save_areas): Likewise.
15067 (replace_reg_with_saved_mem): Likewise.
15068 * calls.c (emit_library_call_value_1): Likewise.
15069 * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise.
15070 * combine.c (simplify_set, make_extraction, simplify_shift_const_1)
15071 (gen_lowpart_for_combine): Likewise.
15072 * convert.c (convert_to_integer_1): Likewise.
15073 * cse.c (equiv_constant, cse_insn): Likewise.
15074 * cselib.c (autoinc_split, cselib_hash_rtx): Likewise.
15075 (cselib_subst_to_values): Likewise.
15076 * dce.c (word_dce_process_block): Likewise.
15077 * df-problems.c (df_word_lr_mark_ref): Likewise.
15078 * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise.
15079 * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor)
15080 (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor)
15081 (rtl_for_decl_location): Likewise.
15082 * emit-rtl.c (gen_highpart, widen_memory_access): Likewise.
15083 * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise.
15084 * expr.c (emit_group_load_1, clear_storage_hints): Likewise.
15085 (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise.
15086 (expand_expr_real_1): Likewise.
15087 * function.c (assign_parm_setup_block_p, assign_parm_setup_block)
15088 (pad_below): Likewise.
15089 * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
15090 * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise.
15091 * ira.c (get_subreg_tracking_sizes): Likewise.
15092 * ira-build.c (ira_create_allocno_objects): Likewise.
15093 * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise.
15094 (ira_sort_regnos_for_alter_reg): Likewise.
15095 * ira-costs.c (record_operand_costs): Likewise.
15096 * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn)
15097 (resolve_simple_move): Likewise.
15098 * lra-constraints.c (get_reload_reg, operands_match_p): Likewise.
15099 (process_addr_reg, simplify_operand_subreg, curr_insn_transform)
15100 (lra_constraints): Likewise.
15101 (CONST_POOL_OK_P): Reject variable-sized modes.
15102 * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare)
15103 (add_pseudo_to_slot, lra_spill): Likewise.
15104 * omp-low.c (omp_clause_aligned_alignment): Likewise.
15105 * optabs-query.c (get_best_extraction_insn): Likewise.
15106 * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
15107 * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise.
15108 (expand_mult_highpart, valid_multiword_target_p): Likewise.
15109 * recog.c (offsettable_address_addr_space_p): Likewise.
15110 * regcprop.c (maybe_mode_change): Likewise.
15111 * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise.
15112 * regrename.c (build_def_use): Likewise.
15113 * regstat.c (dump_reg_info): Likewise.
15114 * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload)
15115 (find_reloads, find_reloads_subreg_address): Likewise.
15116 * reload1.c (eliminate_regs_1): Likewise.
15117 * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise.
15118 * simplify-rtx.c (avoid_constant_pool_reference): Likewise.
15119 (simplify_binary_operation_1, simplify_subreg): Likewise.
15120 * targhooks.c (default_function_arg_padding): Likewise.
15121 (default_hard_regno_nregs, default_class_max_nregs): Likewise.
15122 * tree-cfg.c (verify_gimple_assign_binary): Likewise.
15123 (verify_gimple_assign_ternary): Likewise.
15124 * tree-inline.c (estimate_move_cost): Likewise.
15125 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
15126 * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise.
15127 (get_address_cost_ainc): Likewise.
15128 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
15129 (vect_supportable_dr_alignment): Likewise.
15130 * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
15131 (vectorizable_reduction): Likewise.
15132 * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift)
15133 (vectorizable_operation, vectorizable_load): Likewise.
15134 * tree.c (build_same_sized_truth_vector_type): Likewise.
15135 * valtrack.c (cleanup_auto_inc_dec): Likewise.
15136 * var-tracking.c (emit_note_insn_var_location): Likewise.
15137 * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a <scalar_int_mode>.
15138 (ADDR_VEC_ALIGN): Likewise.
15139
15140 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15141 Alan Hayward <alan.hayward@arm.com>
15142 David Sherwood <david.sherwood@arm.com>
15143
15144 * machmode.h (mode_to_bits): Return a poly_uint16 rather than an
15145 unsigned short.
15146 (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
15147 or if measurement_type is polynomial.
15148 * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial.
15149 * combine.c (make_extraction): Likewise.
15150 * dse.c (find_shift_sequence): Likewise.
15151 * dwarf2out.c (mem_loc_descriptor): Likewise.
15152 * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise.
15153 (extract_bit_field, extract_low_bits): Likewise.
15154 * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise.
15155 (optimize_bitfield_assignment_op, expand_assignment): Likewise.
15156 (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise.
15157 * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise.
15158 * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
15159 * reload.c (find_reloads): Likewise.
15160 * reload1.c (alter_reg): Likewise.
15161 * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise.
15162 * targhooks.c (default_secondary_memory_needed_mode): Likewise.
15163 * tree-if-conv.c (predicate_mem_writes): Likewise.
15164 * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
15165 * tree-vect-patterns.c (adjust_bool_pattern): Likewise.
15166 * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
15167 * valtrack.c (dead_debug_insert_temp): Likewise.
15168 * varasm.c (mergeable_constant_section): Likewise.
15169 * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a <fixed_size_mode>.
15170
15171 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15172 Alan Hayward <alan.hayward@arm.com>
15173 David Sherwood <david.sherwood@arm.com>
15174
15175 * expr.c (expand_assignment): Cope with polynomial mode sizes
15176 when assigning to a CONCAT.
15177
15178 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15179 Alan Hayward <alan.hayward@arm.com>
15180 David Sherwood <david.sherwood@arm.com>
15181
15182 * machmode.h (mode_precision): Change from unsigned short to
15183 poly_uint16_pod.
15184 (mode_to_precision): Return a poly_uint16 rather than an unsigned
15185 short.
15186 (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
15187 or if measurement_type is not polynomial.
15188 (HWI_COMPUTABLE_MODE_P): Turn into a function. Optimize the case
15189 in which the mode is already known to be a scalar_int_mode.
15190 * genmodes.c (emit_mode_precision): Change the type of mode_precision
15191 from unsigned short to poly_uint16_pod. Use ZERO_COEFFS for the
15192 initializer.
15193 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
15194 for GET_MODE_PRECISION.
15195 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
15196 for GET_MODE_PRECISION.
15197 * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
15198 as polynomial.
15199 (try_combine, find_split_point, combine_simplify_rtx): Likewise.
15200 (expand_field_assignment, make_extraction): Likewise.
15201 (make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
15202 (get_last_value): Likewise.
15203 * convert.c (convert_to_integer_1): Likewise.
15204 * cse.c (cse_insn): Likewise.
15205 * expr.c (expand_expr_real_1): Likewise.
15206 * lra-constraints.c (simplify_operand_subreg): Likewise.
15207 * optabs-query.c (can_atomic_load_p): Likewise.
15208 * optabs.c (expand_atomic_load): Likewise.
15209 (expand_atomic_store): Likewise.
15210 * ree.c (combine_reaching_defs): Likewise.
15211 * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
15212 * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
15213 * tree.h (type_has_mode_precision_p): Likewise.
15214 * ubsan.c (instrument_si_overflow): Likewise.
15215
15216 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15217 Alan Hayward <alan.hayward@arm.com>
15218 David Sherwood <david.sherwood@arm.com>
15219
15220 * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
15221 polynomial numbers of units.
15222 (SET_TYPE_VECTOR_SUBPARTS): Likewise.
15223 (valid_vector_subparts_p): New function.
15224 (build_vector_type): Remove temporary shim and take the number
15225 of units as a poly_uint64 rather than an int.
15226 (build_opaque_vector_type): Take the number of units as a
15227 poly_uint64 rather than an int.
15228 * tree.c (build_vector_from_ctor): Handle polynomial
15229 TYPE_VECTOR_SUBPARTS.
15230 (type_hash_canon_hash, type_cache_hasher::equal): Likewise.
15231 (uniform_vector_p, vector_type_mode, build_vector): Likewise.
15232 (build_vector_from_val): If the number of units is variable,
15233 use build_vec_duplicate_cst for constant operands and
15234 VEC_DUPLICATE_EXPR otherwise.
15235 (make_vector_type): Remove temporary is_constant ().
15236 (build_vector_type, build_opaque_vector_type): Take the number of
15237 units as a poly_uint64 rather than an int.
15238 (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
15239 VECTOR_CST_NELTS.
15240 * cfgexpand.c (expand_debug_expr): Likewise.
15241 * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
15242 (store_constructor, expand_expr_real_1): Likewise.
15243 (const_scalar_mask_from_tree): Likewise.
15244 * fold-const-call.c (fold_const_reduction): Likewise.
15245 * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
15246 (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
15247 (native_encode_vector, vec_cst_ctor_to_array): Likewise.
15248 (fold_relational_const): Likewise.
15249 (native_interpret_vector): Likewise. Change the size from an
15250 int to an unsigned int.
15251 * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
15252 TYPE_VECTOR_SUBPARTS.
15253 (gimple_fold_indirect_ref, gimple_build_vector): Likewise.
15254 (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
15255 duplicating a non-constant operand into a variable-length vector.
15256 * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
15257 TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
15258 * ipa-icf.c (sem_variable::equals): Likewise.
15259 * match.pd: Likewise.
15260 * omp-simd-clone.c (simd_clone_subparts): Likewise.
15261 * print-tree.c (print_node): Likewise.
15262 * stor-layout.c (layout_type): Likewise.
15263 * targhooks.c (default_builtin_vectorization_cost): Likewise.
15264 * tree-cfg.c (verify_gimple_comparison): Likewise.
15265 (verify_gimple_assign_binary): Likewise.
15266 (verify_gimple_assign_ternary): Likewise.
15267 (verify_gimple_assign_single): Likewise.
15268 * tree-pretty-print.c (dump_generic_node): Likewise.
15269 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
15270 (simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
15271 * tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
15272 (vect_grouped_load_supported, vect_permute_load_chain): Likewise.
15273 (vect_shift_permute_load_chain): Likewise.
15274 * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
15275 (expand_vector_condition, optimize_vector_constructor): Likewise.
15276 (lower_vec_perm, get_compute_type): Likewise.
15277 * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
15278 (get_initial_defs_for_reduction, vect_transform_loop): Likewise.
15279 * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
15280 (vect_recog_mask_conversion_pattern): Likewise.
15281 * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
15282 (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
15283 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
15284 (get_group_load_store_type, vectorizable_mask_load_store): Likewise.
15285 (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
15286 (vectorizable_shift, vectorizable_operation, vectorizable_store)
15287 (vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
15288 (supportable_widening_operation): Likewise.
15289 (supportable_narrowing_operation): Likewise.
15290 * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
15291 Likewise.
15292 * varasm.c (output_constant): Likewise.
15293
15294 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15295 Alan Hayward <alan.hayward@arm.com>
15296 David Sherwood <david.sherwood@arm.com>
15297
15298 * tree-vect-data-refs.c (vect_permute_store_chain): Reorganize
15299 so that both the length == 3 and length != 3 cases set up their
15300 own permute vectors. Add comments explaining why we know the
15301 number of elements is constant.
15302 (vect_permute_load_chain): Likewise.
15303
15304 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15305 Alan Hayward <alan.hayward@arm.com>
15306 David Sherwood <david.sherwood@arm.com>
15307
15308 * machmode.h (mode_nunits): Change from unsigned char to
15309 poly_uint16_pod.
15310 (ONLY_FIXED_SIZE_MODES): New macro.
15311 (pod_mode::measurement_type, scalar_int_mode::measurement_type)
15312 (scalar_float_mode::measurement_type, scalar_mode::measurement_type)
15313 (complex_mode::measurement_type, fixed_size_mode::measurement_type):
15314 New typedefs.
15315 (mode_to_nunits): Return a poly_uint16 rather than an unsigned short.
15316 (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES,
15317 or if measurement_type is not polynomial.
15318 * genmodes.c (ZERO_COEFFS): New macro.
15319 (emit_mode_nunits_inline): Make mode_nunits_inline return a
15320 poly_uint16.
15321 (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod.
15322 Use ZERO_COEFFS when emitting initializers.
15323 * data-streamer.h (bp_pack_poly_value): New function.
15324 (bp_unpack_poly_value): Likewise.
15325 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
15326 for GET_MODE_NUNITS.
15327 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
15328 for GET_MODE_NUNITS.
15329 * tree.c (make_vector_type): Remove temporary shim and make
15330 the real function take the number of units as a poly_uint64
15331 rather than an int.
15332 (build_vector_type_for_mode): Handle polynomial nunits.
15333 * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise.
15334 * emit-rtl.c (const_vec_series_p_1): Likewise.
15335 (gen_rtx_CONST_VECTOR): Likewise.
15336 * fold-const.c (test_vec_duplicate_folding): Likewise.
15337 * genrecog.c (validate_pattern): Likewise.
15338 * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise.
15339 * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
15340 * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise.
15341 (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise.
15342 (expand_vec_cond_expr, expand_mult_highpart): Likewise.
15343 * rtlanal.c (subreg_get_info): Likewise.
15344 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
15345 (vect_grouped_load_supported): Likewise.
15346 * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
15347 * tree-vect-loop.c (have_whole_vector_shift): Likewise.
15348 * simplify-rtx.c (simplify_unary_operation_1): Likewise.
15349 (simplify_const_unary_operation, simplify_binary_operation_1)
15350 (simplify_const_binary_operation, simplify_ternary_operation)
15351 (test_vector_ops_duplicate, test_vector_ops): Likewise.
15352 (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode
15353 instead of CONST_VECTOR_NUNITS.
15354 * varasm.c (output_constant_pool_2): Likewise.
15355 * rtx-vector-builder.c (rtx_vector_builder::build): Only include the
15356 explicit-encoded elements in the XVEC for variable-length vectors.
15357
15358 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15359
15360 * lra-constraints.c (curr_insn_transform): Use partial_subreg_p.
15361
15362 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15363 Alan Hayward <alan.hayward@arm.com>
15364 David Sherwood <david.sherwood@arm.com>
15365
15366 * coretypes.h (fixed_size_mode): Declare.
15367 (fixed_size_mode_pod): New typedef.
15368 * builtins.h (target_builtins::x_apply_args_mode)
15369 (target_builtins::x_apply_result_mode): Change type to
15370 fixed_size_mode_pod.
15371 * builtins.c (apply_args_size, apply_result_size, result_vector)
15372 (expand_builtin_apply_args_1, expand_builtin_apply)
15373 (expand_builtin_return): Update accordingly.
15374
15375 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15376
15377 * cse.c (hash_rtx_cb): Hash only the encoded elements.
15378 * cselib.c (cselib_hash_rtx): Likewise.
15379 * expmed.c (make_tree): Build VECTOR_CSTs directly from the
15380 CONST_VECTOR encoding.
15381
15382 2018-01-03 Jakub Jelinek <jakub@redhat.com>
15383 Jeff Law <law@redhat.com>
15384
15385 PR target/83641
15386 * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For
15387 noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop,
15388 only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp
15389 and add REG_CFA_ADJUST_CFA notes in that case to both insns.
15390
15391 PR target/83641
15392 * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not
15393 explicitly probe *sp in a noreturn function if there were any callee
15394 register saves or frame pointer is needed.
15395
15396 2018-01-03 Jakub Jelinek <jakub@redhat.com>
15397
15398 PR debug/83621
15399 * cfgexpand.c (expand_debug_expr): Return NULL if mode is
15400 BLKmode for ternary, binary or unary expressions.
15401
15402 PR debug/83645
15403 * var-tracking.c (delete_vta_debug_insn): New inline function.
15404 (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
15405 insns from get_insns () to NULL instead of each bb separately.
15406 Use delete_vta_debug_insn. No longer static.
15407 (vt_debug_insns_local, variable_tracking_main_1): Adjust
15408 delete_vta_debug_insns callers.
15409 * rtl.h (delete_vta_debug_insns): Declare.
15410 * final.c (rest_of_handle_final): Call delete_vta_debug_insns
15411 instead of variable_tracking_main.
15412
15413 2018-01-03 Martin Sebor <msebor@redhat.com>
15414
15415 PR tree-optimization/83603
15416 * calls.c (maybe_warn_nonstring_arg): Avoid accessing function
15417 arguments past the endof the argument list in functions declared
15418 without a prototype.
15419 * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
15420 Avoid checking when arguments are null.
15421
15422 2018-01-03 Martin Sebor <msebor@redhat.com>
15423
15424 PR c/83559
15425 * doc/extend.texi (attribute const): Fix a typo.
15426 * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
15427 issuing -Wsuggest-attribute for void functions.
15428
15429 2018-01-03 Martin Sebor <msebor@redhat.com>
15430
15431 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
15432 offset_int::from instead of wide_int::to_shwi.
15433 (maybe_diag_overlap): Remove assertion.
15434 Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
15435 * gimple-ssa-sprintf.c (format_directive): Same.
15436 (parse_directive): Same.
15437 (sprintf_dom_walker::compute_format_length): Same.
15438 (try_substitute_return_value): Same.
15439
15440 2018-01-03 Jeff Law <law@redhat.com>
15441
15442 PR middle-end/83654
15443 * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a
15444 non-constant residual for zero at runtime and avoid probing in
15445 that case. Reorganize code for trailing problem to mirror handling
15446 of the residual.
15447
15448 2018-01-03 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
15449
15450 PR tree-optimization/83501
15451 * tree-ssa-strlen.c (get_string_cst): New.
15452 (handle_char_store): Call get_string_cst.
15453
15454 2018-01-03 Martin Liska <mliska@suse.cz>
15455
15456 PR tree-optimization/83593
15457 * tree-ssa-strlen.c: Include tree-cfg.h.
15458 (strlen_check_and_optimize_stmt): Add new argument cleanup_eh.
15459 (strlen_dom_walker): Add new member variable m_cleanup_cfg.
15460 (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg
15461 to false.
15462 (strlen_dom_walker::before_dom_children): Call
15463 gimple_purge_dead_eh_edges. Dump tranformation with details
15464 dump flags.
15465 (strlen_dom_walker::before_dom_children): Update call by adding
15466 new argument cleanup_eh.
15467 (pass_strlen::execute): Return TODO_cleanup_cfg if needed.
15468
15469 2018-01-03 Martin Liska <mliska@suse.cz>
15470
15471 PR ipa/83549
15472 * cif-code.def (VARIADIC_THUNK): New enum value.
15473 * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
15474 thunks.
15475
15476 2018-01-03 Jan Beulich <jbeulich@suse.com>
15477
15478 * sse.md (mov<mode>_internal): Tighten condition for when to use
15479 vmovdqu<ssescalarsize> for TI and OI modes.
15480
15481 2018-01-03 Jakub Jelinek <jakub@redhat.com>
15482
15483 Update copyright years.
15484
15485 2018-01-03 Martin Liska <mliska@suse.cz>
15486
15487 PR ipa/83594
15488 * ipa-visibility.c (function_and_variable_visibility): Skip
15489 functions with noipa attribure.
15490
15491 2018-01-03 Jakub Jelinek <jakub@redhat.com>
15492
15493 * gcc.c (process_command): Update copyright notice dates.
15494 * gcov-dump.c (print_version): Ditto.
15495 * gcov.c (print_version): Ditto.
15496 * gcov-tool.c (print_version): Ditto.
15497 * gengtype.c (create_file): Ditto.
15498 * doc/cpp.texi: Bump @copying's copyright year.
15499 * doc/cppinternals.texi: Ditto.
15500 * doc/gcc.texi: Ditto.
15501 * doc/gccint.texi: Ditto.
15502 * doc/gcov.texi: Ditto.
15503 * doc/install.texi: Ditto.
15504 * doc/invoke.texi: Ditto.
15505
15506 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15507
15508 * vector-builder.h (vector_builder::m_full_nelts): Change from
15509 unsigned int to poly_uint64.
15510 (vector_builder::full_nelts): Update prototype accordingly.
15511 (vector_builder::new_vector): Likewise.
15512 (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts.
15513 (vector_builder::operator ==): Likewise.
15514 (vector_builder::finalize): Likewise.
15515 * int-vector-builder.h (int_vector_builder::int_vector_builder):
15516 Take the number of elements as a poly_uint64 rather than an
15517 unsigned int.
15518 * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change
15519 from unsigned int to poly_uint64.
15520 (vec_perm_indices::vec_perm_indices): Update prototype accordingly.
15521 (vec_perm_indices::new_vector): Likewise.
15522 (vec_perm_indices::length): Likewise.
15523 (vec_perm_indices::nelts_per_input): Likewise.
15524 (vec_perm_indices::input_nelts): Likewise.
15525 * vec-perm-indices.c (vec_perm_indices::new_vector): Take the
15526 number of elements per input as a poly_uint64 rather than an
15527 unsigned int. Use the original encoding for variable-length
15528 vectors, rather than clamping each individual element.
15529 For the second and subsequent elements in each pattern,
15530 clamp the step and base before clamping their sum.
15531 (vec_perm_indices::series_p): Handle polynomial element counts.
15532 (vec_perm_indices::all_in_range_p): Likewise.
15533 (vec_perm_indices_to_tree): Likewise.
15534 (vec_perm_indices_to_rtx): Likewise.
15535 * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
15536 * tree-vector-builder.c (tree_vector_builder::new_unary_operation)
15537 (tree_vector_builder::new_binary_operation): Handle polynomial
15538 element counts. Return false if we need to know the number
15539 of elements at compile time.
15540 * fold-const.c (fold_vec_perm): Punt if the number of elements
15541 isn't known at compile time.
15542
15543 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15544
15545 * vec-perm-indices.h (vec_perm_builder): Change element type
15546 from HOST_WIDE_INT to poly_int64.
15547 (vec_perm_indices::element_type): Update accordingly.
15548 (vec_perm_indices::clamp): Handle polynomial element_types.
15549 * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
15550 (vec_perm_indices::all_in_range_p): Likewise.
15551 (tree_to_vec_perm_builder): Check for poly_int64 trees rather
15552 than shwi trees.
15553 * vector-builder.h (vector_builder::stepped_sequence_p): Handle
15554 polynomial vec_perm_indices element types.
15555 * int-vector-builder.h (int_vector_builder::equal_p): Likewise.
15556 * fold-const.c (fold_vec_perm): Likewise.
15557 * optabs.c (shift_amt_for_vec_perm_mask): Likewise.
15558 * tree-vect-generic.c (lower_vec_perm): Likewise.
15559 * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
15560 * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm
15561 element type to HOST_WIDE_INT.
15562
15563 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15564 Alan Hayward <alan.hayward@arm.com>
15565 David Sherwood <david.sherwood@arm.com>
15566
15567 * alias.c (addr_side_effect_eval): Take the size as a poly_int64
15568 rather than an int. Use plus_constant.
15569 (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints.
15570 Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT.
15571
15572 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15573 Alan Hayward <alan.hayward@arm.com>
15574 David Sherwood <david.sherwood@arm.com>
15575
15576 * calls.c (emit_call_1, expand_call): Change struct_value_size from
15577 a HOST_WIDE_INT to a poly_int64.
15578
15579 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15580 Alan Hayward <alan.hayward@arm.com>
15581 David Sherwood <david.sherwood@arm.com>
15582
15583 * calls.c (load_register_parameters): Cope with polynomial
15584 mode sizes. Require a constant size for BLKmode parameters
15585 that aren't described by a PARALLEL. If BLOCK_REG_PADDING
15586 forces a parameter to be padded at the lsb end in order to
15587 fill a complete number of words, require the parameter size
15588 to be ordered wrt UNITS_PER_WORD.
15589
15590 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15591 Alan Hayward <alan.hayward@arm.com>
15592 David Sherwood <david.sherwood@arm.com>
15593
15594 * reload1.c (spill_stack_slot_width): Change element type
15595 from unsigned int to poly_uint64_pod.
15596 (alter_reg): Treat mode sizes as polynomial.
15597
15598 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15599 Alan Hayward <alan.hayward@arm.com>
15600 David Sherwood <david.sherwood@arm.com>
15601
15602 * reload.c (complex_word_subreg_p): New function.
15603 (reload_inner_reg_of_subreg, push_reload): Use it.
15604
15605 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15606 Alan Hayward <alan.hayward@arm.com>
15607 David Sherwood <david.sherwood@arm.com>
15608
15609 * lra-constraints.c (process_alt_operands): Reject matched
15610 operands whose sizes aren't ordered.
15611 (match_reload): Refer to this check here.
15612
15613 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15614 Alan Hayward <alan.hayward@arm.com>
15615 David Sherwood <david.sherwood@arm.com>
15616
15617 * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
15618 that the mode size is in the set {1, 2, 4, 8, 16}.
15619
15620 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15621 Alan Hayward <alan.hayward@arm.com>
15622 David Sherwood <david.sherwood@arm.com>
15623
15624 * var-tracking.c (adjust_mems): Treat mode sizes as polynomial.
15625 Use plus_constant instead of gen_rtx_PLUS.
15626
15627 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15628 Alan Hayward <alan.hayward@arm.com>
15629 David Sherwood <david.sherwood@arm.com>
15630
15631 * config/cr16/cr16-protos.h (cr16_push_rounding): Declare.
15632 * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to...
15633 * config/cr16/cr16.c (cr16_push_rounding): ...this new function.
15634 * config/h8300/h8300-protos.h (h8300_push_rounding): Declare.
15635 * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to...
15636 * config/h8300/h8300.c (h8300_push_rounding): ...this new function.
15637 * config/i386/i386-protos.h (ix86_push_rounding): Declare.
15638 * config/i386/i386.h (PUSH_ROUNDING): Move implementation to...
15639 * config/i386/i386.c (ix86_push_rounding): ...this new function.
15640 * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return
15641 a poly_int64.
15642 * config/m32c/m32c.c (m32c_push_rounding): Likewise.
15643 * config/m68k/m68k-protos.h (m68k_push_rounding): Declare.
15644 * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to...
15645 * config/m68k/m68k.c (m68k_push_rounding): ...this new function.
15646 * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare.
15647 * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to...
15648 * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function.
15649 * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare.
15650 * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to...
15651 * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new
15652 function.
15653 * expr.c (emit_move_resolve_push): Treat the input and result
15654 of PUSH_ROUNDING as a poly_int64.
15655 (emit_move_complex_push, emit_single_push_insn_1): Likewise.
15656 (emit_push_insn): Likewise.
15657 * lra-eliminations.c (mark_not_eliminable): Likewise.
15658 * recog.c (push_operand): Likewise.
15659 * reload1.c (elimination_effects): Likewise.
15660 * rtlanal.c (nonzero_bits1): Likewise.
15661 * calls.c (store_one_arg): Likewise. Require the padding to be
15662 known at compile time.
15663
15664 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15665 Alan Hayward <alan.hayward@arm.com>
15666 David Sherwood <david.sherwood@arm.com>
15667
15668 * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial.
15669 Use plus_constant instead of gen_rtx_PLUS.
15670
15671 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15672 Alan Hayward <alan.hayward@arm.com>
15673 David Sherwood <david.sherwood@arm.com>
15674
15675 * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64
15676 rather than an int.
15677
15678 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15679 Alan Hayward <alan.hayward@arm.com>
15680 David Sherwood <david.sherwood@arm.com>
15681
15682 * expr.c (expand_expr_real_1): Use tree_to_poly_uint64
15683 instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs
15684 via stack temporaries. Treat the mode size as polynomial too.
15685
15686 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15687 Alan Hayward <alan.hayward@arm.com>
15688 David Sherwood <david.sherwood@arm.com>
15689
15690 * expr.c (expand_expr_real_2): When handling conversions involving
15691 unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than
15692 multiplying int_size_in_bytes by BITS_PER_UNIT. Treat GET_MODE_BISIZE
15693 as a poly_uint64 too.
15694
15695 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15696 Alan Hayward <alan.hayward@arm.com>
15697 David Sherwood <david.sherwood@arm.com>
15698
15699 * rtlanal.c (subreg_get_info): Handle polynomial mode sizes.
15700
15701 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15702 Alan Hayward <alan.hayward@arm.com>
15703 David Sherwood <david.sherwood@arm.com>
15704
15705 * combine.c (can_change_dest_mode): Handle polynomial
15706 REGMODE_NATURAL_SIZE.
15707 * expmed.c (store_bit_field_1): Likewise.
15708 * expr.c (store_constructor): Likewise.
15709 * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes
15710 and polynomial REGMODE_NATURAL_SIZE.
15711 (gen_lowpart_common): Likewise.
15712 * reginfo.c (record_subregs_of_mode): Likewise.
15713 * rtlanal.c (read_modify_subreg_p): Likewise.
15714
15715 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15716 Alan Hayward <alan.hayward@arm.com>
15717 David Sherwood <david.sherwood@arm.com>
15718
15719 * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial
15720 numbers of elements.
15721
15722 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15723 Alan Hayward <alan.hayward@arm.com>
15724 David Sherwood <david.sherwood@arm.com>
15725
15726 * match.pd: Cope with polynomial numbers of vector elements.
15727
15728 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15729 Alan Hayward <alan.hayward@arm.com>
15730 David Sherwood <david.sherwood@arm.com>
15731
15732 * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets
15733 in a POINTER_PLUS_EXPR.
15734
15735 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15736 Alan Hayward <alan.hayward@arm.com>
15737 David Sherwood <david.sherwood@arm.com>
15738
15739 * omp-simd-clone.c (simd_clone_subparts): New function.
15740 (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS.
15741 (ipa_simd_modify_function_body): Likewise.
15742
15743 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15744 Alan Hayward <alan.hayward@arm.com>
15745 David Sherwood <david.sherwood@arm.com>
15746
15747 * tree-vect-generic.c (nunits_for_known_piecewise_op): New function.
15748 (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS.
15749 (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise.
15750 (expand_vector_condition, vector_element): Likewise.
15751 (subparts_gt): New function.
15752 (get_compute_type): Use subparts_gt.
15753 (count_type_subparts): Delete.
15754 (expand_vector_operations_1): Use subparts_gt instead of
15755 count_type_subparts.
15756
15757 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15758 Alan Hayward <alan.hayward@arm.com>
15759 David Sherwood <david.sherwood@arm.com>
15760
15761 * tree-vect-data-refs.c (vect_no_alias_p): Replace with...
15762 (vect_compile_time_alias): ...this new function. Do the calculation
15763 on poly_ints rather than trees.
15764 (vect_prune_runtime_alias_test_list): Update call accordingly.
15765
15766 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15767 Alan Hayward <alan.hayward@arm.com>
15768 David Sherwood <david.sherwood@arm.com>
15769
15770 * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial
15771 numbers of units.
15772 (vect_schedule_slp_instance): Likewise.
15773
15774 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15775 Alan Hayward <alan.hayward@arm.com>
15776 David Sherwood <david.sherwood@arm.com>
15777
15778 * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
15779 constant and extern definitions for variable-length vectors.
15780 (vect_get_constant_vectors): Note that the number of units
15781 is known to be constant.
15782
15783 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15784 Alan Hayward <alan.hayward@arm.com>
15785 David Sherwood <david.sherwood@arm.com>
15786
15787 * tree-vect-stmts.c (vectorizable_conversion): Treat the number
15788 of units as polynomial. Choose between WIDE and NARROW based
15789 on multiple_p.
15790
15791 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15792 Alan Hayward <alan.hayward@arm.com>
15793 David Sherwood <david.sherwood@arm.com>
15794
15795 * tree-vect-stmts.c (simd_clone_subparts): New function.
15796 (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS.
15797
15798 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15799 Alan Hayward <alan.hayward@arm.com>
15800 David Sherwood <david.sherwood@arm.com>
15801
15802 * tree-vect-stmts.c (vectorizable_call): Treat the number of
15803 vectors as polynomial. Use build_index_vector for
15804 IFN_GOMP_SIMD_LANE.
15805
15806 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15807 Alan Hayward <alan.hayward@arm.com>
15808 David Sherwood <david.sherwood@arm.com>
15809
15810 * tree-vect-stmts.c (get_load_store_type): Treat the number of
15811 units as polynomial. Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP
15812 for variable-length vectors.
15813 (vectorizable_mask_load_store): Treat the number of units as
15814 polynomial, asserting that it is constant if the condition has
15815 already been enforced.
15816 (vectorizable_store, vectorizable_load): Likewise.
15817
15818 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15819 Alan Hayward <alan.hayward@arm.com>
15820 David Sherwood <david.sherwood@arm.com>
15821
15822 * tree-vect-loop.c (vectorizable_live_operation): Treat the number
15823 of units as polynomial. Punt if we can't tell at compile time
15824 which vector contains the final result.
15825
15826 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15827 Alan Hayward <alan.hayward@arm.com>
15828 David Sherwood <david.sherwood@arm.com>
15829
15830 * tree-vect-loop.c (vectorizable_induction): Treat the number
15831 of units as polynomial. Punt on SLP inductions. Use an integer
15832 VEC_SERIES_EXPR for variable-length integer reductions. Use a
15833 cast of such a series for variable-length floating-point
15834 reductions.
15835
15836 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15837 Alan Hayward <alan.hayward@arm.com>
15838 David Sherwood <david.sherwood@arm.com>
15839
15840 * tree.h (build_index_vector): Declare.
15841 * tree.c (build_index_vector): New function.
15842 * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number
15843 of units as polynomial, forcibly converting it to a constant if
15844 vectorizable_reduction has already enforced the condition.
15845 (vect_create_epilog_for_reduction): Likewise. Use build_index_vector
15846 to create a {1,2,3,...} vector.
15847 (vectorizable_reduction): Treat the number of units as polynomial.
15848 Choose vectype_in based on the largest scalar element size rather
15849 than the smallest number of units. Enforce the restrictions
15850 relied on above.
15851
15852 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15853 Alan Hayward <alan.hayward@arm.com>
15854 David Sherwood <david.sherwood@arm.com>
15855
15856 * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the
15857 number of units as polynomial.
15858
15859 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15860 Alan Hayward <alan.hayward@arm.com>
15861 David Sherwood <david.sherwood@arm.com>
15862
15863 * target.h (vector_sizes, auto_vector_sizes): New typedefs.
15864 * target.def (autovectorize_vector_sizes): Return the vector sizes
15865 by pointer, using vector_sizes rather than a bitmask.
15866 * targhooks.h (default_autovectorize_vector_sizes): Update accordingly.
15867 * targhooks.c (default_autovectorize_vector_sizes): Likewise.
15868 * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
15869 Likewise.
15870 * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
15871 * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
15872 * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise.
15873 * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
15874 * omp-general.c (omp_max_vf): Likewise.
15875 * omp-low.c (omp_clause_aligned_alignment): Likewise.
15876 * optabs-query.c (can_vec_mask_load_store_p): Likewise.
15877 * tree-vect-loop.c (vect_analyze_loop): Likewise.
15878 * tree-vect-slp.c (vect_slp_bb): Likewise.
15879 * doc/tm.texi: Regenerate.
15880 * tree-vectorizer.h (current_vector_size): Change from an unsigned int
15881 to a poly_uint64.
15882 * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take
15883 the vector size as a poly_uint64 rather than an unsigned int.
15884 (current_vector_size): Change from an unsigned int to a poly_uint64.
15885 (get_vectype_for_scalar_type): Update accordingly.
15886 * tree.h (build_truth_vector_type): Take the size and number of
15887 units as a poly_uint64 rather than an unsigned int.
15888 (build_vector_type): Add a temporary overload that takes
15889 the number of units as a poly_uint64 rather than an unsigned int.
15890 * tree.c (make_vector_type): Likewise.
15891 (build_truth_vector_type): Take the number of units as a poly_uint64
15892 rather than an unsigned int.
15893
15894 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15895 Alan Hayward <alan.hayward@arm.com>
15896 David Sherwood <david.sherwood@arm.com>
15897
15898 * target.def (get_mask_mode): Take the number of units and length
15899 as poly_uint64s rather than unsigned ints.
15900 * targhooks.h (default_get_mask_mode): Update accordingly.
15901 * targhooks.c (default_get_mask_mode): Likewise.
15902 * config/i386/i386.c (ix86_get_mask_mode): Likewise.
15903 * doc/tm.texi: Regenerate.
15904
15905 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15906 Alan Hayward <alan.hayward@arm.com>
15907 David Sherwood <david.sherwood@arm.com>
15908
15909 * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int.
15910 * omp-general.c (omp_max_vf): Likewise.
15911 * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf.
15912 (expand_omp_simd): Handle polynomial safelen.
15913 * omp-low.c (omplow_simd_context): Add a default constructor.
15914 (omplow_simd_context::max_vf): Change from int to poly_uint64.
15915 (lower_rec_simd_input_clauses): Update accordingly.
15916 (lower_rec_input_clauses): Likewise.
15917
15918 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15919 Alan Hayward <alan.hayward@arm.com>
15920 David Sherwood <david.sherwood@arm.com>
15921
15922 * tree-vectorizer.h (vect_nunits_for_cost): New function.
15923 * tree-vect-loop.c (vect_model_reduction_cost): Use it.
15924 * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise.
15925 (vect_analyze_slp_cost): Likewise.
15926 * tree-vect-stmts.c (vect_model_store_cost): Likewise.
15927 (vect_model_load_cost): Likewise.
15928
15929 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15930 Alan Hayward <alan.hayward@arm.com>
15931 David Sherwood <david.sherwood@arm.com>
15932
15933 * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1)
15934 (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits
15935 from an unsigned int * to a poly_uint64_pod *.
15936 (calculate_unrolling_factor): New function.
15937 (vect_analyze_slp_instance): Use it. Track polynomial max_nunits.
15938
15939 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15940 Alan Hayward <alan.hayward@arm.com>
15941 David Sherwood <david.sherwood@arm.com>
15942
15943 * tree-vectorizer.h (_slp_instance::unrolling_factor): Change
15944 from an unsigned int to a poly_uint64.
15945 (_loop_vec_info::slp_unrolling_factor): Likewise.
15946 (_loop_vec_info::vectorization_factor): Change from an int
15947 to a poly_uint64.
15948 (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX.
15949 (vect_get_num_vectors): New function.
15950 (vect_update_max_nunits, vect_vf_for_cost): Likewise.
15951 (vect_get_num_copies): Use vect_get_num_vectors.
15952 (vect_analyze_data_ref_dependences): Change max_vf from an int *
15953 to an unsigned int *.
15954 (vect_analyze_data_refs): Change min_vf from an int * to a
15955 poly_uint64 *.
15956 (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
15957 than an unsigned HOST_WIDE_INT.
15958 * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
15959 (vect_analyze_data_ref_dependence): Change max_vf from an int *
15960 to an unsigned int *.
15961 (vect_analyze_data_ref_dependences): Likewise.
15962 (vect_compute_data_ref_alignment): Handle polynomial vf.
15963 (vect_enhance_data_refs_alignment): Likewise.
15964 (vect_prune_runtime_alias_test_list): Likewise.
15965 (vect_shift_permute_load_chain): Likewise.
15966 (vect_supportable_dr_alignment): Likewise.
15967 (dependence_distance_ge_vf): Take the vectorization factor as a
15968 poly_uint64 rather than an unsigned HOST_WIDE_INT.
15969 (vect_analyze_data_refs): Change min_vf from an int * to a
15970 poly_uint64 *.
15971 * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take
15972 vfm1 as a poly_uint64 rather than an int. Make the same change
15973 for the returned bound_scalar.
15974 (vect_gen_vector_loop_niters): Handle polynomial vf.
15975 (vect_do_peeling): Likewise. Update call to
15976 vect_gen_scalar_loop_niters and handle polynomial bound_scalars.
15977 (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must
15978 be constant.
15979 * tree-vect-loop.c (vect_determine_vectorization_factor)
15980 (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf.
15981 (vect_get_known_peeling_cost): Likewise.
15982 (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise.
15983 (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise.
15984 (vect_transform_loop): Likewise. Use the lowest possible VF when
15985 updating the upper bounds of the loop.
15986 (vect_min_worthwhile_factor): Make static. Return an unsigned int
15987 rather than an int.
15988 * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with
15989 polynomial unroll factors.
15990 (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise.
15991 (vect_make_slp_decision): Likewise.
15992 (vect_supported_load_permutation_p): Likewise, and polynomial
15993 vf too.
15994 (vect_analyze_slp_cost): Handle polynomial vf.
15995 (vect_slp_analyze_node_operations): Likewise.
15996 (vect_slp_analyze_bb_1): Likewise.
15997 (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
15998 than an unsigned HOST_WIDE_INT.
15999 * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store)
16000 (vectorizable_load): Handle polynomial vf.
16001 * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to
16002 a poly_uint64.
16003 (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly.
16004
16005 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16006 Alan Hayward <alan.hayward@arm.com>
16007 David Sherwood <david.sherwood@arm.com>
16008
16009 * match.pd: Handle bit operations involving three constants
16010 and try to fold one pair.
16011
16012 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16013
16014 * tree-vect-loop-manip.c: Include gimple-fold.h.
16015 (slpeel_make_loop_iterate_ntimes): Add step, final_iv and
16016 niters_maybe_zero parameters. Handle other cases besides a step of 1.
16017 (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter.
16018 Add a path that uses a step of VF instead of 1, but disable it
16019 for now.
16020 (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var
16021 and niters_no_overflow parameters. Update calls to
16022 slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters.
16023 Create a new SSA name if the latter choses to use a ste other
16024 than zero, and return it via niters_vector_mult_vf_var.
16025 * tree-vect-loop.c (vect_transform_loop): Update calls to
16026 vect_do_peeling, vect_gen_vector_loop_niters and
16027 slpeel_make_loop_iterate_ntimes.
16028 * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling)
16029 (vect_gen_vector_loop_niters): Update declarations after above changes.
16030
16031 2018-01-02 Michael Meissner <meissner@linux.vnet.ibm.com>
16032
16033 * config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE
16034 128-bit round to integer instructions.
16035 (ceil<mode>2): Likewise.
16036 (btrunc<mode>2): Likewise.
16037 (round<mode>2): Likewise.
16038
16039 2018-01-02 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
16040
16041 * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of
16042 unaligned VSX load/store on P8/P9.
16043 (expand_block_clear): Allow the use of unaligned VSX
16044 load/store on P8/P9.
16045
16046 2018-01-02 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
16047
16048 * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
16049 New function.
16050 (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
16051 swap associated with both a load and a store.
16052
16053 2018-01-02 Andrew Waterman <andrew@sifive.com>
16054
16055 * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
16056 * config/riscv/riscv.md (clear_cache): Use it.
16057
16058 2018-01-02 Artyom Skrobov <tyomitch@gmail.com>
16059
16060 * web.c: Remove out-of-date comment.
16061
16062 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16063
16064 * expr.c (fixup_args_size_notes): Check that any existing
16065 REG_ARGS_SIZE notes are correct, and don't try to re-add them.
16066 (emit_single_push_insn_1): Move stack_pointer_delta adjustment to...
16067 (emit_single_push_insn): ...here.
16068
16069 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16070
16071 * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
16072 (const_vector_encoded_nelts): New function.
16073 (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
16074 (const_vector_int_elt, const_vector_elt): Declare.
16075 * emit-rtl.c (const_vector_int_elt_1): New function.
16076 (const_vector_elt): Likewise.
16077 * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
16078 of CONST_VECTOR_ELT.
16079
16080 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16081
16082 * expr.c: Include rtx-vector-builder.h.
16083 (const_vector_mask_from_tree): Use rtx_vector_builder and operate
16084 directly on the tree encoding.
16085 (const_vector_from_tree): Likewise.
16086 * optabs.c: Include rtx-vector-builder.h.
16087 (expand_vec_perm_var): Use rtx_vector_builder and create a repeating
16088 sequence of "u" values.
16089 * vec-perm-indices.c: Include rtx-vector-builder.h.
16090 (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate
16091 directly on the vec_perm_indices encoding.
16092
16093 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16094
16095 * doc/rtl.texi (const_vector): Describe new encoding scheme.
16096 * Makefile.in (OBJS): Add rtx-vector-builder.o.
16097 * rtx-vector-builder.h: New file.
16098 * rtx-vector-builder.c: Likewise.
16099 * rtl.h (rtx_def::u2): Add a const_vector field.
16100 (CONST_VECTOR_NPATTERNS): New macro.
16101 (CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
16102 (CONST_VECTOR_DUPLICATE_P): Likewise.
16103 (CONST_VECTOR_STEPPED_P): Likewise.
16104 (CONST_VECTOR_ENCODED_ELT): Likewise.
16105 (const_vec_duplicate_p): Check for a duplicated vector encoding.
16106 (unwrap_const_vec_duplicate): Likewise.
16107 (const_vec_series_p): Check for a non-duplicated vector encoding.
16108 Say that the function only returns true for integer vectors.
16109 * emit-rtl.c: Include rtx-vector-builder.h.
16110 (gen_const_vec_duplicate_1): Delete.
16111 (gen_const_vector): Call gen_const_vec_duplicate instead of
16112 gen_const_vec_duplicate_1.
16113 (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
16114 (gen_const_vec_duplicate): Use rtx_vector_builder.
16115 (gen_const_vec_series): Likewise.
16116 (gen_rtx_CONST_VECTOR): Likewise.
16117 * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
16118 (swap_const_vector_halves): Take an rtx pointer rather than rtx.
16119 Build a new vector rather than modifying a CONST_VECTOR in-place.
16120 (handle_special_swappables): Update call accordingly.
16121 * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
16122 (swap_const_vector_halves): Take an rtx pointer rather than rtx.
16123 Build a new vector rather than modifying a CONST_VECTOR in-place.
16124 (handle_special_swappables): Update call accordingly.
16125
16126 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16127
16128 * simplify-rtx.c (simplify_const_binary_operation): Use
16129 CONST_VECTOR_ELT instead of XVECEXP.
16130
16131 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16132
16133 * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of
16134 the selector elements to be different from the data elements
16135 if the selector is a VECTOR_CST.
16136 * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of
16137 ssizetype for the selector.
16138
16139 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16140
16141 * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p
16142 before testing each element individually.
16143 * tree-vect-generic.c (lower_vec_perm): Likewise.
16144
16145 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16146
16147 * selftest.h (selftest::vec_perm_indices_c_tests): Declare.
16148 * selftest-run-tests.c (selftest::run_tests): Call it.
16149 * vector-builder.h (vector_builder::operator ==): New function.
16150 (vector_builder::operator !=): Likewise.
16151 * vec-perm-indices.h (vec_perm_indices::series_p): Declare.
16152 (vec_perm_indices::all_from_input_p): New function.
16153 * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
16154 (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise.
16155 * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder
16156 instead of reading the VECTOR_CST directly. Detect whether both
16157 vector inputs are the same before constructing the vec_perm_indices,
16158 and update the number of inputs argument accordingly. Use the
16159 utility functions added above. Only construct sel2 if we need to.
16160
16161 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16162
16163 * optabs.c (expand_vec_perm_var): Use an explicit encoding for
16164 the broadcast of the low byte.
16165 (expand_mult_highpart): Use an explicit encoding for the permutes.
16166 * optabs-query.c (can_mult_highpart_p): Likewise.
16167 * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
16168 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
16169 (vectorizable_bswap): Likewise.
16170 * tree-vect-data-refs.c (vect_grouped_store_supported): Use an
16171 explicit encoding for the power-of-2 permutes.
16172 (vect_permute_store_chain): Likewise.
16173 (vect_grouped_load_supported): Likewise.
16174 (vect_permute_load_chain): Likewise.
16175
16176 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16177
16178 * vec-perm-indices.h (vec_perm_indices_to_tree): Declare.
16179 * vec-perm-indices.c (vec_perm_indices_to_tree): New function.
16180 * tree-ssa-forwprop.c (simplify_vector_constructor): Use it.
16181 * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
16182 * tree-vect-stmts.c (vectorizable_bswap): Likewise.
16183 (vect_gen_perm_mask_any): Likewise.
16184
16185 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16186
16187 * int-vector-builder.h: New file.
16188 * vec-perm-indices.h: Include int-vector-builder.h.
16189 (vec_perm_indices): Redefine as an int_vector_builder.
16190 (auto_vec_perm_indices): Delete.
16191 (vec_perm_builder): Redefine as a stand-alone class.
16192 (vec_perm_indices::vec_perm_indices): New function.
16193 (vec_perm_indices::clamp): Likewise.
16194 * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h.
16195 (vec_perm_indices::new_vector): New function.
16196 (vec_perm_indices::new_expanded_vector): Update for new
16197 vec_perm_indices class.
16198 (vec_perm_indices::rotate_inputs): New function.
16199 (vec_perm_indices::all_in_range_p): Operate directly on the
16200 encoded form, without computing elided elements.
16201 (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST
16202 encoding. Update for new vec_perm_indices class.
16203 * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for
16204 the given vec_perm_builder.
16205 (expand_vec_perm_var): Update vec_perm_builder constructor.
16206 (expand_mult_highpart): Use vec_perm_builder instead of
16207 auto_vec_perm_indices.
16208 * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and
16209 vec_perm_indices instead of auto_vec_perm_indices. Use a single
16210 or double series encoding as appropriate.
16211 * fold-const.c (fold_ternary_loc): Use vec_perm_builder and
16212 vec_perm_indices instead of auto_vec_perm_indices.
16213 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
16214 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
16215 (vect_permute_store_chain): Likewise.
16216 (vect_grouped_load_supported): Likewise.
16217 (vect_permute_load_chain): Likewise.
16218 (vect_shift_permute_load_chain): Likewise.
16219 * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
16220 (vect_transform_slp_perm_load): Likewise.
16221 (vect_schedule_slp_instance): Likewise.
16222 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
16223 (vectorizable_mask_load_store): Likewise.
16224 (vectorizable_bswap): Likewise.
16225 (vectorizable_store): Likewise.
16226 (vectorizable_load): Likewise.
16227 * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and
16228 vec_perm_indices instead of auto_vec_perm_indices. Use
16229 tree_to_vec_perm_builder to read the vector from a tree.
16230 * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a
16231 vec_perm_builder instead of a vec_perm_indices.
16232 (have_whole_vector_shift): Use vec_perm_builder and
16233 vec_perm_indices instead of auto_vec_perm_indices. Leave the
16234 truncation to calc_vec_perm_mask_for_shift.
16235 (vect_create_epilog_for_reduction): Likewise.
16236 * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change
16237 from auto_vec_perm_indices to vec_perm_indices.
16238 (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm
16239 instead of changing individual elements.
16240 (aarch64_vectorize_vec_perm_const): Use new_vector to install
16241 the vector in d.perm.
16242 * config/arm/arm.c (expand_vec_perm_d::perm): Change
16243 from auto_vec_perm_indices to vec_perm_indices.
16244 (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm
16245 instead of changing individual elements.
16246 (arm_vectorize_vec_perm_const): Use new_vector to install
16247 the vector in d.perm.
16248 * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even):
16249 Update vec_perm_builder constructor.
16250 (rs6000_expand_interleave): Likewise.
16251 * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise.
16252 (rs6000_expand_interleave): Likewise.
16253
16254 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16255
16256 * optabs-query.c (can_vec_perm_var_p): Check whether lowering
16257 to qimode could truncate the indices.
16258 * optabs.c (expand_vec_perm_var): Likewise.
16259
16260 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16261
16262 * Makefile.in (OBJS): Add vec-perm-indices.o.
16263 * vec-perm-indices.h: New file.
16264 * vec-perm-indices.c: Likewise.
16265 * target.h (vec_perm_indices): Replace with a forward class
16266 declaration.
16267 (auto_vec_perm_indices): Move to vec-perm-indices.h.
16268 * optabs.h: Include vec-perm-indices.h.
16269 (expand_vec_perm): Delete.
16270 (selector_fits_mode_p, expand_vec_perm_var): Declare.
16271 (expand_vec_perm_const): Declare.
16272 * target.def (vec_perm_const_ok): Replace with...
16273 (vec_perm_const): ...this new hook.
16274 * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
16275 (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
16276 * doc/tm.texi: Regenerate.
16277 * optabs.def (vec_perm_const): Delete.
16278 * doc/md.texi (vec_perm_const): Likewise.
16279 (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
16280 * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
16281 expand_vec_perm for constant permutation vectors. Assert that
16282 the mode of variable permutation vectors is the integer equivalent
16283 of the mode that is being permuted.
16284 * optabs-query.h (selector_fits_mode_p): Declare.
16285 * optabs-query.c: Include vec-perm-indices.h.
16286 (selector_fits_mode_p): New function.
16287 (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
16288 is defined, instead of checking whether the vec_perm_const_optab
16289 exists. Use targetm.vectorize.vec_perm_const instead of
16290 targetm.vectorize.vec_perm_const_ok. Check whether the indices
16291 fit in the vector mode before using a variable permute.
16292 * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
16293 vec_perm_indices instead of an rtx.
16294 (expand_vec_perm): Replace with...
16295 (expand_vec_perm_const): ...this new function. Take the selector
16296 as a vec_perm_indices rather than an rtx. Also take the mode of
16297 the selector. Update call to shift_amt_for_vec_perm_mask.
16298 Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
16299 Use vec_perm_indices::new_expanded_vector to expand the original
16300 selector into bytes. Check whether the indices fit in the vector
16301 mode before using a variable permute.
16302 (expand_vec_perm_var): Make global.
16303 (expand_mult_highpart): Use expand_vec_perm_const.
16304 * fold-const.c: Includes vec-perm-indices.h.
16305 * tree-ssa-forwprop.c: Likewise.
16306 * tree-vect-data-refs.c: Likewise.
16307 * tree-vect-generic.c: Likewise.
16308 * tree-vect-loop.c: Likewise.
16309 * tree-vect-slp.c: Likewise.
16310 * tree-vect-stmts.c: Likewise.
16311 * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
16312 Delete.
16313 * config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
16314 * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
16315 (aarch64_vectorize_vec_perm_const_ok): Fuse into...
16316 (aarch64_vectorize_vec_perm_const): ...this new function.
16317 (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
16318 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
16319 * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
16320 * config/arm/vec-common.md (vec_perm_const<mode>): Delete.
16321 * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
16322 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
16323 (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
16324 into...
16325 (arm_vectorize_vec_perm_const): ...this new function. Explicitly
16326 check for NEON modes.
16327 * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
16328 * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
16329 * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
16330 (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
16331 into...
16332 (ix86_vectorize_vec_perm_const): ...this new function. Incorporate
16333 the old VEC_PERM_CONST conditions.
16334 * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
16335 * config/ia64/vect.md (vec_perm_const<mode>): Delete.
16336 * config/ia64/ia64.c (ia64_expand_vec_perm_const)
16337 (ia64_vectorize_vec_perm_const_ok): Merge into...
16338 (ia64_vectorize_vec_perm_const): ...this new function.
16339 * config/mips/loongson.md (vec_perm_const<mode>): Delete.
16340 * config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
16341 * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
16342 * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
16343 * config/mips/mips.c (mips_expand_vec_perm_const)
16344 (mips_vectorize_vec_perm_const_ok): Merge into...
16345 (mips_vectorize_vec_perm_const): ...this new function.
16346 * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
16347 * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
16348 * config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
16349 * config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
16350 * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
16351 (rs6000_expand_vec_perm_const): Delete.
16352 * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
16353 Delete.
16354 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
16355 (altivec_expand_vec_perm_const_le): Take each operand individually.
16356 Operate on constant selectors rather than rtxes.
16357 (altivec_expand_vec_perm_const): Likewise. Update call to
16358 altivec_expand_vec_perm_const_le.
16359 (rs6000_expand_vec_perm_const): Delete.
16360 (rs6000_vectorize_vec_perm_const_ok): Delete.
16361 (rs6000_vectorize_vec_perm_const): New function.
16362 (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
16363 an element count and rtx array.
16364 (rs6000_expand_extract_even): Update call accordingly.
16365 (rs6000_expand_interleave): Likewise.
16366 * config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
16367 * config/rs6000/paired.md (vec_perm_constv2sf): Delete.
16368 * config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
16369 * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
16370 (rs6000_expand_vec_perm_const): Delete.
16371 * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
16372 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
16373 (altivec_expand_vec_perm_const_le): Take each operand individually.
16374 Operate on constant selectors rather than rtxes.
16375 (altivec_expand_vec_perm_const): Likewise. Update call to
16376 altivec_expand_vec_perm_const_le.
16377 (rs6000_expand_vec_perm_const): Delete.
16378 (rs6000_vectorize_vec_perm_const_ok): Delete.
16379 (rs6000_vectorize_vec_perm_const): New function. Remove stray
16380 reference to the SPE evmerge intructions.
16381 (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
16382 an element count and rtx array.
16383 (rs6000_expand_extract_even): Update call accordingly.
16384 (rs6000_expand_interleave): Likewise.
16385 * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
16386 * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
16387 new function.
16388 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
16389
16390 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16391
16392 * optabs.c (expand_vec_perm_1): Assert that SEL has an integer
16393 vector mode and that that mode matches the mode of the data
16394 being permuted.
16395 (expand_vec_perm): Split handling of non-CONST_VECTOR selectors
16396 out into expand_vec_perm_var. Do all CONST_VECTOR handling here,
16397 directly using expand_vec_perm_1 when forcing selectors into
16398 registers.
16399 (expand_vec_perm_var): New function, split out from expand_vec_perm.
16400
16401 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16402
16403 * optabs-query.h (can_vec_perm_p): Delete.
16404 (can_vec_perm_var_p, can_vec_perm_const_p): Declare.
16405 * optabs-query.c (can_vec_perm_p): Split into...
16406 (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
16407 (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
16408 particular selector is valid.
16409 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
16410 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
16411 (vect_grouped_load_supported): Likewise.
16412 (vect_shift_permute_load_chain): Likewise.
16413 * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
16414 (vect_transform_slp_perm_load): Likewise.
16415 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
16416 (vectorizable_bswap): Likewise.
16417 (vect_gen_perm_mask_checked): Likewise.
16418 * fold-const.c (fold_ternary_loc): Likewise. Don't take
16419 implementations of variable permutation vectors into account
16420 when deciding which selector to use.
16421 * tree-vect-loop.c (have_whole_vector_shift): Don't check whether
16422 vec_perm_const_optab is supported; instead use can_vec_perm_const_p
16423 with a false third argument.
16424 * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
16425 to test whether the constant selector is valid and can_vec_perm_var_p
16426 to test whether a variable selector is valid.
16427
16428 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16429
16430 * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
16431 * optabs-query.c (can_vec_perm_p): Likewise.
16432 * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
16433 instead of vec_perm_indices.
16434 * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
16435 (vect_gen_perm_mask_checked): Likewise,
16436 * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
16437 (vect_gen_perm_mask_checked): Likewise,
16438
16439 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16440
16441 * optabs-query.h (qimode_for_vec_perm): Declare.
16442 * optabs-query.c (can_vec_perm_p): Split out qimode search to...
16443 (qimode_for_vec_perm): ...this new function.
16444 * optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
16445
16446 2018-01-02 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
16447
16448 * rtlanal.c (canonicalize_condition): Return 0 if final rtx
16449 does not have a conditional at the top.
16450
16451 2018-01-02 Richard Biener <rguenther@suse.de>
16452
16453 * ipa-inline.c (big_speedup_p): Fix expression.
16454
16455 2018-01-02 Jan Hubicka <hubicka@ucw.cz>
16456
16457 PR target/81616
16458 * config/i386/x86-tune-costs.h: Increase cost of integer load costs
16459 for generic 4->6.
16460
16461 2018-01-02 Jan Hubicka <hubicka@ucw.cz>
16462
16463 PR target/81616
16464 Generic tuning.
16465 * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
16466 cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
16467 and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
16468 cond_taken_branch_cost 3->4.
16469
16470 2018-01-01 Jakub Jelinek <jakub@redhat.com>
16471
16472 PR tree-optimization/83581
16473 * tree-loop-distribution.c (pass_loop_distribution::execute): Return
16474 TODO_cleanup_cfg if any changes have been made.
16475
16476 PR middle-end/83608
16477 * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
16478 convert_modes if target mode has the right side, but different mode
16479 class.
16480
16481 PR middle-end/83609
16482 * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
16483 last argument when extracting from CONCAT. If either from_real or
16484 from_imag is NULL, use expansion through memory. If result is not
16485 a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
16486 the parts directly to inner mode, if even that fails, use expansion
16487 through memory.
16488
16489 PR middle-end/83623
16490 * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
16491 check for bswap in mode rather than HImode and use that in expand_unop
16492 too.
16493 \f
16494 Copyright (C) 2018 Free Software Foundation, Inc.
16495
16496 Copying and distribution of this file, with or without modification,
16497 are permitted in any medium without royalty provided the copyright
16498 notice and this notice are preserved.
This page took 0.690871 seconds and 5 git commands to generate.