]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/ChangeLog
gcc/ChangeLog:
[thirdparty/gcc.git] / gcc / ChangeLog
1 2018-06-16 Kugan Vivekanandarajah <kuganv@linaro.org>
2
3 PR middle-end/64946
4 * cfgexpand.c (expand_debug_expr): Hande ABSU_EXPR.
5 * config/i386/i386.c (ix86_add_stmt_cost): Likewise.
6 * dojump.c (do_jump): Likewise.
7 * expr.c (expand_expr_real_2): Check operand type's sign.
8 * fold-const.c (const_unop): Handle ABSU_EXPR.
9 (fold_abs_const): Likewise.
10 * gimple-pretty-print.c (dump_unary_rhs): Likewise.
11 * gimple-ssa-backprop.c (backprop::process_assign_use): Likesie.
12 (strip_sign_op_1): Likesise.
13 * match.pd: Add new pattern to generate ABSU_EXPR.
14 * optabs-tree.c (optab_for_tree_code): Handle ABSU_EXPR.
15 * tree-cfg.c (verify_gimple_assign_unary): Likewise.
16 * tree-eh.c (operation_could_trap_helper_p): Likewise.
17 * tree-inline.c (estimate_operator_cost): Likewise.
18 * tree-pretty-print.c (dump_generic_node): Likewise.
19 * tree-vect-patterns.c (vect_recog_sad_pattern): Likewise.
20 * tree.def (ABSU_EXPR): New.
21
22 2018-06-16 Jakub Jelinek <jakub@redhat.com>
23
24 PR middle-end/86095
25 * common.opt (Wunsafe-loop-optimizations): Add Ignore, remove Var,
26 documented as preserved for backward compatibility only.
27 * doc/invoke.texi: Remove -Wunsafe-loop-optimizations documentation.
28
29 PR rtl-optimization/86108
30 * bb-reorder.c (create_forwarder_block): Renamed to ...
31 (create_eh_forwarder_block): ... this. Split OLD_BB after labels and
32 jump from new landing pad to the second part.
33 (sjlj_fix_up_crossing_landing_pad, dw2_fix_up_crossing_landing_pad):
34 Adjust callers.
35
36 2018-06-15 Jakub Jelinek <jakub@redhat.com>
37
38 PR middle-end/85878
39 * expr.c (expand_assignment): Remove now redundant COMPLEX_MODE_P
40 check from first store_expr, use to_mode instead of GET_MODE (to_rtx).
41 Only call store_expr for halves if the mode is the same.
42
43 PR middle-end/86123
44 * match.pd ((X / Y) == 0 -> X < Y): Don't transform complex divisions.
45 Fix up comment formatting.
46
47 2018-06-15 Bernd Edlinger <bernd.edlinger@hotmail.de>
48
49 * typed-splay-tree.h (typed_splay_tree::remove): New function.
50 (typed_splay_tree::closure,
51 typed_splay_tree::inner_foreach_fn, typed_splay_tree::m_inner): Deleted.
52 (typed_splay_tree::typed_splay_tree,
53 typed_splay_tree::operator =): Declared private.
54 (typed_splay_tree::splay_tree_key, typed_splay_tree::splay_tree_value,
55 typed_splay_tree::splay_tree_node_s, typed_splay_tree::KDEL,
56 typed_splay_tree::VDEL, typed_splay_tree::splay_tree_delete_helper,
57 typed_splay_tree::rotate_left, typed_splay_tree::rotate_right,
58 typed_splay_tree::splay_tree_splay,
59 typed_splay_tree::splay_tree_foreach_helper,
60 typed_splay_tree::splay_tree_insert,
61 typed_splay_tree::splay_tree_remove,
62 typed_splay_tree::splay_tree_lookup,
63 typed_splay_tree::splay_tree_predecessor,
64 typed_splay_tree::splay_tree_successor,
65 typed_splay_tree::splay_tree_min,
66 typed_splay_tree::splay_tree_max): Took over from splay-tree.c/.h.
67 (typed_splay_tree::root, typed_splay_tree::comp,
68 typed_splay_tree::delete_key,
69 typed_splay_tree::delete_value): New data members.
70 * typed-splay-tree.c (selftest::test_str_to_int): Add a test for
71 typed_splay_tree::remove.
72
73 2018-06-15 Matthew Fortune <matthew.fortune@mips.com>
74
75 * config/mips/mips.h (ASM_SPEC): Pass through -mcrc, -mno-crc,
76 -mginv and -mno-ginv to the assembler.
77 * config/mips/mips.opt (-mcrc): New option.
78 (-mginv): Likewise.
79 * doc/invoke.text (-mcrc): Document.
80 (-mginv): Likewise.
81
82 2018-06-15 Nick Clifton <nickc@redhat.com>
83
84 PR 84195
85 * tree.c (escaped_string): New class. Converts an unescaped
86 string into its escaped equivalent.
87 (warn_deprecated_use): Use the new class to convert the
88 deprecation message, if present.
89 (test_escaped_strings): New self test.
90 (test_c_tests): Add test_escaped_strings.
91 * doc/extend.texi (deprecated): Add a note that the
92 deprecation message is affected by the -fmessage-length
93 option, and that control characters will be escaped.
94 (#pragma GCC error): Document this pragma.
95 (#pragma GCC warning): Likewise.
96 * doc/invoke.texi (-fmessage-length): Document this option's
97 effect on the #warning and #error preprocessor directives and
98 the deprecated attribute.
99
100 2018-06-15 Richard Biener <rguenther@suse.de>
101
102 * tree-vect-slp.c (vect_slp_bb): Dump MSG_OPTIMIZED_LOCATIONS
103 here, also noting vector size used.
104 * tree-vectorizer.c (vectorize_loops): Adjust. Note vector
105 size used in MSG_OPTIMIZED_LOCATIONS dump.
106 (pass_slp_vectorize::execute): Adjust.
107
108 2018-06-15 Claudiu Zissulescu <claziss@synopsys.com>
109
110 PR target/85968
111 * config/arc/arc.c (arc_return_address_register): Fix
112 if-condition.
113
114 2018-06-15 Richard Biener <rguenther@suse.de>
115
116 PR middle-end/86159
117 * tree-cfg.c (gimplify_build3): Do not strip sign conversions,
118 leave useless conversion stripping to force_gimple_operand_gsi.
119 (gimplify_build2): Likewise.
120 (gimplify_build1): Likewise.
121
122 2018-06-15 Richard Biener <rguenther@suse.de>
123
124 PR middle-end/86076
125 * tree-cfg.c (move_stmt_op): unshare invariant addresses
126 before adjusting their block.
127
128 2018-06-15 Sebastian Huber <sebastian.huber@embedded-brains.de>
129
130 * config.gcc (riscv*-*-elf* | riscv*-*-rtems*): Use custom
131 multilibs for *-*-rtems*.
132 * config/riscv/t-rtems: New file.
133
134 2018-06-14 Jakub Jelinek <jakub@redhat.com>
135
136 PR middle-end/86122
137 * match.pd ((A +- CST1) +- CST2): Punt if last resort
138 unsigned_type_for returns NULL.
139
140 PR target/85945
141 * lower-subreg.c (find_decomposable_subregs): Don't decompose float
142 subregs of multi-word pseudos unless the float mode has word size.
143
144 2018-06-14 Richard Biener <rguenther@suse.de>
145
146 PR middle-end/86139
147 * tree-vect-generic.c (build_word_mode_vector_type): Remove
148 duplicate and harmful type_hash_canon.
149 * tree.c (type_hash_canon): Assert we didn't find ourselves.
150
151 2018-06-14 Richard Biener <rguenther@suse.de>
152
153 PR ipa/86124
154 * tree-ssa-struct-alias.c (create_variable_info_for): Handle
155 NULL cgraph_node.
156
157 2018-06-14 Sebastian Huber <sebastian.huber@embedded-brains.de>
158
159 * config/rtems.h (STDINT_LONG32): Define.
160
161 2018-06-13 Matthew Fortune <matthew.fortune@mips.com>
162 Prachi Godbole <prachi.godbole@imgtec.com>
163
164 * config/mips/mips-cpus.def: Define P6600.
165 * config/mips/mips-tables.opt: Regenerate.
166 * config/mips/mips.c (mips_ucbranch_type): New enum.
167 (mips_rtx_cost_data): Add support for P6600.
168 (mips_issue_rate): Likewise.
169 (mips_multipass_dfa_lookahead): Likewise.
170 (mips_avoid_hazard): Likewise.
171 (mips_reorg_process_insns): Likewise.
172 (mips_classify_branch_p6600): New function.
173 * config/mips/mips.h (TUNE_P6600): New define.
174 (MIPS_ISA_LEVEL_SPEC): Infer mips64r6 from p6600.
175 (ENABLE_LD_ST_PAIRS): Enable load/store bonding for p6600.
176 * config/mips/mips.md: Include p6600.md.
177 (processor): Add p6600.
178 * config/mips/p6600.md: New file.
179 * doc/invoke.texi: Add p6600 to supported architectures.
180
181 2018-06-13 Martin Sebor <msebor@redhat.com>
182
183 PR tree-optimization/86114
184 * gimple-fold.c (gimple_fold_builtin_strlen): Only handle LHS
185 of integer types.
186 * tree-ssa-strlen.c (maybe_set_strlen_range): Same.
187
188 2018-06-13 Richard Biener <rguenther@suse.de>
189
190 * tree-vect-patterns.c (vect_recog_vector_vector_shift_pattern):
191 Properly set vector type of the intermediate stmt.
192 * tree-vect-stmts.c (vectorizable_operation): The destination
193 var always has vectype_out type.
194
195 2018-06-13 Jeff Law <law@redhat.com>
196
197 * config/rl78/rl78.c (move_elim_pass): Use TDF_NONE rather than
198 integer 0 for argument to print_rtl_with_bb.
199 (rl78_reorg): Likewise.
200
201 2018-06-13 David Malcolm <dmalcolm@redhat.com>
202
203 * config/arc/arc.c (hwloop_optimize): Strengthen local "end_label"
204 from rtx to rtx_insn *.
205 * config/bfin/bfin.c (hwloop_optimize): Likewise for local
206 "label".
207 (add_sched_insns_for_speculation): Likewise for local "target",
208 converting usage of JUMP_LABEL to JUMP_LABEL_AS_INSN.
209 * config/c6x/c6x.c (reorg_split_calls): Strengthen param "call_labels"
210 from rtx_insn ** to rtx_code_label **.
211 (reorg_emit_nops): Likewise.
212 (c6x_reorg): Likewise for local "call_labels".
213 * config/sh/sh-protos.h (get_dest_uid): Strengthen 1st param from
214 rtx to rtx_insn *.
215 * config/sh/sh.c (dump_table): Strengthen local "lab" from rtx to
216 rtx_code_label *, adding safe_as_a <rtx_code_label *> casts to
217 the loops over LABEL_REFS.
218 (fixup_addr_diff_vecs): Add as_a <rtx_insn *> to usage of
219 braf_label.
220 (barrier_align): Convert usage of JUMP_LABEL to JUMP_LABEL_AS_INSN.
221 (get_dest_uid): Strengthen param "label" from rtx to rtx_insn *.
222 (split_branches): Strengthen local "olabel" from rtx to
223 rtx_insn *, adding a safe_as_a cast.
224 * emit-rtl.c (next_real_insn): Strengthen param from "rtx"
225 to "rtx_insn *".
226 (add_insn_after): Likewise for first two params.
227 (add_insn_before): Likewise.
228 (remove_insn): Likewise for param.
229 (emit_pattern_before_noloc): Likewise for second and third params.
230 (emit_jump_insn_before_noloc): Convert NULL_RTX to NULL.
231 (emit_call_insn_before_noloc): Likewise.
232 (emit_debug_insn_before_noloc): Strengthen "before" param from "rtx"
233 to "rtx_insn *".
234 (emit_barrier_before): Likewise.
235 (emit_label_before): Strengthen "label" param from "rtx" to
236 "rtx_code_label *". Strengthen "before" param from "rtx" to
237 "rtx_insn *".
238 (emit_insn_after_1): Strengthen "after" param from "rtx" to
239 "rtx_insn *".
240 (emit_pattern_after_noloc): Likewise.
241 (emit_insn_after_noloc): Likewise.
242 (emit_jump_insn_after_noloc): Likewise.
243 (emit_call_insn_after_noloc): Likewise.
244 (emit_debug_insn_after_noloc): Likewise.
245 (emit_barrier_after): Likewise.
246 (emit_label_after): Likewise for both params.
247 (emit_pattern_after_setloc): Likewise for "after" param. Convert
248 "loc" param from "int" to "location_t".
249 (emit_insn_after_setloc): Likewise.
250 (emit_jump_insn_after_setloc): Likewise.
251 (emit_call_insn_after_setloc): Likewise.
252 (emit_debug_insn_after_setloc): Likewise.
253 (emit_pattern_before_setloc): Likewise for "before" param. Convert
254 "loc" param from "int" to "location_t".
255 (emit_pattern_before): Convert NULL_RTX to NULL.
256 (emit_insn_before_setloc): Convert "loc" param from "int" to
257 "location_t".
258 (emit_jump_insn_before_setloc): Likewise.
259 (emit_call_insn_before_setloc): Likewise.
260 (emit_debug_insn_before_setloc): Strengthen "before" param from rtx to
261 rtx_insn *. Convert "loc" param from "int" to "location_t".
262 * rtl.h (emit_insn_before_setloc, emit_jump_insn_before_setloc,
263 emit_call_insn_before_setloc, emit_debug_insn_before_setloc):
264 Convert 3rd param from "int" to "location_t".
265 (emit_barrier_before, emit_barrier_after, next_real_insn):
266 Strengthen param from rtx to rtx_insn *.
267 (emit_label_before): Strengthen 1st param from "rtx" to
268 "rtx_code_label *". Strengthen 2nd param from "rtx" to
269 "rtx_insn *".
270 (emit_insn_after_noloc, emit_jump_insn_after_noloc,
271 emit_call_insn_after_noloc, emit_debug_insn_after_noloc):
272 Strengthen 2nd param from "rtx" to "rtx_insn *".
273 (emit_insn_after_setloc, emit_jump_insn_after_setloc)
274 emit_call_insn_after_setloc, emit_debug_insn_after_setloc):
275 Likewise. Convert 3rd param from "int" to "location_t".
276 (emit_label_after): Strengthen 1st param from "rtx" to
277 "rtx_code_label *".
278 (next_real_insn, remove_insn): Strengthen param from "rtx" to
279 "rtx_insn *".
280 (add_insn_before, add_insn_after): Strengthen 1st and 2nd params
281 from "rtx" to "rtx_insn *".
282
283 2018-06-13 Jan Hubicka <hubicka@gcc.gnu.org>
284
285 * cgraph.c (cgraph_node::get_untransformed_body): Dump function
286 bodies streamed in with -Q.
287 * dumpfile.c (dump_files): Add lto-stream-out dump file.
288 * dumpfile.h (tree_dump_index): Add lto_stream_out.
289 * gimple-streamer-out.c: Include gimple-pretty-print.h
290 (output_bb): Dump stmts streamed.
291 * lto-section-out.c: Include print-tree.h
292 (lto_begin_section): Dump sections created.
293 (lto_output_decl_index): Dump decl encoded.
294 * lto-streamer-out.c: Include print-tree.h
295 (create_output_block): Dump output block created.
296 (DFS::DFS_write_tree_body): Dump DFS SCCs streamed.
297 (output_function): Dump function output.
298 (output_constructor): Dump constructor streamed.
299 (write_global_stream): Output indexes encoded.
300 (produce_asm_for_decls): Dump streams encoded.
301 * lto-streamer.c (streamer_dump_file): New global var.
302 * lto-streamer.h (streamer_dump_file): Declare.
303 * passes.c (ipa_write_summaries): Initialize streamer dump.
304 * varpool.c (varpool_node::get_constructor): Dump constructors streamed
305 in.
306
307 2018-06-13 Eric Botcazou <ebotcazou@adacore.com>
308
309 PR target/86048
310 * config/i386/winnt.c (i386_pe_seh_cold_init): Do not emit negative
311 offsets for register save directives. Emit a second batch of save
312 directives, if need be, when the function accesses prior frames.
313
314 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
315
316 * config/arc/fpu.md (fmasf4): Force operand to register.
317 (fnmasf4): Likewise.
318
319 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
320
321 * config/arc/arc-protos.h (arc_pad_return): Remove.
322 * config/arc/arc.c (machine_function): Remove force_short_suffix
323 and size_reason.
324 (arc_print_operand): Adjust printing of '&'.
325 (arc_verify_short): Remove conditional printing of short suffix.
326 (arc_final_prescan_insn): Remove reference to size_reason.
327 (pad_return): New function.
328 (arc_reorg): Call pad_return.
329 (arc_pad_return): Remove.
330 (arc_init_machine_status): Remove reference to force_short_suffix.
331 * config/arc/arc.md (vunspec): Add VUNSPEC_ARC_BLOCKAGE.
332 (attr length): When attribute iscompact is true force to 2
333 regardless; in the case of maybe check if we want to force the
334 instruction to have 4 bytes length.
335 (nopv): Change it to generate 4 byte long nop as well.
336 (blockage): New pattern.
337 (simple_return): Remove call to arc_pad_return.
338 (p_return_i): Likewise.
339
340 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
341
342 * config/arc/elf.h (LINK_GCC_C_SEQUENCE_SPEC): Define.
343
344 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
345
346 * config/arc/builtins.def (SYNC): SYNC instruction is valid on all
347 ARC cores.
348
349 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
350
351 * config/arc/arc.c (atomic_exchangesi): EX instruction is default
352 for ARC700 and ARCv2.
353
354 2018-06-13 Chenghua Xu <paul.hua.gm@gmail.com>
355
356 PR target/86076
357 * config/mips/loongson.md (vec_setv4hi): Gen_lowpart for
358 operands[2] instead of operands[1].
359
360
361 2018-06-12 Richard Sandiford <richard.sandiford@linaro.org>
362
363 * lra-constraints.c (simplify_operand_subreg): In the paradoxical
364 case, check whether the outer register overlaps an unallocatable
365 register, not just whether it fits the required class.
366
367 2018-06-12 Richard Sandiford <richard.sandiford@linaro.org>
368
369 * poly-int.h (can_div_trunc_p): Add new overload in which all values
370 are poly_ints.
371 * alias.c (get_addr): Extend CONST_INT handling to poly_int_rtx_p.
372 (memrefs_conflict_p): Likewise.
373 (init_alias_analysis): Likewise.
374 * cfgexpand.c (expand_debug_expr): Likewise.
375 * combine.c (combine_simplify_rtx, force_int_to_mode): Likewise.
376 * cse.c (fold_rtx): Likewise.
377 * explow.c (adjust_stack, anti_adjust_stack): Likewise.
378 * expr.c (emit_block_move_hints): Likewise.
379 (clear_storage_hints, push_block, emit_push_insn): Likewise.
380 (store_expr_with_bounds, reduce_to_bit_field_precision): Likewise.
381 (emit_group_load_1): Use rtx_to_poly_int64 for group offsets.
382 (emit_group_store): Likewise.
383 (find_args_size_adjust): Use strip_offset. Use rtx_to_poly_int64
384 to read the PRE/POST_MODIFY increment.
385 * calls.c (store_one_arg): Use strip_offset.
386 * rtlanal.c (rtx_addr_can_trap_p_1): Extend CONST_INT handling to
387 poly_int_rtx_p.
388 (set_noop_p): Use rtx_to_poly_int64 for the elements selected
389 by a VEC_SELECT.
390 * simplify-rtx.c (avoid_constant_pool_reference): Use strip_offset.
391 (simplify_binary_operation_1): Extend CONST_INT handling to
392 poly_int_rtx_p.
393 * var-tracking.c (compute_cfa_pointer): Take a poly_int64 rather
394 than a HOST_WIDE_INT.
395 (hard_frame_pointer_adjustment): Change from HOST_WIDE_INT to
396 poly_int64.
397 (adjust_mems, add_stores): Update accodingly.
398 (vt_canonicalize_addr): Track polynomial offsets.
399 (emit_note_insn_var_location): Likewise.
400 (vt_add_function_parameter): Likewise.
401 (vt_initialize): Likewise.
402
403 2018-06-12 Jeff Law <law@redhat.com>
404
405 * config.gcc (alpha*-*-freebsd*): Remove.
406 * config/alpha/freebsd.h: Remove.
407
408 2018-06-12 David Malcolm <dmalcolm@redhat.com>
409
410 PR other/69968
411 * spellcheck-tree.c (levenshtein_distance): Rename to...
412 (get_edit_distance): ...this, and update for underlying renaming.
413 * spellcheck-tree.h (levenshtein_distance): Rename to...
414 (get_edit_distance): ...this.
415 * spellcheck.c (levenshtein_distance): Rename to...
416 (get_edit_distance): ...this. Convert from Levenshtein distance
417 to Damerau-Levenshtein distance by supporting transpositions of
418 adjacent characters. Rename "v1" to "v_next" and "v0" to
419 "v_one_ago".
420 (selftest::levenshtein_distance_unit_test_oneway): Rename to...
421 (selftest::test_edit_distance_unit_test_oneway): ...this, and
422 update for underlying renaming.
423 (selftest::levenshtein_distance_unit_test): Rename to...
424 (selftest::test_get_edit_distance_unit): ...this, and update for
425 underlying renaming.
426 (selftest::test_find_closest_string): Add example from PR 69968
427 where transposition helps
428 (selftest::test_metric_conditions): Update for renaming.
429 (selftest::test_metric_conditions): Likewise.
430 (selftest::spellcheck_c_tests): Likewise.
431 * spellcheck.h (levenshtein_distance): Rename both overloads to...
432 (get_edit_distance): ...this.
433 (best_match::consider): Update for renaming.
434
435 2018-06-12 Martin Sebor <msebor@redhat.com>
436
437 PR tree-optimization/85259
438 * builtins.c (compute_objsize): Handle constant offsets.
439 * gimple-ssa-warn-restrict.c (maybe_diag_offset_bounds): Return
440 true iff a warning has been issued.
441 * gimple.h (gimple_nonartificial_location): New function.
442 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Call
443 gimple_nonartificial_location and handle -Wno-system-headers.
444 (handle_builtin_stxncpy): Same.
445
446 2018-06-12 Martin Sebor <msebor@redhat.com>
447
448 PR c/85931
449 * fold-const.c (operand_equal_p): Handle SAVE_EXPR.
450
451 2018-06-12 Will Schmidt <will_schmidt@vnet.ibm.com>
452
453 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
454 BUILTIN_VEC_XST entries for pointer to double and long long.
455
456 2018-06-12 H.J. Lu <hongjiu.lu@intel.com>
457
458 PR target/85990
459 * config/i386/gnu-user.h (TARGET_THREAD_SPLIT_STACK_OFFSET):
460 Update comments.
461 * config/i386/gnu-user64.h (TARGET_THREAD_SPLIT_STACK_OFFSET):
462 Likewise.
463
464 2018-06-12 Martin Liska <mliska@suse.cz>
465
466 * doc/options.texi: Document IntegerRange.
467
468 2018-06-12 Martin Liska <mliska@suse.cz>
469
470 * config/i386/i386.opt: Make MPX-related options as Deprecated.
471 * opt-functions.awk: Handle Deprecated flag.
472 * opts-common.c (decode_cmdline_option): Handle cl_deprecated
473 and report error.
474 (read_cmdline_option): Report warning for a deprecated option.
475 * opts.h (struct cl_option): Add new field cl_deprecated.
476 (CL_ERR_DEPRECATED): New.
477
478 2018-06-12 Martin Liska <mliska@suse.cz>
479
480 * doc/options.texi: Document Deprecated option flag.
481
482 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
483
484 * config/arc/arc-arch.h (arc_extras): New enum.
485 (arc_cpu_t):Add field extra.
486 (arc_cpu_types): Consider the extras.
487 * config/arc/arc-cpus.def: Add extras info.
488 * config/arc/arc-opts.h (processor_type): Consider extra field.
489 * config/arc/arc.c (arc_override_options): Handle extra field.
490
491 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
492
493 * config/arc/arc-arch.h: Update ARC_OPTX macro.
494 * config/arc/arc-options.def (ARC_OPTX): Introduce a new doc
495 field.
496 * config/arc/arc.c (arc_init): Update pic warning.
497 (irq_range): Update irq range parsing warnings.
498 (arc_override_options): Update various warning messages.
499 (arc_handle_aux_attribute): Likewise.
500
501 2018-06-12 Robert Suchanek <robert.suchanek@mips.com>
502
503 * config/mips/i6400.md (i6400_fpu_fadd): Remove frint.
504
505 2018-06-12 Jozef Lawrynowicz <jozef.l@mittosystems.com>
506
507 * doc/sourcebuild.texi: Document usage of line number 0 in verify
508 compiler messages directives.
509
510 2018-06-12 Matthew Fortune <mfortune@gmail.com>
511
512 * config/mips/mips-cpus.def: New MIPS_CPU for i6500.
513 * config/mips/mips-tables.opt: Regenerate.
514 * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Mark i6500 as
515 mips64r6.
516 * doc/invoke.texi: Document -march=i6500.
517
518 2018-06-12 Prachi Godbole <prachi.godbole@imgtec.com>
519
520 * config/mips/i6400.md (i6400_gpmuldiv): Remove cpu_unit.
521 (i6400_gpmul): Add cpu_unit.
522 (i6400_gpdiv): Likewise.
523 (i6400_msa_add_d): Update reservations.
524 (i6400_msa_int_add) Likewise.
525 (i6400_msa_short_logic3) Likewise.
526 (i6400_msa_short_logic2) Likewise.
527 (i6400_msa_short_logic) Likewise.
528 (i6400_msa_move) Likewise.
529 (i6400_msa_cmp) Likewise.
530 (i6400_msa_short_float2) Likewise.
531 (i6400_msa_div_d) Likewise.
532 (i6400_msa_long_logic1) Likewise.
533 (i6400_msa_long_logic2) Likewise.
534 (i6400_msa_mult) Likewise.
535 (i6400_msa_long_float2) Likewise.
536 (i6400_msa_long_float4) Likewise.
537 (i6400_msa_long_float5) Likewise.
538 (i6400_msa_long_float8) Likewise.
539 (i6400_fpu_fadd): Include frint type.
540 (i6400_fpu_store): New define_insn_reservation.
541 (i6400_fpu_load): Likewise.
542 (i6400_fpu_move): Likewise.
543 (i6400_fpu_fcmp): Likewise.
544 (i6400_fpu_fmadd): Likewise.
545 (i6400_int_mult): Include imul3nc type and update reservation.
546 (i6400_int_div): Include idiv3 type and update reservation.
547 (i6400_int_load): Update to check type not move_type.
548 (i6400_int_store): Likewise.
549 (i6400_int_prefetch): Set zero latency.
550
551 2018-06-12 Eric Botcazou <ebotcazou@adacore.com>
552
553 * gcc.c: Document new %@{...} sequence.
554 (LINK_COMMAND_SPEC): Use it for the -L switches.
555 (cpp_unique_options): Use it for the -I switches.
556 (at_file_argbuf): New global variable.
557 (in_at_file): Likewise.
558 (alloc_args): Create at_file_argbuf.
559 (clear_args): Truncate at_file_argbuf.
560 (store_arg): If in_at_file, push the argument onto at_file_argbuf.
561 (open_at_file): New function.
562 (close_at_file): Likewise.
563 (create_at_file): Delete.
564 (do_spec_1) <'i'>: Use open_at_file/close_at_file.
565 <'o'>: Likewise.
566 <'@'>: New case.
567 (validate_switches_from_spec): Deal with %@{...} sequence.
568 (validate_switches): Likewise.
569 (driver::finalize): Call clear_args.
570
571 2018-06-11 Rasmus Villemoes <rasmus.villemoes@prevas.dk>
572
573 * config/vx-common.h (USE_TM_CLONE_REGISTRY): #define to 0.
574
575 2018-06-11 Martin Sebor <msebor@redhat.com>
576
577 * doc/invoke.texi (-Wall): List -Wc++17-compat.
578 (Wno-class-memaccess): Add @opindex.
579 (Wno-templates, Wno-multiple-inheritance): Same.
580 (Wno-virtual-inheritance, Wno-namespaces): Same.
581 (Wno-pedantic, Wno-chkp, Wcoverage-mismatch): Same.
582 (Wno-format-overflow, Wno-format-truncation): Same.
583 (Wno-unused-local-typedefs, Walloc-size-larger-than): Same.
584 (Wno-alloc-size-larger-than, Wframe-larger-than): Same
585 (Wno-stack-usage, Wno-c++-compat, Wno-c++11-compat): Same.
586 (Wno-c++14-compat, Wno-c++17-compat, Wno-openmp-simd): Same.
587 (Wno-unsuffixed-float-constants, Wno-addr-space-convert): Same.
588 (Wno-misspelled-isr): Same.
589
590 2018-06-11 Martin Sebor <msebor@redhat.com>
591
592 * PR tree-optimization/86083
593 * tree-ssa-strlen.c (handle_char_store): Use tree_expr_nonzero_p.
594
595 2018-06-11 Zhouyi Zhou <zhouzhouyi@gmail.com>
596
597 * tree-eh.c (lower_eh_constructs_2): Add a comma to comment.
598
599 2018-06-11 Segher Boessenkool <segher@kernel.crashing.org>
600
601 PR target/85755
602 * config/rs6000/rs6000.md (*movdi_internal32): Put constraint modifiers
603 on the correct operand.
604 (*movdi_internal64): Ditto.
605
606 2018-06-11 Martin Liska <mliska@suse.cz>
607
608 PR tree-optimization/86089
609 * tree-ssa-strlen.c (get_string_length): Move back removed hunk.
610
611 2018-06-11 Julia Koval <julia.koval@intel.com>
612
613 * config/i386/vaesintrin.h (_mm_aesdec_epi128, _mm_aesdeclast_epi128)
614 _mm_aesenc_epi128, _mm_aesenclast_epi128: Remove.
615 * config/i386/vpclmulqdqintrin.h (_mm_clmulepi64_epi128): Remove.
616
617 2018-06-11 Olivier Hainque <hainque@adacore.com>
618
619 * dwarf2out.c (gen_compile_unit_die): Fallout to DW_LANG_Ada83
620 for Ada with strict dwarf2.
621
622 2018-06-08 Peter Bergner <bergner@vnet.ibm.com>
623
624 PR target/85755
625 * config/rs6000/rs6000.c (mem_operand_gpr): Enable PRE_INC and PRE_DEC
626 addresses.
627
628 2018-06-08 Jan Hubicka <hubicka@ucw.cz>
629
630 * dumpfile.c (FIRST_ME_AUTO_NUMBERED_DUMP): Bump to 4.
631
632 2018-06-08 David Edelsohn <dje.gcc@gmail.com>
633
634 * config/rs6000/rs6000.c (rs6000_passes_ieee128): Protect with #if
635 TARGET_ELF.
636
637 2018-06-08 Martin Liska <mliska@suse.cz>
638
639 * tree-cfg.h (debug_function): Fix argument type to match
640 implementation.
641
642 2018-06-08 Martin Liska <mliska@suse.cz>
643
644 * config/powerpcspe/powerpcspe.c (rs6000_xcoff_visibility):
645 Remove usage of MPX-related (and removed) fields.
646 * config/rs6000/rs6000.c (rs6000_xcoff_visibility): Likewise.
647
648 2018-06-08 David Malcolm <dmalcolm@redhat.com>
649
650 * cfg.c (debug): Use TDF_NONE rather than 0.
651 * cfghooks.c (debug): Likewise.
652 * dumpfile.c (DUMP_FILE_INFO): Likewise; also for OPTGROUP.
653 (struct dump_option_value_info): Convert to...
654 (struct kv_pair): ...this template type.
655 (dump_options): Convert to kv_pair<dump_flags_t>; use TDF_NONE
656 rather than 0.
657 (optinfo_verbosity_options): Likewise.
658 (optgroup_options): Convert to kv_pair<optgroup_flags_t>; use
659 OPTGROUP_NONE.
660 (gcc::dump_manager::dump_register): Use optgroup_flags_t rather
661 than int for "optgroup_flags" param.
662 (dump_generic_expr_loc): Use dump_flags_t rather than int for
663 "dump_kind" param.
664 (dump_dec): Likewise.
665 (dump_finish): Use TDF_NONE rather than 0.
666 (gcc::dump_manager::opt_info_enable_passes): Use optgroup_flags_t
667 rather than int for "optgroup_flags" param. Use TDF_NONE rather
668 than 0. Update for change to option_ptr.
669 (opt_info_switch_p_1): Convert "optgroup_flags" param from int *
670 to optgroup_flags_t *. Use TDF_NONE and OPTGROUP_NONE rather than
671 0. Update for changes to optinfo_verbosity_options and
672 optgroup_options.
673 (opt_info_switch_p): Convert optgroup_flags from int to
674 optgroup_flags_t.
675 (dump_basic_block): Use dump_flags_t rather than int
676 for "dump_kind" param.
677 * dumpfile.h (TDF_ADDRESS, TDF_SLIM, TDF_RAW, TDF_DETAILS,
678 TDF_STATS, TDF_BLOCKS, TDF_VOPS, TDF_LINENO, TDF_UID)
679 TDF_STMTADDR, TDF_GRAPH, TDF_MEMSYMS, TDF_RHS_ONLY, TDF_ASMNAME,
680 TDF_EH, TDF_NOUID, TDF_ALIAS, TDF_ENUMERATE_LOCALS, TDF_CSELIB,
681 TDF_SCEV, TDF_GIMPLE, TDF_FOLDING, MSG_OPTIMIZED_LOCATIONS,
682 MSG_MISSED_OPTIMIZATION, MSG_NOTE, MSG_ALL, TDF_COMPARE_DEBUG,
683 TDF_NONE): Convert from macros to...
684 (enum dump_flag): ...this new enum.
685 (dump_flags_t): Update to use enum.
686 (operator|, operator&, operator~, operator|=, operator&=):
687 Implement for dump_flags_t.
688 (OPTGROUP_NONE, OPTGROUP_IPA, OPTGROUP_LOOP, OPTGROUP_INLINE,
689 OPTGROUP_OMP, OPTGROUP_VEC, OPTGROUP_OTHER, OPTGROUP_ALL):
690 Convert from macros to...
691 (enum optgroup_flag): ...this new enum.
692 (optgroup_flags_t): New typedef.
693 (operator|, operator|=): Implement for optgroup_flags_t.
694 (struct dump_file_info): Convert field "alt_flags" to
695 dump_flags_t. Convert field "optgroup_flags" to
696 optgroup_flags_t.
697 (dump_basic_block): Use dump_flags_t rather than int for param.
698 (dump_generic_expr_loc): Likewise.
699 (dump_dec): Likewise.
700 (dump_register): Convert param "optgroup_flags" to
701 optgroup_flags_t.
702 (opt_info_enable_passes): Likewise.
703 * early-remat.c (early_remat::dump_edge_list): Use TDF_NONE rather
704 than 0.
705 * gimple-pretty-print.c (debug): Likewise.
706 * gimple-ssa-store-merging.c (bswap_replace): Likewise.
707 (merged_store_group::apply_stores): Likewise.
708 * gimple-ssa-strength-reduction.c (insert_initializers): Likewise.
709 * gimple.c (verify_gimple_pp): Likewise.
710 * graphite-poly.c (print_pbb_body): Likewise.
711 * passes.c (pass_manager::register_one_dump_file): Convert
712 local "optgroup_flags" to optgroup_flags_t.
713 * print-tree.c (print_node): Use TDF_NONE rather than 0.
714 (debug): Likewise.
715 (debug_body): Likewise.
716 * tree-pass.h (struct pass_data): Convert field "optgroup_flags"
717 to optgroup_flags_t.
718 * tree-pretty-print.c (print_struct_decl): Use TDF_NONE rather
719 than 0.
720 * tree-ssa-math-opts.c (convert_mult_to_fma_1): Likewise.
721 (convert_mult_to_fma): Likewise.
722 * tree-ssa-reassoc.c (undistribute_ops_list): Likewise.
723 * tree-ssa-sccvn.c (vn_eliminate): Likewise.
724 * tree-vect-data-refs.c (dump_lower_bound): Convert param
725 "dump_kind" to dump_flags_t.
726
727 2018-06-08 Segher Boessenkool <segher@kernel.crashing.org>
728
729 * config/rs6000/rs6000.c (min, max): Delete.
730
731 2018-06-08 Segher Boessenkool <segher@kernel.crashing.org>
732
733 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete mention of
734 -mabi=spe and -mabi=no-spe.
735
736 2018-06-08 Martin Liska <mliska@suse.cz>
737
738 * ipa-pure-const.c (propagate_pure_const): Use ::get at places
739 where we expect an existing summary.
740
741 2018-06-08 Martin Liska <mliska@suse.cz>
742
743 * ipa-inline-analysis.c (simple_edge_hints): Use ::get method.
744 * ipa-inline.h (estimate_edge_growth): Likewise.
745
746 2018-06-08 Martin Liska <mliska@suse.cz>
747
748 * cgraph.c (function_version_hasher::hash): Use
749 cgraph_node::get_uid ().
750 (function_version_hasher::equal):
751 * cgraph.h (cgraph_node::get_uid): New method.
752 * ipa-inline.c (update_caller_keys): Use
753 cgraph_node::get_uid ().
754 (update_callee_keys): Likewise.
755 * ipa-utils.c (searchc): Likewise.
756 (ipa_reduced_postorder): Likewise.
757 * lto-cgraph.c (input_node): Likewise.
758 * passes.c (is_pass_explicitly_enabled_or_disabled): Likewise.
759 * symbol-summary.h (symtab_insertion): Likewise.
760 (symtab_removal): Likewise.
761 (symtab_duplication): Likewise.
762 * tree-pretty-print.c (dump_function_header): Likewise.
763 * tree-sra.c (convert_callers_for_node): Likewise.
764
765 2018-06-08 Martin Liska <mliska@suse.cz>
766
767 * cgraph.c (symbol_table::create_edge): Always assign a new
768 unique number.
769 (symbol_table::free_edge): Do not recycle numbers.
770 * cgraph.h (cgraph_edge::get): New method.
771 * symbol-summary.h (symtab_removal): Use it.
772 (symtab_duplication): Likewise.
773 (call_summary::hashable_uid): Remove.
774
775 2018-06-08 Martin Liska <mliska@suse.cz>
776
777 * ipa-inline-analysis.c (inline_edge_removal_hook): Remove.
778 (initialize_growth_caches): Remove.
779 (free_growth_caches): Likewise.
780 (do_estimate_edge_time): Use edge_growth_cache.
781 (do_estimate_edge_size): Likewise.
782 (do_estimate_edge_hints): Likewise.
783 * ipa-inline.c (reset_edge_caches): Likewise.
784 (recursive_inlining): Likewise.
785 (inline_small_functions): Likewise.
786 * ipa-inline.h (initialize_growth_caches): Remove.
787 (estimate_edge_size): Likewise.
788 (estimate_edge_time): Likewise.
789 (estimate_edge_hints): Likewise.
790 (reset_edge_growth_cache): Likewise.
791 * symbol-summary.h (call_summary::remove): New method.
792
793 2018-06-08 Martin Liska <mliska@suse.cz>
794
795 * ipa-cp.c (class edge_clone_summary): New summary.
796 (grow_edge_clone_vectors): Remove.
797 (ipcp_edge_duplication_hook): Remove.
798 (class edge_clone_summary_t): New call_summary class.
799 (ipcp_edge_removal_hook): Remove.
800 (edge_clone_summary_t::duplicate): New function.
801 (get_next_cgraph_edge_clone): Use edge_clone_summaries.
802 (create_specialized_node): Likewise.
803 (ipcp_driver): Initialize edge_clone_summaries and do not
804 register hooks.
805
806 2018-06-08 Martin Liska <mliska@suse.cz>
807
808 * symbol-summary.h (get): New function.
809 (call_summary::m_initialize_when_cloning): New class member.
810
811 2018-06-08 Martin Liska <mliska@suse.cz>
812
813 * cgraph.c (cgraph_node::remove): Do not recycle uid.
814 * cgraph.h (symbol_table::release_symbol): Do not pass uid.
815 (symbol_table::allocate_cgraph_symbol): Do not set uid.
816 * passes.c (uid_hash_t): Record removed_nodes by their uids.
817 (remove_cgraph_node_from_order): Use the removed_nodes set.
818 (do_per_function_toporder): Likwise.
819 * symbol-summary.h (symtab_insertion): Use cgraph_node::uid
820 instead of summary_uid.
821 (symtab_removal): Likewise.
822 (symtab_duplication): Likewise.
823
824 2018-06-08 Martin Liska <mliska@suse.cz>
825
826 * ipa-cp.c (ipcp_store_bits_results): Use
827 ipcp_transformation_sum.
828 (ipcp_store_vr_results): Likewise.
829 * ipa-prop.c (ipcp_grow_transformations_if_necessary): Renamed
830 to ...
831 (ipcp_transformation_initialize): ... this.
832 (ipa_set_node_agg_value_chain):
833 (ipa_node_params_t::duplicate): Use ipcp_transformation_sum.
834 (write_ipcp_transformation_info): Likewise.
835 (read_ipcp_transformation_info): Likewise.
836 (ipcp_update_bits): Likewise.
837 (ipcp_update_vr): Likewise.
838 (ipcp_transform_function): Likewise.
839 * ipa-prop.h: Rename ipcp_transformation_summary to
840 ipcp_transformation.
841 (class ipcp_transformation_t): New function summary.
842 (ipcp_get_transformation_summary): Use ipcp_transformation_sum.
843 (ipa_get_agg_replacements_for_node): Likewise.
844
845 2018-06-08 Martin Liska <mliska@suse.cz>
846
847 * ipa-pure-const.c (struct funct_state_d): Do it class instead
848 of struct.
849 (class funct_state_summary_t): New function_summary class.
850 (has_function_state): Remove.
851 (get_function_state): Likewise.
852 (set_function_state): Likewise.
853 (add_new_function): Likewise.
854 (funct_state_summary_t::insert): New function.
855 (duplicate_node_data): Remove.
856 (remove_node_data): Remove.
857 (funct_state_summary_t::duplicate): New function.
858 (register_hooks): Create new funct_state_summaries.
859 (pure_const_generate_summary): Use it.
860 (pure_const_write_summary): Likewise.
861 (pure_const_read_summary): Likewise.
862 (propagate_pure_const): Likewise.
863 (propagate_nothrow): Likewise.
864 (dump_malloc_lattice): Likewise.
865 (propagate_malloc): Likewise.
866 (execute): Do not register hooks, just remove summary
867 instead.
868 (pass_ipa_pure_const::pass_ipa_pure_const): Simplify
869 constructor.
870
871 2018-06-08 Martin Liska <mliska@suse.cz>
872
873 * ipa-reference.c (remove_node_data): Remove.
874 (duplicate_node_data): Likewise.
875 (class ipa_ref_var_info_summary_t): New class.
876 (class ipa_ref_opt_summary_t): Likewise.
877 (get_reference_vars_info): Use ipa_ref_var_info_summaries.
878 (get_reference_optimization_summary): Use
879 ipa_ref_opt_sum_summaries.
880 (set_reference_vars_info): Remove.
881 (set_reference_optimization_summary): Likewise.
882 (ipa_init): Create summaries.
883 (init_function_info): Use function summary.
884 (ipa_ref_opt_summary_t::duplicate): New function.
885 (ipa_ref_opt_summary_t::remove): New function.
886 (get_read_write_all_from_node): Fix GNU coding style.
887 (propagate): Use function summary.
888 (write_node_summary_p): Fix GNU coding style.
889 (stream_out_bitmap): Likewise.
890 (ipa_reference_read_optimization_summary): Use function summary.
891 (ipa_reference_c_finalize): Do not release hooks.
892
893 2018-06-08 Martin Liska <mliska@suse.cz>
894
895 * ipa-fnsummary.c (dump_ipa_call_summary): Use ::get method.
896 (analyze_function_body): Extract multiple calls of get_create.
897 * ipa-inline-analysis.c (simple_edge_hints): Likewise.
898 * ipa-inline.c (recursive_inlining): Use ::get method.
899 * ipa-inline.h (estimate_edge_growth): Likewise.
900
901 2018-06-08 Martin Liska <mliska@suse.cz>
902
903 * hsa-common.h (enum hsa_function_kind): Rename HSA_NONE to
904 HSA_INVALID.
905 (hsa_function_summary::hsa_function_summary): Use the new enum
906 value.
907 (hsa_gpu_implementation_p): Use hsa_summaries::get.
908 * hsa-gen.c (hsa_get_host_function): Likewise.
909 (get_brig_function_name): Likewise.
910 * ipa-hsa.c (process_hsa_functions): Likewise.
911 (ipa_hsa_write_summary): Likewise.
912 * symbol-summary.h (symtab_duplication): Use ::get function/
913 (get): New function.
914
915 2018-06-08 Martin Liska <mliska@suse.cz>
916
917 * config/i386/i386.c (ix86_can_inline_p): Use get_create instead
918 of get.
919 * hsa-common.c (hsa_summary_t::link_functions): Likewise.
920 (hsa_register_kernel): Likewise.
921 * hsa-common.h (hsa_gpu_implementation_p): Likewise.
922 * hsa-gen.c (hsa_get_host_function): Likewise.
923 (get_brig_function_name): Likewise.
924 (generate_hsa): Likewise.
925 (pass_gen_hsail::execute): Likewise.
926 * ipa-cp.c (ipcp_cloning_candidate_p): Likewise.
927 (devirtualization_time_bonus): Likewise.
928 (ipcp_propagate_stage): Likewise.
929 * ipa-fnsummary.c (redirect_to_unreachable): Likewise.
930 (edge_set_predicate): Likewise.
931 (evaluate_conditions_for_known_args): Likewise.
932 (evaluate_properties_for_edge): Likewise.
933 (ipa_fn_summary::reset): Likewise.
934 (ipa_fn_summary_t::duplicate): Likewise.
935 (dump_ipa_call_summary): Likewise.
936 (ipa_dump_fn_summary): Likewise.
937 (analyze_function_body): Likewise.
938 (compute_fn_summary): Likewise.
939 (estimate_edge_devirt_benefit): Likewise.
940 (estimate_edge_size_and_time): Likewise.
941 (estimate_calls_size_and_time): Likewise.
942 (estimate_node_size_and_time): Likewise.
943 (inline_update_callee_summaries): Likewise.
944 (remap_edge_change_prob): Likewise.
945 (remap_edge_summaries): Likewise.
946 (ipa_merge_fn_summary_after_inlining): Likewise.
947 (ipa_update_overall_fn_summary): Likewise.
948 (read_ipa_call_summary): Likewise.
949 (inline_read_section): Likewise.
950 (write_ipa_call_summary): Likewise.
951 (ipa_fn_summary_write): Likewise.
952 (ipa_free_fn_summary): Likewise.
953 * ipa-hsa.c (process_hsa_functions): Likewise.
954 (ipa_hsa_write_summary): Likewise.
955 (ipa_hsa_read_section): Likewise.
956 * ipa-icf.c (sem_function::merge): Likewise.
957 * ipa-inline-analysis.c (simple_edge_hints): Likewise.
958 (do_estimate_edge_time): Likewise.
959 (estimate_size_after_inlining): Likewise.
960 (estimate_growth): Likewise.
961 (growth_likely_positive): Likewise.
962 * ipa-inline-transform.c (clone_inlined_nodes): Likewise.
963 (inline_call): Likewise.
964 * ipa-inline.c (caller_growth_limits): Likewise.
965 (can_inline_edge_p): Likewise.
966 (can_inline_edge_by_limits_p): Likewise.
967 (compute_uninlined_call_time): Likewise.
968 (compute_inlined_call_time): Likewise.
969 (want_inline_small_function_p): Likewise.
970 (edge_badness): Likewise.
971 (update_caller_keys): Likewise.
972 (update_callee_keys): Likewise.
973 (recursive_inlining): Likewise.
974 (inline_small_functions): Likewise.
975 (inline_to_all_callers_1): Likewise.
976 (dump_overall_stats): Likewise.
977 (early_inline_small_functions): Likewise.
978 (early_inliner): Likewise.
979 * ipa-inline.h (estimate_edge_growth): Likewise.
980 * ipa-profile.c (ipa_propagate_frequency_1): Likewise.
981 * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
982 * ipa-prop.h (IPA_NODE_REF): Likewise.
983 (IPA_EDGE_REF): Likewise.
984 * ipa-pure-const.c (malloc_candidate_p): Likewise.
985 (propagate_malloc): Likewise.
986 * ipa-split.c (execute_split_functions): Likewise.
987 * symbol-summary.h: Rename get to get_create.
988 (get): Likewise.
989 (get_create): Likewise.
990 * tree-sra.c (ipa_sra_preliminary_function_checks): Likewise.
991
992 2018-06-08 Martin Liska <mliska@suse.cz>
993
994 * symbol-summary.h (release): Move definition out of class
995 declaration.
996 (symtab_removal): Likewise.
997 (symtab_duplication): Likewise.
998
999 2018-06-08 Martin Liska <mliska@suse.cz>
1000
1001 * symbol-summary.h (function_summary): Move constructor
1002 implementation out of class declaration.
1003 (release): Likewise.
1004 (symtab_insertion): Likewise.
1005 (symtab_removal): Likewise.
1006 (symtab_duplication): Likewise.
1007 (get): Likewise.
1008
1009 2018-06-08 Martin Liska <mliska@suse.cz>
1010
1011 * Makefile.in: Remove support for MPX (macros, related functions,
1012 fields in cgraph_node, ...).
1013 * builtin-types.def (BT_BND): Likewise.
1014 (BT_FN_BND_CONST_PTR): Likewise.
1015 (BT_FN_CONST_PTR_BND): Likewise.
1016 (BT_FN_VOID_PTR_BND): Likewise.
1017 (BT_FN_BND_CONST_PTR_SIZE): Likewise.
1018 (BT_FN_VOID_CONST_PTR_BND_CONST_PTR): Likewise.
1019 * builtins.c (expand_builtin_memcpy_with_bounds): Likewise.
1020 (expand_builtin_mempcpy_with_bounds): Likewise.
1021 (expand_builtin_memset_with_bounds): Likewise.
1022 (expand_builtin_memset_args): Likewise.
1023 (std_expand_builtin_va_start): Likewise.
1024 (expand_builtin): Likewise.
1025 (expand_builtin_with_bounds): Likewise.
1026 * builtins.def (DEF_BUILTIN_CHKP): Likewise.
1027 (DEF_LIB_BUILTIN_CHKP): Likewise.
1028 (DEF_EXT_LIB_BUILTIN_CHKP): Likewise.
1029 (DEF_CHKP_BUILTIN): Likewise.
1030 (BUILT_IN_MEMCPY): Likewise.
1031 (BUILT_IN_MEMMOVE): Likewise.
1032 (BUILT_IN_MEMPCPY): Likewise.
1033 (BUILT_IN_MEMSET): Likewise.
1034 (BUILT_IN_STPCPY): Likewise.
1035 (BUILT_IN_STRCAT): Likewise.
1036 (BUILT_IN_STRCHR): Likewise.
1037 (BUILT_IN_STRCPY): Likewise.
1038 (BUILT_IN_STRLEN): Likewise.
1039 (BUILT_IN_MEMCPY_CHK): Likewise.
1040 (BUILT_IN_MEMMOVE_CHK): Likewise.
1041 (BUILT_IN_MEMPCPY_CHK): Likewise.
1042 (BUILT_IN_MEMSET_CHK): Likewise.
1043 (BUILT_IN_STPCPY_CHK): Likewise.
1044 (BUILT_IN_STRCAT_CHK): Likewise.
1045 (BUILT_IN_STRCPY_CHK): Likewise.
1046 * calls.c (store_bounds): Likewise.
1047 (emit_call_1): Likewise.
1048 (special_function_p): Likewise.
1049 (maybe_warn_nonstring_arg): Likewise.
1050 (initialize_argument_information): Likewise.
1051 (finalize_must_preallocate): Likewise.
1052 (compute_argument_addresses): Likewise.
1053 (expand_call): Likewise.
1054 * cfgexpand.c (expand_call_stmt): Likewise.
1055 (expand_return): Likewise.
1056 (expand_gimple_stmt_1): Likewise.
1057 (pass_expand::execute): Likewise.
1058 * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
1059 (cgraph_node::remove): Likewise.
1060 (cgraph_node::dump): Likewise.
1061 (cgraph_node::verify_node): Likewise.
1062 * cgraph.h (chkp_function_instrumented_p): Likewise.
1063 (symtab_node::get_alias_target): Likewise.
1064 (cgraph_node::can_remove_if_no_direct_calls_and_refs_p): Likewise.
1065 (cgraph_local_p): Likewise.
1066 * cgraphbuild.c (cgraph_edge::rebuild_edges): Likewise.
1067 (cgraph_edge::rebuild_references): Likewise.
1068 * cgraphunit.c (varpool_node::finalize_decl): Likewise.
1069 (walk_polymorphic_call_targets): Likewise.
1070 (cgraph_node::expand_thunk): Likewise.
1071 (symbol_table::output_weakrefs): Likewise.
1072 * common/config/i386/i386-common.c (OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Likewise.
1073 (ix86_handle_option): Likewise.
1074 * config/i386/constraints.md: Likewise.
1075 * config/i386/i386-builtin-types.def (BND): Likewise.
1076 (VOID): Likewise.
1077 (PVOID): Likewise.
1078 (ULONG): Likewise.
1079 * config/i386/i386-builtin.def (BDESC_END): Likewise.
1080 (BDESC_FIRST): Likewise.
1081 (BDESC): Likewise.
1082 * config/i386/i386-c.c (ix86_target_macros_internal): Likewise.
1083 * config/i386/i386-protos.h (ix86_bnd_prefixed_insn_p): Likewise.
1084 * config/i386/i386.c (enum reg_class): Likewise.
1085 (ix86_target_string): Likewise.
1086 (ix86_option_override_internal): Likewise.
1087 (ix86_conditional_register_usage): Likewise.
1088 (ix86_valid_target_attribute_inner_p): Likewise.
1089 (ix86_set_indirect_branch_type): Likewise.
1090 (ix86_set_current_function): Likewise.
1091 (ix86_function_arg_regno_p): Likewise.
1092 (init_cumulative_args): Likewise.
1093 (ix86_function_arg_advance): Likewise.
1094 (ix86_function_arg): Likewise.
1095 (ix86_pass_by_reference): Likewise.
1096 (ix86_function_value_regno_p): Likewise.
1097 (ix86_function_value_1): Likewise.
1098 (ix86_function_value_bounds): Likewise.
1099 (ix86_return_in_memory): Likewise.
1100 (ix86_setup_incoming_vararg_bounds): Likewise.
1101 (ix86_va_start): Likewise.
1102 (indirect_thunk_need_prefix): Likewise.
1103 (print_reg): Likewise.
1104 (ix86_print_operand): Likewise.
1105 (ix86_expand_call): Likewise.
1106 (ix86_output_function_return): Likewise.
1107 (reg_encoded_number): Likewise.
1108 (BDESC_VERIFYS): Likewise.
1109 (ix86_init_mpx_builtins): Likewise.
1110 (ix86_init_builtins): Likewise.
1111 (ix86_emit_cmove): Likewise.
1112 (ix86_emit_move_max): Likewise.
1113 (ix86_expand_builtin): Likewise.
1114 (ix86_builtin_mpx_function): Likewise.
1115 (ix86_get_arg_address_for_bt): Likewise.
1116 (ix86_load_bounds): Likewise.
1117 (ix86_store_bounds): Likewise.
1118 (ix86_load_returned_bounds): Likewise.
1119 (ix86_store_returned_bounds): Likewise.
1120 (ix86_class_likely_spilled_p): Likewise.
1121 (ix86_hard_regno_mode_ok): Likewise.
1122 (x86_order_regs_for_local_alloc): Likewise.
1123 (ix86_mitigate_rop): Likewise.
1124 (ix86_bnd_prefixed_insn_p): Likewise.
1125 (ix86_mpx_bound_mode): Likewise.
1126 (ix86_make_bounds_constant): Likewise.
1127 (ix86_initialize_bounds): Likewise.
1128 (TARGET_LOAD_BOUNDS_FOR_ARG): Likewise.
1129 (TARGET_STORE_BOUNDS_FOR_ARG): Likewise.
1130 (TARGET_LOAD_RETURNED_BOUNDS): Likewise.
1131 (TARGET_STORE_RETURNED_BOUNDS): Likewise.
1132 (TARGET_CHKP_BOUND_MODE): Likewise.
1133 (TARGET_BUILTIN_CHKP_FUNCTION): Likewise.
1134 (TARGET_CHKP_FUNCTION_VALUE_BOUNDS): Likewise.
1135 (TARGET_CHKP_MAKE_BOUNDS_CONSTANT): Likewise.
1136 (TARGET_CHKP_INITIALIZE_BOUNDS): Likewise.
1137 * config/i386/i386.h (TARGET_MPX): Likewise.
1138 (TARGET_MPX_P): Likewise.
1139 (VALID_BND_REG_MODE): Likewise.
1140 (FIRST_BND_REG): Likewise.
1141 (LAST_BND_REG): Likewise.
1142 (enum reg_class): Likewise.
1143 (BND_REG_P): Likewise.
1144 (BND_REGNO_P): Likewise.
1145 (BNDmode): Likewise.
1146 (ADJUST_INSN_LENGTH): Likewise.
1147 * config/i386/i386.md: Likewise.
1148 * config/i386/i386.opt: Likewise.
1149 * config/i386/linux-common.h (LIBMPX_LIBS): Likewise.
1150 (defined): Likewise.
1151 (LINK_MPX): Likewise.
1152 (MPX_SPEC): Likewise.
1153 (LIBMPX_SPEC): Likewise.
1154 (LIBMPXWRAPPERS_SPEC): Likewise.
1155 (CHKP_SPEC): Likewise.
1156 * config/i386/predicates.md: Likewise.
1157 * dbxout.c (dbxout_type): Likewise.
1158 * doc/extend.texi: Likewise.
1159 * doc/invoke.texi: Likewise.
1160 * doc/md.texi: Likewise.
1161 * doc/tm.texi: Likewise.
1162 * doc/tm.texi.in: Likewise.
1163 * dwarf2out.c (is_base_type): Likewise.
1164 (gen_formal_types_die): Likewise.
1165 (gen_subprogram_die): Likewise.
1166 (gen_type_die_with_usage): Likewise.
1167 (gen_decl_die): Likewise.
1168 (dwarf2out_late_global_decl): Likewise.
1169 * expr.c (expand_assignment): Likewise.
1170 (emit_storent_insn): Likewise.
1171 (store_expr_with_bounds): Likewise.
1172 (store_expr): Likewise.
1173 (expand_expr_real_1): Likewise.
1174 * expr.h (store_expr_with_bounds): Likewise.
1175 * function.c (use_register_for_decl): Likewise.
1176 (struct bounds_parm_data): Likewise.
1177 (assign_parms_augmented_arg_list): Likewise.
1178 (assign_parm_find_entry_rtl): Likewise.
1179 (assign_parm_is_stack_parm): Likewise.
1180 (assign_parm_load_bounds): Likewise.
1181 (assign_bounds): Likewise.
1182 (assign_parms): Likewise.
1183 (expand_function_start): Likewise.
1184 * gcc.c (CHKP_SPEC): Likewise.
1185 * gimple-fold.c (gimple_fold_builtin_memory_op): Likewise.
1186 * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Likewise.
1187 (wrestrict_dom_walker::check_call): Likewise.
1188 * gimple.c (gimple_build_call_from_tree): Likewise.
1189 * gimple.h (enum gf_mask): Likewise.
1190 (gimple_call_with_bounds_p): Likewise.
1191 (gimple_call_set_with_bounds): Likewise.
1192 * gimplify.c (gimplify_init_constructor): Likewise.
1193 * ipa-cp.c (initialize_node_lattices): Likewise.
1194 (propagate_constants_across_call): Likewise.
1195 (find_more_scalar_values_for_callers_subset): Likewise.
1196 * ipa-hsa.c (process_hsa_functions): Likewise.
1197 * ipa-icf-gimple.c (func_checker::compare_gimple_call): Likewise.
1198 * ipa-icf.c (sem_function::merge): Likewise.
1199 * ipa-inline.c (early_inliner): Likewise.
1200 * ipa-pure-const.c (warn_function_noreturn): Likewise.
1201 (warn_function_cold): Likewise.
1202 (propagate_pure_const): Likewise.
1203 * ipa-ref.h (enum GTY): Likewise.
1204 * ipa-split.c (find_retbnd): Likewise.
1205 (consider_split): Likewise.
1206 (split_function): Likewise.
1207 * ipa-visibility.c (cgraph_externally_visible_p): Likewise.
1208 * ipa.c (walk_polymorphic_call_targets): Likewise.
1209 (symbol_table::remove_unreachable_nodes): Likewise.
1210 (process_references): Likewise.
1211 (cgraph_build_static_cdtor_1): Likewise.
1212 * lto-cgraph.c (lto_output_node): Likewise.
1213 (output_refs): Likewise.
1214 (compute_ltrans_boundary): Likewise.
1215 (input_overwrite_node): Likewise.
1216 (input_node): Likewise.
1217 (input_cgraph_1): Likewise.
1218 * params.def (PARAM_CHKP_MAX_CTOR_SIZE): Likewise.
1219 * passes.c (pass_manager::execute_early_local_passes): Likewise.
1220 (class pass_chkp_instrumentation_passes): Likewise.
1221 (make_pass_chkp_instrumentation_passes): Likewise.
1222 * passes.def: Likewise.
1223 * rtl.h (struct GTY): Likewise.
1224 (CALL_EXPR_WITH_BOUNDS_P): Likewise.
1225 * stor-layout.c (layout_type): Likewise.
1226 * symtab.c: Likewise.
1227 * target.def: Likewise.
1228 * targhooks.c (default_chkp_bound_type): Likewise.
1229 (default_chkp_bound_mode): Likewise.
1230 (default_builtin_chkp_function): Likewise.
1231 (default_chkp_function_value_bounds): Likewise.
1232 (default_chkp_make_bounds_constant): Likewise.
1233 (default_chkp_initialize_bounds): Likewise.
1234 * targhooks.h (default_chkp_bound_type): Likewise.
1235 (default_chkp_bound_mode): Likewise.
1236 (default_builtin_chkp_function): Likewise.
1237 (default_chkp_function_value_bounds): Likewise.
1238 (default_chkp_make_bounds_constant): Likewise.
1239 (default_chkp_initialize_bounds): Likewise.
1240 * toplev.c (compile_file): Likewise.
1241 (process_options): Likewise.
1242 * tree-core.h (DEF_BUILTIN): Likewise.
1243 (DEF_BUILTIN_CHKP): Likewise.
1244 * tree-inline.c (declare_return_variable): Likewise.
1245 (remap_gimple_stmt): Likewise.
1246 (copy_bb): Likewise.
1247 (initialize_inlined_parameters): Likewise.
1248 (expand_call_inline): Likewise.
1249 * tree-pass.h (make_pass_ipa_chkp_versioning): Likewise.
1250 (make_pass_ipa_chkp_early_produce_thunks): Likewise.
1251 (make_pass_ipa_chkp_produce_thunks): Likewise.
1252 (make_pass_chkp): Likewise.
1253 (make_pass_chkp_opt): Likewise.
1254 (make_pass_chkp_instrumentation_passes): Likewise.
1255 * tree-pretty-print.c (dump_generic_node): Likewise.
1256 * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Likewise.
1257 * tree-ssa-dce.c (propagate_necessity): Likewise.
1258 (eliminate_unnecessary_stmts): Likewise.
1259 * tree-ssa-pre.c (create_expression_by_pieces): Likewise.
1260 * tree-ssa-sccvn.c (copy_reference_ops_from_call): Likewise.
1261 * tree-ssa-sccvn.h: Likewise.
1262 * tree-ssa-strlen.c (get_string_length): Likewise.
1263 (valid_builtin_call): Likewise.
1264 (adjust_last_stmt): Likewise.
1265 (handle_builtin_strchr): Likewise.
1266 (handle_builtin_strcpy): Likewise.
1267 (handle_builtin_stxncpy): Likewise.
1268 (handle_builtin_memcpy): Likewise.
1269 (handle_builtin_strcat): Likewise.
1270 (strlen_check_and_optimize_stmt): Likewise.
1271 * tree-stdarg.c (expand_ifn_va_arg_1): Likewise.
1272 * tree-streamer-in.c: Likewise.
1273 * tree-streamer.c (record_common_node): Likewise.
1274 * tree.c (tree_code_size): Likewise.
1275 (wide_int_to_tree_1): Likewise.
1276 (type_contains_placeholder_1): Likewise.
1277 (build_common_tree_nodes): Likewise.
1278 * tree.def (POINTER_BOUNDS_TYPE): Likewise.
1279 * tree.h (POINTER_BOUNDS_TYPE_P): Likewise.
1280 (POINTER_BOUNDS_P): Likewise.
1281 (BOUNDED_TYPE_P): Likewise.
1282 (BOUNDED_P): Likewise.
1283 (CALL_WITH_BOUNDS_P): Likewise.
1284 (pointer_bounds_type_node): Likewise.
1285 * value-prof.c (gimple_ic): Likewise.
1286 * var-tracking.c (vt_add_function_parameters): Likewise.
1287 * varasm.c (make_decl_rtl): Likewise.
1288 (assemble_start_function): Likewise.
1289 (output_constant): Likewise.
1290 (maybe_assemble_visibility): Likewise.
1291 * varpool.c (ctor_for_folding): Likewise.
1292 * chkp-builtins.def: Remove.
1293 * ipa-chkp.c: Remove.
1294 * ipa-chkp.h: Remove.
1295 * rtl-chkp.c: Remove.
1296 * rtl-chkp.h: Remove.
1297 * tree-chkp-opt.c: Remove.
1298 * tree-chkp.c: Remove.
1299 * tree-chkp.h: Remove.
1300
1301 2018-06-07 Carl Love <cel@us.ibm.com>
1302
1303 * gcc/config/rs6000/vsx.md (vextract_fp_from_shorth,
1304 vextract_fp_from_shortl): Add BE support.
1305
1306 2018-06-07 Paul Koning <ni1d@arrl.net>
1307
1308 * compare-elim.c (try_merge_compare): Don't merge compare if
1309 address contains a side effect.
1310 (try_eliminate_compare): Likewise.
1311
1312 2018-06-07 Olga Makhotina <olga.makhotina@intel.com>
1313
1314 * config.gcc: Support "tremont".
1315 * config/i386/driver-i386.c (host_detect_local_cpu): Detect "tremont".
1316 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
1317 PROCESSOR_TREMONT.
1318 * config/i386/i386.c (m_TREMONT): Define.
1319 (processor_target_table): Add "tremont".
1320 (PTA_TREMONT): Define.
1321 (ix86_lea_outperforms): Add TARGET_TREMONT.
1322 (get_builtin_code_for_version): Handle PROCESSOR_TREMONT.
1323 (fold_builtin_cpu): Add M_INTEL_TREMONT, replace M_INTEL_GOLDMONT
1324 and M_INTEL_GOLDMONT_PLUS.
1325 (fold_builtin_cpu): Add "tremont".
1326 (ix86_add_stmt_cost): Add TARGET_TREMONT.
1327 (ix86_option_override_internal): Add "tremont".
1328 * config/i386/i386.h (processor_costs): Define TARGET_TREMONT.
1329 (processor_type): Add PROCESSOR_TREMONT.
1330 * config/i386/x86-tune.def: Add m_TREMONT.
1331 * doc/invoke.texi: Add tremont as x86 -march=/-mtune= CPU type.
1332
1333 2018-06-07 Jozef Lawrynowicz <jozef.l@mittosystems.com>
1334
1335 * gcc/config/msp430/msp430.c (msp430_mcu_name): Set the "i" in the
1336 symbol defined for msp430i* devices to be lower case.
1337
1338 gcc/testsuite/gcc.target/msp430/
1339 * msp430i-device-symbol.c: New test.
1340 * msp430f-device-symbol.c: New test.
1341 * msp430.h: New test header file.
1342
1343 2018-06-07 Richard Biener <rguenther@suse.de>
1344
1345 * graphite-sese-to-poly.c (extract_affine): Avoid unneded
1346 wrapping. Properly wrap the result of a BIT_NOT_EXPR.
1347 Properly wrap signed arithmetic if overflow wraps.
1348
1349 2018-06-07 Jakub Jelinek <jakub@redhat.com>
1350
1351 PR tree-optimization/69615
1352 * tree-ssa-reassoc.c (optimize_range_tests_var_bound): If rhs2 is lhs
1353 of a cast from a same precision integral SSA_NAME in a bb dominated
1354 by first_bb, retry with rhs2 set to the rhs1 of the cast. Don't emit
1355 cast to utype if rhs2 has already a compatible type.
1356
1357 2018-06-07 Richard Biener <rguenther@suse.de>
1358
1359 PR tree-optimization/85935
1360 * graphite-scop-detection.c (find_params_in_bb): Analyze
1361 condition operands with respect to the correct loop. Assert
1362 the analysis doesn't fail.
1363
1364 2018-06-04 Carl Love <cel@us.ibm.com>
1365
1366 * gcc/config/rs6000/vsx.md (first_match_index_<mode>): Calculate index
1367 using natural element order. Use gen_lshrsi3 instead of gen_ashrsi3
1368 as it is slightly cheaper.
1369 (first_match_or_eos_index_<mode>):
1370 Calculate index using natural element order.
1371 (first_match_index_<mode>):
1372 Calculate index using natural element order.
1373 (first_match_or_eos_index_<mode>):
1374 Calculate index using natural order.
1375 (define_insn vclzlsbb): Change to define_insn vclzlsbb_<mode>.
1376 for BE and LE modes.
1377 * gcc/config/rs6000/rs6000-c.c: Rename P9V_BUILTIN_VCLZLSBB,
1378 P9V_BUILTIN_VCLZLSBB_V16QI.
1379 * gcc/config/rs6000/rs6000-builtin.def: Make VCLZLSBB mode
1380 specific.
1381
1382 2018-06-06 Kelvin Nilsen <kelvin@gcc.gnu.org>
1383
1384 * doc/extend.texi (PowerPC AltiVec Built-in Functions): Adjust
1385 indentation and line wrap for many prototypes. Add missing
1386 @smallexample directives around block of prototypes for vec_xl and
1387 vec_xst.
1388
1389 2018-06-05 Michael Meissner <meissner@linux.ibm.com>
1390
1391 * config/rs6000/rs6000.c (rs6000_passes_ieee128): New boolean to
1392 track if we pass or return IEEE 128-bit floating point.
1393 (ieee128_mangling_gcc_8_1): New boolean to say whether to generate
1394 C++ mangling that is compatible with GCC 8.1.
1395 (TARGET_ASM_GLOBALIZE_DECL_NAME): Override target hook.
1396 (init_cumulative_args): Note if we pass or return IEEE 128-bit
1397 floating point types.
1398 (rs6000_function_arg_advance_1): Likewise.
1399 (rs6000_mangle_type): Optionally generate mangled names that match
1400 what GCC 8.1 generated for IEEE 128-bit floating point types.
1401 (rs6000_globalize_decl_name): If we have an external function that
1402 passes or returns IEEE 128-bit types, generate a weak reference
1403 from the mangled name used in GCC 8.1 to the current mangled
1404 name.
1405 (rs6000_init_builtins): Make __ibm128 use the long double type if
1406 long double is IBM extended double. Make __float128 use the long
1407 double type if long double is IEEE 128-bit.
1408
1409 PR target/85657
1410 * config/rs6000/rs6000-builtin.def (BU_IBM128_2): New helper
1411 macro for __ibm128 built-in functions.
1412 (PACK_IF): Add __ibm128 pack/unpack functions.
1413 (UNPACK_IF): Likewise.
1414 * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Do not
1415 enable long double built-in functions if long double is IEEE
1416 128-bit floating point.
1417 (rs6000_invalid_builtin): Update long double built-in function
1418 error message.
1419 (rs6000_expand_builtin): For PACK_IF and UNPACK_IF built-in
1420 functions, adjust the built-in function to use the long double
1421 built-in function if __ibm128 and long double are the same type.
1422 * doc/extend.texi (PowerPC builtins): Update documention for
1423 __builtin_{,un}pack_longdouble. Add documentation for
1424 __builtin_{,un}pack_ibm128.
1425
1426 2018-06-06 Jim Wilson <jimw@sifive.com>
1427
1428 * config/riscv/riscv.c (enum riscv_privilege_levels): New.
1429 (struct machine_function): New field interrupt_mode.
1430 (riscv_handle_type_attribute): New function. Add forward declaration.
1431 (riscv_attribute_table) <interrupt>: Use riscv_handle_type_attribute.
1432 (riscv_expand_epilogue): Check interrupt_mode field.
1433 (riscv_set_current_function): Check interrupt attribute args and
1434 set interrupt_mode field.
1435 * config/riscv/riscv.md (UNSPECV_SRET, UNSPECV_URET): New.
1436 (riscv_sret, riscv_uret): New.
1437 * doc/extend.texi (RISC-V Function Attributes) <interrupt>: Document
1438 new arguments to interrupt attribute.
1439
1440 2018-06-06 Peter Bergner <bergner@vnet.ibm.com>
1441
1442 PR target/63177
1443 * /config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for -mpower9.
1444 Don't handle -mcpu=power8 if -mpower9-vector is also used.
1445
1446 2018-06-06 Kelvin Nilsen <kelvin@gcc.gnu.org>
1447
1448 * config/rs6000/rs6000-builtin.def (VSX_BUILTIN_VEC_LD,
1449 VSX_BUILTIN_VEC_ST): Add comment to explain non-traditional uses.
1450 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
1451 several redundant entries.
1452
1453 2018-06-06 David Malcolm <dmalcolm@redhat.com>
1454
1455 * config/i386/i386-protos.h (ix86_expand_call): Strengthen return
1456 type from "rtx" to "rtx_insn *".
1457 * config/i386/i386.c (ix86_expand_split_stack_prologue): Likewise
1458 for local "call_insn", removing cast.
1459 (ix86_expand_call): Likewise, introducing a "call_insn" local.
1460
1461 2018-06-06 Eric Botcazou <ebotcazou@adacore.com>
1462
1463 PR tree-optimization/86066
1464 * gimple-ssa-store-merging.c (process_store): Do not bypass BIT_NOT_EXPR
1465 for BIT_INSERT_EXPR stores.
1466
1467 2018-06-06 Richard Biener <rguenther@suse.de>
1468
1469 PR tree-optimization/86062
1470 * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
1471 component refs ontop
1472 of to be offsetted base.
1473
1474 2018-06-06 Jozef Lawrynowicz <jozef.l@mittosystems.com>
1475
1476 * gcc/config/msp430/msp430.c (msp430_attr): Allow interrupt handlers
1477 to be static and remove check on interrupt attribute name.
1478
1479 gcc/testsuite/gcc.target/msp430/
1480 * function-attributes-4.c: New test.
1481 * static-interrupts.c: New test.
1482
1483 2018-06-05 Kelvin Nilsen <kelvin@gcc.gnu.org>
1484
1485 * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove
1486 volatile qualifier from vec_lvsl and vec_lvsr argument prototypes.
1487
1488 2018-06-05 Steve Ellcey <sellcey@cavium.com>
1489
1490 PR target/79924
1491 * config/aarch64/aarch64-protos.h (aarch64_err_no_fpadvsimd): Remove
1492 second argument.
1493 * config/aarch64/aarch64-protos..c (aarch64_err_no_fpadvsimd):
1494 Remove second argument, change how error is called.
1495 (aarch64_layout_arg): Remove second argument from
1496 aarch64_err_no_fpadvsimd call.
1497 (aarch64_init_cumulative_args): Ditto.
1498 (aarch64_gimplify_va_arg_expr): Ditto.
1499 * config/aarch64/aarch64.md (mov<mode>): Ditto.
1500
1501 2018-06-05 Uros Bizjak <ubizjak@gmail.com>
1502
1503 * config/i386/i386.md (simple_return_indirect_internal): New expander.
1504 (*simple_return_indirect_internal<mode>): Rename from
1505 simple_return_indirect_internal. Use W mode iterator.
1506 (rstorssp): New expander.
1507 (*rstorssp<mode>): Rename from rstorssp. Use P mode iterator.
1508 (clrssbsy): New expander.
1509 (*clrssbsy<mode>): Rename from clrssbsy. Use P mode iterator.
1510
1511 2018-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
1512
1513 * config/arm/arm_cmse.h (cmse_nsfptr_create): Change typeof to
1514 __typeof__.
1515 (cmse_check_pointed_object): Likewise.
1516
1517 2018-06-05 Martin Liska <mliska@suse.cz>
1518
1519 PR gcov-profile/47618
1520 * doc/invoke.texi: Document how -fprofile-dir format
1521 is extended.
1522
1523 2018-06-05 Richard Biener <rguenther@suse.de>
1524
1525 * tree-cfgcleanup.c (cleanup_control_flow_pre): For edge
1526 removal pretend DOM info isn't available so we do not update
1527 it and only remove edges, not dominated blocks. Actually free
1528 DOM info in case we removed something. Remove unreachable blocks.
1529 (mfb_keep_latches): Work with either DOM info or marked backedges.
1530 (cleanup_tree_cfg_noloop): Do not remove unreachable blocks
1531 first. Mark backedges if DOM info isn't available.
1532 (Re-)compute DOM info after cleanup_control_flow_pre.
1533
1534 2018-06-05 Richard Biener <rguenther@suse.de>
1535
1536 * tree-cfg.c (struct locus_discrim_map): Store line, not location.
1537 (locus_discrim_hasher::hash): Adjust.
1538 (locus_discrim_hasher::equal): Likewise.
1539 (next_discriminator_for_locus): Work on line directly.
1540 (same_line_p): Pass in expanded locus1 as well.
1541 (assign_discriminators): Avoid redundant location expansions.
1542
1543 2018-06-05 Richard Biener <rguenther@suse.de>
1544
1545 PR tree-optimization/86046
1546 * tree-ssa.c (maybe_optimize_var): Clear DECL_GIMPLE_REG_P
1547 if required after clearing TREE_ADDRESSABLE.
1548
1549 2018-06-05 Richard Biener <rguenther@suse.de>
1550
1551 PR tree-optimization/86047
1552 * tree-ssa-loop.c (for_each_index): Glob handling of all
1553 decls and constants and really handle all of them.
1554
1555 2018-06-05 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1556
1557 PR target/81497
1558 * config/arm/arm-builtins.c (arm_type_qualifiers): Add
1559 qualifier_void_pointer and qualifier_const_void_pointer.
1560 (arm_ldc_qualifiers, arm_stc_qualifiers): Use the above.
1561 (arm_init_builtins): Handle the above.
1562 * config/arm/arm_acle.h (__arm_cdp, __arm_ldc, __arm_ldcl, __arm_stc,
1563 __arm_stcl, __arm_mcr, __arm_cdp2, __arm_ldc2, __arm_ldcl2, __arm_stc2,
1564 __arm_stcl2,__arm_mcr2, __arm_mcrr, __arm_mcrr2): Remove return for
1565 void intrinsics.
1566
1567 2018-06-05 Martin Liska <mliska@suse.cz>
1568
1569 * auto-profile.c (read_autofdo_file): Do not use
1570 gcov_ctr_summary struct.
1571 (afdo_callsite_hot_enough_for_early_inline): Likewise.
1572 * coverage.c (struct counts_entry): Likewise.
1573 (read_counts_file): Read just single summary entry.
1574 (get_coverage_counts): Use gcov_summary struct.
1575 * coverage.h (get_coverage_counts): Likewise.
1576 * gcov-dump.c (dump_working_sets): Likewise.
1577 (tag_summary): Dump just single summary.
1578 * gcov-io.c (gcov_write_summary): Write just histogram
1579 summary.
1580 (gcov_read_summary): Read just single summary.
1581 (compute_working_sets): Use gcov_summary struct.
1582 * gcov-io.h (GCOV_TAG_SUMMARY_LENGTH): Remove usage
1583 of GCOV_COUNTERS_SUMMABLE.
1584 (GCOV_COUNTERS_SUMMABLE): Remove.
1585 (GCOV_FIRST_VALUE_COUNTER): Replace with
1586 GCOV_COUNTER_V_INTERVAL.
1587 (struct gcov_ctr_summary): Remove.
1588 (struct gcov_summary): Directly use fields of former
1589 gcov_ctr_summary.
1590 (compute_working_sets): Use gcov_summary struct.
1591 * gcov.c (read_count_file): Do not use ctrs fields.
1592 * lto-cgraph.c (merge_profile_summaries): Use gcov_summary
1593 struct.
1594 * lto-streamer.h (struct GTY): Make profile_info gcov_summary
1595 struct.
1596 * profile.c: Likewise.
1597 * profile.h: Likewise.
1598
1599 2018-06-05 Martin Liska <mliska@suse.cz>
1600
1601 PR gcov-profile/84846
1602 * gcov.c (output_lines): Print working directory only
1603 in intermediate format.
1604
1605 2018-06-05 Andreas Krebbel <krebbel@linux.ibm.com>
1606
1607 * config/s390/s390-builtin-types.def: Add void function type.
1608 * config/s390/s390-builtins.def: Use the function type for the
1609 tbeginc builtin.
1610
1611 2018-06-04 Jim Wilson <jimw@sifive.com>
1612
1613 * config/riscv/riscv-protos.h (riscv_expand_epilogue): Change bool arg
1614 to int.
1615 * config/riscv/riscv.c (riscv_for_each_saved_reg): New args epilogue
1616 and maybe_eh_return. Change regno to unsigned int. Use new args to
1617 handle EH_RETURN_DATA_REGNO registers properly.
1618 (riscv_expand_prologue): Pass new args to riscv_for_each_saved_reg.
1619 (riscv_expand_epilogue): Update comment. Change argument name and
1620 type. Update code to use new name and type. Pass new args to
1621 riscv_for_each_saved_reg. Only use EH_RETURN_STACKADJ_RTX when
1622 EXCEPTION_RETURN.
1623 * config/riscv/riscv.md (NORMAL_RETURN): New.
1624 (SIBCALL_RETURN, EXCEPTION_RETURN): New.
1625 (epilogue, sibcall_epilogue): Update riscv_expand_epilogue arg.
1626 (eh_return): Call gen_eh_return_internal and emit barrier.
1627 (eh_return_internal): Call riscv_expand_epilogue.
1628
1629 2018-06-04 Eric Botcazou <ebotcazou@adacore.com>
1630
1631 * gimple-ssa-store-merging.c (struct merged_store_group): Move up
1632 bit_insertion field and declare can_be_merged_into method.
1633 (merged_store_group::can_be_merged_into): New method.
1634 (imm_store_chain_info::coalesce_immediate): Call it to decide whether
1635 consecutive non-overlapping stores can be merged. Turn MEM_REF stores
1636 into BIT_INSERT_EXPR stores if the group contains a non-MEM_REF store.
1637
1638 2018-06-04 Richard Biener <rguenther@suse.de>
1639
1640 PR tree-optimization/85955
1641 * builtins.c (fold_builtin_sincos): Convert pointers to
1642 destination to appropriate type before dereferencing.
1643
1644 2018-06-04 Segher Boessenkool <segher@kernel.crashing.org>
1645
1646 * config/rs6000/rs6000.md (abs<mode>2 for FLOAT128): Handle IFmode.
1647
1648 2018-06-04 Richard Sandiford <richard.sandiford@linaro.org>
1649
1650 * expr.c (expand_expr_real_1): Force the operand into memory if
1651 its TYPE_MODE is BLKmode and if there is no integer mode for
1652 the number of bits being extracted.
1653
1654 2018-06-04 Jakub Jelinek <jakub@redhat.com>
1655
1656 PR target/85832
1657 PR target/86036
1658 * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
1659 Use vptestnm rather than vptestm in (=Yc,v,C) variant.
1660
1661 2018-06-04 Richard Biener <rguenther@suse.de>
1662
1663 * tree-cfgcleanup.c (cleanup_tree_cfg_1): Fold into...
1664 (cleanup_tree_cfg_noloop): ... single caller. Do
1665 start_recording_case_labels later.
1666
1667 2018-06-04 Sebastian Peryt <sebastian.peryt@intel.com>
1668
1669 * config/i386/cldemoteintrin.h: Change define from _X86INTRIN_H_INCLUDED
1670 to _IMMINTRIN_H_INCLUDED.
1671 * config/i386/pconfigintrin.h: Ditto.
1672 * config/i386/waitpkgintrin.h: Ditto.
1673 * config/i386/immintrin.h: Add includes for sgxintrin.h,
1674 pconfigintrin.h, waitpkgintrin.h and cldemoteintrin.h.
1675 * config/i386/x86intrin.h: Remove includes for mintrin.h, xmmintrin.h,
1676 emmintrin.h, pmmintrin.h, tmmintrin.h, smmintrin.h, wmmintrin.h,
1677 bmiintrin.h, bmi2intrin.h, lzcntintrin.h, sgxintrin.h, pconfigintrin.h,
1678 waitpkgintrin.h and cldemoteintrin.h.
1679
1680 2018-06-04 Richard Biener <rguenther@suse.de>
1681
1682 PR tree-optimization/86038
1683 * tracer.c (find_best_successor): Check probability for
1684 being initialized, bail out if not.
1685
1686 2018-06-04 Richard Earnshaw <rearnsha@arm.com>
1687
1688 PR target/86003
1689 * config/arm/arm-cpus.in (ALL_QUIRKS): Add xscale feature to the list
1690 of bits to ignore when comparing architectures.
1691
1692 2018-06-04 Jakub Jelinek <jakub@redhat.com>
1693
1694 PR tree-optimization/69615
1695 * fold-const.c (merge_ranges): If range1 is - [x, x] and x is the
1696 maximum or minimum of the type, try to merge it also as if
1697 range1 is + [-, x - 1] or + [x + 1, -].
1698
1699 PR c++/86025
1700 * tree.c (inchash::add_expr): Handle IDENTIFIER_NODE.
1701
1702 2018-06-03 Eric Botcazou <ebotcazou@adacore.com>
1703
1704 PR tree-optimization/86034
1705 * gimple-ssa-store-merging.c (output_merged_store): Convert the RHS to
1706 the unsigned bitfield type in a bit insertion sequence if it does not
1707 have a larger precision than the bitfield size.
1708 (process_store): Also bypass widening conversions for BIT_INSERT_EXPR.
1709
1710 2018-06-03 Kito Cheng <kito.cheng@gmail.com>
1711
1712 * config/nds32/nds32-peephole2.md: Add new patterns for code size.
1713
1714 2018-06-03 Chung-Ju Wu <jasonwucj@gmail.com>
1715
1716 * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3J.
1717 * config/nds32/nds32.c (nds32_option_override): Consider ARCH_V3J.
1718 * config/nds32/nds32.h (TARGET_ISA_V3): Add ARCH_V3J checking.
1719 * config/nds32/nds32.opt (march): Add enum value Value(ARCH_V3J).
1720
1721 2018-06-03 Chung-Ju Wu <jasonwucj@gmail.com>
1722
1723 * common/config/nds32/nds32-common.c (nds32_option_optimization_table):
1724 Disable -fdelete-null-pointer-checks for ELF toolchain.
1725
1726 2018-06-02 Chung-Ju Wu <jasonwucj@gmail.com>
1727 Kito Cheng <kito.cheng@gmail.com>
1728
1729 * config.gcc (nds32*): Use nds32-linux.opt and nds32-elf.opt.
1730 (nds32le-*-*, nds32be-*-*): Integrate checking process.
1731 (nds32*-*-*): Add glibc and uclibc conditions.
1732 * common/config/nds32/nds32-common.c (nds32_except_unwind_info): New.
1733 (TARGET_EXCEPT_UNWIND_INFO): Define.
1734 * config/nds32/elf.h: New file.
1735 * config/nds32/linux.h: New file.
1736 * config/nds32/nds32-elf.opt: New file.
1737 * config/nds32/nds32-linux.opt: New file.
1738 * config/nds32/nds32-fp-as-gp.c
1739 (pass_nds32_fp_as_gp::gate): Consider TARGET_LINUX_ABI.
1740 * config/nds32/nds32.c (nds32_conditional_register_usage): Consider
1741 TARGET_LINUX_ABI.
1742 (nds32_asm_file_end): Ditto.
1743 (nds32_print_operand): Ditto.
1744 (nds32_insert_attributes): Ditto.
1745 (nds32_init_libfuncs): New function.
1746 (TARGET_HAVE_TLS): Define.
1747 (TARGET_INIT_LIBFUNCS): Define.
1748 * config/nds32/nds32.h (TARGET_DEFAULT_RELAX): Apply different relax
1749 spec content.
1750 (TARGET_ELF): Apply different mcmodel setting.
1751 (LINK_SPEC, LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): The content has
1752 been migrated into elf.h and linux.h files.
1753 * config/nds32/nds32.md (add_pc): Consider TARGET_LINUX_ABI.
1754 * config/nds32/nds32.opt (mvh): Consider TARGET_LINUX_ABI.
1755 (mcmodel): The content has been migrated into nds32-elf.opt and
1756 nds32-linux.opt files.
1757 * config/nds32/t-elf: New file.
1758 * config/nds32/t-linux: New file.
1759
1760 2018-06-02 Chung-Ju Wu <jasonwucj@gmail.com>
1761 Shiva Chen <shiva0217@gmail.com>
1762
1763 * config/nds32/constants.md (unspec_volatile_element): Add
1764 UNSPEC_VOLATILE_OMIT_FP_BEGIN and UNSPEC_VOLATILE_OMIT_FP_END.
1765 * config/nds32/nds32-fp-as-gp.c: New implementation of fp_as_gp
1766 optimization.
1767 * config/nds32/nds32-protos.h (nds32_naked_function_p): Declare.
1768 (make_pass_nds32_fp_as_gp): Declare.
1769 * config/nds32/nds32.c (nds32_register_passes): Add fp_as_gp as one
1770 optmization pass.
1771 (nds32_asm_function_end_prologue): Remove unused asm output.
1772 (nds32_asm_function_begin_epilogue): Remove unused asm output.
1773 (nds32_asm_file_start): Output necessary fp_as_gp information.
1774 (nds32_option_override): Adjust register usage.
1775 (nds32_expand_prologue): Consider fp_as_gp situation.
1776 (nds32_expand_prologue_v3push): Consider fp_as_gp situation.
1777 * config/nds32/nds32.md (prologue): Check fp_as_gp_p and naked_p.
1778 (epilogue): Ditto.
1779 (return): Ditto.
1780 (simple_return): Ditto.
1781 (omit_fp_begin): Output special directive for fp_as_gp.
1782 (omit_fp_end): Output special directive for fp_as_gp.
1783 * config/nds32/nds32.opt (mfp-as-gp, mno-fp-as-gp, mforce-fp-as-gp,
1784 mforbid-fp-as-gp): New options.
1785
1786 2018-06-01 Mark Wielaard <mark@klomp.org>
1787
1788 * dwarf2out.c (dwarf2out_finish): Remove generation of
1789 DW_AT_loclists_base.
1790
1791 2018-06-01 Eric Botcazou <ebotcazou@adacore.com>
1792
1793 * gimple-ssa-store-merging.c: Include gimple-fold.h.
1794 (struct store_immediate_info): Document BIT_INSERT_EXPR stores.
1795 (struct merged_store_group): Add bit_insertion field.
1796 (dump_char_array): Use standard hexadecimal format.
1797 (merged_store_group::merged_store_group): Set bit_insertion to false.
1798 (merged_store_group::apply_stores): Use optimal buffer size. Deal
1799 with BIT_INSERT_EXPR stores. Move up code updating the mask and
1800 also print the mask in the dump file.
1801 (pass_store_merging::gate): Minor tweak.
1802 (imm_store_chain_info::coalesce_immediate): Fix wrong association
1803 of stores with groups in dump. Allow coalescing of BIT_INSERT_EXPR
1804 stores with INTEGER_CST stores.
1805 (count_multiple_uses) <BIT_INSERT_EXPR>: New case.
1806 (imm_store_chain_info::output_merged_store): Add try_bitpos variable
1807 and use it throughout. Generate bit insertion sequences if need be.
1808 (pass_store_merging::process_store): Remove redundant condition.
1809 Record stores from a SSA name to a bit-field with BIT_INSERT_EXPR.
1810
1811 2018-06-01 Segher Boessenkool <segher@kernel.crashing.org>
1812
1813 * config/rs6000/rs6000.c (rs6000_mangle_type): Change the mangling of
1814 the 128-bit floating point types. Fix function comment.
1815
1816 2018-06-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1817
1818 * config/aarch64/aarch64-simd.md
1819 (aarch64_simd_vec_unpack<su>_lo_<mode>): Use UXTL and SXTL assembler
1820 mnemonics.
1821 (aarch64_simd_vec_unpack<su>_hi_<mode>): Use UXTL2 and SXTL2 assembler
1822 mnemonics.
1823
1824 2018-06-01 Richard Sandiford <richard.sandiford@linaro.org>
1825
1826 PR tree-optimization/85989
1827 * gimple-ssa-backprop.c (backprop::m_visited_phis): New member
1828 variable.
1829 (backprop::intersect_uses): Check it when deciding whether this
1830 is a backedge reference.
1831 (backprop::process_block): Add each phi to m_visited_phis
1832 after visiting it, then clear it at the end.
1833
1834 2018-06-01 Richard Biener <rguenther@suse.de>
1835
1836 * tree-vectorizer.h (vect_dr_stmt): New function.
1837 (vect_get_load_cost): Adjust.
1838 (vect_get_store_cost): Likewise.
1839 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence):
1840 Use vect_dr_stmt instead of DR_SMTT.
1841 (vect_record_base_alignments): Likewise.
1842 (vect_calculate_target_alignment): Likewise.
1843 (vect_compute_data_ref_alignment): Likewise and make static.
1844 (vect_update_misalignment_for_peel): Likewise.
1845 (vect_verify_datarefs_alignment): Likewise.
1846 (vector_alignment_reachable_p): Likewise.
1847 (vect_get_data_access_cost): Likewise. Pass down
1848 vinfo to vect_get_load_cost/vect_get_store_cost instead of DR.
1849 (vect_get_peeling_costs_all_drs): Likewise.
1850 (vect_peeling_hash_get_lowest_cost): Likewise.
1851 (vect_enhance_data_refs_alignment): Likewise.
1852 (vect_find_same_alignment_drs): Likewise.
1853 (vect_analyze_data_refs_alignment): Likewise.
1854 (vect_analyze_group_access_1): Likewise.
1855 (vect_analyze_group_access): Likewise.
1856 (vect_analyze_data_ref_access): Likewise.
1857 (vect_analyze_data_ref_accesses): Likewise.
1858 (vect_vfa_segment_size): Likewise.
1859 (vect_small_gap_p): Likewise.
1860 (vectorizable_with_step_bound_p): Likewise.
1861 (vect_prune_runtime_alias_test_list): Likewise.
1862 (vect_analyze_data_refs): Likewise.
1863 (vect_supportable_dr_alignment): Likewise.
1864 * tree-vect-loop-manip.c (get_misalign_in_elems): Likewise.
1865 (vect_gen_prolog_loop_niters): Likewise.
1866 * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
1867 * tree-vect-patterns.c (vect_recog_bool_pattern): Do not
1868 modify DR_STMT.
1869 (vect_recog_mask_conversion_pattern): Likewise.
1870 (vect_try_gather_scatter_pattern): Likewise.
1871 * tree-vect-stmts.c (vect_model_store_cost): Pass stmt_info
1872 to vect_get_store_cost.
1873 (vect_get_store_cost): Get stmt_info instead of DR.
1874 (vect_model_load_cost): Pass stmt_info to vect_get_load_cost.
1875 (vect_get_load_cost): Get stmt_info instead of DR.
1876
1877 2018-06-01 Richard Biener <rguenther@suse.de>
1878
1879 PR middle-end/86017
1880 * gimple-fold.c (var_decl_component_p): Also allow offsetted
1881 vars wrapped in MEM_REFs.
1882
1883 2018-06-01 Richard Sandiford <richard.sandiford@linaro.org>
1884
1885 * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
1886 Fix subreg tests so that we only return a choice between
1887 GENERAL_REGS and FP_REGS if the original classes included both.
1888
1889 2018-06-01 Richard Biener <rguenther@suse.de>
1890
1891 PR ipa/85960
1892 * tree-ssa-structalias.c (get_function_part_constraint):
1893 Handle NULL fi->decl.
1894 (find_func_aliases_for_call): Properly handle indirect
1895 fi from direct call.
1896 (find_func_clobbers): Likewise.
1897 (ipa_pta_execute): Likewise.
1898 (create_variable_info_for): For functions that are ifunc_resolver
1899 resolve to a varinfo that contains the result of the resolver call.
1900 (associate_varinfo_to_alias): Do not treat ifunc resolvers as
1901 aliases.
1902
1903 2018-05-31 Michael Collison <michael.collison@arm.com>
1904
1905 * config/aarch64/aarch64.md:
1906 (*fix_to_zero_extenddfdi2): New pattern.
1907 * gcc.target/aarch64/fix_extend1.c: New testcase.
1908
1909 2018-05-31 Qing Zhao <qing.zhao@oracle.com>
1910
1911 PR middle-end/78809
1912 PR middle-end/83026
1913 * builtins.c (expand_builtin): Add the handling of BUILT_IN_STRCMP_EQ
1914 and BUILT_IN_STRNCMP_EQ.
1915 * builtins.def: Add new builtins BUILT_IN_STRCMP_EQ and
1916 BUILT_IN_STRNCMP_EQ.
1917 * gimple-fold.c (gimple_fold_builtin_string_compare): Add the
1918 handling of BUILTIN_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
1919 (gimple_fold_builtin): Likewise.
1920 * tree-ssa-strlen.c (compute_string_length): New function.
1921 (determine_min_obsize): New function.
1922 (handle_builtin_string_cmp): New function to handle calls to
1923 string compare functions.
1924 (strlen_optimize_stmt): Add handling to builtin string compare
1925 calls.
1926 * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
1927 Add the handling of BUILT_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
1928 * tree.c (build_common_builtin_nodes): Add new defines of
1929 BUILT_IN_STRNCMP_EQ and BUILT_IN_STRCMP_EQ.
1930
1931 2018-05-31 Jakub Jelinek <jakub@redhat.com>
1932
1933 PR target/85984
1934 * bb-reorder.c (pass_partition_blocks::gate): Return false for
1935 functions with naked attribute.
1936
1937 2018-05-31 Uros Bizjak <ubizjak@gmail.com>
1938
1939 * config/i386/sse.md (avx_vec_concat<mode>):
1940 Substitute concat_tg_mode mode attribute with xtg_mode.
1941 (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): Ditto.
1942 (concat_tg_mode): Remove mode attribute.
1943
1944 2018-05-31 Martin Sebor <msebor@redhat.com>
1945
1946 PR c/82063
1947 * calls.c (alloc_max_size): Correct a logic error/typo.
1948 Treat excessive arguments as infinite. Warn for invalid arguments.
1949 * doc/invoke.texi (-Walloc-size-larger-than): Update.
1950
1951 2018-05-31 H.J. Lu <hongjiu.lu@intel.com>
1952
1953 PR target/85829
1954 * config/i386/x86-tune.def: Re-enable partial_reg_dependency
1955 and movx for Haswell.
1956
1957 2018-05-31 Chung-Lin Tang <cltang@codesourcery.com>
1958 Cesar Philippidis <cesar@codesourcery.com>
1959
1960 PR middle-end/85879
1961 * gimplify.c (gimplify_adjust_omp_clauses): Add 'remove = true'
1962 when emitting error on private/firstprivate reductions.
1963 * omp-low.c (lower_omp_target): Avoid reference-type processing
1964 on pointers for firstprivate clause.
1965
1966 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
1967
1968 * config/aarch64/aarch64-simd-builtins.def (ld1x3): New.
1969 (st1x2): Likewise.
1970 (st1x3): Likewise.
1971 * config/aarch64/aarch64-simd.md
1972 (aarch64_ld1x3<VALLDIF:mode>): New pattern.
1973 (aarch64_ld1_x3_<mode>): Likewise
1974 (aarch64_st1x2<VALLDIF:mode>): Likewise
1975 (aarch64_st1_x2_<mode>): Likewise
1976 (aarch64_st1x3<VALLDIF:mode>): Likewise
1977 (aarch64_st1_x3_<mode>): Likewise
1978 * config/aarch64/arm_neon.h (vld1_u8_x3): New function.
1979 (vld1_s8_x3): Likewise.
1980 (vld1_u16_x3): Likewise.
1981 (vld1_s16_x3): Likewise.
1982 (vld1_u32_x3): Likewise.
1983 (vld1_s32_x3): Likewise.
1984 (vld1_u64_x3): Likewise.
1985 (vld1_s64_x3): Likewise.
1986 (vld1_f16_x3): Likewise.
1987 (vld1_f32_x3): Likewise.
1988 (vld1_f64_x3): Likewise.
1989 (vld1_p8_x3): Likewise.
1990 (vld1_p16_x3): Likewise.
1991 (vld1_p64_x3): Likewise.
1992 (vld1q_u8_x3): Likewise.
1993 (vld1q_s8_x3): Likewise.
1994 (vld1q_u16_x3): Likewise.
1995 (vld1q_s16_x3): Likewise.
1996 (vld1q_u32_x3): Likewise.
1997 (vld1q_s32_x3): Likewise.
1998 (vld1q_u64_x3): Likewise.
1999 (vld1q_s64_x3): Likewise.
2000 (vld1q_f16_x3): Likewise.
2001 (vld1q_f32_x3): Likewise.
2002 (vld1q_f64_x3): Likewise.
2003 (vld1q_p8_x3): Likewise.
2004 (vld1q_p16_x3): Likewise.
2005 (vld1q_p64_x3): Likewise.
2006 (vst1_s64_x2): Likewise.
2007 (vst1_u64_x2): Likewise.
2008 (vst1_f64_x2): Likewise.
2009 (vst1_s8_x2): Likewise.
2010 (vst1_p8_x2): Likewise.
2011 (vst1_s16_x2): Likewise.
2012 (vst1_p16_x2): Likewise.
2013 (vst1_s32_x2): Likewise.
2014 (vst1_u8_x2): Likewise.
2015 (vst1_u16_x2): Likewise.
2016 (vst1_u32_x2): Likewise.
2017 (vst1_f16_x2): Likewise.
2018 (vst1_f32_x2): Likewise.
2019 (vst1_p64_x2): Likewise.
2020 (vst1q_s8_x2): Likewise.
2021 (vst1q_p8_x2): Likewise.
2022 (vst1q_s16_x2): Likewise.
2023 (vst1q_p16_x2): Likewise.
2024 (vst1q_s32_x2): Likewise.
2025 (vst1q_s64_x2): Likewise.
2026 (vst1q_u8_x2): Likewise.
2027 (vst1q_u16_x2): Likewise.
2028 (vst1q_u32_x2): Likewise.
2029 (vst1q_u64_x2): Likewise.
2030 (vst1q_f16_x2): Likewise.
2031 (vst1q_f32_x2): Likewise.
2032 (vst1q_f64_x2): Likewise.
2033 (vst1q_p64_x2): Likewise.
2034 (vst1_s64_x3): Likewise.
2035 (vst1_u64_x3): Likewise.
2036 (vst1_f64_x3): Likewise.
2037 (vst1_s8_x3): Likewise.
2038 (vst1_p8_x3): Likewise.
2039 (vst1_s16_x3): Likewise.
2040 (vst1_p16_x3): Likewise.
2041 (vst1_s32_x3): Likewise.
2042 (vst1_u8_x3): Likewise.
2043 (vst1_u16_x3): Likewise.
2044 (vst1_u32_x3): Likewise.
2045 (vst1_f16_x3): Likewise.
2046 (vst1_f32_x3): Likewise.
2047 (vst1_p64_x3): Likewise.
2048 (vst1q_s8_x3): Likewise.
2049 (vst1q_p8_x3): Likewise.
2050 (vst1q_s16_x3): Likewise.
2051 (vst1q_p16_x3): Likewise.
2052 (vst1q_s32_x3): Likewise.
2053 (vst1q_s64_x3): Likewise.
2054 (vst1q_u8_x3): Likewise.
2055 (vst1q_u16_x3): Likewise.
2056 (vst1q_u32_x3): Likewise.
2057 (vst1q_u64_x3): Likewise.
2058 (vst1q_f16_x3): Likewise.
2059 (vst1q_f32_x3): Likewise.
2060 (vst1q_f64_x3): Likewise.
2061 (vst1q_p64_x3): Likewise.
2062
2063 2018-05-30 Jozef Lawrynowicz <jozef.l@mittosystems.com>
2064
2065 * config/msp430/msp430.c (msp430_output_labelref): Prepend
2066 user_label_prefix to name.
2067
2068 * tree-core.h: Update comment about the format of NAME string
2069 passed to handler in attribute_spec.
2070
2071 * config/msp430/msp430.md: Remove erroneous subreg expression from
2072 zero_extendqisi2 insn pattern. Remove msp430x ISA restriction on
2073 zero_extend{q,h}isi2.
2074
2075 2018-05-30 Borislav Petkov <bp@suse.de>
2076
2077 * doc/extend.texi: Document some architecture specific
2078 constraints and sort entries.
2079
2080 2018-05-30 Martin Sebor <msebor@redhat.com>
2081
2082 PR middle-end/85369
2083 * builtins.c (expand_builtin_stpcpy_1): New function.
2084 (expand_builtin_stpcpy): Call it, and call maybe_warn_nonstring_arg
2085 only if the former succeeds.
2086
2087 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
2088
2089 * config/aarch64/aarch64-cores.def (saphira) : Add support for ARMv8.4
2090 in saphira.
2091
2092 2018-05-30 Jan Hubicka <hubicka@ucw.cz>
2093
2094 * doc/invoke.texi (-flinker-output): Document
2095
2096 2018-05-30 Jan Hubicka <hubicka@ucw.cz>
2097
2098 * passes.c (ipa_write_summaries): Only modify statements if body
2099 is in memory.
2100 * cgraphunit.c (ipa_passes): Also produce intermeidate code when
2101 incrementally linking.
2102 (ipa_passes): Likewise.
2103 * lto-cgraph.c (lto_output_node): When incrementally linking do not
2104 pass down resolution info.
2105 * common.opt (flag_incremental_link): Update info.
2106 * gcc.c (plugin specs): Turn flinker-output=* to
2107 -plugin-opt=-linker-output-known
2108 * toplev.c (compile_file): Also cut compilation when doing incremental
2109 link.
2110 * flag-types. (enum lto_partition_model): Add
2111 LTO_LINKER_OUTPUT_NOLTOREL.
2112 (invoke.texi): Add -flinker-output docs.
2113 * ipa.c (symbol_table::remove_unreachable_nodes): Handle LTO incremental
2114 link same way as WPA; do not stream in dead initializers.
2115
2116 * dwarf2out.c (dwarf2out_die_ref_for_decl,
2117 darf2out_register_external_decl): Support incremental link.
2118
2119 2018-05-30 Jan Hubicka <hubicka@ucw.cz>
2120
2121 * lto-opts.c (lto_write_options): Skip OPT_dumpdir, OPT_fresolution_.
2122
2123 2018-05-30 Jan Hubicka <hubicka@ucw.cz>
2124
2125 * lto-wrapper.c (debug_objcopy): Add rename parameter; pass
2126 it down to simple_object_copy_lto_debug_sections.
2127 (run_gcc): Determine incremental LTO link time and configure
2128 lto1 into non-wpa mode, disable renaming of debug sections.
2129
2130 2018-05-30 Kelvin Nilsen <kelvin@gcc.gnu.org>
2131
2132 * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove
2133 descriptions of various incorrectly documented functions.
2134
2135 2018-05-30 Andre Vieira <andre.simoesdiasvieira@arm.com>
2136
2137 Revert:
2138 * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
2139 address check not strict.
2140
2141 2018-05-30 Richard Biener <rguenther@suse.de>
2142
2143 PR tree-optimization/85964
2144 * tracer.c (better_p): Drop initialized count check, we only
2145 call the function with initialized counts now.
2146 (find_best_successor): Do find a best edge if one
2147 has uninitialized count.
2148 (find_best_predecessor): Likewise. Do BB frequency check only
2149 if count is initialized.
2150
2151 2017-05-30 Jackson Woodruff <jackson.woodruff@arm.com>
2152
2153 * config/aarch64/aarch64.c (aarch64_host_wide_int_compare): New.
2154 (aarch64_ldrstr_offset_compare): New.
2155 (aarch64_operands_adjust_ok_for_ldpstp): Update to consider all
2156 load/store orderings.
2157 (aarch64_gen_adjusted_ldpstp): Likewise.
2158
2159 2018-05-30 Wilco Dijkstra <wdijkstr@arm.com>
2160
2161 * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
2162 Check for subset of GENERAL_REGS and FP_REGS.
2163 * config/aarch64/aarch64-simd.md (aarch64_get_lane): Increase cost of
2164 r=w alternative.
2165
2166 2018-05-30 Richard Sandiford <richard.sandiford@linaro.org>
2167
2168 * alias.c (adjust_offset_for_component_ref): Use poly_int_tree_p
2169 and wi::to_poly_offset. Add the current offset and then check
2170 whether the sum fits, rather than using an unchecked addition of
2171 a checked term. Check for a shwi rather than a uhwi.
2172 * expr.c (get_bit_range): Use tree_to_poly_uint64.
2173 (store_constructor): Use poly_int_tree_p.
2174 (expand_expr_real_1): Likewise.
2175 * function.c (assign_temp): Likewise.
2176 * fold-const.c (const_binop): Use poly_int_tree_p and
2177 wi::to_poly_offset.
2178 (fold_indirect_ref_1): Likewise. Use multiple_p to attempt an exact
2179 division.
2180 * ipa-icf-gimple.c (func_checker::compare_operand): Use
2181 to_poly_offset for MEM offsets.
2182 * ipa-icf.c (sem_variable::equals): Likewise.
2183 * stor-layout.c (compute_record_mode): Use poly_int_tree_p.
2184 * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Use
2185 wi::to_poly_offset for BIT_FIELD_REF offsets.
2186 (vn_reference_maybe_forwprop_address): Use poly_int_tree_p and
2187 wi::to_poly_offset.
2188 * var-tracking.c (emit_note_insn_var_location): Use
2189 tree_to_poly_uint64.
2190
2191 2018-05-29 Jim Wilson <jimw@sifive.com>
2192
2193 * config/riscv/riscv.c (riscv_interrupt_type): Fix comment typo.
2194
2195 2018-05-29 Uros Bizjak <ubizjak@gmail.com>
2196
2197 PR target/85950
2198 * config/i386/i386.md (l<rounding_insn><MODEF:mode><SWI48:mode>2):
2199 Enable for TARGET_SSE4_1 and generate rounds{s,d} and cvtts{s,d}2si{,q}
2200 sequence.
2201 (sse4_1_round<mode>2): Use nonimmediate_operand
2202 for operand 1 predicate.
2203
2204 2018-05-29 Martin Sebor <msebor@redhat.com>
2205 Richard Biener <rguenther@suse.de>
2206
2207 PR testsuite/85888
2208 * calls.c (get_size_range): Call determine_value_range instead
2209 of get_value_range..
2210 * tree-vrp.h (determine_value_range): Declared new function.
2211 * tree-vrp.c (determine_value_range_1, determine_value_range): New.
2212
2213 2018-05-29 Richard Biener <rguenther@suse.de>
2214
2215 * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Make
2216 sure to use non-pattern stmts for get_earlier_stmt arguments.
2217 * tree-vectorizer.h (get_earlier_stmt): Assert we do not get
2218 called on pattern stmts.
2219 (get_later_stmt): Likewise.
2220
2221 2018-05-29 Martin Liska <mliska@suse.cz>
2222
2223 PR gcov-profile/85759
2224 * doc/gcov.texi: Document GCOV_ERROR_FILE and GCOV_EXIT_AT_ERROR
2225 env variables.
2226
2227 2018-05-29 Jakub Jelinek <jakub@redhat.com>
2228
2229 * tree-cfg.c (verify_gimple_assign_unary): Add checking for
2230 VEC_UNPACK_*_EXPR.
2231 (verify_gimple_assign_binary): Check TYPE_VECTOR_SUBPARTS for
2232 VEC_PACK_*_EXPR.
2233
2234 PR target/85918
2235 * tree.def (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
2236 VEC_PACK_FLOAT_EXPR): New tree codes.
2237 * tree-pretty-print.c (op_code_prio): Handle
2238 VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR.
2239 (dump_generic_node): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
2240 VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
2241 * tree-inline.c (estimate_operator_cost): Likewise.
2242 * gimple-pretty-print.c (dump_binary_rhs): Handle VEC_PACK_FLOAT_EXPR.
2243 * fold-const.c (const_binop): Likewise.
2244 (const_unop): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR and
2245 VEC_UNPACK_FIX_TRUNC_LO_EXPR.
2246 * tree-cfg.c (verify_gimple_assign_unary): Likewise.
2247 (verify_gimple_assign_binary): Handle VEC_PACK_FLOAT_EXPR.
2248 * cfgexpand.c (expand_debug_expr): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
2249 VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
2250 * expr.c (expand_expr_real_2): Likewise.
2251 * optabs.def (vec_packs_float_optab, vec_packu_float_optab,
2252 vec_unpack_sfix_trunc_hi_optab, vec_unpack_sfix_trunc_lo_optab,
2253 vec_unpack_ufix_trunc_hi_optab, vec_unpack_ufix_trunc_lo_optab): New
2254 optabs.
2255 * optabs.c (expand_widen_pattern_expr): For
2256 VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR use
2257 sign from result type rather than operand's type.
2258 (expand_binop_directly): For vec_packu_float_optab and
2259 vec_packs_float_optab allow result type to be different from operand's
2260 type.
2261 * optabs-tree.c (optab_for_tree_code): Handle
2262 VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
2263 VEC_PACK_FLOAT_EXPR. Formatting fixes.
2264 * tree-vect-generic.c (expand_vector_operations_1): Handle
2265 VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
2266 VEC_PACK_FLOAT_EXPR.
2267 * tree-vect-stmts.c (supportable_widening_operation): Handle
2268 FIX_TRUNC_EXPR.
2269 (supportable_narrowing_operation): Handle FLOAT_EXPR.
2270 * config/i386/i386.md (fixprefix, floatprefix): New code attributes.
2271 * config/i386/sse.md (*float<floatunssuffix>v2div2sf2): Rename to ...
2272 (float<floatunssuffix>v2div2sf2): ... this. Formatting fix.
2273 (vpckfloat_concat_mode, vpckfloat_temp_mode, vpckfloat_op_mode): New
2274 mode attributes.
2275 (vec_pack<floatprefix>_float_<mode>): New expander.
2276 (vunpckfixt_mode, vunpckfixt_model, vunpckfixt_extract_mode): New mode
2277 attributes.
2278 (vec_unpack_<fixprefix>fix_trunc_lo_<mode>,
2279 vec_unpack_<fixprefix>fix_trunc_hi_<mode>): New expanders.
2280 * doc/md.texi (vec_packs_float_@var{m}, vec_packu_float_@var{m},
2281 vec_unpack_sfix_trunc_hi_@var{m}, vec_unpack_sfix_trunc_lo_@var{m},
2282 vec_unpack_ufix_trunc_hi_@var{m}, vec_unpack_ufix_trunc_lo_@var{m}):
2283 Document.
2284 * doc/generic.texi (VEC_UNPACK_FLOAT_HI_EXPR,
2285 VEC_UNPACK_FLOAT_LO_EXPR): Fix pasto in description.
2286 (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
2287 VEC_PACK_FLOAT_EXPR): Document.
2288
2289 2018-05-29 Richard Biener <rguenther@suse.de>
2290
2291 * tree-vectorizer.h (struct vec_info): Add stmt_vec_infos
2292 member.
2293 (stmt_vec_info_vec): Make pointer.
2294 (init_stmt_vec_info_vec): Remove.
2295 (free_stmt_vec_info_vec): Likewise.
2296 (set_stmt_vec_info_vec): New function.
2297 (free_stmt_vec_infos): Likewise.
2298 (vinfo_for_stmt): Adjust for stmt_vec_info_vec indirection.
2299 (set_vinfo_for_stmt): Likewise.
2300 (get_earlier_stmt): Likewise.
2301 (get_later_stmt): Likewise.
2302 * tree-vectorizer.c (stmt_vec_info_vec): Make pointer.
2303 (vec_info::vec_info): Allocate stmt_vec_infos and set the global.
2304 (vec_info::~vec_info): Free stmt_vec_infos.
2305 (vectorize_loops): Set the global stmt_vec_info_vec to NULL.
2306 Remove old init_stmt_vec_info_vec/free_stmt_vec_info_vec calls.
2307 (pass_slp_vectorize::execute): Likewise.
2308 * tree-vect-stmts.c (init_stmt_vec_info_vec): Remove.
2309 (free_stmt_vec_info_vec): Likewise.
2310 (set_stmt_vec_info_vec): New function.
2311 (free_stmt_vec_infos): Likewise.
2312 * tree-vect-loop.c (_loop_vec_info::~_loop_vec_info): Set
2313 the global stmt_vec_info_vec.
2314 * tree-parloops.c (gather_scalar_reductions): Use
2315 set_stmt_vec_info_vec/free_stmt_vec_infos and maintain a local
2316 vector.
2317
2318 2018-05-29 Richard Biener <rguenther@suse.de>
2319
2320 * dominance.c (iterate_fix_dominators): Push/pop TV_DOMINANCE.
2321
2322 2018-05-29 Martin Liska <mliska@suse.cz>
2323 David Malcolm <dmalcolm@redhat.com>
2324
2325 * vec.c (test_reverse): New.
2326 (vec_c_tests): Add new test.
2327 * vec.h (vl_ptr>::reverse): New function.
2328
2329 2018-05-29 Gerald Pfeifer <gerald@pfeifer.com>
2330
2331 * config.gcc: Identify FreeBSD 3.x and 4.x as unsupported.
2332
2333 * config/freebsd-spec.h (FBSD_LIB_SPEC): Only consider FreeBSD 5
2334 and later.
2335
2336 2018-05-28 Bernd Edlinger <bernd.edlinger@hotmail.de>
2337
2338 * tree-dump.c (dump_node): Use splay_tree_delete_pointers.
2339
2340 2018-05-28 Richard Biener <rguenther@suse.de>
2341
2342 PR tree-optimization/85933
2343 * tree-vect-data-refs.c (vect_record_base_alignments): Only
2344 look at stmts marked as vectorizable.
2345
2346 2018-05-28 Richard Biener <rguenther@suse.de>
2347
2348 PR tree-optimization/85934
2349 * tree-vect-generic.c (expand_vector_operations_1): Hoist
2350 vector boolean check before scalar optimization.
2351
2352 2018-05-28 Jakub Jelinek <jakub@redhat.com>
2353
2354 * doc/invoke.texi (ARM Options): Use @item instead of @itemx
2355 for armv5te.
2356
2357 2018-05-28 Mark Wielaard <mark@klomp.org>
2358
2359 * dwarf2asm.c (dw2_asm_output_delta_uleb128): Add brackets around lab2
2360 if it is an expression containing a minus sign.
2361
2362 2018-05-27 John David Anglin <danglin@gcc.gnu.org>
2363
2364 * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Define to 0.
2365
2366 2018-05-27 Paul Koning <ni1d@arrl.net>
2367
2368 * config/pdp11/pdp11.md (truncsihi2): Remove.
2369
2370 2018-05-27 Monk Chiang <sh.chiang04@gmail.com>
2371 Chung-Ju Wu <jasonwucj@gmail.com>
2372
2373 * config/nds32/nds32-intrinsic.md (unaligned_storedi): Modify patterns
2374 implementation.
2375 (unaligned_store_dw): Ditto.
2376 * config/nds32/nds32-memory-manipulation.c
2377 (nds32_expand_movmemsi_loop_known_size): Refactoring implementation.
2378 (nds32_gen_dup_4_byte_to_word_value): Rename to ...
2379 (nds32_gen_dup_4_byte_to_word_value_aux): ... this.
2380 (emit_setmem_word_loop): Rename to ...
2381 (emit_setmem_doubleword_loop): ... this.
2382 (nds32_gen_dup_4_byte_to_word_value): New function.
2383 (nds32_gen_dup_8_byte_to_double_word_value): New function.
2384 (nds32_expand_setmem_loop): Refine implementation.
2385 (nds32_expand_setmem_loop_v3m): Ditto.
2386 * config/nds32/nds32-multiple.md (unaligned_store_update_base_dw): New
2387 pattern.
2388
2389 2018-05-27 Chung-Ju Wu <jasonwucj@gmail.com>
2390
2391 * config/nds32/nds32.md (bswapsi2, bswaphi2): New patterns.
2392
2393 2018-05-27 Chung-Ju Wu <jasonwucj@gmail.com>
2394
2395 * config/nds32/nds32.c (nds32_attribute_table): Add "no_prologue".
2396 (nds32_init_machine_status): Initialize machine->attr_naked_p and
2397 machine->attr_no_prologue_p.
2398 (nds32_compute_stack_frame): Check "naked" and "no_prologue" attributes.
2399 (nds32_naked_function_p): Handle "naked" and "no_prologue" attributes.
2400 (nds32_expand_epilogue): Consider attr_naked_p.
2401 (nds32_expand_epilogue_v3pop): Likewise.
2402 (nds32_can_use_return_insn): Likewise.
2403 * config/nds32/nds32.h (machine_function): Add attr_naked_p and
2404 attr_no_prologue_p fields.
2405 * config/nds32/nds32.opt (mret-in-naked-func): New option.
2406
2407 2018-05-27 Jakub Jelinek <jakub@redhat.com>
2408
2409 PR target/85918
2410 * config/i386/i386.md (fixunssuffix, floatunssuffix): New code
2411 attributes.
2412 * config/i386/sse.md
2413 (<floatsuffix>float<sseintvecmodelower><mode>2<mask_name><round_name>):
2414 Rename to ...
2415 (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
2416 ... this.
2417 (<floatsuffix>float<sselongvecmodelower><mode>2<mask_name><round_name>):
2418 Rename to ...
2419 (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
2420 ... this.
2421 (*<floatsuffix>floatv2div2sf2): Rename to ...
2422 (*float<floatunssuffix>v2div2sf2): ... this.
2423 (<floatsuffix>floatv2div2sf2_mask): Rename to ...
2424 (float<floatunssuffix>v2div2sf2_mask): ... this.
2425 (*<floatsuffix>floatv2div2sf2_mask_1): Rename to ...
2426 (*float<floatunssuffix>v2div2sf2_mask_1): ... this.
2427 (<fixsuffix>fix_truncv8dfv8si2<mask_name><round_saeonly_name>): Rename
2428 to ...
2429 (fix<fixunssuffix>_truncv8dfv8si2<mask_name><round_saeonly_name>):
2430 ... this.
2431 (<fixsuffix>fix_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
2432 Rename to ...
2433 (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
2434 ... this.
2435 (<fixsuffix>fix_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
2436 Rename to ...
2437 (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
2438 ... this.
2439 (<fixsuffix>fix_truncv2sfv2di2<mask_name>): Rename to ...
2440 (fix<fixunssuffix>_truncv2sfv2di2<mask_name>): ... this.
2441 (vec_pack_ufix_trunc_<mode>): Use gen_fixuns_truncv8dfv8si2 instead of
2442 gen_ufix_truncv8dfv8si2.
2443 * config/i386/i386-builtin.def (__builtin_ia32_cvttpd2uqq256_mask,
2444 __builtin_ia32_cvttpd2uqq128_mask, __builtin_ia32_cvttps2uqq256_mask,
2445 __builtin_ia32_cvttps2uqq128_mask, __builtin_ia32_cvtuqq2ps256_mask,
2446 __builtin_ia32_cvtuqq2ps128_mask, __builtin_ia32_cvtuqq2pd256_mask,
2447 __builtin_ia32_cvtuqq2pd128_mask, __builtin_ia32_cvttpd2udq512_mask,
2448 __builtin_ia32_cvtuqq2ps512_mask, __builtin_ia32_cvtuqq2pd512_mask,
2449 __builtin_ia32_cvttps2uqq512_mask, __builtin_ia32_cvttpd2uqq512_mask):
2450 Use fixuns instead ufix or floatuns instead ufloat in CODE_FOR_ names.
2451
2452 2018-05-24 H.J. Lu <hongjiu.lu@intel.com>
2453
2454 PR target/85900
2455 PR target/85345
2456 * varasm.c (assemble_alias): Lookup ifunc attribute on error.
2457
2458 2018-05-25 Jim Wilson <jimw@sifive.com>
2459
2460 * config/riscv/riscv-protos.h (riscv_epilogue_uses): New.
2461 * config/riscv/riscv.c (struct machine_function): Add
2462 interrupt_handler_p and attribute_checked_p fields.
2463 (riscv_attribute_table): Add interrupt.
2464 (riscv_interrupt_type_p): New.
2465 (riscv_save_reg_p): Save extra regs for interrupt handler.
2466 (riscv_use_save_libcall): Return false for interrupt handler.
2467 (riscv_first_stack_step): Add forward declaration.
2468 (riscv_compute_frame_info): New local interrupt_save_t1. Set it
2469 for interrupt handler with large frame. Use it for saved reg list.
2470 (riscv_expand_prologue): Move flag_stack_usage_info support to
2471 eliminate duplication.
2472 (riscv_expand_epilogue): Generate mret for interrupt handler.
2473 (riscv_epilogue_uses): New.
2474 (riscv_can_use_return_insn): Return false for interrupt handler.
2475 (riscv_function_ok_for_sibcall): Likewise.
2476 (riscv_set_current_function): Add interrupt handler support.
2477 * config/riscv/riscv.h (EPILOGUE_USES): Call riscv_epilogue_uses.
2478 * config/riscv/riscv.md (UNSPECV_MRET): New.
2479 (GP_REGNUM): New.
2480 (riscv_frflags, riscv_fsflags): Use tab after opcode.
2481 (riscv_mret): New.
2482 * doc/extend.texi (RISC-V Function Attributes) <interrupt>: New.
2483
2484 2018-05-25 Bill Schmidt <wschmidt@linux.ibm.com>
2485
2486 PR tree-optimization/85712
2487 * gimple-ssa-strength-reduction.c (replace_one_candidate): Skip if
2488 this candidate has already been replaced in-situ by a copy.
2489
2490 2018-05-25 Jason Merrill <jason@redhat.com>
2491
2492 PR c++/80485 - inline function non-zero address.
2493 * symtab.c (nonzero_address): Check DECL_COMDAT.
2494
2495 2018-05-25 Uros Bizjak <ubizjak@gmail.com>
2496
2497 PR target/83628
2498 * config/alpha/alpha.md (ashlsi3): New insn pattern.
2499 (*ashlsi_se): Rename from *ashldi_se. Define as sign
2500 extension of SImode operation. Use const123_operand predicate.
2501 (*saddsi_1): Remove.
2502 (*saddl_se_1): Ditto.
2503 (*ssubsi_1): Ditto.
2504 (*ssubl_se_1): Ditto.
2505 * config/alpha/predicates.md (const123_operand): New predicate.
2506 * config/alpha/constraints.md (P): Use IN_RANGE.
2507
2508 2018-05-25 Richard Biener <rguenther@suse.de>
2509
2510 * tree-ssa-alias.h (refs_may_alias_p): Add tbaa_p bool parameter,
2511 defaulted to true.
2512 (ref_maybe_used_by_stmt_p): Likewise.
2513 (stmt_may_clobber_ref_p): Likewise.
2514 (stmt_may_clobber_ref_p_1): Likewise.
2515 * tree-ssa-alias.c (refs_may_alias_p): Add tbaa_p bool parameter
2516 and pass it along.
2517 (ref_maybe_used_by_stmt_p): Likewise.
2518 (stmt_may_clobber_ref_p): Likewise.
2519 (stmt_may_clobber_ref_p_1): Likewise.
2520 * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Use
2521 the alias oracle to disambiguate DRs with stmts DR analysis
2522 couldn't handle.
2523 (vect_analyze_data_refs): Do not give up on not analyzable
2524 DRs for BB vectorization. Remove code truncating the dataref
2525 vector.
2526
2527 2018-05-25 Jakub Jelinek <jakub@redhat.com>
2528
2529 PR target/85832
2530 * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
2531 Add (=Yk,v,C) variant using vptestm insn. Use TARGET_AVX512BW
2532 in test instead of TARGET_AVX512F for VI12_AVX512VL iterator.
2533
2534 2018-05-25 Richard Biener <rguenther@suse.de>
2535
2536 * tree-vect-data-refs.c (vect_find_stmt_data_reference): New
2537 function, combining stmt data ref gathering and fatal analysis
2538 parts.
2539 (vect_analyze_data_refs): Remove now redudnant code and simplify.
2540 * tree-vect-loop.c (vect_get_datarefs_in_loop): Factor out from
2541 vect_analyze_loop_2 and use vect_find_stmt_data_reference.
2542 * tree-vect-slp.c (vect_slp_bb): Use vect_find_stmt_data_reference.
2543 * tree-vectorizer.h (vect_find_stmt_data_reference): Declare.
2544
2545 2018-05-25 Bin Cheng <bin.cheng@arm.com>
2546
2547 PR tree-optimization/85720
2548 * tree-loop-distribution.c (break_alias_scc_partitions): Don't merge
2549 SCC if all partitions are builtins.
2550 (version_loop_by_alias_check): New parameter. Generate cancelable
2551 runtime alias check if all partitions are builtins.
2552 (distribute_loop): Update call to above function.
2553
2554 2018-05-25 Bin Cheng <bin.cheng@arm.com>
2555
2556 * tree-outof-ssa.c (tree-ssa.h, tree-dfa.h): Include header files.
2557 (create_default_def, for_all_parms): Moved from tree-ssa-coalesce.c.
2558 (parm_default_def_partition_arg): Ditto.
2559 (set_parm_default_def_partition): Ditto.
2560 (get_parm_default_def_partitions): Ditto and make it static.
2561 (get_undefined_value_partitions): Ditto and make it static.
2562 (remove_ssa_form): Refactor call to init_var_map here.
2563 * tree-ssa-coalesce.c (build_ssa_conflict_graph): Support live range
2564 computation for loop region.
2565 (coalesce_partitions, compute_optimized_partition_bases): Ditto.
2566 (register_default_def): Delete.
2567 (for_all_parms, create_default_def): Move to tree-outof-ssa.c.
2568 (parm_default_def_partition_arg): Ditto.
2569 (set_parm_default_def_partition): Ditto.
2570 (get_parm_default_def_partitions): Ditto and make it static.
2571 (get_undefined_value_partitions): Ditto and make it static.
2572 (coalesce_with_default, coalesce_with_default): Update comment.
2573 (create_coalesce_list_for_region): New func factored out from
2574 create_outofssa_var_map.
2575 (populate_coalesce_list_for_outofssa): New func factored out from
2576 create_outofssa_var_map and coalesce_ssa_name.
2577 (create_outofssa_var_map): Delete.
2578 (coalesce_ssa_name): Refactor to support live range computation.
2579 * tree-ssa-coalesce.h (coalesce_ssa_name): Change decl.
2580 (get_parm_default_def_partitions): Delete.
2581 (get_undefined_value_partitions): Ditto.
2582 * tree-ssa-live.c (init_var_map, delete_var_map): Support live range
2583 computation for loop region.
2584 (new_tree_live_info, loe_visit_block): Ditto.
2585 (live_worklist, set_var_live_on_entry): Ditto.
2586 (calculate_live_on_exit, verify_live_on_entry): Ditto.
2587 * tree-ssa-live.h (struct _var_map): New fields.
2588 (init_var_map): Change decl.
2589 (region_contains_p): New.
2590
2591 2018-05-25 Bin Cheng <bin.cheng@arm.com>
2592
2593 * tree-ssa-live.h (live_merge_and_clear): Delete.
2594
2595 2018-05-25 Richard Biener <rguenther@suse.de>
2596
2597 PR c++/85912
2598 * tree-dump.c (dequeue_and_dump): Remove access to removed
2599 operand 2 of a SWITCH_EXPR.
2600
2601 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
2602
2603 * doc/sourcebuild.texi (vect_double_cond_arith): Include
2604 multiplication and division.
2605 * doc/md.texi (cond_mul@var{m}, cond_div@var{m}, cond_mod@var{m})
2606 (cond_udiv@var{m}, cond_umod@var{m}): Document.
2607 * optabs.def (cond_smul_optab, cond_sdiv_optab, cond_smod_optab)
2608 (cond_udiv_optab, cond_umod_optab): New optabs.
2609 * internal-fn.def (IFN_COND_MUL, IFN_COND_DIV, IFN_COND_MOD)
2610 (IFN_COND_RDIV): New internal functions.
2611 * internal-fn.c (get_conditional_internal_fn): Handle TRUNC_DIV_EXPR,
2612 TRUNC_MOD_EXPR and RDIV_EXPR.
2613 * match.pd (UNCOND_BINARY, COND_BINARY): Handle them.
2614 * config/aarch64/iterators.md (UNSPEC_COND_MUL, UNSPEC_COND_DIV):
2615 New unspecs.
2616 (SVE_INT_BINARY): Include mult.
2617 (SVE_COND_FP_BINARY): Include UNSPEC_MUL and UNSPEC_DIV.
2618 (optab, sve_int_op): Handle mult.
2619 (optab, sve_fp_op, commutative): Handle UNSPEC_COND_MUL and
2620 UNSPEC_COND_DIV.
2621 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New pattern
2622 for SVE_INT_BINARY_SD.
2623
2624 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
2625
2626 * config/aarch64/iterators.md (SVE_INT_BINARY_SD): New code iterator.
2627 (optab, sve_int_op): Handle div and udiv.
2628 * config/aarch64/aarch64-sve.md (<optab><mode>3): New expander
2629 for SVE_INT_BINARY_SD.
2630 (*<optab><mode>3): New insn for the same.
2631
2632 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
2633
2634 * tree-vect-patterns.c: Include predict.h.
2635 (vect_recog_divmod_pattern): Restrict check for division support
2636 to when optimizing for size.
2637
2638 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
2639
2640 * doc/sourcebuild.texi (vect_double_cond_arith: Document.
2641 * gimple-match.h (gimple_match_op::MAX_NUM_OPS): Bump to 4.
2642 (gimple_match_op::gimple_match_op): Add an overload for 4 operands.
2643 (gimple_match_op::set_op): Likewise.
2644 (gimple_resimplify4): Declare.
2645 * genmatch.c (get_operand_type): Handle CFN_COND_* functions.
2646 (expr::gen_transform): Likewise.
2647 (decision_tree::gen): Generate a simplification routine for 4 operands.
2648 * gimple-match-head.c (gimple_simplify): Add an overload for
2649 4 operands. In the top-level function, handle up to 4 call
2650 arguments and call gimple_resimplify4.
2651 (gimple_resimplify4): New function.
2652 (build_call_internal): Pass a fourth operand.
2653 (maybe_push_to_seq): Likewise.
2654 * match.pd (UNCOND_BINARY, COND_BINARY): New operator lists.
2655 Fold VEC_COND_EXPRs of an operation and a default value into
2656 an IFN_COND_* function if possible.
2657 * config/aarch64/iterators.md (UNSPEC_COND_MAX, UNSPEC_COND_MIN):
2658 New unspecs.
2659 (SVE_COND_FP_BINARY): Include them.
2660 (optab, sve_fp_op): Handle them.
2661 (SVE_INT_BINARY_REV): New code iterator.
2662 (SVE_COND_FP_BINARY_REV): New int iterator.
2663 (commutative): New int attribute.
2664 * config/aarch64/aarch64-protos.h (aarch64_sve_prepare_conditional_op):
2665 Declare.
2666 * config/aarch64/aarch64.c (aarch64_sve_prepare_conditional_op): New
2667 function.
2668 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Use it.
2669 (*cond_<optab><mode>): New patterns for reversed operands.
2670
2671 2018-05-25 Richard Biener <rguenther@suse.de>
2672
2673 * tree-vectorizer.h (STMT_VINFO_GROUP_*, GROUP_*): Remove.
2674 (DR_GROUP_*): New, assert we have non-NULL ->data_ref_info.
2675 (REDUC_GROUP_*): New, assert we have NULL ->data_ref_info.
2676 (STMT_VINFO_GROUPED_ACCESS): Adjust.
2677 * tree-vect-data-refs.c (everywhere): Adjust users.
2678 * tree-vect-loop.c (everywhere): Likewise.
2679 * tree-vect-slp.c (everywhere): Likewise.
2680 * tree-vect-stmts.c (everywhere): Likewise.
2681 * tree-vect-patterns.c (vect_reassociating_reduction_p): Likewise.
2682
2683 2018-05-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
2684
2685 * configure.ac (gcc_cv_as_section_has_e): Move to common section.
2686 Rename to...
2687 (gcc_cv_as_section_exclude): ... this.
2688 Try Solaris as #exclude syntax.
2689 * configure: Regenerate.
2690 * config.in: Regenerate.
2691 * config/i386/i386.c (i386_solaris_elf_named_section): Handle
2692 SECTION_EXCLUDE.
2693 * config/sparc/sparc.c (sparc_solaris_elf_asm_named_section)
2694 [HAVE_GAS_SECTION_EXCLUDE]: Handle SECTION_EXCLUDE.
2695
2696 * varasm.c (default_elf_asm_named_section): Don't check if
2697 HAVE_GAS_SECTION_EXCLUDE is defined.
2698
2699 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
2700
2701 * doc/md.texi: Update the documentation of the cond_* optabs
2702 to mention the new final operand. Fix GET_MODE_NUNITS call.
2703 Describe the scalar case too.
2704 * internal-fn.def (IFN_EXTRACT_LAST): Change type to fold_left.
2705 * internal-fn.c (expand_cond_unary_optab_fn): Expect 3 operands
2706 instead of 2.
2707 (expand_cond_binary_optab_fn): Expect 4 operands instead of 3.
2708 (get_conditional_internal_fn): Update comment.
2709 * tree-vect-loop.c (vectorizable_reduction): Pass the original
2710 accumulator value as a final argument to conditional functions.
2711 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Turn into
2712 a define_expand and add an "else" operand. Assert for now that
2713 the else operand is equal to operand 2. Use SVE_INT_BINARY and
2714 SVE_COND_FP_BINARY instead of SVE_COND_INT_OP and SVE_COND_FP_OP.
2715 (*cond_<optab><mode>): New patterns.
2716 * config/aarch64/iterators.md (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX)
2717 (UNSPEC_COND_SMIN, UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
2718 (UNSPEC_COND_EOR): Delete.
2719 (optab): Remove associated mappings.
2720 (SVE_INT_BINARY): New code iterator.
2721 (sve_int_op): Remove int attribute and add "minus" to the code
2722 attribute.
2723 (SVE_COND_INT_OP): Delete.
2724 (SVE_COND_FP_OP): Rename to...
2725 (SVE_COND_FP_BINARY): ...this.
2726
2727 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
2728
2729 * optabs.c (can_reuse_operands_p): New function.
2730 (maybe_legitimize_operands): Try to reuse the results for
2731 earlier operands.
2732
2733 2018-05-24 Uros Bizjak <ubizjak@gmail.com>
2734
2735 * config/i386/sse.md (cvtusi2<ssescalarmodesuffix>64<round_name>):
2736 Add {q} suffix to insn mnemonic.
2737
2738 2018-05-23 Jozef Lawrynowicz <jozef.l@mittosystems.com>
2739
2740 * config/msp430/msp430.c (TARGET_WARN_FUNC_RETURN): Define.
2741 (msp430_warn_func_return): New.
2742
2743 2018-05-24 Roger Sayle <roger@nextmovesoftware.com>
2744
2745 * fold-const.c (tree_nonzero_bits): New function.
2746 * fold-const.h (tree_nonzero_bits): Likewise.
2747 * match.pd (POPCOUNT): New patterns to fold BUILTIN_POPCOUNT and
2748 friends. POPCOUNT(x&1) => x&1, POPCOUNT(x)==0 => x==0, etc.
2749
2750 2018-05-24 H.J. Lu <hongjiu.lu@intel.com>
2751
2752 PR target/85900
2753 PR target/85345
2754 * varasm.c (assemble_alias): Check ifunc_resolver only on
2755 FUNCTION_DECL.
2756
2757 2018-05-24 Uros Bizjak <ubizjak@gmail.com>
2758
2759 PR target/85903
2760 * config/i386/sse.md (movdi_to_sse): Do not generate pseudo
2761 when memory input operand is handled.
2762
2763 2018-05-24 Luis Machado <luis.machado@linaro.org>
2764
2765 * config/aarch64/aarch64.c (qdf24xx_addrcost_table): New static
2766 global.
2767 (qdf24xx_tunings) <addr_costs>: Set to qdf24xx_addrcost_table.
2768
2769 2018-05-24 Richard Sandiford <richard.sandiford@linaro.org>
2770
2771 * match.pd: Delay FMA folds until after vectorization.
2772
2773 2018-05-24 Andre Vieira <andre.simoesdiasvieira@arm.com>
2774
2775 PR target/83009
2776 * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
2777 address check not strict.
2778
2779 2018-05-24 Richard Sandiford <richard.sandiford@linaro.org>
2780
2781 * gimple-match.h (gimple_match_op): New class.
2782 (mprts_hook): Replace parameters with a gimple_match_op *.
2783 (maybe_build_generic_op): Likewise.
2784 (gimple_simplified_result_is_gimple_val): Replace parameters with
2785 a const gimple_match_op *.
2786 (gimple_simplify): Replace code_helper * and tree * parameters with
2787 a gimple_match_op * parameter.
2788 (gimple_resimplify1): Replace code_helper *, tree and tree *
2789 parameters with a gimple_match_op * parameter.
2790 (gimple_resimplify2): Likewise.
2791 (gimple_resimplify3): Likewise.
2792 (maybe_push_res_to_seq): Replace code_helper, tree and tree *
2793 parameters with a gimple_match_op * parameter.
2794 * gimple-match-head.c (gimple_simplify): Change prototypes of
2795 auto-generated functions to take a gimple_match_op * instead of
2796 separate code_helper * and tree * parameters. Make the same
2797 change in the top-level overload and update calls to the
2798 gimple_resimplify routines. Update calls to the auto-generated
2799 functions and to maybe_push_res_to_seq in the publicly-facing
2800 operation-specific gimple_simplify overloads.
2801 (gimple_match_op::MAX_NUM_OPS): Define.
2802 (gimple_resimplify1): Replace rcode and ops with a single res_op
2803 parameter. Update call to gimple_simplify.
2804 (gimple_resimplify2): Likewise.
2805 (gimple_resimplify3): Likewise.
2806 (mprts_hook): Replace parameters with a gimple_match_op *.
2807 (maybe_build_generic_op): Likewise.
2808 (build_call_internal): Replace type, nargs and ops with
2809 a gimple_match_op *.
2810 (maybe_push_res_to_seq): Replace res_code, type and ops parameters
2811 with a single gimple_match_op *. Update calls to mprts_hook,
2812 build_call_internal and gimple_simplified_result_is_gimple_val.
2813 Factor out code that is common to the tree_code and combined_fn cases.
2814 * genmatch.c (expr::gen_transform): Replace tem_code and
2815 tem_ops with a gimple_match_op called tem_op. Update calls
2816 to the gimple_resimplify functions and maybe_push_res_to_seq.
2817 (dt_simplify::gen_1): Manipulate res_op instead of res_code and
2818 res_ops. Update call to the gimple_resimplify functions.
2819 (dt_simplify::gen): Pass res_op instead of res_code and res_ops.
2820 (decision_tree::gen): Make the functions take a gimple_match_op *
2821 called res_op instead of separate res_code and res_ops parameters.
2822 Update call accordingly.
2823 * gimple-fold.c (replace_stmt_with_simplification): Replace rcode
2824 and ops with a single res_op parameter. Update calls to
2825 maybe_build_generic_op and maybe_push_res_to_seq.
2826 (fold_stmt_1): Update calls to gimple_simplify and
2827 replace_stmt_with_simplification.
2828 (gimple_fold_stmt_to_constant_1): Update calls to gimple_simplify
2829 and gimple_simplified_result_is_gimple_val.
2830 * tree-cfgcleanup.c (cleanup_control_expr_graph): Update call to
2831 gimple_simplify.
2832 * tree-ssa-sccvn.c (vn_lookup_simplify_result): Replace parameters
2833 with a gimple_match_op *.
2834 (vn_nary_build_or_lookup): Likewise. Update call to
2835 vn_nary_build_or_lookup_1.
2836 (vn_nary_build_or_lookup_1): Replace rcode, type and ops with a
2837 gimple_match_op *. Update calls to the gimple_resimplify routines
2838 and to gimple_simplified_result_is_gimple_val.
2839 (vn_nary_simplify): Update call to vn_nary_build_or_lookup_1.
2840 Use gimple_match_op::MAX_NUM_OPS instead of a hard-coded 3.
2841 (vn_reference_lookup_3): Update call to vn_nary_build_or_lookup.
2842 (visit_nary_op): Likewise.
2843 (visit_reference_op_load): Likewise.
2844
2845 2018-05-23 Luis Machado <luis.machado@linaro.org>
2846
2847 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Use correct type
2848 modifier for printing the step amount.
2849
2850 2018-05-23 Jozef Lawrynowicz <jozef.l@somniumtech.com>
2851
2852 PR target/78849
2853 * gcc/tree.c (build_common_tree_nodes): Dont set TYPE_SIZE for __intN
2854 types.
2855
2856 2018-05-23 Segher Boessenkool <segher@kernel.crashing.org>
2857
2858 * doc/sourcebuild.texi (Endianness): New subsubsection.
2859
2860 2018-05-23 Luis Machado <luis.machado@linaro.org>
2861
2862 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
2863 <prefetch_dynamic_strides>: New const bool field.
2864 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
2865 prefetch_dynamic_strides.
2866 (exynosm1_prefetch_tune): Likewise.
2867 (thunderxt88_prefetch_tune): Likewise.
2868 (thunderx_prefetch_tune): Likewise.
2869 (thunderx2t99_prefetch_tune): Likewise.
2870 (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to
2871 false.
2872 (aarch64_override_options_internal): Update to set
2873 PARAM_PREFETCH_DYNAMIC_STRIDES.
2874 * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
2875 * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
2876 * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
2877 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
2878 prefetch-dynamic-strides setting.
2879
2880 2018-05-23 Luis Machado <luis.machado@linaro.org>
2881
2882 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
2883 <minimum_stride>: New const int field.
2884 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
2885 minimum_stride field defaulting to -1.
2886 (exynosm1_prefetch_tune): Likewise.
2887 (thunderxt88_prefetch_tune): Likewise.
2888 (thunderx_prefetch_tune): Likewise.
2889 (thunderx2t99_prefetch_tune): Likewise.
2890 (qdf24xx_prefetch_tune) <minimum_stride>: Set to 2048.
2891 <default_opt_level>: Set to 3.
2892 (aarch64_override_options_internal): Update to set
2893 PARAM_PREFETCH_MINIMUM_STRIDE.
2894 * doc/invoke.texi (prefetch-minimum-stride): Document new option.
2895 * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
2896 * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
2897 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
2898 stride is constant and is below the minimum stride threshold.
2899
2900 2018-05-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2901
2902 * config/arm/arm-cpus.in (mode26): Delete.
2903 (armv4): Delete mode26 reference.
2904 * config/arm/arm.c (arm_configure_build_target): Delete use of
2905 isa_bit_mode26.
2906
2907 2018-05-23 Uros Bizjak <ubizjak@gmail.com>
2908
2909 * config/i386/i386.md (*floatuns<SWI48:mode><MODEF:mode>2_avx512):
2910 New insn pattern.
2911 (floatunssi<mode>2): Also enable for AVX512F and TARGET_SSE_MATH.
2912 Rewrite expander pattern. Emit gen_floatunssi<mode>2_i387_with_xmm
2913 for non-SSE modes.
2914 (floatunsdisf2): Rewrite expander pattern. Hanlde TARGET_AVX512F.
2915 (floatunsdidf2): Ditto.
2916
2917 2018-05-23 Uros Bizjak <ubizjak@gmail.com>
2918
2919 * config/i386/i386.md (fixuns_trunc<mode>di2): New insn pattern.
2920 (fixuns_trunc<mode>si2_avx512f): Ditto.
2921 (*fixuns_trunc<mode>si2_avx512f_zext): Ditto.
2922 (fixuns_trunc<mode>si2): Also enable for AVX512F and TARGET_SSE_MATH.
2923 Emit fixuns_trunc<mode>si2_avx512f for AVX512F targets.
2924
2925 2018-05-23 Alexander Monakov <amonakov@ispras.ru>
2926
2927 PR rtl-optimization/79985
2928 * df-scan.c (df_insn_refs_collect): Remove special case for
2929 global registers and asm statements.
2930
2931 2018-05-23 Alexander Monakov <amonakov@ispras.ru>
2932
2933 * extend.texi (Global Register Variables): Rewrite the bullet list.
2934 Note that the register is available for allocation. Note that access
2935 via inline asm must use constraints. Add note about async-signal
2936 handlers. Remove paragraph about automagic register selection.
2937
2938 2018-05-23 Richard Biener <rguenther@suse.de>
2939
2940 * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove restriction
2941 of fixed offset from memset VN.
2942
2943 2018-05-23 Bill Schmidt <wschmidt@linux.ibm.com>
2944
2945 * gimple-ssa-strength-reduction.c (struct slsr_cand_d): Add
2946 first_interp field.
2947 (alloc_cand_and_find_basis): Initialize first_interp field.
2948 (slsr_process_mul): Modify first_interp field.
2949 (slsr_process_add): Likewise.
2950 (slsr_process_cast): Modify first_interp field for each new
2951 interpretation.
2952 (slsr_process_copy): Likewise.
2953 (dump_candidate): Dump first_interp field.
2954 (replace_mult_candidate): Process all interpretations, not just
2955 subsequent ones.
2956 (replace_rhs_if_not_dup): Likewise.
2957 (replace_one_candidate): Likewise.
2958
2959 2018-05-23 Wilco Dijkstra <wdijkstr@arm.com>
2960
2961 * config/aarch64/aarch64.c (aarch64_use_frame_pointer):
2962 Add new boolean.
2963 (aarch64_needs_frame_chain): New function.
2964 (aarch64_parse_override_string): Set aarch64_use_frame_pointer.
2965
2966 2018-05-23 Sudakshina Das <sudi.das@arm.com>
2967
2968 PR target/84882
2969 * common/config/aarch64/aarch64-common.c (aarch64_handle_option):
2970 Check val before adding MASK_STRICT_ALIGN to opts->x_target_flags.
2971 * config/aarch64/aarch64.opt (mstrict-align): Remove RejectNegative.
2972 * config/aarch64/aarch64.c (aarch64_attributes): Mark allow_neg
2973 as true for strict-align.
2974 (aarch64_can_inline_p): Perform checks even when callee has no
2975 attributes to check for strict alignment.
2976 * doc/extend.texi (AArch64 Function Attributes): Document
2977 no-strict-align.
2978 * doc/invoke.texi: (AArch64 Options): Likewise.
2979
2980 2018-05-23 Richard Sandiford <richard.sandiford@linaro.org>
2981
2982 PR tree-optimization/85853
2983 * tree-vect-slp.c (vect_slp_analyze_node_operations): Split out
2984 the handling of the root of the node to...
2985 (vect_slp_analyze_node_operations_1): ...this new function,
2986 and run the whole thing with the child nodes' def types
2987 set according to their SLP node's def type.
2988
2989 2018-05-23 Richard Biener <rguenther@suse.de>
2990
2991 PR middle-end/85874
2992 * tree-data-ref.c (create_runtime_alias_checks): Defer
2993 and ignore overflow warnings.
2994
2995 2018-05-23 Yury Gribov <tetra2005@gmail.com>
2996
2997 PR tree-optimization/85822
2998 * tree-vrp.c (is_masked_range_test): Fix handling of negative
2999 constants.
3000
3001 2018-05-23 Richard Biener <rguenther@suse.de>
3002
3003 * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
3004 memset constants via native_interpret_expr.
3005
3006 2018-05-22 H.J. Lu <hongjiu.lu@intel.com>
3007
3008 PR target/85345
3009 * cgraph.h (cgraph_node::create): Set ifunc_resolver for ifunc
3010 attribute.
3011 (cgraph_node::create_alias): Likewise.
3012 (cgraph_node::get_availability): Check ifunc_resolver instead
3013 of looking up ifunc attribute.
3014 * cgraphunit.c (maybe_diag_incompatible_alias): Likewise.
3015 * varasm.c (do_assemble_alias): Likewise.
3016 (assemble_alias): Likewise.
3017 (default_binds_local_p_3): Likewise.
3018 * cgraph.h (cgraph_node): Add ifunc_resolver.
3019 (cgraph_node::only_called_directly_or_aliased_p): Return false
3020 for IFUNC resolver.
3021 * lto-cgraph.c (input_node): Set ifunc_resolver for ifunc
3022 attribute.
3023 * symtab.c (symtab_node::verify_base): Verify that ifunc_resolver
3024 is equivalent to lookup_attribute ("ifunc", DECL_ATTRIBUTES (decl)).
3025 (symtab_node::binds_to_current_def_p): Check ifunc_resolver
3026 instead of looking up ifunc attribute.
3027
3028 2018-05-22 Luis Machado <luis.machado@linaro.org>
3029
3030 * config/aarch64/aarch64.md (*ashift<mode>_extv_bfiz): New pattern.
3031
3032 2018-05-22 Martin Sebor <msebor@redhat.com>
3033
3034 PR middle-end/85359
3035 * builtins.c (expand_builtin_strcpy): Call maybe_warn_nonstring_arg
3036 only when expasion succeeds.
3037 (expand_builtin_strcmp): Same.
3038 (expand_builtin_strncmp): Same.
3039
3040 2018-05-22 Martin Sebor <msebor@redhat.com>
3041
3042 * calls.c (maybe_warn_nonstring_arg): Fix a typo in a comment.
3043
3044 2018-05-22 Jackson Woodruff <jackson.woodruff@arm.com>
3045 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3046
3047 * config/aarch64/aarch64-ldpstp.md: Replace uses of
3048 aarch64_mem_pair_operand with memory_operand and delete operand swapping
3049 code.
3050 * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
3051 Add check for legitimate_address.
3052 (aarch64_gen_adjusted_ldpstp): Swap operands where appropriate.
3053 (aarch64_swap_ldrstr_operands): New.
3054 * config/aarch64/aarch64-protos.h (aarch64_swap_ldrstr_operands):
3055 Define prototype.
3056
3057 2018-05-22 Jackson Woodruff <jackson.woodruff@arm.com>
3058 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3059
3060 * config/aarch64/aarch64.md: New patterns to generate stp
3061 and ldp.
3062 (store_pair_sw, store_pair_dw): New patterns to generate stp for
3063 single words and double words.
3064 (load_pair_sw, load_pair_dw): Likewise.
3065 (store_pair_sf, store_pair_df, store_pair_si, store_pair_di):
3066 Delete.
3067 (load_pair_sf, load_pair_df, load_pair_si, load_pair_di):
3068 Delete.
3069 * config/aarch64/aarch64-ldpstp.md: Modify peephole
3070 for different mode ldpstp and add peephole for merged zero stores.
3071 Likewise for loads.
3072 * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
3073 Add size check.
3074 (aarch64_gen_store_pair): Rename calls to match new patterns.
3075 (aarch64_gen_load_pair): Rename calls to match new patterns.
3076 * config/aarch64/aarch64-simd.md (load_pair<mode>): Rename to...
3077 (load_pair<DREG:mode><DREG2:mode>): ... This.
3078 (store_pair<mode>): Rename to...
3079 (vec_store_pair<DREG:mode><DREG2:mode>): ... This.
3080 * config/aarch64/iterators.md (DREG, DREG2, DX2, SX, SX2, DSX):
3081 New mode iterators.
3082 (V_INT_EQUIV): Handle SImode.
3083 * config/aarch64/predicates.md (aarch64_reg_zero_or_fp_zero):
3084 New predicate.
3085
3086 2018-05-22 Martin Sebor <msebor@redhat.com>
3087
3088 PR c/85623
3089 * calls.c (maybe_warn_nonstring_arg): Use string length to set
3090 or ajust the presumed bound on an operation to avoid unnecessary
3091 warnings.
3092
3093 2018-05-22 Martin Sebor <msebor@redhat.com>
3094
3095 PR tree-optimization/85826
3096 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Avoid
3097 assuming that a DECL necesarily has a constant size.
3098
3099 2018-05-22 Richard Sandiford <richard.sandiford@linaro.org>
3100
3101 PR middle-end/85862
3102 * internal-fn.c (expand_direct_optab_fn): Cope with a null lhs.
3103
3104 2018-05-22 Richard Biener <rguenther@suse.de>
3105
3106 PR tree-optimization/85834
3107 * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly handle
3108 non-constant and non-zero memset arguments.
3109
3110 2018-05-22 Martin Liska <mliska@suse.cz>
3111
3112 PR ipa/85607
3113 * ipa-icf.c (sem_item::add_type): Do not ICE for incomplete types.
3114
3115 2018-05-22 Richard Biener <rguenther@suse.de>
3116
3117 PR tree-optimization/85863
3118 * tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant
3119 comparisons when vectype is specified.
3120 (vectorizable_condition): Do not specify vectype for
3121 vect_is_simple_cond when SLP vectorizing.
3122
3123 2018-05-21 Michael Meissner <meissner@linux.ibm.com>
3124
3125 PR target/85657
3126 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not
3127 define __ibm128 as long double.
3128 * config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128
3129 as a distinct type when IEEE 128-bit support is enabled.
3130 (init_float128_ieee): Fix up conversions between IFmode and IEEE
3131 128-bit types to use the correct functions.
3132 (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to
3133 convert between 128-bit floating point types that have different
3134 modes but the same representation, instead of using gen_lowpart to
3135 makean alias.
3136 * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and
3137 KFmode.
3138 (IFKF_reg): New attributes to give the register constraints for
3139 IFmode and KFmode.
3140 (extend<mode>tf2_internal): New insns to mark an explicit
3141 conversion between 128-bit floating point types that have a
3142 different mode but share the same representation.
3143
3144 2018-05-21 Richard Sandiford <richard.sandiford@linaro.org>
3145
3146 PR tree-optimization/85814
3147 * tree-ssa-strlen.c (get_stridx_plus_constant): Cope with
3148 a null return from get_strinfo when unsharing the next
3149 strinfo in the chain.
3150
3151 2018-05-21 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
3152
3153 PR gcc/84923
3154 * varasm.c (weak_finish): Clean up weak_decls.
3155
3156 2018-05-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3157
3158 * config/aarch64/aarch64.md ("unspec"): Define UNSPEC_SABAL,
3159 UNSPEC_SABDL2, UNSPEC_SADALP, UNSPEC_UABAL, UNSPEC_UABDL2,
3160 UNSPEC_UADALP values.
3161 * config/aarch64/iterators.md (ABAL): New int iterator.
3162 (ABDL2): Likewise.
3163 (ADALP): Likewise.
3164 (sur): Add mappings for the above.
3165 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>_3):
3166 New define_insn.
3167 (aarch64_<sur>abal<mode>_4): Likewise.
3168 (aarch64_<sur>adalp<mode>_3): Likewise.
3169 (<sur>sadv16qi): New define_expand.
3170
3171 2018-05-21 Alexander Nesterovskiy <alexander.nesterovskiy@intel.com>
3172
3173 * config/i386/i386.md (*movsf_internal): AVX falsedep fix.
3174 (*movdf_internal): Ditto.
3175 (*rcpsf2_sse): Ditto.
3176 (*rsqrtsf2_sse): Ditto.
3177 (*sqrt<mode>2_sse): Ditto.
3178
3179 2018-05-21 Tamar Christina <tamar.christina@arm.com>
3180
3181 * config/aarch64/aarch64-simd.md (aarch64_eor3qv8hi): Change to
3182 eor3q<mode>4.
3183 (aarch64_bcaxqv8hi): Change to bcaxq<mode>4.
3184 * config/aarch64/aarch64-simd-builtins.def (veor3q_u8, veor3q_u32,
3185 veor3q_u64, veor3q_s8, veor3q_s16, veor3q_s32, veor3q_s64, vbcaxq_u8,
3186 vbcaxq_u32, vbcaxq_u64, vbcaxq_s8, vbcaxq_s16, vbcaxq_s32,
3187 vbcaxq_s64): New.
3188 * config/aarch64/arm_neon.h: Likewise.
3189 * config/aarch64/iterators.md (VQ_I): New.
3190
3191 2018-05-21 Alexey Brodkin <abrodkin@synopsys.com>
3192
3193 * config.gcc: Add arc/t-multilib-linux to tmake_file for
3194 arc*-*-linux*.
3195 * config/arc/t-multilib-linux: Specify MULTILIB_OPTIONS and
3196 MULTILIB_DIRNAMES
3197
3198 2018-05-20 Chung-Ju Wu <jasonwucj@gmail.com>
3199
3200 * config/nds32/constraints.md (S): New constraint.
3201 * config/nds32/nds32.md (call_internal): Use constraint S.
3202 (call_value_internal): Likewise.
3203 (sibcall_internal): Likewise.
3204 (sibcall_value_internal): Likewise.
3205
3206 2018-05-20 Kito Cheng <kito.cheng@gmail.com>
3207 Chung-Ju Wu <jasonwucj@gmail.com>
3208
3209 * config/nds32/nds32.c (nds32_register_move_cost): Take garywolf cpu
3210 into consideration.
3211
3212 2018-05-20 Kito Cheng <kito.cheng@gmail.com>
3213 Chung-Ju Wu <jasonwucj@gmail.com>
3214
3215 * config/nds32/nds32-cost.c (rtx_cost_model_t): New structure.
3216 (insn_size_16bit, insn_size_32bit): New variables for cost evaluation.
3217 (nds32_rtx_costs_impl): Simplify.
3218 (nds32_address_cost_impl): Simplify.
3219 (nds32_init_rtx_costs): New function.
3220 (nds32_rtx_costs_speed_prefer): Likewise.
3221 (nds32_rtx_costs_size_prefer): Likewise.
3222 (nds32_address_cost_speed_prefer): Likewise.
3223 (nds32_address_cost_speed_fwprop): Likewise.
3224 (nds32_address_cost_size_prefer): Likewise.
3225 * config/nds32/nds32-protos.h (nds32_init_rtx_costs): Declare.
3226 * config/nds32/nds32.c (nds32_option_override): Use
3227 nds32_init_rtx_costs function.
3228
3229 2018-05-20 Chung-Ju Wu <jasonwucj@gmail.com>
3230
3231 * config/nds32/nds32.c (nds32_asm_file_start): Output pipeline model.
3232 * config/nds32/nds32.h (TARGET_PIPELINE_N7): Define.
3233 (TARGET_PIPELINE_N8): Likewise.
3234 (TARGET_PIPELINE_N10): Likewise.
3235 (TARGET_PIPELINE_N13): Likewise.
3236 (TARGET_PIPELINE_GRAYWOLF): Likewise.
3237
3238 2018-05-19 Monk Chiang <sh.chiang04@gmail.com>
3239
3240 * config/nds32/nds32-fpu.md: Update copyright year.
3241
3242 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
3243
3244 * config/nds32/nds32.h (ASM_SPEC): Adjust spec rule.
3245
3246 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
3247
3248 * config/nds32/nds32.c
3249 (nds32_md_asm_adjust): Consider flag_inline_asm_r15 variable.
3250 * config/nds32/nds32.opt (minline-asm-r15): New option.
3251
3252 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
3253
3254 * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): Add
3255 MASK_HW_ABS.
3256 * config/nds32/nds32.md (abssi2): New pattern.
3257
3258 2018-05-19 Uros Bizjak <ubizjak@gmail.com>
3259
3260 * config/i386/i386.md (rex64namesuffix): New mode attribute.
3261 * config/i386/sse.md (sse_cvtsi2ss<rex64namesuffix><round_name>):
3262 Merge insn pattern from sse_cvtsi2ss<round_name> and
3263 sse_cvtsi2ssq<round_name> using SWI48 mode iterator.
3264 (sse_cvtss2si<rex64namesuffix><round_name>): Merge insn pattern
3265 from sse_cvtss2si<round_name> and sse_cvtss2siq<round_name>
3266 using SWI48 mode iterator.
3267 (sse_cvtss2si<rex64namesuffix>_2): Merge insn pattern from
3268 sse_cvtss2si_2 and sse_cvtss2siq_2 using SWI48 mode iterator.
3269 (sse_cvttss2si<rex64namesuffix><round_saeonly_name>): Merge insn
3270 pattern from sse_cvttss2si<round_saeonly_name>
3271 and sse_cvttss2siq<round_saeonly_name> using SWI48 mode iterator.
3272 (avx512f_vcvtss2usi<rex64namesuffix><round_name>): Merge insn pattern
3273 from avx512f_vcvtss2usi<round_name> and avx512f_vcvtss2usiq<round_name>
3274 using SWI48 mode iterator.
3275 (avx512f_vcvttss2usi<rex64namesuffix><round_saeonly_name>): Merge
3276 insn pattern from avx512f_vcvttss2usi<round_saeonly_name> and
3277 avx512f_vcvttss2usiq<round_saeonly_name> using SWI48 mode iterator.
3278 (avx512f_vcvtsd2usi<rex64namesuffix><round_name>): Merge insn pattern
3279 from avx512f_vcvtsd2usi<round_name> and avx512f_vcvtsd2usiq<round_name>
3280 using SWI48 mode iterator.
3281 (avx512f_vcvttsd2usi<rex64namesuffix><round_saeonly_name>): Merge
3282 insn pattern from avx512f_vcvttsd2usi<round_saeonly_name> and
3283 avx512f_vcvttsd2usiq<round_saeonly_name> using SWI48 mode iterator.
3284 (sse2_cvtsd2si<rex64namesuffix><round_name>): Merge insn pattern from
3285 sse2_cvtsd2si<round_name> and sse2_cvtsd2siq<round_name> using
3286 SWI48 mode iterator.
3287 (sse2_cvtsd2si<rex64namesuffix>_2): Merge insn pattern from
3288 sse2_cvtsd2si_2 and sse2_cvtsd2siq_2 using SWI48 mode iterator.
3289 (sse_cvttsd2si<rex64namesuffix><round_saeonly_name>): Merge insn
3290 pattern from sse_cvttsd2si<round_saeonly_name>
3291 and sse_cvttsd2siq<round_saeonly_name> using SWI48 mode iterator.
3292
3293 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
3294
3295 * config/nds32/nds32-md-auxiliary.c
3296 (nds32_valid_smw_lwm_base_p): Refine.
3297 (nds32_output_smw_single_word): Refine.
3298 (nds32_output_smw_double_word): New.
3299 * config/nds32/nds32-protos.h (nds32_output_smw_double_word): New.
3300
3301 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
3302
3303 * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push): Refine.
3304 (nds32_output_stack_pop): Refine.
3305 (nds32_expand_unaligned_load): Refine.
3306 (nds32_expand_unaligned_store): Refine.
3307
3308 2018-05-19 Kuan-Lin Chen <kuanlinchentw@gmail.com>
3309 Chung-Ju Wu <jasonwucj@gmail.com>
3310
3311 * config/nds32/constants.md: Add TP_REGNUM constant.
3312 (unspec_element): Add UNSPEC_GOTINIT, UNSPEC_GOT, UNSPEC_GOTOFF,
3313 UNSPEC_PLT, UNSPEC_TLSGD, UNSPEC_TLSLD, UNSPEC_TLSIE, UNSPEC_TLSLE and
3314 UNSPEC_ADD32.
3315 * config/nds32/nds32-doubleword.md: Consider flag_pic.
3316 * config/nds32/nds32-dspext.md (mov<mode>): Expand TLS and PIC cases.
3317 * config/nds32/nds32-predicates.c (nds32_const_unspec_p): New.
3318 * config/nds32/nds32-md-auxiliary.c: Implementation that support TLS
3319 and PIC code generation.
3320 * config/nds32/nds32-protos.h: Declarations that support TLS and PIC
3321 code generation.
3322 * config/nds32/nds32-relax-opt.c: Consider TLS and PIC for relax
3323 optimization.
3324 * config/nds32/nds32.md: Support TLS and PIC.
3325 * config/nds32/nds32.c: Support TLS and PIC.
3326 * config/nds32/nds32.h (nds32_relax_insn_type): New enum type.
3327 * config/nds32/predicates.md (nds32_nonunspec_symbolic_operand): New
3328 predicate.
3329
3330 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
3331
3332 * config/nds32/nds32-predicates.c (const_vector_to_hwint): Use machine
3333 mode with E_ prefix.
3334
3335 2018-05-19 Kuan-Lin Chen <kuanlinchentw@gmail.com>
3336 Chung-Ju Wu <jasonwucj@gmail.com>
3337
3338 * config/nds32/constants.md (unspec_element): Add UNSPEC_ICT.
3339 * config/nds32/nds32-md-auxiliary.c
3340 (symbolic_reference_mentioned_p): New.
3341 (nds32_legitimize_ict_address): New.
3342 (nds32_expand_ict_move): New.
3343 (nds32_indirect_call_referenced_p): New.
3344 (nds32_symbol_binds_local_p): Delete.
3345 (nds32_long_call_p): Modify.
3346 * config/nds32/nds32-opts.h (nds32_ict_model_type): New enum type.
3347 * config/nds32/nds32-protos.h
3348 (symbolic_reference_mentioned_p): Declare.
3349 (nds32_legitimize_ict_address): Declare.
3350 (nds32_expand_ict_move): Declare.
3351 (nds32_indirect_call_referenced_p): Declare.
3352 * config/nds32/nds32-relax-opt.c (nds32_ict_const_p): New.
3353 (nds32_relax_group): Use nds32_ict_const_p as condition.
3354 * config/nds32/nds32.c (nds32_attribute_table): Add "indirect_call".
3355 (nds32_asm_file_start): Output ict_model directive in asm code.
3356 (nds32_legitimate_address_p): Consider indirect call.
3357 (nds32_print_operand): Consider indirect call.
3358 (nds32_print_operand_address): Consider indirect call.
3359 (nds32_insert_attributes): Handle "indirect_call" attribute.
3360 (TARGET_LEGITIMATE_ADDRESS_P): Define.
3361 (TARGET_LEGITIMATE_CONSTANT_P): Define.
3362 (TARGET_CANNOT_FORCE_CONST_MEM): Define.
3363 (TARGET_DELEGITIMIZE_ADDRESS): Define.
3364 (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
3365 * config/nds32/nds32.h (SYMBOLIC_CONST_P): Define.
3366 (TARGET_ICT_MODEL_SMALL): Define.
3367 (TARGET_ICT_MODEL_LARGE): Define.
3368 * config/nds32/nds32.md (movsi): Consider ict model.
3369 (call, call_value): Consider ict model.
3370 (sibcall, sibcall_value): Consider ict model.
3371 * config/nds32/nds32.opt (mict-model): New option.
3372 * config/nds32/predicates.md (nds32_symbolic_operand): Consider ict
3373 model.
3374
3375 2018-05-18 Kito Cheng <kito.cheng@gmail.com>
3376 Monk Chiang <sh.chiang04@gmail.com>
3377 Jim Wilson <jimw@sifive.com>
3378
3379 * common/config/riscv/riscv-common.c (riscv_parse_arch_string):
3380 Add support to parse rv32e*. Clear MASK_RVE for rv32i and rv64i.
3381 * config.gcc (riscv*-*-*): Add support for rv32e* and ilp32e.
3382 * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): Define
3383 __riscv_32e when TARGET_RVE. Handle ABI_ILP32E as soft-float ABI.
3384 * config/riscv/riscv-opts.h (riscv_abi_type): Add ABI_ILP32E.
3385 * config/riscv/riscv.c (riscv_compute_frame_info): When TARGET_RVE,
3386 compute save_libcall_adjustment properly.
3387 (riscv_option_override): Call error if TARGET_RVE and not ABI_ILP32E.
3388 (riscv_conditional_register_usage): Handle TARGET_RVE and ABI_ILP32E.
3389 * config/riscv/riscv.h (UNITS_PER_FP_ARG): Handle ABI_ILP32E.
3390 (STACK_BOUNDARY, ABI_STACK_BOUNDARY): Handle TARGET_RVE.
3391 (GP_REG_LAST, MAX_ARGS_IN_REGISTERS): Likewise.
3392 (ABI_SPEC): Handle mabi=ilp32e.
3393 * config/riscv/riscv.opt (abi_type): Add ABI_ILP32E.
3394 (RVE): Add RVE mask.
3395 * doc/invoke.texi (RISC-V options) <-mabi>: Add ilp32e info.
3396 <-march>: Add rv32e as an example.
3397
3398 2018-05-18 Marc Glisse <marc.glisse@inria.fr>
3399
3400 PR c++/82899
3401 * tree-ssa-structalias.c (create_variable_info_for_1): Extra argument.
3402 (intra_create_variable_infos): Handle C++ constructors.
3403
3404 2018-05-18 Martin Liska <mliska@suse.cz>
3405
3406 * passes.def: Remove a redundant pass.
3407
3408 2018-05-18 Eric Botcazou <ebotcazou@adacore.com>
3409
3410 PR bootstrap/85838
3411 * config/sparc/sparc.c (sparc_expand_builtin): Always initialize op[0].
3412
3413 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3414
3415 * config/arm/arm-cpus.in (armv3m, mode32): Delete features.
3416 (ARMv4): Update.
3417 (ARMv2, ARMv3, ARMv3m): Delete fgroups.
3418 (ARMv6m): Update.
3419 (armv2, armv2a, armv3, armv3m): Delete architectures.
3420 (arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620,
3421 arm7, arm7d, arm7di, arm70, arm700, arm700i, arm710, arm720,
3422 arm710c, arm7100, arm7500, arm7500fe, arm7m, arm7dm, arm7dmi):
3423 Delete cpus.
3424 * config/arm/arm.md (maddsidi4): Remove check for arm_arch3m.
3425 (*mulsidi3adddi): Likewise.
3426 (mulsidi3): Likewise.
3427 (*mulsidi3_nov6): Likewise.
3428 (umulsidi3): Likewise.
3429 (umulsidi3_nov6): Likewise.
3430 (umaddsidi4): Likewise.
3431 (*umulsidi3adddi): Likewise.
3432 (smulsi3_highpart): Likewise.
3433 (*smulsi3_highpart_nov6): Likewise.
3434 (umulsi3_highpart): Likewise.
3435 (*umulsi3_highpart_nov6): Likewise.
3436 * config/arm/arm.h (arm_arch3m): Delete.
3437 * config/arm/arm.c (arm_arch3m): Delete.
3438 (arm_option_override_internal): Update armv3-related comment.
3439 (arm_configure_build_target): Delete use of isa_bit_mode32.
3440 (arm_option_reconfigure_globals): Delete set of arm_ach3m.
3441 (arm_rtx_costs_internal): Delete check of arm_arch3m.
3442 * config/arm/arm-fixed.md (mulsq3): Delete check for arm_arch3m.
3443 (mulsa3): Likewise.
3444 (mulusa3): Likewise.
3445 * config/arm/arm-protos.h (arm_arch3m): Delete.
3446 * config/arm/arm-tables.opt: Regenerate.
3447 * config/arm/arm-tune.md: Likewise.
3448 * config/arm/t-arm-elf (all_early_nofp): Delete mentions of
3449 deleted architectures.
3450
3451 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3452
3453 * config/arm/arm-cpus.in (armv5, armv5e): Delete features.
3454 (armv5t, armv5te): New features.
3455 (ARMv5, ARMv5e): Delete fgroups.
3456 (ARMv5t, ARMv5te): Adjust for above changes.
3457 (ARMv6m): Likewise.
3458 (armv5, armv5e): Delete arches.
3459 * config/arm/arm.md (*call_reg_armv5): Use arm_arch5t instead of
3460 arm_arch5.
3461 (*call_reg_arm): Likewise.
3462 (*call_value_reg_armv5): Likewise.
3463 (*call_value_reg_arm): Likewise.
3464 (*call_symbol): Likewise.
3465 (*call_value_symbol): Likewise.
3466 (*sibcall_insn): Likewise.
3467 (*sibcall_value_insn): Likewise.
3468 (clzsi2): Likewise.
3469 (prefetch): Likewise.
3470 (define_split and define_peephole2 dependent on arm_arch5):
3471 Likewise.
3472 * config/arm/arm.h (TARGET_LDRD): Use arm_arch5te instead of
3473 arm_arch5e.
3474 (TARGET_ARM_QBIT): Likewise.
3475 (TARGET_DSP_MULTIPLY): Likewise.
3476 (enum base_architecture): Delete BASE_ARCH_5, BASE_ARCH_5E.
3477 (arm_arch5, arm_arch5e): Delete.
3478 (arm_arch5t, arm_arch5te): Declare.
3479 * config/arm/arm.c (arm_arch5, arm_arch5e): Delete.
3480 (arm_arch5t): Declare.
3481 (arm_option_reconfigure_globals): Update for the above.
3482 (arm_options_perform_arch_sanity_checks): Update comment, replace
3483 use of arm_arch5 with arm_arch5t.
3484 (use_return_insn): Likewise.
3485 (arm_emit_call_insn): Likewise.
3486 (output_return_instruction): Likewise.
3487 (arm_final_prescan_insn): Likewise.
3488 (arm_coproc_builtin_available): Likewise.
3489 * config/arm/arm-c.c (arm_cpu_builtins): Replace arm_arch5 and
3490 arm_arch5e with arm_arch5t and arm_arch5te.
3491 * config/arm/arm-protos.h (arm_arch5, arm_arch5e): Delete.
3492 (arm_arch5t, arm_arch5te): Declare.
3493 * config/arm/arm-tables.opt: Regenerate.
3494 * config/arm/t-arm-elf: Remove references to armv5, armv5e.
3495 * config/arm/t-multilib: Likewise.
3496 * config/arm/thumb1.md (*call_reg_thumb1_v5): Check arm_arch5t
3497 instead of arm_arch5.
3498 (*call_reg_thumb1): Likewise.
3499 (*call_value_reg_thumb1_v5): Likewise.
3500 (*call_value_reg_thumb1): Likewise.
3501 * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Remove now
3502 unreachable path.
3503 * doc/invoke.texi (ARM Options): Remove references to armv5, armv5e.
3504
3505 2018-05-18 Martin Liska <mliska@suse.cz>
3506
3507 PR gcov-profile/84846
3508 * doc/gcov.texi: Document -t option of gcov tool.
3509
3510 2018-05-18 Martin Liska <mliska@suse.cz>
3511
3512 PR gcov-profile/84846
3513 * gcov.c (print_usage): Add new -t option.
3514 (process_args): Handle the option.
3515 (generate_results): Use stdout as output when requested by
3516 the option.
3517
3518 2018-05-18 Martin Liska <mliska@suse.cz>
3519
3520 PR gcov-profile/84846
3521 * coverage.c (coverage_init): Write PWD to .gcno file.
3522 * doc/gcov.texi: Document how working directory is printed.
3523 * gcov-dump.c (dump_gcov_file): Print PWD.
3524 * gcov.c (output_intermediate_file): Likewise.
3525 (read_graph_file): Read PWD string.
3526 (output_lines): Print PWD.
3527
3528 2018-05-18 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
3529
3530 PR middle-end/85817
3531 * ipa-pure-const.c (malloc_candidate_p): Remove the check integer_zerop
3532 for retval and return false if all args to phi are zero.
3533
3534 2018-05-18 Richard Biener <rguenther@suse.de>
3535
3536 * gimple-ssa-evrp.c (class evrp_folder): Add simplify_stmt_using_ranges
3537 method.
3538 (evrp_dom_walker::before_dom_children): Call it.
3539
3540 2018-05-18 Richard Biener <rguenther@suse.de>
3541
3542 * tree-dfa.c (get_ref_base_and_extent): Use range-info to refine
3543 results when processing array refs with variable index.
3544
3545 2018-05-18 Toon Moene <toon@moene.org>
3546
3547 * doc/invoke.texi: Move -floop-unroll-and-jam documentation
3548 directly after that of -floop-interchange. Indicate that both
3549 options are enabled by default when specifying -O3.
3550
3551 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3552
3553 * config/aarch64/aarch64-simd.md (vec_set<mode>): Use VALL_F16 mode
3554 iterator. Delete separate integer-mode vec_set<mode> expander.
3555 (aarch64_simd_vec_setv2di): Delete.
3556 (vec_setv2di): Delete.
3557 (aarch64_simd_vec_set<mode>): Delete all other patterns with that name.
3558 Use VALL_F16 mode iterator. Add LD1 alternative and use vwcore for
3559 the "w, r" alternative.
3560
3561 2018-05-18 Martin Liska <mliska@suse.cz>
3562
3563 * passes.def: Add pass_lower_switch and pass_lower_switch_O0.
3564 * tree-pass.h (make_pass_lower_switch_O0): New function.
3565 * tree-switch-conversion.c (node_has_low_bound): Remove.
3566 (node_has_high_bound): Likewise.
3567 (node_is_bounded): Likewise.
3568 (class pass_lower_switch): Make it a template type and create
3569 two instances.
3570 (pass_lower_switch::execute): Add template argument.
3571 (make_pass_lower_switch): New function.
3572 (make_pass_lower_switch_O0): New function.
3573 (do_jump_if_equal): Remove.
3574 (emit_case_nodes): Simplify to just handle all 3 cases and leave
3575 all the hard work to tree optimization passes.
3576
3577 2018-05-18 Martin Liska <mliska@suse.cz>
3578
3579 * dbgcnt.c (limit_low): Renamed from limit.
3580 (limit_high): New variable.
3581 (dbg_cnt_is_enabled): Check for upper limit.
3582 (dbg_cnt): Adjust dumping.
3583 (dbg_cnt_set_limit_by_index): Add new argument for high
3584 value.
3585 (dbg_cnt_set_limit_by_name): Likewise.
3586 (dbg_cnt_process_single_pair): Parse new format.
3587 (dbg_cnt_process_opt): Use strtok.
3588 (dbg_cnt_list_all_counters): Remove 'value' and add
3589 'limit_high'.
3590 * doc/invoke.texi: Document changes.
3591
3592 2018-05-18 Richard Sandiford <richard.sandiford@linaro.org>
3593
3594 * doc/sourcebuild.texi (scalar_all_fma): Document.
3595 * tree.def (FMA_EXPR): Delete.
3596 * internal-fn.def (FMA, FMS, FNMA, FNMS): New internal functions.
3597 * internal-fn.c (ternary_direct): New macro.
3598 (expand_ternary_optab_fn): Likewise.
3599 (direct_ternary_optab_supported_p): Likewise.
3600 * Makefile.in (build/genmatch.o): Depend on case-fn-macros.h.
3601 * builtins.c (fold_builtin_fma): Delete.
3602 (fold_builtin_3): Don't call it.
3603 * cfgexpand.c (expand_debug_expr): Remove FMA_EXPR handling.
3604 * expr.c (expand_expr_real_2): Likewise.
3605 * fold-const.c (operand_equal_p): Likewise.
3606 (fold_ternary_loc): Likewise.
3607 * gimple-pretty-print.c (dump_ternary_rhs): Likewise.
3608 * gimple.c (DEFTREECODE): Likewise.
3609 * gimplify.c (gimplify_expr): Likewise.
3610 * optabs-tree.c (optab_for_tree_code): Likewise.
3611 * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
3612 * tree-eh.c (operation_could_trap_p): Likewise.
3613 (stmt_could_throw_1_p): Likewise.
3614 * tree-inline.c (estimate_operator_cost): Likewise.
3615 * tree-pretty-print.c (dump_generic_node): Likewise.
3616 (op_code_prio): Likewise.
3617 * tree-ssa-loop-im.c (stmt_cost): Likewise.
3618 * tree-ssa-operands.c (get_expr_operands): Likewise.
3619 * tree.c (commutative_ternary_tree_code, add_expr): Likewise.
3620 * fold-const-call.h (fold_fma): Delete.
3621 * fold-const-call.c (fold_const_call_ssss): Handle CFN_FMS,
3622 CFN_FNMA and CFN_FNMS.
3623 (fold_fma): Delete.
3624 * genmatch.c (combined_fn): New enum.
3625 (commutative_ternary_tree_code): Remove FMA_EXPR handling.
3626 (commutative_op): New function.
3627 (commutate): Use it. Handle more than 2 operands.
3628 (dt_operand::gen_gimple_expr): Use commutative_op.
3629 (parser::parse_expr): Allow :c to be used with non-binary
3630 operators if the commutative operand is known.
3631 * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Handle
3632 CFN_FMS, CFN_FNMA and CFN_FNMS.
3633 (backprop::process_assign_use): Remove FMA_EXPR handling.
3634 * hsa-gen.c (gen_hsa_insns_for_operation_assignment): Likewise.
3635 (gen_hsa_fma): New function.
3636 (gen_hsa_insn_for_internal_fn_call): Use it for IFN_FMA, IFN_FMS,
3637 IFN_FNMA and IFN_FNMS.
3638 * match.pd: Add folds for IFN_FMS, IFN_FNMA and IFN_FNMS.
3639 * gimple-fold.h (follow_all_ssa_edges): Declare.
3640 * gimple-fold.c (follow_all_ssa_edges): New function.
3641 * tree-ssa-math-opts.c (convert_mult_to_fma_1): Use the
3642 gimple_build interface and use follow_all_ssa_edges to fold the result.
3643 (convert_mult_to_fma): Use direct_internal_fn_suppoerted_p
3644 instead of checking for optabs directly.
3645 * config/i386/i386.c (ix86_add_stmt_cost): Recognize FMAs as calls
3646 rather than FMA_EXPRs.
3647 * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Create a
3648 call to IFN_FMA instead of an FMA_EXPR.
3649
3650 2018-05-17 Jim Wilson <jimw@sifive.com>
3651
3652 * expr.c (do_tablejump): When converting index to Pmode, if we have a
3653 sign extended promoted subreg, and the range does not have the sign bit
3654 set, then do a sign extend.
3655
3656 * config/riscv/riscv.c (riscv_extend_comparands): In unsigned QImode
3657 test, check for sign extended subreg and/or constant operands, and
3658 do a sign extend in that case.
3659
3660 2018-05-17 Steve Ellcey <sellcey@cavium.com>
3661
3662 * config/aarch64/thunderx2t99.md (thunderx2t99_ls_both): Delete.
3663 (thunderx2t99_multiple): Delete psuedo-units from used cpus.
3664 Add untyped.
3665 (thunderx2t99_alu_shift): Remove alu_shift_reg, alus_shift_reg.
3666 Change logics_shift_reg to logics_shift_imm.
3667 (thunderx2t99_fp_loadpair_basic): Delete.
3668 (thunderx2t99_fp_storepair_basic): Delete.
3669 (thunderx2t99_asimd_int): Add neon_sub and neon_sub_q types.
3670 (thunderx2t99_asimd_polynomial): Delete.
3671 (thunderx2t99_asimd_fp_simple): Add neon_fp_mul_s_scalar_q
3672 and neon_fp_mul_d_scalar_q.
3673 (thunderx2t99_asimd_fp_conv): Add *int_to_fp* types.
3674 (thunderx2t99_asimd_misc): Delete neon_dup and neon_dup_q.
3675 (thunderx2t99_asimd_recip_step): Add missing *sqrt* types.
3676 (thunderx2t99_asimd_lut): Add missing tbl types.
3677 (thunderx2t99_asimd_ext): Delete.
3678 (thunderx2t99_asimd_load1_1_mult): Delete.
3679 (thunderx2t99_asimd_load1_2_mult): Delete.
3680 (thunderx2t99_asimd_load1_ldp): New.
3681 (thunderx2t99_asimd_load1): New.
3682 (thunderx2t99_asimd_load2): Add missing *load2* types.
3683 (thunderx2t99_asimd_load3): New.
3684 (thunderx2t99_asimd_load4): New.
3685 (thunderx2t99_asimd_store1_1_mult): Delete.
3686 (thunderx2t99_asimd_store1_2_mult): Delete.
3687 (thunderx2t99_asimd_store2_mult): Delete.
3688 (thunderx2t99_asimd_store2_onelane): Delete.
3689 (thunderx2t99_asimd_store_stp): New.
3690 (thunderx2t99_asimd_store1): New.
3691 (thunderx2t99_asimd_store2): New.
3692 (thunderx2t99_asimd_store3): New.
3693 (thunderx2t99_asimd_store4): New.
3694
3695 2018-05-17 Jerome Lambourg <lambourg@adacore.com>
3696
3697 * config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove
3698 #include <stdint.h>. Replace intptr_t with __INTPTR_TYPE__.
3699
3700 2018-05-17 Pat Haugen <pthaugen@us.ibm.com>
3701 Segher Boessenkool <segher@kernel.crashing.org>
3702
3703 PR target/85698
3704 * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check dest
3705 operand.
3706
3707 2018-05-17 Richard Biener <rguenther@suse.de>
3708
3709 * tree-ssa-dse.c (dse_classify_store): Fix iterator increment
3710 for pruning loop and prune defs feeding only already visited PHIs.
3711
3712 2018-05-17 Richard Biener <rguenther@suse.de>
3713
3714 * tree-ssa-sccvn.c (vn_reference_lookup_3): Improve memset handling.
3715
3716 2018-05-17 Bin Cheng <bin.cheng@arm.com>
3717 Richard Biener <rguenther@suse.de>
3718
3719 PR tree-optimization/85793
3720 * tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load
3721 for VMAT_ELEMENTWISE.
3722
3723 2018-05-17 Richard Sandiford <richard.sandiford@linaro.org>
3724
3725 * internal-fn.h (lookup_internal_fn): Declare
3726 * internal-fn.c (lookup_internal_fn): New function.
3727 * gimple.c (gimple_build_call_from_tree): Handle calls to
3728 internal functions.
3729 * gimple-pretty-print.c (dump_gimple_call): Print "." before
3730 internal function names.
3731 * tree-pretty-print.c (dump_generic_node): Likewise.
3732 * tree-ssa-scopedtables.c (expr_hash_elt::print): Likewise.
3733
3734 2018-05-17 Richard Sandiford <richard.sandiford@linaro.org>
3735
3736 * gimple-fold.h (gimple_build): Make the function forms take
3737 combined_fn rather than built_in_function.
3738 (gimple_simplify): Likewise.
3739 * gimple-match-head.c (gimple_simplify): Likewise.
3740 * gimple-fold.c (gimple_build): Likewise.
3741 * tree-vect-loop.c (get_initial_def_for_reduction): Use gimple_build
3742 rather than gimple_build_call_internal.
3743 (get_initial_defs_for_reduction): Likewise.
3744 (vect_create_epilog_for_reduction): Likewise.
3745 (vectorizable_live_operation): Likewise.
3746
3747 2018-05-17 Martin Liska <mliska@suse.cz>
3748
3749 * gimple-ssa-sprintf.c (format_directive): Do not use
3750 space in between 'G_' and '('.
3751
3752 2018-05-17 Jakub Jelinek <jakub@redhat.com>
3753
3754 PR target/85323
3755 * config/i386/i386.c (ix86_fold_builtin): Handle masked shifts
3756 even if the mask is not all ones.
3757
3758 PR target/85323
3759 * config/i386/i386.c (ix86_fold_builtin): Fold shift builtins by
3760 vector.
3761 (ix86_gimple_fold_builtin): Likewise.
3762
3763 PR target/85323
3764 * config/i386/i386.c: Include tree-vector-builder.h.
3765 (ix86_vector_shift_count): New function.
3766 (ix86_fold_builtin): Fold shift builtins by scalar count.
3767 (ix86_gimple_fold_builtin): Likewise.
3768
3769 * config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8,
3770 _mm512_setzero): New intrinsics.
3771
3772 2018-05-17 James Greenhalgh <james.greenhalgh@arm.com>
3773 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3774
3775 * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify
3776 code generation for cases where splatting a value is not useful.
3777 * simplify-rtx.c (simplify_ternary_operation): Simplify
3778 vec_merge across a vec_duplicate and a paradoxical subreg forming
3779 a vector mode to a vec_concat.
3780
3781 2018-05-17 Olga Makhotina <olga.makhotina@intel.com>
3782
3783 * config.gcc: Support "goldmont-plus".
3784 * config/i386/driver-i386.c (host_detect_local_cpu): Detect
3785 "goldmont-plus".
3786 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
3787 PROCESSOR_GOLDMONT_PLUS.
3788 * config/i386/i386.c (m_GOLDMONT_PLUS): Define.
3789 (processor_target_table): Add "goldmont-plus".
3790 (PTA_GOLDMONT_PLUS): Define.
3791 (ix86_lea_outperforms): Add TARGET_GOLDMONT_PLUS.
3792 (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT_PLUS.
3793 (fold_builtin_cpu): Add M_INTEL_GOLDMONT_PLUS.
3794 (fold_builtin_cpu): Add "goldmont-plus".
3795 (ix86_add_stmt_cost): Add TARGET_GOLDMONT_PLUS.
3796 (ix86_option_override_internal): Add "goldmont-plus".
3797 * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT_PLUS.
3798 (processor_type): Add PROCESSOR_GOLDMONT_PLUS.
3799 * config/i386/x86-tune.def: Add m_GOLDMONT_PLUS.
3800 * doc/invoke.texi: Add goldmont-plus as x86 -march=/-mtune= CPU type.
3801
3802 2018-05-17 Richard Biener <rguenther@suse.de>
3803
3804 PR tree-optimization/85757
3805 * tree-ssa-dse.c (dse_classify_store): Record a PHI def and
3806 remove defs that only feed that PHI from further processing.
3807
3808 2018-05-16 Jim Wilson <jimw@sifive.com>
3809
3810 * config/riscv/riscv.md (<optab>si3_mask, <optab>si3_mask_1): Prepend
3811 asterisk to name.
3812 (<optab>di3_mask, <optab>di3_mask_1): Likewise.
3813
3814 2018-05-16 Mark Wielaard <mark@klomp.org>
3815
3816 * dwarf2out.c (count_index_strings): New function.
3817 (output_indirect_strings): Call count_index_strings and generate
3818 header for dwarf_version >= 5.
3819
3820 2018-05-16 Mark Wielaard <mark@klomp.org>
3821
3822 * dwarf2out.c (dwarf_FORM): New function.
3823 (set_indirect_string): Use dwarf_FORM.
3824 (reset_indirect_string): Likewise.
3825 (size_of_die): Likewise.
3826 (value_format): Likewise.
3827 (output_die): Likewise.
3828 (add_skeleton_AT_string): Likewise.
3829 (output_macinfo_op): Likewise.
3830 (index_string): Likewise.
3831 (output_index_string_offset): Likewise.
3832 (output_index_string): Likewise.
3833 (count_index_strings): Likewise.
3834
3835 2018-05-16 Carl Love <cel@us.ibm.com>
3836
3837 * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
3838 dcbt and dcbtstt with TH=16 if operands[2] is 0 and Power 8 or newer.
3839
3840 2018-05-16 Martin Jambor <mjambor@suse.cz>
3841
3842 * ipa-prop.c (ipa_free_all_edge_args): Remove.
3843 * ipa-prop.h (ipa_free_all_edge_args): Likewise.
3844
3845 2018-05-16 Wilco Dijkstra <wdijkstr@arm.com>
3846
3847 * config/aarch64/aarch64.md (fma<mode>4): Change into expand pattern.
3848 (fnma<mode>4): Likewise.
3849 (fms<mode>4): Likewise.
3850 (fnms<mode>4): Likewise.
3851 (aarch64_fma<mode>4): Rename insn, reorder accumulator operand.
3852 (aarch64_fnma<mode>4): Likewise.
3853 (aarch64_fms<mode>4): Likewise.
3854 (aarch64_fnms<mode>4): Likewise.
3855 (aarch64_fnmadd<mode>4): Likewise.
3856
3857 2018-05-16 Jason Merrill <jason@redhat.com>
3858
3859 * tree.c (warn_deprecated_use): Return bool. Simplify logic.
3860
3861 2018-05-16 Richard Biener <rguenther@suse.de>
3862
3863 * tree-vectorizer.h (struct stmt_info_for_cost): Add where member.
3864 (dump_stmt_cost): Declare.
3865 (add_stmt_cost): Dump cost we add.
3866 (add_stmt_costs): New function.
3867 (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
3868 No longer exported.
3869 (vect_analyze_stmt): Adjust prototype.
3870 (vectorizable_condition): Likewise.
3871 (vectorizable_live_operation): Likewise.
3872 (vectorizable_reduction): Likewise.
3873 (vectorizable_induction): Likewise.
3874 * tree-vect-loop.c (vect_analyze_loop_operations): Create local
3875 cost vector to pass to vectorizable_ and record afterwards.
3876 (vect_model_reduction_cost): Take cost vector argument and adjust.
3877 (vect_model_induction_cost): Likewise.
3878 (vectorizable_reduction): Likewise.
3879 (vectorizable_induction): Likewise.
3880 (vectorizable_live_operation): Likewise.
3881 * tree-vect-slp.c (vect_create_new_slp_node): Initialize
3882 SLP_TREE_NUMBER_OF_VEC_STMTS.
3883 (vect_analyze_slp_cost_1): Remove.
3884 (vect_analyze_slp_cost): Likewise.
3885 (vect_slp_analyze_node_operations): Take visited args and
3886 a target cost vector. Avoid processing already visited stmt sets.
3887 (vect_slp_analyze_operations): Use a local cost vector to gather
3888 costs and register those of non-discarded instances.
3889 (vect_bb_vectorization_profitable_p): Use add_stmt_costs.
3890 (vect_schedule_slp_instance): Remove copying of
3891 SLP_TREE_NUMBER_OF_VEC_STMTS. Instead assert that it is not
3892 zero.
3893 * tree-vect-stmts.c (record_stmt_cost): Remove path directly
3894 adding cost. Record cost entry location.
3895 (vect_prologue_cost_for_slp_op): Function to compute cost of
3896 a constant or invariant generated for SLP vect in the prologue,
3897 split out from vect_analyze_slp_cost_1.
3898 (vect_model_simple_cost): Make static. Adjust for SLP costing.
3899 (vect_model_promotion_demotion_cost): Likewise.
3900 (vect_model_store_cost): Likewise, make static.
3901 (vect_model_load_cost): Likewise.
3902 (vectorizable_bswap): Add cost vector arg and adjust.
3903 (vectorizable_call): Likewise.
3904 (vectorizable_simd_clone_call): Likewise.
3905 (vectorizable_conversion): Likewise.
3906 (vectorizable_assignment): Likewise.
3907 (vectorizable_shift): Likewise.
3908 (vectorizable_operation): Likewise.
3909 (vectorizable_store): Likewise.
3910 (vectorizable_load): Likewise.
3911 (vectorizable_condition): Likewise.
3912 (vectorizable_comparison): Likewise.
3913 (can_vectorize_live_stmts): Likewise.
3914 (vect_analyze_stmt): Likewise.
3915 (vect_transform_stmt): Adjust calls to vectorizable_*.
3916 * tree-vectorizer.c: Include gimple-pretty-print.h.
3917 (dump_stmt_cost): New function.
3918
3919 2018-05-16 Richard Biener <rguenther@suse.de>
3920
3921 * params.def (PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE): New param.
3922 * doc/invoke.texi (dse-max-alias-queries-per-store): Document.
3923 * tree-ssa-dse.c: Include tree-ssa-loop.h.
3924 (check_name): New callback.
3925 (dse_classify_store): Track cycles via a visited bitmap of PHI
3926 defs and simplify handling of in-loop and across loop dead stores
3927 and properly fail for loop-variant refs. Handle byte-tracking with
3928 multiple defs. Use PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE for
3929 limiting the walk.
3930
3931 2018-05-16 Richard Sandiford <richard.sandiford@linaro.org>
3932
3933 * tree-vectorizer.h (vect_get_vector_types_for_stmt): Declare.
3934 (vect_get_mask_type_for_stmt): Likewise.
3935 * tree-vect-slp.c (vect_two_operations_perm_ok_p): New function,
3936 split out from...
3937 (vect_build_slp_tree_1): ...here. Use vect_get_vector_types_for_stmt
3938 to determine the statement's vector type and the vector type that
3939 should be used for calculating nunits. Deal with cases in which
3940 the type has to be deferred.
3941 (vect_slp_analyze_node_operations): Use vect_get_vector_types_for_stmt
3942 and vect_get_mask_type_for_stmt to calculate STMT_VINFO_VECTYPE.
3943 * tree-vect-loop.c (vect_determine_vf_for_stmt_1)
3944 (vect_determine_vf_for_stmt): New functions, split out from...
3945 (vect_determine_vectorization_factor): ...here.
3946 * tree-vect-stmts.c (vect_get_vector_types_for_stmt)
3947 (vect_get_mask_type_for_stmt): New functions, split out from
3948 vect_determine_vectorization_factor.
3949
3950 2018-05-16 Richard Biener <rguenther@suse.de>
3951
3952 * tree-cfg.c (verify_gimple_assign_ternary): Properly
3953 verify the [VEC_]COND_EXPR embedded comparison.
3954
3955 2018-05-15 Martin Sebor <msebor@redhat.com>
3956
3957 PR tree-optimization/85753
3958 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Handle
3959 RECORD_TYPE in addition to ARRAY_TYPE.
3960
3961 2018-05-15 Martin Sebor <msebor@redhat.com>
3962
3963 PR middle-end/85643
3964 * calls.c (get_attr_nonstring_decl): Handle MEM_REF.
3965
3966 2018-05-15 Richard Biener <rguenther@suse.de>
3967
3968 * tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter,
3969 add by_clobber_p one. Change algorithm to collect all defs
3970 representing uses we need to walk and try reducing them to
3971 a single one before failing.
3972 (dse_dom_walker::dse_optimize_stmt): Adjust.
3973
3974 2018-05-13 Mark Wielaard <mark@klomp.org>
3975
3976 * dwarf2out.c (dwarf_OP): Handle DW_OP_addrx and DW_OP_constx.
3977 (size_of_loc_descr): Likewise.
3978 (output_loc_operands): Likewise.
3979 (output_loc_operands_raw): Likewise.
3980 (dw_addr_op): Use dwarf_OP () for DW_OP_constx and DW_OP_addrx.
3981 (resolve_addr_in_expr): Handle DW_OP_addrx and DW_OP_constx.
3982 (hash_loc_operands): Likewise.
3983 (compare_loc_operands): Likewise.
3984
3985 2018-05-14 Mark Wielaard <mark@klomp.org>
3986
3987 * dwarf2out.c (count_index_addrs): New function.
3988 (dwarf2out_finish): Use count_index_addrs to calculate addrs_length.
3989
3990 2018-05-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
3991
3992 PR tree-optimization/83648
3993 * ipa-pure-const.c (malloc_candidate_p): Allow function with NULL
3994 return value as malloc candidate.
3995
3996 2018-05-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
3997
3998 PR ipa/85734
3999 * ipa-pure-const.c (warn_function_malloc): Pass value of known_finite
4000 param as true in call to suggest_attribute.
4001
4002 2018-05-14 Segher Boessenkool <segher@kernel.crashing.org>
4003
4004 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete @itemx for
4005 -mreadonly-in-sdata.
4006
4007 2018-05-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4008
4009 * config/aarch64/aarch64-simd.md (*aarch64_crypto_aese_fused):
4010 New pattern.
4011 (aarch64_crypto_aesd_fused): Likewise.
4012
4013 2018-05-14 Wilco Dijkstra <wdijkstr@arm.com>
4014
4015 * config/aarch64/aarch64.md (mov<mode>): Remove '*' in alternatives.
4016 (movsi_aarch64): Likewise.
4017 (load_pairsi): Likewise.
4018 (load_pairdi): Likewise.
4019 (store_pairsi): Likewise.
4020 (store_pairdi): Likewise.
4021 (load_pairsf): Likewise.
4022 (load_pairdf): Likewise.
4023 (store_pairsf): Likewise.
4024 (store_pairdf): Likewise.
4025 (zero_extend): Likewise.
4026 (trunc): Swap alternatives.
4027 (fcvt_target): Add '?' to prefer w over r.
4028
4029 2018-05-14 Jakub Jelinek <jakub@redhat.com>
4030
4031 PR target/85756
4032 * config/i386/i386.md: Disallow non-commutative arithmetics in
4033 last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim
4034 optimization. Use COMMUTATIVE_ARITH_P test rather than != MINUS
4035 in the peephole2 before it.
4036
4037 2018-05-14 Sebastian Peryt <sebastian.peryt@intel.com>
4038
4039 * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET,
4040 OPTION_MASK_ISA_CLDEMOTE_UNSET): New defines.
4041 (ix86_handle_option): Handle -mcldemote.
4042 * config.gcc: New header.
4043 * config/i386/cldemoteintrin.h: New file.
4044 * config/i386/cpuid.h (bit_CLDEMOTE): New bit.
4045 * config/i386/driver-i386.c (host_detect_local_cpu): Detect
4046 -mcldemote.
4047 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
4048 OPTION_MASK_ISA_CLDEMOTE.
4049 * config/i386/i386.c (ix86_target_string): Add -mcldemote.
4050 (ix86_valid_target_attribute_inner_p): Ditto.
4051 (enum ix86_builtins): Add IX86_BUILTIN_CLDEMOTE.
4052 (ix86_init_mmx_sse_builtins): Define __builtin_ia32_cldemote.
4053 (ix86_expand_builtin): Expand IX86_BUILTIN_CLDEMOTE.
4054 * config/i386/i386.h (TARGET_CLDEMOTE, TARGET_CLDEMOTE_P): New.
4055 * config/i386/i386.md (UNSPECV_CLDEMOTE): New.
4056 (cldemote): New.
4057 * config/i386/i386.opt: Add -mcldemote.
4058 * config/i386/x86intrin.h: New header.
4059 * doc/invoke.texi: Add -mcldemote.
4060
4061 2018-05-14 Richard Biener <rguenther@suse.de>
4062
4063 * doc/match-and-simplify.texi: Adjust :s documentation.
4064
4065 2018-05-14 Alexander Monakov <amonakov@ispras.ru>
4066
4067 * sort.cc (REORDER_23): Pass the type for the temporaries instead of
4068 intended memcpy size.
4069 (REORDER_45): Likewise.
4070
4071 2018-05-13 Alexander Monakov <amonakov@ispras.ru>
4072
4073 * sort.cc: New file.
4074 * system.h [!CHECKING_P] (qsort): Redirect to gcc_qsort.
4075 * vec.c (qsort_chk): Use gcc_qsort.
4076 * Makefile.in (OBJS-libcommon): Add sort.o.
4077 (build/sort.o): New target. Use it...
4078 (BUILD_RTL): ... here, and...
4079 (build/gencfn-macros): ... here, and...
4080 (build/genmatch): ... here.
4081
4082 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
4083 Chung-Ju Wu <jasonwucj@gmail.com>
4084
4085 * config.gcc (nds32*-*-*): Check that n15 is valid to --with-cpu.
4086 * config/nds32/nds32-graywolf.md: New file.
4087 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_GRAYWOLF.
4088 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n15
4089 pipeline.
4090 * config/nds32/nds32-protos.h: More declarations for n15 pipeline.
4091 * config/nds32/nds32-utils.c: More implementations for n15 pipeline.
4092 * config/nds32/nds32.md (pipeline_model): Add graywolf.
4093 * config/nds32/nds32.opt (mcpu): Support n15 pipeline cpus.
4094 * config/nds32/pipelines.md: Include n15 settings.
4095
4096 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
4097 Chung-Ju Wu <jasonwucj@gmail.com>
4098
4099 * config.gcc (nds32*-*-*): Check that n12/n13 are valid to --with-cpu.
4100 * config/nds32/nds32-n13.md: New file.
4101 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N12 and CPU_N13.
4102 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n12/n13
4103 pipeline.
4104 * config/nds32/nds32-protos.h: More declarations for n12/n13 pipeline.
4105 * config/nds32/nds32.md (pipeline_model): Add n13.
4106 * config/nds32/nds32.opt (mcpu): Support n12/n13 pipeline cpus.
4107 * config/nds32/pipelines.md: Include n13 settings.
4108
4109 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
4110 Chung-Ju Wu <jasonwucj@gmail.com>
4111
4112 * config.gcc (nds32*-*-*): Check that n10/d10 are valid to --with-cpu.
4113 * config/nds32/nds32-n10.md: New file.
4114 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N10.
4115 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n10
4116 pipeline.
4117 * config/nds32/nds32-protos.h: More declarations for n10 pipeline.
4118 * config/nds32/nds32-utils.c: More implementations for n10 pipeline.
4119 * config/nds32/nds32.md (pipeline_model): Add n10.
4120 * config/nds32/nds32.opt (mcpu): Support n10 pipeline cpus.
4121 * config/nds32/pipelines.md: Include n10 settings.
4122
4123 2018-05-13 Monk Chiang <sh.chiang04@gmail.com>
4124 Kito Cheng <kito.cheng@gmail.com>
4125 Chung-Ju Wu <jasonwucj@gmail.com>
4126
4127 * config.gcc (nds32be-*-*): Handle --with-ext-dsp.
4128 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
4129 Add enum values for DSP extension instructions.
4130 * config/nds32/constraints.md (Iu06, IU06, CVp5, CVs5, CVs2, CVhi):
4131 New constraints.
4132 * config/nds32/iterators.md (shifts, shiftrt, sat_plus, all_plus,
4133 sat_minus, all_minus, plus_minus, extend, sumax, sumin, sumin_max):
4134 New code iterators.
4135 (su, zs, uk, opcode, add_rsub, add_sub): New code attributes.
4136 * config/nds32/nds32-dspext.md: New file for DSP implementation.
4137 * config/nds32/nds32-intrinsic.c: Implementation of DSP extension.
4138 * config/nds32/nds32-intrinsic.md: Likewise.
4139 * config/nds32/nds32_intrinsic.h: Likewise.
4140 * config/nds32/nds32-md-auxiliary.c: Likewise.
4141 * config/nds32/nds32-memory-manipulation.c: Consider DSP extension.
4142 * config/nds32/nds32-predicates.c (const_vector_to_hwint): New.
4143 (nds32_valid_CVp5_p, nds32_valid_CVs5_p): New.
4144 (nds32_valid_CVs2_p, nds32_valid_CVhi_p): New.
4145 * config/nds32/nds32-protos.h: New declarations for DSP extension.
4146 * config/nds32/nds32-utils.c (extract_mac_non_acc_rtx): New case
4147 TYPE_DMAC in switch statement.
4148 * config/nds32/nds32.c: New checking and implementation for DSP
4149 extension instructions.
4150 * config/nds32/nds32.h: Likewise.
4151 * config/nds32/nds32.md: Likewise.
4152 * config/nds32/nds32.opt (mhw-abs, mext-dsp): New options.
4153 * config/nds32/predicates.md: Implement new predicates for DSP
4154 extension.
4155
4156 2018-05-11 Michael Meissner <meissner@linux.vnet.ibm.com>
4157
4158 * config/rs6000/rs6000.md (mov<mode>_softfloat, FMOVE32):
4159 Reformat alternatives and attributes so it is easier to identify
4160 which constraints/attributes go with which instruction.
4161 (mov<mode>_hardfloat32, FMOVE64): Likewise.
4162 (mov<mode>_softfloat32, FMOVE64): Likewise.
4163 (mov<mode>_hardfloat64, FMOVE64): Likewise.
4164 (mov<mode>_softfloat64, FMOVE64): Likewise.
4165
4166 2018-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
4167
4168 * doc/extend.texi (PowerPC Built-in Functions): Rename this
4169 subsection.
4170 (Basic PowerPC Built-in Functions): The new name of the
4171 subsection previously known as "PowerPC Built-in Functions".
4172 (Basic PowerPC Built-in Functions Available on all Configurations):
4173 New subsubsection.
4174 (Basic PowerPC Built-in Functions Available on ISA 2.05): Likewise.
4175 (Basic PowerPC Built-in Functions Available on ISA 2.06): Likewise.
4176 (Basic PowerPC Built-in Functions Available on ISA 2.07): Likewise.
4177 (Basic PowerPC Built-in Functions Available on ISA 3.0): Likewise.
4178
4179 2018-05-11 Martin Jambor <mjambor@suse.cz>
4180
4181 PR ipa/85655
4182 * ipa-cp.c (intersect_with_plats): Check that the lattice contains
4183 single const.
4184
4185 2018-05-11 Richard Earnshaw <rearnsha@arm.com>
4186
4187 PR target/85733
4188 * config/arm/arm-cpus.in (fgroup ARMv6m): Add be8 feature.
4189
4190 2018-05-11 Sebastian Peryt <sebastian.peryt@intel.com>
4191
4192 * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET,
4193 OPTION_MASK_ISA_WAITPKG_UNSET): New defines.
4194 (ix86_handle_option): Handle -mwaitpkg.
4195 * config.gcc: New header.
4196 * config/i386/cpuid.h (bit_WAITPKG): New bit.
4197 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg.
4198 * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New
4199 function type.
4200 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
4201 OPTION_MASK_ISA_WAITPKG.
4202 * config/i386/i386.c (ix86_target_string): Add -mwaitpkg.
4203 (ix86_option_override_internal): Add PTA_WAITPKG.
4204 (ix86_valid_target_attribute_inner_p): Add -mwaitpkg.
4205 (enum ix86_builtins): Add IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT,
4206 IX86_BUILTIN_TPAUSE.
4207 (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor,
4208 __builtin_ia32_umwait and __builtin_ia32_tpause.
4209 (ix86_expand_builtin): Expand IX86_BUILTIN_UMONITOR,
4210 IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE.
4211 * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New.
4212 * config/i386/i386.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR,
4213 UNSPECV_TPAUSE): New.
4214 (umwait, umwait_rex64, umonitor_<mode>, tpause, tpause_rex64): New.
4215 * config/i386/i386.opt: Add -mwaitpkg.
4216 * config/i386/waitpkgintrin.h: New file.
4217 * config/i386/x86intrin.h: New header.
4218 * doc/invoke.texi: Add -mwaitpkg.
4219
4220 2018-05-11 Richard Earnshaw <rearnsha@arm.com>
4221
4222 PR target/85606
4223 * config/arm/arm-cpus.in: Add comment that ARMv6-m and ARMv6S-m are now
4224 equivalent.
4225 (cortex-m0): Use armv6s-m isa.
4226 (cortex-m0plus): Likewise.
4227 (cortex-m1): Likewise.
4228 (cortex-m0.small-multiply): Likewise.
4229 (cortex-m0plus.small-multiply): Likewise.
4230 (cortex-m1.small-multiply): Likewise.
4231
4232 2018-05-11 Allan Sandfeld Jensen <allan.jensen@qt.io>
4233 Jakub Jelinek <jakub@redhat.com>
4234
4235 PR tree-optimization/85692
4236 * tree-ssa-forwprop.c (simplify_vector_constructor): Try two
4237 source permute as well.
4238
4239 2018-05-11 Martin Liska <mliska@suse.cz>
4240
4241 PR sanitizer/85556
4242 * doc/extend.texi: Document LLVM style format for no_sanitize
4243 attribute.
4244
4245 2018-05-10 Michael Meissner <meissner@linux.vnet.ibm.com>
4246
4247 * config/rs6000/rs6000.c (mode_supports_dq_form): Rename
4248 mode_supports_vsx_dform_quad to mode_supports_dq_form.
4249 (mode_supports_vsx_dform_quad): Likewise.
4250 (mode_supports_vmx_dform): Move these functions to be next to the
4251 other mode_supports functions.
4252 (mode_supports_dq_form): Likewise.
4253 (quad_address_p): Change calls of mode_supports_vsx_dform_quad to
4254 mode_supports_dq_form.
4255 (reg_offset_addressing_ok_p): Likewise.
4256 (offsettable_ok_by_alignment): Likewise.
4257 (rs6000_legitimate_offset_address_p): Likewise.
4258 (legitimate_lo_sum_address_p): Likewise.
4259 (rs6000_legitimize_address): Likewise.
4260 (rs6000_legitimize_reload_address): Likewise.
4261 (rs6000_secondary_reload_inner): Likewise.
4262 (rs6000_preferred_reload_class): Likewise.
4263 (rs6000_output_move_128bit): Likewise.
4264
4265 2018-05-10 Uros Bizjak <ubizjak@gmail.com>
4266
4267 * config/i386/i386.c (ix86_expand_builtin) <case IX86_BUILTIN_RDPID>:
4268 Generate SImode target register for null target.
4269 <case IX86_BUILTIN_XGETBV>: Ditto.
4270 <case IX86_BUILTIN_XSETBV>: Optimize LSHIFTRT generation.
4271 * config/i386/xsaveintrin.h (_xgetbv): Add missing return.
4272
4273 2018-05-10 Carl Love <cel@us.ibm.com>
4274
4275 * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
4276 dcbtt and dcbtstt if operands[2] is 0.
4277
4278 2018-05-10 Uros Bizjak <ubizjak@gmail.com>
4279
4280 PR target/85693
4281 * config/i386/sse.md (usadv64qi): New expander.
4282
4283 2018-05-10 Segher Boessenkool <segher@kernel.crashing.org>
4284
4285 * config/rs6000/altivec.md (altivec_vmrghb, altivec_vmrghh,
4286 altivec_vmrghw, altivec_vmrglb, altivec_vmrglh, altivec_vmrglw): Remove
4287 -maltivec=be support.
4288 (vec_widen_umult_even_v16qi, vec_widen_smult_even_v16qi,
4289 vec_widen_umult_even_v8hi, vec_widen_smult_even_v8hi,
4290 vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
4291 vec_widen_umult_odd_v16qi, vec_widen_smult_odd_v16qi,
4292 vec_widen_umult_odd_v8hi, vec_widen_smult_odd_v8hi,
4293 vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, altivec_vpkpx,
4294 altivec_vpks<VI_char>ss, altivec_vpks<VI_char>us,
4295 altivec_vpku<VI_char>us, altivec_vpku<VI_char>um, altivec_vsum2sws,
4296 altivec_vsumsws): Adjust.
4297 (altivec_vspltb *altivec_vspltb_internal, altivec_vsplth,
4298 *altivec_vsplth_internal, altivec_vspltw, *altivec_vspltw_internal,
4299 altivec_vspltsf, *altivec_vspltsf_internal): Remove -maltivec=be
4300 support.
4301 (altivec_vperm_<mode>, altivec_vperm_<mode>_uns,
4302 altivec_vupkhs<VU_char>, altivec_vupkls<VU_char>, altivec_vupkhpx,
4303 altivec_vupklpx, altivec_lvsl, altivec_lvsr): Adjust.
4304 (altivec_lve<VI_char>x): Delete expand.
4305 (*altivec_lve<VI_char>x_internal): Rename to...
4306 (altivec_lve<VI_char>x): ... this.
4307 (altivec_lvxl_<mode>): Delete expand.
4308 (*altivec_lvxl_<mode>_internal): Rename to ...
4309 (altivec_lvxl_<mode>): ... this.
4310 (altivec_stvxl_<mode>): Delete expand.
4311 (*altivec_stvxl_<mode>_internal): Rename to ...
4312 (altivec_stvxl_<mode>): ... this.
4313 (altivec_stve<VI_char>x): Delete expand.
4314 (*altivec_stve<VI_char>x_internal): Rename to ...
4315 (altivec_stve<VI_char>x): ... this.
4316 (doublee<mode>2, unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2,
4317 doubleh<mode>2, unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2,
4318 reduc_plus_scal_<mode>): Adjust.
4319 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust
4320 comment.
4321 (rs6000_cpu_cpp_builtins): Adjust.
4322 (altivec_resolve_overloaded_builtin): Remove -maltivec=be support.
4323 * config/rs6000/rs6000-protos.h (altivec_expand_lvx_be,
4324 altivec_expand_stvx_be, altivec_expand_stvex_be): Delete.
4325 * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
4326 -maltivec=be support.
4327 (rs6000_split_vec_extract_var): Adjust.
4328 (rs6000_split_v4si_init): Adjust.
4329 (swap_selector_for_mode): Delete.
4330 (altivec_expand_lvx_be, altivec_expand_stvx_be,
4331 altivec_expand_stvex_be): Delete.
4332 (altivec_expand_lv_builtin, altivec_expand_stv_builtin): Remove
4333 -maltivec=be support.
4334 (rs6000_gimple_fold_builtin): Ditto.
4335 (rs6000_generate_float2_double_code, rs6000_generate_float2_code):
4336 Adjust.
4337 * config/rs6000/rs6000.h (VECTOR_ELT_ORDER_BIG): Delete.
4338 (TARGET_DIRECT_MOVE_64BIT): Adjust.
4339 * config/rs6000/rs6000.md (split for extendsidi2 for vectors): Adjust.
4340 * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Delete.
4341 * config/rs6000/vsx.md (floate<mode>, unsfloatev2di, floato<mode>,
4342 unsfloatov2di, vsignedo_v2df, vsignede_v2df, vunsignedo_v2df,
4343 vunsignede_v2df, vsx_extract_<mode>_p9, *vsx_extract_si,
4344 *vsx_extract_<mode>_p8, *vsx_extract_si_<uns>float_df,
4345 *vsx_extract_si_<uns>float_<mode>, vsx_set_<mode>_p9, vsx_set_v4sf_p9,
4346 *vsx_insert_extract_v4sf_p9, *vsx_insert_extract_v4sf_p9_2, and an
4347 anonymous split): Adjust.
4348 (vsx_mergel_<mode>, vsx_mergeh_<mode>): Remove -maltivec=be support.
4349 (vsx_xxspltd_<mode>, extract4b, insert4b): Adjust.
4350
4351 2018-05-10 Eric Botcazou <ebotcazou@adacore.com>
4352
4353 * configure.ac (gcc_gxx_include_dir_add_sysroot): Set it to 1 only
4354 when --with-gxx-include-dir is also specified.
4355 * configure: Regenerate.
4356
4357 2018-05-09 Jim Wilson <jimw@sifive.com>
4358
4359 PR target/84797
4360 * config.gcc (riscv*-*-*): Handle --with-multilib-list.
4361 * config/riscv/t-withmultilib: New.
4362 * config/riscv/withmultilib.h: New.
4363 * doc/install.texi: Document RISC-V --with-multilib-list support.
4364
4365 2018-05-09 Richard Biener <rguenther@suse.de>
4366
4367 * tree-vect-slp.c (vect_bb_slp_scalar_cost): Fill a cost
4368 vector.
4369 (vect_bb_vectorization_profitable_p): Adjust. Compute
4370 actual scalar cost using the cost vector and the add_stmt_cost
4371 machinery.
4372
4373 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
4374
4375 PR rtl-optimization/85645
4376 * config/rs6000/rs6000.c (rs6000_emit_prologue_components): Put a SET
4377 in the REG_CFA_REGISTER note for LR, don't leave it empty.
4378
4379 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
4380
4381 PR rtl-optimization/85645
4382 * shrink-wrap.c (spread_components): Return a boolean saying if
4383 anything was changed.
4384 (try_shrink_wrapping_separate): Iterate spread_components until
4385 nothing changes anymore.
4386
4387 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
4388
4389 PR rtl-optimization/85645
4390 * regrename.c (build_def_use): Also kill the chains that include the
4391 destination of a REG_CFA_REGISTER note.
4392
4393 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
4394
4395 PR rtl-optimization/85645
4396 * regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an
4397 insn that has a REG_CFA_REGISTER note.
4398
4399 2018-05-09 Richard Sandiford <richard.sandiford@linaro.org>
4400
4401 * cfgexpand.c (expand_clobber): New function.
4402 (expand_gimple_stmt_1): Use it.
4403 * tree-vect-stmts.c (vect_clobber_variable): New function,
4404 split out from...
4405 (vectorizable_simd_clone_call): ...here.
4406 (vectorizable_store): Emit a clobber either side of an
4407 IFN_STORE_LANES sequence.
4408 (vectorizable_load): Emit a clobber after an IFN_LOAD_LANES sequence.
4409
4410 2018-05-09 Tom de Vries <tom@codesourcery.com>
4411
4412 PR target/85626
4413 * config/nvptx/nvptx.md (define_insn "trap", define_insn "trap_if_true")
4414 (define_insn "trap_if_false"): Add exit after trap.
4415
4416 2018-05-09 Eric Botcazou <ebotcazou@adacore.com>
4417
4418 PR rtl-optimization/85638
4419 * bb-reorder.c: Include common/common-target.h.
4420 (create_forwarder_block): New function extracted from...
4421 (fix_up_crossing_landing_pad): ...here. Rename into...
4422 (dw2_fix_up_crossing_landing_pad): ...this.
4423 (sjlj_fix_up_crossing_landing_pad): New function.
4424 (find_rarely_executed_basic_blocks_and_crossing_edges): In SJLJ mode,
4425 call sjlj_fix_up_crossing_landing_pad if there are incoming EH edges
4426 from both partitions and exit the loop after one iteration.
4427
4428 2018-05-08 Kelvin Nilsen <kelvin@gcc.gnu.org>
4429
4430 Revert:
4431 * doc/extend.texi (PowerPC Built-in Functions): Rename this
4432 subsection.
4433 (Basic PowerPC Built-in Functions): The new name of the
4434 subsection previously known as "PowerPC Built-in Functions".
4435 (Basic PowerPC Built-in Functions Available on all Configurations):
4436 New subsubsection.
4437 (Basic PowerPC Built-in Functions Available on ISA 2.05): New
4438 subsubsection.
4439 (Basic PowerPC Built-in Functions Available on ISA 2.06): New
4440 subsubsection.
4441 (Basic PowerPC Built-in Functions Available on ISA 2.07): New
4442 subsubsection.
4443 (Basic PowerPC Built-in Functions Available on ISA 3.0): New
4444 subsubsection.
4445
4446 2018-05-08 Jim Wilson <jimw@sifive.com>
4447
4448 * config/riscv/linux.h (MUSL_ABI_SUFFIX): Delete unnecessary backslash.
4449 (LD_EMUL_SUFFIX): New.
4450 (LINK_SPEC): Use it.
4451
4452 2018-05-08 Kelvin Nilsen <kelvin@gcc.gnu.org>
4453
4454 * doc/extend.texi (PowerPC Built-in Functions): Rename this
4455 subsection.
4456 (Basic PowerPC Built-in Functions): The new name of the
4457 subsection previously known as "PowerPC Built-in Functions".
4458 (Basic PowerPC Built-in Functions Available on all Configurations):
4459 New subsubsection.
4460 (Basic PowerPC Built-in Functions Available on ISA 2.05): New
4461 subsubsection.
4462 (Basic PowerPC Built-in Functions Available on ISA 2.06): New
4463 subsubsection.
4464 (Basic PowerPC Built-in Functions Available on ISA 2.07): New
4465 subsubsection.
4466 (Basic PowerPC Built-in Functions Available on ISA 3.0): New
4467 subsubsection.
4468
4469 2018-05-08 Jakub Jelinek <jakub@redhat.com>
4470
4471 PR target/85683
4472 * config/i386/i386.md: Add peepholes for mem {+,-,&,|,^}= x; mem != 0
4473 after cmpelim optimization.
4474
4475 2018-05-08 Olga Makhotina <olga.makhotina@intel.com>
4476
4477 * config.gcc: Support "goldmont".
4478 * config/i386/driver-i386.c (host_detect_local_cpu): Detect "goldmont".
4479 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
4480 PROCESSOR_GOLDMONT.
4481 * config/i386/i386.c (m_GOLDMONT): Define.
4482 (processor_target_table): Add "goldmont".
4483 (PTA_GOLDMONT): Define.
4484 (ix86_lea_outperforms): Add TARGET_GOLDMONT.
4485 (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT.
4486 (fold_builtin_cpu): Add M_INTEL_GOLDMONT.
4487 (fold_builtin_cpu): Add "goldmont".
4488 (ix86_add_stmt_cost): Add TARGET_GOLDMONT.
4489 (ix86_option_override_internal): Add "goldmont".
4490 * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT.
4491 (processor_type): Add PROCESSOR_GOLDMONT.
4492 * config/i386/i386.md: Add CPU "glm".
4493 * config/i386/glm.md: New file.
4494 * config/i386/x86-tune.def: Add m_GOLDMONT.
4495 * doc/invoke.texi: Add goldmont as x86 -march=/-mtune= CPU type.
4496
4497 2018-05-08 Jakub Jelinek <jakub@redhat.com>
4498
4499 PR target/85572
4500 * config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and
4501 E_V4DImode.
4502 * config/i386/sse.md (abs<mode>2): Use VI_AVX2 iterator instead of
4503 VI1248_AVX512VL_AVX512BW. Handle V2DImode and V4DImode if not
4504 TARGET_AVX512VL using ix86_expand_sse2_abs. Formatting fixes.
4505
4506 PR target/85317
4507 * config/i386/i386.c (ix86_fold_builtin): Handle
4508 IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}.
4509
4510 PR target/85480
4511 * config/i386/sse.md (ssequaterinsnmode): New mode attribute.
4512 (*<extract_type>_vinsert<shuffletype><extract_suf>_0): New pattern.
4513
4514 2018-05-08 Richard Earnshaw <rearnsha@arm.com>
4515
4516 PR target/85658
4517 * config/arm/parsecpu.awk (check_cpu): Fix operator precedence.
4518 (check_arch): Likewise.
4519 (check_fpu): Return the result rather than printing it.
4520 (end arch): Fix operator precedence.
4521 (end cpu): Likewise.
4522 (END): Print the result from check_fpu.
4523
4524 2018-05-08 Richard Sandiford <richard.sandiford@linaro.org>
4525 Alan Hayward <alan.hayward@arm.com>
4526 David Sherwood <david.sherwood@arm.com>
4527
4528 * config/aarch64/aarch64-sve.md (*pred_cmp<cmp_op><mode>_combine)
4529 (*pred_cmp<cmp_op><mode>, *fcm<cmp_op><mode>_and_combine)
4530 (*fcmuo<mode>_and_combine, *fcm<cmp_op><mode>_and)
4531 (*fcmuo<mode>_and): New patterns.
4532
4533 2018-05-08 Richard Sandiford <richard.sandiford@linaro.org>
4534
4535 * config/aarch64/iterators.md (UNSPEC_COND_LO, UNSPEC_COND_LS)
4536 (UNSPEC_COND_HI, UNSPEC_COND_HS, UNSPEC_COND_UO): Delete.
4537 (SVE_INT_CMP, SVE_FP_CMP): New code iterators.
4538 (cmp_op, sve_imm_con): New code attributes.
4539 (SVE_COND_INT_CMP, imm_con): Delete.
4540 (cmp_op): Remove above unspecs from int attribute.
4541 * config/aarch64/aarch64-sve.md (*vec_cmp<cmp_op>_<mode>): Rename
4542 to...
4543 (*cmp<cmp_op><mode>): ...this. Use UNSPEC_MERGE_PTRUE instead of
4544 comparison-specific unspecs.
4545 (*vec_cmp<cmp_op>_<mode>_ptest): Rename to...
4546 (*cmp<cmp_op><mode>_ptest): ...this and adjust likewise.
4547 (*vec_cmp<cmp_op>_<mode>_cc): Rename to...
4548 (*cmp<cmp_op><mode>_cc): ...this and adjust likewise.
4549 (*vec_fcm<cmp_op><mode>): Rename to...
4550 (*fcm<cmp_op><mode>): ...this and adjust likewise.
4551 (*vec_fcmuo<mode>): Rename to...
4552 (*fcmuo<mode>): ...this and adjust likewise.
4553 (*pred_fcm<cmp_op><mode>): New pattern.
4554 * config/aarch64/aarch64.c (aarch64_emit_unop, aarch64_emit_binop)
4555 (aarch64_emit_sve_ptrue_op, aarch64_emit_sve_ptrue_op_cc): New
4556 functions.
4557 (aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU
4558 and UNORDERED.
4559 (aarch64_gen_unspec_cond, aarch64_emit_unspec_cond): Delete.
4560 (aarch64_emit_sve_predicated_cond): New function.
4561 (aarch64_expand_sve_vec_cmp_int): Use aarch64_emit_sve_ptrue_op_cc.
4562 (aarch64_emit_unspec_cond_or): Replace with...
4563 (aarch64_emit_sve_or_conds): ...this new function. Use
4564 aarch64_emit_sve_ptrue_op for the individual comparisons and
4565 aarch64_emit_binop to OR them together.
4566 (aarch64_emit_inverted_unspec_cond): Replace with...
4567 (aarch64_emit_sve_inverted_cond): ...this new function. Use
4568 aarch64_emit_sve_ptrue_op for the comparison and
4569 aarch64_emit_unop to invert the result.
4570 (aarch64_expand_sve_vec_cmp_float): Update after the above
4571 changes. Use aarch64_emit_sve_ptrue_op for native comparisons.
4572
4573 2018-05-07 Nathan Sidwell <nathan@acm.org>
4574
4575 * doc/invoke.texi (C++ Dialect Options): Remove -ffor-scope.
4576 * doc/extend.texi (Deprecated Features): Remove -fno-for-scope
4577 (Backwards Compatibility): Likewise.
4578
4579 2018-05-07 Luis Machado <luis.machado@linaro.org>
4580
4581 PR bootstrap/85681
4582 Revert:
4583 2018-05-07 Luis Machado <luis.machado@linaro.org>
4584
4585 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
4586 <prefetch_dynamic_strides>: New const bool field.
4587 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
4588 prefetch_dynamic_strides.
4589 (exynosm1_prefetch_tune): Likewise.
4590 (thunderxt88_prefetch_tune): Likewise.
4591 (thunderx_prefetch_tune): Likewise.
4592 (thunderx2t99_prefetch_tune): Likewise.
4593 (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides
4594 to false.
4595 (aarch64_override_options_internal): Update to set
4596 PARAM_PREFETCH_DYNAMIC_STRIDES.
4597 * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
4598 * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
4599 * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
4600 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
4601 prefetch-dynamic-strides setting.
4602
4603 2018-05-07 Luis Machado <luis.machado@linaro.org>
4604
4605 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
4606 <minimum_stride>: New const int field.
4607 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
4608 minimum_stride field.
4609 (exynosm1_prefetch_tune): Likewise.
4610 (thunderxt88_prefetch_tune): Likewise.
4611 (thunderx_prefetch_tune): Likewise.
4612 (thunderx2t99_prefetch_tune): Likewise.
4613 (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
4614 (aarch64_override_options_internal): Update to set
4615 PARAM_PREFETCH_MINIMUM_STRIDE.
4616 * doc/invoke.texi (prefetch-minimum-stride): Document new option.
4617 * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
4618 * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
4619 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
4620 stride is constant and is below the minimum stride threshold.
4621
4622 2018-05-07 Luis Machado <luis.machado@linaro.org>
4623
4624 * config/aarch64/aarch64.c (qdf24xx_prefetch_tune) <l2_cache_size>: Set
4625 to 512.
4626
4627 2018-05-07 Luis Machado <luis.machado@linaro.org>
4628
4629 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
4630 <prefetch_dynamic_strides>: New const bool field.
4631 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
4632 prefetch_dynamic_strides.
4633 (exynosm1_prefetch_tune): Likewise.
4634 (thunderxt88_prefetch_tune): Likewise.
4635 (thunderx_prefetch_tune): Likewise.
4636 (thunderx2t99_prefetch_tune): Likewise.
4637 (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides
4638 to false.
4639 (aarch64_override_options_internal): Update to set
4640 PARAM_PREFETCH_DYNAMIC_STRIDES.
4641 * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
4642 * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
4643 * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
4644 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
4645 prefetch-dynamic-strides setting.
4646
4647 2018-05-07 Luis Machado <luis.machado@linaro.org>
4648
4649 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
4650 <minimum_stride>: New const int field.
4651 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
4652 minimum_stride field.
4653 (exynosm1_prefetch_tune): Likewise.
4654 (thunderxt88_prefetch_tune): Likewise.
4655 (thunderx_prefetch_tune): Likewise.
4656 (thunderx2t99_prefetch_tune): Likewise.
4657 (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
4658 (aarch64_override_options_internal): Update to set
4659 PARAM_PREFETCH_MINIMUM_STRIDE.
4660 * doc/invoke.texi (prefetch-minimum-stride): Document new option.
4661 * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
4662 * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
4663 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
4664 stride is constant and is below the minimum stride threshold.
4665
4666 2018-05-06 Jakub Jelinek <jakub@redhat.com>
4667
4668 PR c++/85659
4669 * cfgexpand.c (expand_asm_stmt): Don't create a temporary if
4670 the type is addressable. Don't force op into register if it has
4671 BLKmode.
4672
4673 2018-05-05 Roland McGrath <mcgrathr@google.com>
4674
4675 PR other/77609
4676 * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
4677 any section for which we don't know a specific type it should have,
4678 regardless of name. Previously this was done only for the exact
4679 names ".init_array", ".fini_array", and ".preinit_array".
4680 (default_elf_asm_named_section): Add comment about
4681 relationship with default_section_type_flags and SECTION_NOTYPE.
4682 (get_section): Don't consider it a type conflict if one side has
4683 SECTION_NOTYPE and the other doesn't, as long as neither has the
4684 SECTION_BSS et al used in the default_section_type_flags logic.
4685
4686 2018-05-05 Tom de Vries <tom@codesourcery.com>
4687
4688 PR target/85653
4689 * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_3): Define.
4690 (workaround_barsyncs): New function.
4691 (nvptx_reorg): Use workaround_barsyncs.
4692 * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
4693 (define_expand "nvptx_membar_cta"): New define_expand.
4694 (define_insn "*nvptx_membar_cta"): New insn.
4695
4696 2018-05-04 Pekka Jääskeläinen <pekka.jaaskelainen@parmance.com>
4697
4698 * brig-builtins.def: Add consts to ptrs etc. in BRIG builtin defs.
4699 To improve optimization opportunities.
4700 * builtin-types.def: The new needed builtin types for the above.
4701
4702 2018-05-04 Richard Biener <rguenther@suse.de>
4703
4704 * bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
4705 * gimple-ssa-store-merging.c
4706 (imm_store_chain_info::output_merged_store): Remove redundant create,
4707 release split_store vector contents on failure.
4708 * tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
4709 scalar stmt vector on cache hit.
4710
4711 2018-05-04 Segher Boessenkool <segher@kernel.crashing.org>
4712
4713 * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
4714 Xilinx FP support.
4715 * config.gcc (powerpc-xilinx-eabi*): Remove.
4716 * config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP
4717 support.
4718 (fusion_addis_mem_combo_load): Ditto.
4719 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx
4720 FP support.
4721 (rs6000_cpu_cpp_builtins): Ditto.
4722 * config/rs6000/rs6000-linux.c
4723 (rs6000_linux_float_exceptions_rounding_supported_p): Ditto.
4724 * config/rs6000/rs6000-opts.h (enum fpu_type_t): Delete.
4725 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove Xilinx FP
4726 support.
4727 (rs6000_setup_reg_addr_masks): Ditto.
4728 (rs6000_init_hard_regno_mode_ok): Ditto.
4729 (rs6000_option_override_internal): Ditto.
4730 (legitimate_lo_sum_address_p): Ditto.
4731 (rs6000_legitimize_address): Ditto.
4732 (rs6000_legitimize_reload_address): Ditto.
4733 (rs6000_legitimate_address_p): Ditto.
4734 (abi_v4_pass_in_fpr): Ditto.
4735 (setup_incoming_varargs): Ditto.
4736 (rs6000_gimplify_va_arg): Ditto.
4737 (rs6000_split_multireg_move): Ditto.
4738 (rs6000_savres_strategy): Ditto.
4739 (rs6000_emit_prologue_components): Ditto.
4740 (rs6000_emit_epilogue_components): Ditto.
4741 (rs6000_emit_prologue): Ditto.
4742 (rs6000_emit_epilogue): Ditto.
4743 (rs6000_elf_file_end): Ditto.
4744 (rs6000_function_value): Ditto.
4745 (rs6000_libcall_value): Ditto.
4746 * config/rs6000/rs6000.h: Ditto.
4747 (TARGET_MINMAX_SF, TARGET_MINMAX_DF): Delete, merge to ...
4748 (TARGET_MINMAX): ... this. New.
4749 (TARGET_SF_FPR, TARGET_DF_FPR, TARGET_SF_INSN, TARGET_DF_INSN): Delete.
4750 * config/rs6000/rs6000.md: Remove Xilinx FP support.
4751 (*movsi_internal1_single): Delete.
4752 * config/rs6000/rs6000.opt (msingle-float, mdouble-float, msimple-fpu,
4753 mfpu=, mxilinx-fpu): Delete.
4754 * config/rs6000/singlefp.h: Delete.
4755 * config/rs6000/sysv4.h: Remove Xilinx FP support.
4756 * config/rs6000/t-rs6000: Ditto.
4757 * config/rs6000/t-xilinx: Delete.
4758 * gcc/config/rs6000/titan.md: Adjust for fp_type removal.
4759 * gcc/config/rs6000/vsx.md: Remove Xilinx FP support.
4760 (VStype_simple): Delete.
4761 (VSfptype_simple, VSfptype_mul, VSfptype_div, VSfptype_sqrt): Delete.
4762 * config/rs6000/xfpu.h: Delete.
4763 * config/rs6000/xfpu.md: Delete.
4764 * config/rs6000/xilinx.h: Delete.
4765 * config/rs6000/xilinx.opt: Delete.
4766 * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Remove
4767 -msingle-float, -mdouble-float, -msimple-fpu, -mfpu=, and -mxilinx-fpu.
4768
4769 2018-05-04 Tom de Vries <tom@codesourcery.com>
4770
4771 PR libgomp/85639
4772 * builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target
4773 if ignore == 0.
4774
4775 2018-05-04 Richard Biener <rguenther@suse.de>
4776
4777 PR middle-end/85627
4778 * tree-complex.c (update_complex_assignment): We are always in SSA form.
4779 (expand_complex_div_wide): Likewise.
4780 (expand_complex_operations_1): Likewise.
4781 (expand_complex_libcall): Preserve EH info of the original stmt.
4782 (tree_lower_complex): Handle removed blocks.
4783 * tree.c (build_common_builtin_nodes): Do not set ECF_NOTRHOW
4784 on complex multiplication and division libcall builtins.
4785
4786 2018-05-04 Richard Biener <rguenther@suse.de>
4787
4788 PR middle-end/85574
4789 * fold-const.c (negate_expr_p): Restrict negation of operand
4790 zero of a division to when we know that can happen without
4791 overflow.
4792 (fold_negate_expr_1): Likewise.
4793
4794 2018-05-04 Jakub Jelinek <jakub@redhat.com>
4795
4796 PR libstdc++/85466
4797 * real.h (real_nextafter): Declare.
4798 * real.c (real_nextafter): New function.
4799 * fold-const-call.c (fold_const_nextafter): New function.
4800 (fold_const_call_sss): Call it for CASE_CFN_NEXTAFTER and
4801 CASE_CFN_NEXTTOWARD.
4802 (fold_const_call_1): For CASE_CFN_NEXTTOWARD call fold_const_call_sss
4803 even when arg1_mode is different from arg0_mode.
4804
4805 2018-05-03 Nathan Sidwell <nathan@acm.org>
4806
4807 * doc/extend.texi (Deprecated Features): Remove
4808 -ffriend-injection.
4809 (Backwards Compatibility): Likewise.
4810 * doc/invoke.texi (C++ Language Options): Likewise.
4811 (C++ Dialect Options): Likewise.
4812
4813 2018-05-03 Jakub Jelinek <jakub@redhat.com>
4814
4815 PR target/85530
4816 * config/i386/avx512fintrin.h (_mm512_mullox_epi64,
4817 _mm512_mask_mullox_epi64): New intrinsics.
4818
4819 2018-05-03 Tom de Vries <tom@codesourcery.com>
4820
4821 PR testsuite/85106
4822 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
4823 dump files): Add offload-tree.
4824
4825 2018-05-03 Richard Biener <rguenther@suse.de>
4826
4827 PR tree-optimization/85615
4828 * tree-ssa-threadupdate.c (thread_block_1): Only allow exits
4829 to loops not nested in BBs loop father to avoid creating multi-entry
4830 loops.
4831
4832 2018-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4833
4834 PR tree-optimization/70291
4835 * tree-complex.c (expand_complex_libcall): Add type, inplace_p
4836 arguments. Change return type to tree. Emit libcall as a new
4837 statement rather than replacing existing one when inplace_p is true.
4838 (expand_complex_multiplication_components): New function.
4839 (expand_complex_multiplication): Expand floating-point complex
4840 multiplication using the above.
4841 (expand_complex_division): Rename inner_type parameter to type.
4842 Update expand_complex_libcall call-site.
4843 (expand_complex_operations_1): Update expand_complex_multiplication
4844 and expand_complex_division call-sites.
4845
4846 2018-05-02 Jakub Jelinek <jakub@redhat.com>
4847
4848 PR target/85582
4849 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
4850 *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
4851 *<shift_insn><dwi>3_doubleword_mask_1): In condition require that
4852 the highest significant bit of the shift count mask is clear. In
4853 check whether and[sq]i3 is needed verify that all significant bits
4854 of the shift count other than the highest are set.
4855
4856 2018-05-02 Tom de Vries <tom@codesourcery.com>
4857
4858 PR libgomp/82428
4859 * builtins.def (DEF_GOACC_BUILTIN_ONLY): Define.
4860 * omp-builtins.def (BUILT_IN_GOACC_PARLEVEL_ID)
4861 (BUILT_IN_GOACC_PARLEVEL_SIZE): New builtin.
4862 * builtins.c (expand_builtin_goacc_parlevel_id_size): New function.
4863 (expand_builtin): Call expand_builtin_goacc_parlevel_id_size.
4864 * doc/extend.texi (Other Builtins): Add __builtin_goacc_parlevel_id and
4865 __builtin_goacc_parlevel_size.
4866
4867 2018-05-02 Richard Biener <rguenther@suse.de>
4868
4869 PR tree-optimization/85597
4870 * tree-vect-stmts.c (vectorizable_operation): For ternary SLP
4871 do not use split vect_get_vec_defs call but call vect_get_slp_defs
4872 directly.
4873
4874 2018-05-02 Tom de Vries <tom@codesourcery.com>
4875
4876 PR testsuite/85106
4877 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
4878 dump files): Add ltrans-tree.
4879
4880 2018-05-02 Tom de Vries <tom@codesourcery.com>
4881
4882 PR testsuite/85106
4883 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
4884 dump files): Add wpa-ipa.
4885
4886 2018-05-02 Segher Boessenkool <segher@kernel.crashing.org>
4887
4888 * config.gcc (powerpc*-*-*): Remove paired.h. Unsupport the
4889 powerpc*-*-linux*paired* target.
4890 * config/rs6000/750cl.h: Delete.
4891 * config/rs6000/paired.h: Delete.
4892 * config/rs6000/paired.md: Delete.
4893 * config/rs6000/predicates.md (easy_vector_constant): Remove paired
4894 float support.
4895 * config/rs6000/rs6000-builtin.def: Remove paired float support.
4896 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
4897 comment. Remove paired float support.
4898 * config/rs6000/rs6000-modes.def: Remove V2SF and V2SI.
4899 * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
4900 VECTOR_PAIRED.
4901 * config/rs6000/rs6000-protos.h (paired_expand_vector_init,
4902 paired_emit_vector_cond_expr, paired_expand_vector_move): Delete
4903 declarations.
4904 * config/rs6000/rs6000.c: Remove paired float support.
4905 (paired_expand_vector_init, paired_expand_vector_move,
4906 paired_emit_vector_compare, paired_emit_vector_cond_expr,
4907 (paired_expand_lv_builtin, paired_expand_stv_builtin,
4908 paired_expand_builtin, paired_expand_predicate_builtin,
4909 paired_init_builtins): Delete.
4910 * config/rs6000/rs6000.h: Remove paired float support.
4911 * config/rs6000/rs6000.md: Remove paired float support.
4912 (move_from_CR_ov_bit): Delete.
4913 * config/rs6000/rs6000.opt (mpaired): Delete.
4914 * config/rs6000/t-rs6000: Remove paired.md from MD_INCLUDES.
4915 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mpaired.
4916
4917 2018-05-02 Richard Biener <rguenther@suse.de>
4918
4919 PR middle-end/85567
4920 * gimplify.c (gimplify_save_expr): When in SSA form allow
4921 SAVE_EXPRs to compute to SSA vars.
4922
4923 2018-05-02 Jakub Jelinek <jakub@redhat.com>
4924
4925 PR target/85582
4926 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
4927 *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
4928 *<shift_insn><dwi>3_doubleword_mask_1): If and[sq]i3 is needed, don't
4929 clobber operands[2], instead use a new pseudo. Formatting fixes.
4930
4931 2018-05-02 Richard Sandiford <richard.sandiford@linaro.org>
4932
4933 PR tree-optimization/85586
4934 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only
4935 exit early for statements in the same group if the accesses are
4936 not strided.
4937
4938 2018-05-02 Tom de Vries <tom@codesourcery.com>
4939
4940 PR lto/85451
4941 * lto-wrapper.c (compile_offload_image): Add "could not find mkoffload"
4942 error message.
4943
4944 2018-05-01 Marc Glisse <marc.glisse@inria.fr>
4945
4946 PR tree-optimization/85143
4947 * match.pd (A<B&A<C): Extend to BIT_IOR_EXPR.
4948
4949 2018-05-01 Tom de Vries <tom@codesourcery.com>
4950
4951 PR lto/85451
4952 * config/nvptx/mkoffload.c (main): Suggest using -B in "offload compiler
4953 not found" error message.
4954
4955 2018-05-01 Tom de Vries <tom@codesourcery.com>
4956
4957 PR other/83786
4958 * vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define.
4959 * vec.c (test_ordered_remove_if): New function.
4960 (vec_c_tests): Call test_ordered_remove_if.
4961 * dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO.
4962 * lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF.
4963 * tree-vect-patterns.c (vect_pattern_recog_1): Use
4964 VEC_ORDERED_REMOVE_IF.
4965
4966 2018-05-01 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
4967
4968 PR tree-optimization/82665
4969 * vr-values.c (vr_values::extract_range_from_binary_expr): Handle
4970 pointer subtraction where arguments come from a memchr call.
4971
4972 2018-05-01 Jakub Jelinek <jakub@redhat.com>
4973
4974 * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
4975 --push-state --as-needed and --pop-state instead of --as-needed and
4976 --no-as-needed if ld supports it.
4977 * configure: Regenerated.
4978
4979 PR web/85578
4980 * doc/install.texi2html: Replace _002d with - and _002a with * in
4981 generated html files using sed.
4982
4983 2018-04-30 David Malcolm <dmalcolm@redhat.com>
4984
4985 PR c++/85523
4986 * gcc-rich-location.c (blank_line_before_p): New function.
4987 (use_new_line): New function.
4988 (gcc_rich_location::add_fixit_insert_formatted): New function.
4989 * gcc-rich-location.h
4990 (gcc_rich_location::add_fixit_insert_formatted): New function.
4991
4992 2018-04-30 David Malcolm <dmalcolm@redhat.com>
4993
4994 * selftest.c (assert_streq): Rename "expected" and "actual" to
4995 "val1" and "val2". Extend NULL-handling to cover both inputs
4996 symmetrically, while still requiring both to be non-NULL for a pass.
4997 * selftest.h (assert_streq): Rename "expected" and "actual" to
4998 "val1" and "val2".
4999 (ASSERT_EQ): Likewise.
5000 (ASSERT_EQ_AT): Likewise.
5001 (ASSERT_KNOWN_EQ): Likewise.
5002 (ASSERT_KNOWN_EQ_AT): Likewise.
5003 (ASSERT_NE): Likewise.
5004 (ASSERT_MAYBE_NE): Likewise.
5005 (ASSERT_MAYBE_NE_AT): Likewise.
5006 (ASSERT_STREQ): Likewise. Clarify that both must be non-NULL for
5007 the assertion to pass.
5008 (ASSERT_STREQ_AT): Likewise.
5009
5010 2018-04-30 Jonathan Wakely <jwakely@redhat.com>
5011
5012 * doc/invoke.texi (-fpie, -fPIE): Fix grammar and clarify
5013 interaction with -pie.
5014
5015 2018-04-30 David Malcolm <dmalcolm@redhat.com>
5016
5017 * selftest.h: Fix alphabetization of per-source-file selftest
5018 declarations.
5019
5020 2018-04-30 Jason Merrill <jason@redhat.com>
5021
5022 PR c++/61982 - dead stores to destroyed objects.
5023 * gimplify.c (gimplify_modify_expr): Simplify complex lvalue on LHS
5024 of clobber.
5025
5026 2018-04-30 Jason Merrill <jason@redhat.com>
5027
5028 * tree.c (build_clobber): New.
5029 * tree.h: Declare it.
5030 * gimplify.c (gimplify_bind_expr, gimplify_target_expr): Use it.
5031
5032 2018-04-30 David Malcolm <dmalcolm@redhat.com>
5033
5034 * diagnostic-show-locus.c (layout::layout): Update for
5035 location_get_source_line returning a char_span.
5036 (struct char_span): Move to input.h.
5037 (struct correction): Update for fields in char_span becoming
5038 private.
5039 (struct source_line): Update for location_get_source_line
5040 returning a char_span.
5041 (layout::print_line): Likewise.
5042 * edit-context.c (edited_file::print_content): Likewise.
5043 (edited_file::print_diff_hunk): Likewise.
5044 (edited_file::print_run_of_changed_lines): Likewise.
5045 (edited_file::get_num_lines): Likewise.
5046 (edited_line::edited_line): Likewise.
5047 * final.c (asm_show_source): Likewise.
5048 * input.c (location_get_source_line): Convert return type
5049 from const char * to char_span, losing the final "line_len"
5050 param.
5051 (dump_location_info): Update for the above.
5052 (get_substring_ranges_for_loc): Likewise. Use a char_span
5053 when handling the literal within the line.
5054 (test_reading_source_line): Update for location_get_source_line
5055 returning a char_span.
5056 * input.h (class char_span): Move here from
5057 diagnostic-show-locus.c, converting from a struct to a class.
5058 Make data members private.
5059 (char_span::operator bool): New.
5060 (char_span::length): New.
5061 (char_span::get_buffer): New.
5062 (char_span::operator[]): New.
5063 (char_span::subspan): Make const.
5064 (char_span::xstrdup): New.
5065 (location_get_source_line): Convert return type from const char *
5066 to char_span, losing the final "line_size" param.
5067
5068 2018-04-30 Jan Hubicka <jh@suse.cz>
5069
5070 * lto-wrapper.c (ltrans_priorities): New static var.
5071 (cmp_priority): New.
5072 (run_gcc): Read priorities and if doing parallel build order
5073 the Makefile by them.
5074
5075 2018-04-30 David Malcolm <dmalcolm@redhat.com>
5076
5077 * input.h (builtins_location_check): Convert to a STATIC_ASSERT.
5078
5079 2018-04-30 Richard Biener <rguenther@suse.de>
5080
5081 * tree-cfg.c (verify_address): Remove base argument, add
5082 flag whether to check TREE_ADDRESSABLE and do that.
5083 (verify_expr): Remove.
5084 (verify_types_in_gimple_reference): Add pieces from verify_expr.
5085 (verify_gimple_assign_single): Likewise.
5086 (verify_gimple_switch): Likewise.
5087 (verify_expr_location_1): Dereference tp once. Add (disabled)
5088 piece from verify_expr.
5089 (verify_gimple_in_cfg): Do not call verify_expr on all ops.
5090
5091 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
5092
5093 * config/arc/linux.h (CLEAR_INSN_CACHE): Define.
5094
5095 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
5096
5097 * config/arc/arc-protos.h (prepare_extend_operands): Remove.
5098 (small_data_pattern): Likewise.
5099 (arc_rewrite_small_data): Likewise.
5100 * config/arc/arc.c (LEGITIMATE_SMALL_DATA_OFFSET_P): Remove.
5101 (LEGITIMATE_SMALL_DATA_ADDRESS_P): Likewise.
5102 (get_symbol_alignment): New function.
5103 (legitimate_small_data_address_p): Likewise.
5104 (legitimate_scaled_address): Update, call
5105 legitimate_small_data_address_p.
5106 (output_sdata): New static variable.
5107 (arc_print_operand): Update how we handle small data operands.
5108 (arc_print_operand_address): Likewise.
5109 (arc_legitimate_address_p): Update, use
5110 legitimate_small_data_address_p.
5111 (arc_rewrite_small_data_p): Remove.
5112 (arc_rewrite_small_data_1): Likewise.
5113 (arc_rewrite_small_data): Likewise.
5114 (small_data_pattern): Likewise.
5115 (compact_sda_memory_operand): Update to use
5116 legitimate_small_data_address_p and get_symbol_alignment.
5117 (prepare_move_operands): Don't rewite sdata pattern.
5118 (prepare_extend_operands): Remove.
5119 * config/arc/arc.md (zero_extendqihi2): Don't rewrite sdata
5120 pattern.
5121 (zero_extendqisi2): Likewise.
5122 (zero_extendhisi2): Likewise.
5123 (extendqihi2): Likewise.
5124 (extendqisi2): Likewise.
5125 (extendhisi2): Likewise.
5126 (addsi3): Likewise.
5127 (subsi3): Likewise.
5128 (andsi3): Likewise.
5129 * config/arc/constraints.md (Usd): Change it to memory constraint.
5130
5131 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
5132
5133 * config/arc/arc.c (arc_split_move): Allow signed 6-bit constants
5134 as source of std instructions.
5135 * config/arc/arc.md (movsi_insn): Update pattern predicate to
5136 allow 6-bit constants as source for store instructions.
5137 (movdi_insn): Update instruction pattern to allow 6-bit constants
5138 as source for store instructions.
5139
5140 2018-04-30 Jonathan Wakely <jwakely@redhat.com>
5141
5142 * doc/invoke.texi (-fdebug-types-section): Fix grammar.
5143
5144 2018-04-30 Nathan Sidwell <nathan@acm.org>
5145 Sandra Loosemore <sandra@codesourcery.com>
5146
5147 * dumpfile.c (dump_open): Allow '-' for stdout.
5148 * doc/invoke.texi (Developer Options): Document dump filename
5149 determination early. Document stdin/stdout selection.
5150
5151 2018-04-30 Andrew Sadek <andrew.sadek.se@gmail.com>
5152
5153 Microblaze Target: PIC data text relative
5154
5155 * config/microblaze/microblaze.opt: add new option -mpic-data-text-rel.
5156 * config/microblaze/microblaze-protos.h (microblaze_constant_address_p):
5157 Add declaration.
5158 * gcc/config/microblaze/microblaze.h (microblaze_constant_address_p):
5159 CONSTANT_ADDRESS_P definition to microblaze_constant_address_p.
5160 * config/microblaze/microblaze.c (TARGET_PIC_DATA_TEXT_REL):
5161 New addressing mode for data-text relative position indepenedent code.
5162 (microblaze_classify_unspec): add 'UNSPEC_TEXT' case ->
5163 'ADDRESS_SYMBOLIC_TXT_REL'.
5164 (microblaze_classify_address): Add handling for UNSPEC + CONST_INT.
5165 (microblaze_legitimate_pic_operand): Exclude function calls from
5166 pic operands in case of TARGET_PIC_DATA_TEXT_REL option.
5167 (microblaze_legitimize_address): Generate 'UNSPEC_TEXT' for all possible
5168 addresses cases.
5169 (microblaze_address_insns): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
5170 (print_operand): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
5171 (print_operand_address): Add 'ADDRESS_SYMBOLIC_TXT_REL' case + handling
5172 for 'address + offset'.
5173 (microblaze_expand_prologue): Add new function prologue call for
5174 'r20' assignation.
5175 (microblaze_asm_generate_pic_addr_dif_vec): Override new target hook
5176 'TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC' to disable address diff vector
5177 table in case of TARGET_PIC_DATA_TEXT_REL.
5178 (expand_pic_symbol_ref): Add handling for 'UNSPEC_TEXT'.
5179 * gcc/config/microblaze/microblaze.md (TARGET_PIC_DATA_TEXT_REL):
5180 Add new macros 'UNSPEC_TEXT',
5181 'UNSPEC_SET_TEXT' + add rule for setting r20 in function prologue
5182 + exclude function calls from 'UNSPEC_PLT' in case of data text
5183 relative mode.
5184 * doc/tm.texi.in (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
5185 new target hook for generating address diff vector tables in case of
5186 flag_pic.
5187 * doc/tm.texi : Regenerate.
5188 * stmt.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Append new condition
5189 'targetm.asm_out.generate_pic_addr_diff_vec' to flag_pic in case
5190 of addr diff vector generation.
5191 * target.def (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
5192 target hook definition.
5193 * targhooks.h, gcc/targhooks.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC):
5194 Add default function for generate_pic_addr_diff_vec -> flag_pic.
5195 * doc/invoke.texi (Add new pic option): Add new microblaze pic
5196 option for data text relative.
5197
5198 2018-04-30 Richard Biener <rguenther@suse.de>
5199
5200 * tree-chrec.h (evolution_function_is_constant_p): Remove
5201 redundant check.
5202 * tree-cfg.c (tree_node_can_be_shared): Re-order checks.
5203
5204 2018-04-30 Richard Biener <rguenther@suse.de>
5205
5206 PR bootstrap/85571
5207 * dwarf2out.c (gen_producer_string): Ignore -fchecking[=].
5208
5209 2018-04-30 Richard Biener <rguenther@suse.de>
5210
5211 PR tree-optimization/28364
5212 PR tree-optimization/85275
5213 * tree-ssa-loop-ch.c (ch_base::copy_headers): Stop after
5214 copying first exit test.
5215
5216 2018-04-28 Mark Wielaard <mark@klomp.org>
5217
5218 * dwarf2out.c (dwarf2out_finish): Add .debug_addr table header for
5219 dwarf_version >= 5.
5220 (dwarf_AT): Handle DW_AT_addr_base.
5221 (add_top_level_skeleton_die_attrs): Use dwarf_AT for DW_AT_addr_base.
5222
5223 2018-04-28 Uros Bizjak <ubizjak@gmail.com>
5224
5225 PR target/84431
5226 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask): New pattern.
5227 (*ashl<dwi>3_doubleword_mask_1): Ditto.
5228 (*<shift_insn><dwi>3_doubleword_mask): Ditto.
5229 (*<shift_insn><dwi>3_doubleword_mask_1): Ditto.
5230
5231 2018-04-28 Richard Biener <rguenther@suse.de>
5232
5233 * tree-cfg.c (verify_gimple_phi): Take a gphi * argument.
5234 (verify_gimple_in_cfg): Rename visited_stmts to visited_throwing_stmts
5235 to reflect use. Only add interesting stmts.
5236
5237 2018-04-27 Martin Jambor <mjambor@suse.cz>
5238
5239 PR ipa/85549
5240 * ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure
5241 the jump function allows for passing through aggregate values.
5242
5243 2018-04-27 David Malcolm <dmalcolm@redhat.com>
5244
5245 * input.h (in_system_header_at): Convert from macro to inline
5246 function.
5247 (from_macro_expansion_at): Likewise.
5248 (from_macro_definition_at): Likewise.
5249
5250 2018-04-27 Jeff Law <law@redhat.com>
5251
5252 * config.gcc: Mark tile* targets as deprecated/obsolete.
5253
5254 2018-04-27 Richard Biener <rguenther@suse.de>
5255
5256 * config/aarch64/aarch64.c: Simplify ap.__stack advance and
5257 fix for ILP32.
5258
5259 2018-04-27 Richard Biener <rguenther@suse.de>
5260
5261 * tree-cfg.c (verify_expr): Make dead code hit gcc_unreachable.
5262
5263 2018-04-27 Uros Bizjak <ubizjak@gmail.com>
5264
5265 * config/i386/i386.md (*movti_internal): Substitute Ye constraint
5266 with Yd constraint. Set "preferred_for_speed" attribute from
5267 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for alternatives
5268 with Yd constraint.
5269 (*movdi_internal): Ditto.
5270 (movti_interunit splitters): Remove
5271 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC from insn condition.
5272 (movdi_interunit splitters): Ditto.
5273 * config/i386/constraints.md (Ye): Remove.
5274 (Yd): Do not depend on TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC.
5275
5276 2018-04-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5277
5278 PR target/85512
5279 * config/aarch64/constraints.md (Usg): Limit to 31.
5280 (Usj): Limit to 63.
5281
5282 2018-04-27 Jakub Jelinek <jakub@redhat.com>
5283
5284 PR tree-optimization/85529
5285 * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB
5286 argument. Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE,
5287 rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious
5288 zero extension or masking of the MSB bit.
5289 (optimize_range_tests): Add FIRST_BB argument, pass it through
5290 to optimize_range_tests_var_bound.
5291 (maybe_optimize_range_tests, reassociate_bb): Adjust
5292 optimize_range_tests callers.
5293
5294 2018-04-26 Richard Biener <rguenther@suse.de>
5295 Jakub Jelinek <jakub@redhat.com>
5296
5297 * cgraph.h (symbol_table): Just declare debug method here.
5298 * symtab.c (symbol_table::debug): Define.
5299
5300 2018-04-26 Eric Botcazou <ebotcazou@adacore.com>
5301
5302 * loop-invariant.c (may_assign_reg_p): Return false for frame pointer.
5303
5304 2018-04-26 Uros Bizjak <ubizjak@gmail.com>
5305
5306 * config/i386/i386.md ("isa" attribute): Add x64_sse2.
5307 ("enabled" attribute): Handle x64_sse2 "isa" attribute.
5308 (*movdi_internal): Substitute Yi and Yj constraint with x
5309 and Ym and Yn constraint with y constraint. Update "isa"
5310 attribute and set "preferred_for_speed" attribute from
5311 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for updated alternatives.
5312 (*movsi_internal): Ditto.
5313 (*movdf_internal): Ditto.
5314 (*movsf_internal): Ditto.
5315 (*zero_extendsidi2): Ditto.
5316 * config/i386/sse.md (vec_set<mode>_0): Ditto.
5317 (sse2_loadld): Ditto.
5318 (*vec_extract<ssevecmodelower>_0): Ditto.
5319 (*vec_extractv4si_0_zext_sse4): Ditto.
5320 (vec_concatv2di): Ditto.
5321 (*vec_dup<mode>): Ditto.
5322 * config/i386/mmx.md (*mov<mode>_internal): Ditto.
5323 * config/i386/constraints.md (Yi): Remove.
5324 (Yj): Remove.
5325 (Ym): Remove.
5326 (Yn): Remove.
5327
5328 2018-04-26 Nathan Sidwell <nathan@acm.org>
5329
5330 * dumpfile.c (dump_open): New.
5331 (dump_open_alternate_stream, dump_start, dump_begin): Call it.
5332 (dump_finish): Detect stdio/stderr by value not name.
5333
5334 2018-04-26 Jonathan Wakely <jwakely@redhat.com>
5335
5336 * doc/invoke.texi (-Wreturn-type): Document default status for C++.
5337
5338 2018-04-26 Tom de Vries <tom@codesourcery.com>
5339
5340 PR target/84952
5341 * config/nvptx/nvptx.c (verify_neutering_jumps)
5342 (verify_neutering_labels): New function
5343 (nvptx_single): Use verify_neutering_jumps and verify_neutering_labels.
5344
5345 2018-04-26 Tom de Vries <tom@codesourcery.com>
5346
5347 PR target/84025
5348 * config/nvptx/nvptx.c (needs_neutering_p): New function.
5349 (nvptx_single): Use needs_neutering_p to skip over insns that do not
5350 need neutering.
5351
5352 2018-04-26 Richard Biener <rguenther@suse.de>
5353 Tom de Vries <tom@codesourcery.com>
5354
5355 PR lto/85422
5356 * lto-streamer-out.c (output_function): Fixup loops if required to match
5357 discovery done in the reader.
5358
5359 2018-04-26 Richard Biener <rguenther@suse.de>
5360
5361 PR tree-optimization/85116
5362 * tree-ssa-loop-ch.c (do_while_loop_p): A do-while loop should
5363 have a loop exit from the single latch predecessor. Remove
5364 case of header with just condition.
5365 (ch_base::copy_headers): Exclude infinite loops from any
5366 processing.
5367 (pass_ch::execute): Record exits.
5368
5369 2018-04-26 Richard Biener <rguenther@suse.de>
5370
5371 * tree-vect-data-refs.c (vect_get_data_access_cost): Get
5372 prologue cost vector and pass it to vect_get_load_cost.
5373 (vect_get_peeling_costs_all_drs): Likewise.
5374 (vect_peeling_hash_get_lowest_cost): Likewise.
5375 (vect_enhance_data_refs_alignment): Likewise.
5376
5377 2018-04-26 Richard Biener <rguenther@suse.de>
5378
5379 PR middle-end/85450
5380 * tree-cfg.c (verify_gimple_assign_unary): Restore proper
5381 checking of integer<->pointer conversions.
5382 * omp-expand.c (expand_omp_for_static_nochunk): Avoid
5383 sign-/zero-extending pointer types.
5384 (expand_omp_for_static_chunk): Likewise.
5385
5386 2018-03-22 Hans-Peter Nilsson <hp@axis.com>
5387 Jean Lee <xiaoyur347@gmail.com>
5388
5389 * config/mips/mips.c (mips_asan_shadow_offset): New function.
5390 (TARGET_ASAN_SHADOW_OFFSET): Define.
5391 * config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be
5392 true for -fsanitize=address.
5393
5394 2018-04-25 Mark Wielaard <mark@klomp.org>
5395
5396 * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before
5397 shorter ones.
5398
5399 2018-04-25 Jakub Jelinek <jakub@redhat.com>
5400
5401 * config/i386/i386.md (*x86_mov<mode>cc_0_m1): Use type "alu1" rather
5402 than "alu", remove explicit "memory" and "imm_disp" attributes.
5403 (*x86_mov<mode>cc_0_m1_se, *x86_mov<mode>cc_0_m1_neg): Likewise.
5404
5405 PR middle-end/85414
5406 * simplify-rtx.c (simplify_unary_operation_1) <case SIGN_EXTEND,
5407 case ZERO_EXTEND>: Pass SUBREG_REG (op) rather than op to
5408 gen_lowpart_no_emit.
5409
5410 2018-04-25 Sebastian Peryt <sebastian.peryt@intel.com>
5411
5412 PR target/85473
5413 * config/i386/i386.c (ix86_expand_builtin): Change memory
5414 operand to XI, extend p0 to Pmode.
5415 * config/i386/i386.md: Change unspec volatile and operand
5416 1 mode to XI, change operand 0 mode to P.
5417
5418 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
5419
5420 * config/nds32/nds32-predicates.c (nds32_can_use_bclr_p): Mask with
5421 GET_MODE_MASK before any checking.
5422 (nds32_can_use_bset_p): Likewise.
5423 (nds32_can_use_btgl_p): Likewise.
5424
5425 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
5426
5427 * config/nds32/nds32-doubleword.md: New define_split pattern for
5428 illegal register number.
5429
5430 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
5431
5432 * config/nds32/nds32.c (nds32_print_operand): Set op_value ealier.
5433
5434 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
5435
5436 * config/nds32/nds32.h (ASM_APP_ON): Add missing newline character.
5437
5438 2018-04-25 Richard Biener <rguenther@suse.de>
5439
5440 * lto-streamer.h (LTO_major_version): Bump to 8.
5441
5442 2018-04-25 Jakub Jelinek <jakub@redhat.com>
5443
5444 * BASE-VER: Set to 9.0.0.
5445
5446 2018-04-24 Segher Boessenkool <segher@kernel.crashing.org>
5447
5448 * config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes
5449 in __abskf2 and __powikf2.
5450
5451 2018-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5452
5453 PR target/85512
5454 * config/aarch64/constraints.md (Usg, Usj): New constraints.
5455 * config/aarch64/iterators.md (cmode_simd): New mode attribute.
5456 * config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_<mode>3):
5457 Use the above on operand 2. Reindent.
5458 (*aarch64_lshr_sisd_or_int_<mode>3): Likewise.
5459
5460 2018-04-24 H.J. Lu <hongjiu.lu@intel.com>
5461
5462 PR target/85485
5463 * common/config/i386/i386-common.c (ix86_handle_option): Don't
5464 handle OPT_mcet.
5465 * config/i386/i386.opt (mcet): Removed.
5466 * doc/install.texi: Remove -mcet documentation.
5467 * doc/invoke.texi: Likewise.
5468
5469 2018-04-24 H.J. Lu <hongjiu.lu@intel.com>
5470
5471 PR target/85485
5472 * doc/install.texi: Remove -mcet from bootstrap-cet.
5473
5474 2018-04-24 Jakub Jelinek <jakub@redhat.com>
5475
5476 PR target/85511
5477 * config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define
5478 __builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32
5479 if TARGET_64BIT.
5480
5481 PR target/85503
5482 * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if
5483 const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool
5484 containing a CONST_VECTOR.
5485
5486 2018-04-24 Cesar Philippidis <cesar@codesourcery.com>
5487
5488 * doc/install.texi: Update newlib dependency for nvptx.
5489
5490 2018-04-24 Jakub Jelinek <jakub@redhat.com>
5491
5492 PR target/85508
5493 * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL
5494 instead of INTVAL when shifting x left.
5495
5496 2018-04-24 Andreas Krebbel <krebbel@linux.ibm.com>
5497
5498 PR tree-optimization/85478
5499 * tree-vect-loop.c (vect_analyze_loop_2): Do not call
5500 vect_grouped_store_supported for single element vectors.
5501
5502 2018-04-24 Richard Biener <rguenther@suse.de>
5503
5504 PR target/85491
5505 * config/i386/i386.c (ix86_add_stmt_cost): Restrict strided
5506 load cost increase to the case of non-constant step.
5507
5508 2018-04-24 Jakub Jelinek <jakub@redhat.com>
5509
5510 PR target/84828
5511 * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead
5512 destination if any_malformed_asm.
5513
5514 2018-04-23 Eric Botcazou <ebotcazou@adacore.com>
5515
5516 PR middle-end/85496
5517 * expr.c (store_field): In the bitfield case, if the value comes from
5518 a function call and is returned in registers by means of a PARALLEL,
5519 do not change the mode of the temporary unless BLKmode and VOIDmode.
5520
5521 2018-04-23 Andrey Belevantsev <abel@ispras.ru>
5522
5523 PR rtl-optimization/85423
5524 * sel-sched-ir.c (has_dependence_note_mem_dep): Only discard
5525 dependencies to debug insns when the previous insn is non-debug.
5526
5527 2018-04-23 Claudiu Zissulescu <claziss@synopsys.com>
5528
5529 * config/arc/arc.md ("vunspec"): Delete it, unify all the unspec
5530 enums into a single definition.
5531 (fls): Fix predicates and printing.
5532 (seti): Likewise.
5533
5534 2018-04-23 Claudiu Zissulescu <claziss@synopsys.com>
5535
5536 * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
5537 * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
5538 and short u6 immediate.
5539 (check_if_valid_sleep_operand): Remove.
5540 * config/arc/arc.md (Sleep): Accepts registers and u6 immediates.
5541
5542 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
5543
5544 * config/nds32/nds32.c (nds32_compute_stack_frame): Consider
5545 flag_always_save_lp condition.
5546 * config/nds32/nds32.opt (malways-save-lp): New option.
5547
5548 2018-04-22 Shiva Chen <shiva0217@gmail.com>
5549
5550 * config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
5551 * config/nds32/nds32.c (nds32_use_load_post_increment): New.
5552 * config/nds32/nds32.h
5553 (USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define.
5554 (USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define.
5555
5556 2018-04-22 Shiva Chen <shiva0217@gmail.com>
5557
5558 * config/nds32/nds32-protos.h (nds32_ls_333_p): Remove.
5559 * config/nds32/nds32.c (nds32_ls_333_p): Remove.
5560
5561 2018-04-22 Shiva Chen <shiva0217@gmail.com>
5562 Chung-Ju Wu <jasonwucj@gmail.com>
5563
5564 * config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode):
5565 Declare.
5566 * config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function.
5567 * config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify.
5568
5569 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
5570
5571 * config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value.
5572
5573 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
5574
5575 * config/nds32/nds32-protos.h (nds32_data_alignment,
5576 nds32_local_alignment): Declare.
5577 * config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment,
5578 nds32_local_alignment): New functions.
5579 (TARGET_CONSTANT_ALIGNMENT): Define.
5580 * config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define.
5581
5582 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
5583
5584 * config/nds32/nds32.c
5585 (TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file.
5586 (TARGET_MODES_TIEABLE_P): Likewise.
5587
5588 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
5589
5590 * config/nds32/nds32.c (nds32_asm_file_start): Display optimization
5591 level Ofast and Og.
5592
5593 2018-04-22 Monk Chiang <sh.chiang04@gmail.com>
5594 Chung-Ju Wu <jasonwucj@gmail.com>
5595
5596 * config/nds32/constants.md (unspec_volatile_element): Add enum values
5597 for unaligned access.
5598 * config/nds32/nds32-intrinsic.c: Implementation of expanding
5599 unaligned access.
5600 * config/nds32/nds32-intrinsic.md: Likewise.
5601 * config/nds32/nds32_intrinsic.h: Likewise.
5602 * config/nds32/nds32.h (nds32_builtins): Likewise.
5603 * config/nds32/nds32.opt (munaligned-access): New option.
5604 * config/nds32/nds32.c (nds32_asm_file_start): Display
5605 flag_unaligned_access status.
5606
5607 2018-04-20 Kito Cheng <kito.cheng@gmail.com>
5608
5609 * config/riscv/elf.h (LINK_SPEC): Pass --no-relax if
5610 -mno-relax is present.
5611 * config/riscv/linux.h (LINK_SPEC): Ditto.
5612
5613 2018-04-20 Martin Sebor <msebor@redhat.com>
5614
5615 PR c/85365
5616 * gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
5617 for null pointers.
5618 (gimple_fold_builtin_stxcpy_chk): Same.
5619 * gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same.
5620
5621 2018-04-20 Michael Meissner <meissner@linux.ibm.com>
5622
5623 PR target/85456
5624 * config/rs6000/rs6000.c (init_float128_ieee): Add support to call
5625 __powikf2 when long double is IEEE 128-bit.
5626
5627 2018-04-20 Kito Cheng <kito.cheng@gmail.com>
5628
5629 * config/riscv/riscv.c (riscv_first_stack_step): Round up min
5630 step to make sure stack always aligned.
5631
5632 2018-04-20 Carl Love <cel@us.ibm.com>
5633
5634 PR target/83402
5635 * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add
5636 size check for arg0.
5637
5638 2018-04-20 Nathan Sidwell <nathan@codesourcery.com>
5639 Tom de Vries <tom@codesourcery.com>
5640
5641 PR target/85445
5642 * config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining):
5643 Emit insns for calls too.
5644 (nvptx_find_par): Always look for worker-level predecessor insn.
5645 (nvptx_propagate): Add is_call parm, return bool. Copy frame for
5646 calls.
5647 (nvptx_vpropagate, nvptx_wpropagate): Adjust.
5648 (nvptx_process_pars): Propagate frames for calls.
5649
5650 2018-04-20 H.J. Lu <hongjiu.lu@intel.com>
5651
5652 PR target/85469
5653 * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
5654 Removed.
5655 (OPTION_MASK_ISA_IBT_UNSET): Likewise.
5656 (ix86_handle_option): Don't handle OPT_mibt.
5657 * config/i386/cet.h: Check __CET__ instead of __IBT__ and
5658 __SHSTK__.
5659 * config/i386/driver-i386.c (host_detect_local_cpu): Remove
5660 has_ibt and ibt.
5661 * config/i386/i386-c.c (ix86_target_macros_internal): Don't
5662 check OPTION_MASK_ISA_IBT nor flag_cf_protection.
5663 (ix86_target_macros): Define __CET__ with flag_cf_protection
5664 for -fcf-protection.
5665 * config/i386/i386.c (isa2_opts): Remove -mibt.
5666 * config/i386/i386.h (TARGET_IBT): Removed.
5667 (TARGET_IBT_P): Likewise.
5668 (ix86_valid_target_attribute_inner_p): Don't check OPT_mibt.
5669 * config/i386/i386.md (nop_endbr): Don't check TARGET_IBT.
5670 * config/i386/i386.opt (mcet): Update help message.
5671 (mshstk): Likewise.
5672 (mibt): Removed.
5673 * doc/invoke.texi: Remove -mibt. Document __CET__. Document
5674 -mcet as an alias for -mshstk.
5675
5676 2018-04-20 Richard Biener <rguenther@suse.de>
5677
5678 PR middle-end/85475
5679 * match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential
5680 complexity by forcing a single use of the multiply operand.
5681
5682 2018-04-20 Martin Jambor <mjambor@suse.cz>
5683
5684 ipa/85449
5685 * ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding
5686 recursion dependency to only apply to non-clones.
5687
5688 2018-04-20 Martin Jambor <mjambor@suse.cz>
5689
5690 ipa/85447
5691 * ipa-cp.c (create_specialized_node): Check that clones of
5692 self-recursive edges exist during IPA-CP.
5693
5694 2018-04-19 Toon Moene <toon@moene.org>
5695
5696 * doc/invoke.texi: Add -floop-unroll-and-jam to options enabled
5697 by -O3.
5698
5699 2018-04-19 Jakub Jelinek <jakub@redhat.com>
5700
5701 PR tree-optimization/85467
5702 * fold-const.c (fold_ternary_loc) <case BIT_FIELD_REF>: Use
5703 VECTOR_TYPE_P macro. If type is vector type, VIEW_CONVERT_EXPR the
5704 VECTOR_CST element to type.
5705
5706 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
5707
5708 PR target/85397
5709 * config/i386/i386.h (STACK_SAVEAREA_MODE): New.
5710 * config/i386/i386.md (builtin_setjmp_setup): Removed.
5711 (builtin_longjmp): Likewise.
5712 (save_stack_nonlocal): New pattern.
5713 (restore_stack_nonlocal): Likewise.
5714
5715 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
5716
5717 PR target/85404
5718 * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
5719 Replace ASM_OUTPUT_LABEL with fprintf.
5720
5721 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
5722
5723 PR target/85417
5724 * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
5725 Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK.
5726 * config/i386/i386-c.c (ix86_target_macros_internal): Also
5727 define __IBT__ and __SHSTK__ for -fcf-protection.
5728 * config/i386/i386.c (pass_insert_endbranch::gate): Don't check
5729 TARGET_IBT.
5730 (ix86_trampoline_init): Likewise.
5731 (x86_output_mi_thunk): Likewise.
5732 (ix86_notrack_prefixed_insn_p): Likewise.
5733 (ix86_option_override_internal): Don't disallow -fcf-protection.
5734 * config/i386/i386.md (rdssp<mode>): Also enable for
5735 -fcf-protection.
5736 (incssp<mode>): Likewise.
5737 (nop_endbr): Likewise.
5738 * config/i386/i386.opt (mcet): Change help message to built-in
5739 functions only.
5740 (mibt): Likewise.
5741 (mshstk): Likewise.
5742 * doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition
5743 on -fcf-protection. Change -mcet, -mibt and -mshstk to only
5744 enable CET built-in functions.
5745
5746 2018-04-19 Sebastian Peryt <sebastian.peryt@intel.com>
5747
5748 * common/config/i386/i386-common.c
5749 (OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET,
5750 OPTION_MASK_ISA_MOVDIRI_UNSET,
5751 OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines.
5752 (ix86_handle_option): Handle -mmovdiri and -mmovdir64b.
5753 * config.gcc (movdirintrin.h): New header.
5754 * config/i386/cpuid.h (bit_MOVDIRI,
5755 bit_MOVDIR64B): New bits.
5756 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri
5757 and -mmvodir64b.
5758 * config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED),
5759 (VOID, PVOID, PCVOID)): New function types.
5760 * config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32,
5761 __builtin_ia32_directstoreu_u64,
5762 __builtin_ia32_movdir64b): New builtins.
5763 * config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New.
5764 * config/i386/i386.c (ix86_target_string): Added -mmovdir64b
5765 and -mmovdiri.
5766 (ix86_valid_target_attribute_inner_p): Ditto.
5767 (ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED
5768 and VOID_FTYPE_PUNSIGNED_UNSIGNED.
5769 (ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B.
5770 * config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P,
5771 TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New.
5772 * config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New.
5773 (movdiri<mode>, movdir64b_<mode>): New.
5774 * config/i386/i386.opt: Add -mmovdiri and -mmovdir64b.
5775 * config/i386/immintrin.h: Include movdirintrin.h.
5776 * config/i386/movdirintrin.h: New file.
5777 * doc/invoke.texi: Added -mmovdiri and -mmovdir64b.
5778
5779 2018-04-19 Richard Biener <rguenther@suse.de>
5780
5781 PR middle-end/85455
5782 * cfg.c (clear_bb_flags): When loop state says we have
5783 marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP.
5784
5785 2018-04-19 Richard Biener <rguenther@suse.de>
5786
5787 PR tree-optimization/84737
5788 * tree-vect-data-refs.c (vect_copy_ref_info): New function
5789 copying restrict info.
5790 (vect_setup_realignment): Use it.
5791 * tree-vectorizer.h (vect_copy_ref_info): Declare.
5792 * tree-vect-stmts.c (vectorizable_store): Copy ref info from
5793 the first DR to all generated stores.
5794 (vectorizable_load): Likewise for loads.
5795
5796 2018-04-19 Jakub Jelinek <jakub@redhat.com>
5797
5798 PR tree-optimization/85446
5799 * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
5800 the integral and pointer types to have the same precision.
5801
5802 * doc/install.texi: Document --disable-cet being the default and
5803 --enable-cet=auto.
5804
5805 2018-04-18 Martin Liska <mliska@suse.cz>
5806
5807 * ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding
5808 style.
5809
5810 2018-04-18 Martin Liska <mliska@suse.cz>
5811
5812 Revert
5813 2018-03-02 Eric Botcazou <ebotcazou@adacore.com>
5814
5815 PR ipa/83983
5816 * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
5817 arguments if they are comparable.
5818
5819 2018-04-18 Martin Liska <mliska@suse.cz>
5820
5821 Revert
5822 2018-03-13 Eric Botcazou <ebotcazou@adacore.com>
5823
5824 PR lto/84805
5825 * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
5826 incomplete types.
5827
5828 2018-04-18 H.J. Lu <hongjiu.lu@intel.com>
5829
5830 PR target/85388
5831 * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert
5832 ENDBR after calling __morestack.
5833
5834 2018-04-18 David Malcolm <dmalcolm@redhat.com>
5835
5836 PR jit/85384
5837 * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version
5838 by using gcc_base_ver to generate a gcc_driver_version, and use
5839 it when generating GCC_DRIVER_NAME.
5840 * configure: Regenerate.
5841
5842 2018-04-18 Jakub Jelinek <jakub@redhat.com>
5843
5844 PR target/81084
5845 * config.gcc: Obsolete powerpc*-*-*spe*.
5846
5847 2018-04-17 Jakub Jelinek <jakub@redhat.com>
5848
5849 PR debug/84637
5850 * dbxout.c (dbxout_int): Perform negation in unsigned int type.
5851 (stabstr_D): Change type of unum from unsigned int to
5852 unsigned HOST_WIDE_INT. Perform negation in unsigned HOST_WIDE_INT
5853 type.
5854
5855 2018-04-17 Jim Wilson <jimw@sifive.com>
5856
5857 PR 84856
5858 * config/riscv/riscv.c (riscv_compute_frame_info): Add calls to
5859 RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size.
5860 Set arg_pointer_offset after using pretend_args_size.
5861
5862 2018-04-17 Jakub Jelinek <jakub@redhat.com>
5863
5864 PR rtl-optimization/85431
5865 * dse.c (record_store): Ignore zero width stores.
5866
5867 PR sanitizer/85230
5868 * asan.c (handle_builtin_stack_restore): Adjust comment. Emit
5869 __asan_allocas_unpoison call and last_alloca_addr = new_sp before
5870 __builtin_stack_restore rather than after it.
5871 * builtins.c (expand_asan_emit_allocas_unpoison): Pass
5872 arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second
5873 argument instead of virtual_dynamic_stack_rtx.
5874
5875 2018-04-17 Kelvin Nilsen <kelvin@gcc.gnu.org>
5876
5877 * config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p):
5878 New prototype.
5879 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
5880 Add note to error message to explain internal mapping of overloaded
5881 built-in function name to non-overloaded built-in function name.
5882 * config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New
5883 function.
5884
5885 2018-04-17 Michael Meissner <meissner@linux.vnet.ibm.com>
5886
5887 PR target/85424
5888 * config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
5889 where the inputs overlap with the output.
5890
5891 2018-04-17 Jakub Jelinek <jakub@redhat.com>
5892
5893 * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add
5894 (=v, v) alternative and explicit "memory" attribute.
5895 (vec_extract_lo_<mode><mask_name>): Likewise. Also add
5896 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
5897 attributes.
5898 (vec_extract_lo_<mode><mask_name>): Add (=v, v) alternative and use
5899 "sselog1" type instead of "sselog".
5900 (vec_extract_hi_<mode><mask_name>): Use "sselog1" type instead of
5901 "sselog". Remove explicit "memory" attribute.
5902 (vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory",
5903 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
5904 attributes.
5905 (vec_extract_hi_v32hi): Merge all alternatives into one, use
5906 "sselog1" type instead of "sselog". Remove explicit "memory"
5907 attribute.
5908 (vec_extract_hi_v16hi): Merge each pair of alternatives into one,
5909 use "sselog1" type instead of "sselog". Remove explicit "memory"
5910 attribute.
5911 (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
5912 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
5913 attributes.
5914 (vec_extract_hi_v64qi): Merge all alternatives into one, use
5915 "sselog1" type instead of "sselog". Remove explicit "memory"
5916 attribute.
5917 (vec_extract_hi_v32qi): Merge each pair of alternatives into one,
5918 use "sselog1" type instead of "sselog". Remove explicit "memory"
5919 attribute.
5920
5921 PR target/85430
5922 * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu.
5923
5924 PR middle-end/85414
5925 * rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
5926 on a SUBREG.
5927
5928 2018-04-17 Martin Jambor <mjambor@suse.cz>
5929
5930 PR ipa/85421
5931 * ipa-cp.c (create_specialized_node): Call
5932 expand_all_artificial_thunks if necessary.
5933
5934 2018-04-17 Martin Liska <mliska@suse.cz>
5935
5936 PR lto/85405
5937 * ipa-devirt.c (odr_types_equivalent_p): Remove trailing
5938 in message, remote space in between '_G' and '('.
5939
5940 2018-04-17 Jakub Jelinek <jakub@redhat.com>
5941
5942 PR target/85281
5943 * config/i386/sse.md (reduces<mode><mask_scalar_name>,
5944 avx512f_vmcmp<mode>3<round_saeonly_name>,
5945 avx512f_vmcmp<mode>3_mask<round_saeonly_name>,
5946 avx512f_sgetexp<mode><mask_scalar_name><round_saeonly_scalar_name>,
5947 avx512f_rndscale<mode><round_saeonly_name>,
5948 avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
5949 avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
5950 Use %<iptr>2 instead of %2 for -masm=intel.
5951 (avx512f_vcvtss2usi<round_name>, avx512f_vcvtss2usiq<round_name>,
5952 avx512f_vcvttss2usi<round_saeonly_name>,
5953 avx512f_vcvttss2usiq<round_saeonly_name>): Use %k1 instead of %1 for
5954 -masm=intel.
5955 (avx512f_vcvtsd2usi<round_name>, avx512f_vcvtsd2usiq<round_name>,
5956 avx512f_vcvttsd2usi<round_saeonly_name>,
5957 avx512f_vcvttsd2usiq<round_saeonly_name>, ufloatv2siv2df2<mask_name>):
5958 Use %q1 instead of %1 for -masm=intel.
5959 (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
5960 avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Use %<iptr>3 instead
5961 of %3 for -masm=intel.
5962 (sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for
5963 -masm=intel.
5964 (*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
5965 -masm=intel.
5966 (*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
5967 -masm=intel.
5968 (avx512vl_<code><mode>v4qi2_mask_store): Use a single pattern with
5969 %k0 and %1 for -masm=intel rather than two patterns, one with %0 and
5970 %g1.
5971 (*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
5972 -masm=intel.
5973 (avx512vl_<code><mode>v8qi2_mask_store): Use a single pattern with
5974 %q0 and %1 for -masm=intel rather than two patterns, one with %0 and
5975 %g1 and one with %0 and %1.
5976 (avx512er_vmrcp28<mode><round_saeonly_name>,
5977 avx512er_vmrsqrt28<mode><round_saeonly_name>): Use %<iptr>1 instead of
5978 %1 for -masm=intel.
5979 (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask,
5980 avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask,
5981 avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order
5982 of %0 and %{%4%} for -masm=intel.
5983 (avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz,
5984 avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz,
5985 avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap
5986 order of %0 and %{%5%}%{z%} for -masm=intel.
5987
5988 2018-04-17 Jan Hubicka <jh@suse.cz>
5989
5990 PR lto/85405
5991 * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
5992
5993 2018-04-17 Martin Liska <mliska@suse.cz>
5994
5995 PR ipa/85329
5996 * multiple_target.c (create_dispatcher_calls): Set apostrophes
5997 for target_clone error message. Make default implementation
5998 clone to be a local declaration.
5999 (separate_attrs): Add new argument and check for an empty
6000 string.
6001 (expand_target_clones): Handle it.
6002 (ipa_target_clone): Make redirection just for target_clones
6003 functions.
6004
6005 2018-04-16 Cesar Philippidis <cesar@codesourcery.com>
6006 Tom de Vries <tom@codesourcery.com>
6007
6008 PR middle-end/84955
6009 * omp-expand.c (expand_oacc_for): Add dummy false branch for
6010 tiled basic blocks without omp continue statements.
6011
6012 2018-04-16 Aaron Sawdey <acsawdey@linux.ibm.com>
6013
6014 PR target/83660
6015 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
6016 vec_extract expression as having side effects to make sure it gets
6017 a cleanup point.
6018
6019 2018-04-16 H.J. Lu <hongjiu.lu@intel.com>
6020
6021 PR target/85403
6022 * config/i386/i386.c (get_builtin_code_for_version): Check
6023 error_mark_node.
6024
6025 2018-04-16 Olga Makhotina <olga.makhotina@intel.com>
6026
6027 PR target/84331
6028 * gcc/config.gcc: Support "skylake".
6029 * gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle
6030 PROCESSOR_SKYLAKE.
6031 * gcc/config/i386/i386.c (m_SKYLAKE): Define.
6032 (processor_target_table): Add "skylake".
6033 (ix86_option_override_internal): Add "skylake".
6034 (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
6035 PROCESSOR_CANNONLAKE.
6036 (get_builtin_code_for_version): Fix priority for
6037 PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER,
6038 PROCESSOR_SKYLAKE-AVX512.
6039 * gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
6040 (processor_type): Add PROCESSOR_SKYLAKE.
6041
6042 2018-04-16 Paolo Carlini <paolo.carlini@oracle.com>
6043 Jason Merrill <jason@redhat.com>
6044
6045 PR c++/85112
6046 * convert.c (convert_to_integer_1): Use direct recursion for
6047 enumeral types and types with a precision less than the number
6048 of bits in their mode.
6049
6050 2018-04-16 Julia Koval <julia.koval@intel.com>
6051
6052 PR target/84413
6053 * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL,
6054 X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512
6055
6056 2018-04-14 Segher Boessenkool <segher@kernel.crashing.org>
6057
6058 PR target/85293
6059 * config/rs6000/rs6000.opt (mdirect-move): Make deprecated.
6060 * doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move
6061 and -mno-direct-move.
6062
6063 2018-04-13 Paul A. Clarke <pc@us.ibm.com>
6064
6065 PR target/83402
6066 * config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}):
6067 Ensure that vec_splat_s32 is only called with 0 <= shift < 16.
6068 Ensure negative shifts result in {0}.
6069
6070 2018-04-13 Vladimir Makarov <vmakarov@redhat.com>
6071
6072 PR rtl-optimization/79916
6073 * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
6074 regs (if any) to define how to gnerate SD moves when LRA is in
6075 progress.
6076
6077 2018-04-13 Jakub Jelinek <jakub@redhat.com>
6078
6079 PR rtl-optimization/85393
6080 * except.h (expand_dw2_landing_pad_for_region): Remove declaration.
6081 * except.c (expand_dw2_landing_pad_for_region): Make static.
6082 * bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just
6083 a label and unconditional jump to old_bb, rather than
6084 expand_dw2_landing_pad_for_region insn(s) and jump to single_succ
6085 basic block.
6086
6087 PR rtl-optimization/85376
6088 * simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and
6089 zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX
6090 instead of a specific value.
6091
6092 2018-04-13 Jan Hubicka <hubicka@ucw.cz>
6093 Bin Cheng <bin.cheng@arm.com>
6094
6095 PR tree-optimization/82965
6096 PR tree-optimization/83991
6097 * cfgloopanal.c (expected_loop_iterations_unbounded): Add
6098 by_profile_only parameter.
6099 * cfgloopmanip.c (scale_loop_profile): Further scale loop's profile
6100 information if the loop was predicted to iterate too many times.
6101 * cfgloop.h (expected_loop_iterations_unbounded): Update prototype
6102
6103 2018-04-13 Jan Hubicka <hubicka@ucw.cz>
6104
6105 PR lto/71991
6106 * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
6107 always inline.
6108
6109 2018-04-13 Martin Liska <mliska@suse.cz>
6110 Jakub Jelinek <jakub@redhat.com>
6111
6112 PR middle-end/81657
6113 * expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET.
6114 * expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET.
6115 * builtins.c (expand_builtin_memory_copy_args): Use
6116 BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target,
6117 handle dest_addr == pc_rtx.
6118
6119 2018-04-12 Segher Boessenkool <segher@kernel.crashing.org>
6120
6121 PR target/85291
6122 * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
6123 asked to not generate direct moves.
6124 (fix_trunc<mode>si2_stfiwx): Similar.
6125 (fix_trunc<mode>si2_internal): Similar.
6126
6127 2018-04-12 Jakub Jelinek <jakub@redhat.com>
6128
6129 PR debug/83157
6130 * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST.
6131 * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest,
6132 lookup if dest in some wider mode is known to be const0_rtx and
6133 if so, record permanent equivalence for it to be ZERO_EXTEND of
6134 the narrower mode destination.
6135
6136 2018-04-12 Cesar Philippidis <cesar@codesourcery.com>
6137
6138 * lto-streamer-out.c (output_function): Revert 259346.
6139 * omp-expand.c (expand_oacc_for): Likewise.
6140
6141 2018-04-12 Alexander Monakov <amonakov@ispras.ru>
6142
6143 PR rtl-optimization/85354
6144 * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call...
6145 * sel-sched.c (sel_global_init): ... here.
6146
6147 2018-04-12 Eric Botcazou <ebotcazou@adacore.com>
6148
6149 PR target/85238
6150 * lto-wrapper.c (debug_objcopy): Open the files in binary mode.
6151 * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
6152 mode for PE-COFF targets.
6153 * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
6154 (i386_pe_asm_lto_end): Likewise.
6155 * config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
6156 (TARGET_ASM_LTO_END): Likewise.
6157 * config/i386/winnt.c (saved_debug_info_level): New static variable.
6158 (i386_pe_asm_lto_start): New function.
6159 (i386_pe_asm_lto_end): Likewise.
6160
6161 2018-04-12 Cesar Philippidis <cesar@codesourcery.com>
6162 Richard Biener <rguenther@suse.de>
6163
6164 PR middle-end/84955
6165 * lto-streamer-out.c (output_function): Fix CFG loop state before
6166 streaming out.
6167 * omp-expand.c (expand_oacc_for): Handle calls to internal
6168 functions like regular functions.
6169
6170 2018-04-12 Richard Biener <rguenther@suse.de>
6171
6172 PR lto/85371
6173 * dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label]
6174 for the early LTO debug to properly generate references to it
6175 during DIE emission. Do not re-use that for the skeleton for
6176 split-dwarf.
6177 (dwarf2out_early_finish): Likewise.
6178
6179 2018-04-12 Jakub Jelinek <jakub@redhat.com>
6180
6181 PR target/85328
6182 * config/i386/sse.md
6183 (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
6184 <mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
6185 vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
6186 vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
6187 and output is a reg, avoid creating invalid lowpart subreg, but
6188 instead split into a 512-bit move. Don't split if not AVX512VL,
6189 input is xmm16+ reg and output is a mem.
6190 (vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
6191 vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
6192 xmm16+ reg and output is a mem.
6193
6194 2018-04-12 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
6195
6196 * config/s390/s390.c (s390_output_indirect_thunk_function): Check
6197 also for flag_dwarf2_cfi_asm.
6198
6199 2018-04-12 Jakub Jelinek <jakub@redhat.com>
6200
6201 PR rtl-optimization/85342
6202 * regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use
6203 a bool scalar var inside of the loop instead. Don't try to update
6204 recog_data.operand after failed apply_change_group.
6205
6206 2018-04-12 Tom de Vries <tom@codesourcery.com>
6207
6208 PR target/85296
6209 * config/nvptx/nvptx.c (flexible_array_member_type_p): New function.
6210 (nvptx_assemble_decl_begin): Add undefined param. Declare undefined
6211 array with flexible array member as array without given dimension.
6212 (nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call
6213 argument for undefined param to true.
6214
6215 2018-04-11 Aaron Sawdey <acsawdey@linux.ibm.com>
6216
6217 PR target/85321
6218 * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
6219 -mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe
6220 from PowerPC section.
6221 * config/rs6000/sysv4.opt (mcall-): Improve help text.
6222 * config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim
6223 help text that is too long.
6224 * config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim
6225 help text that is too long.
6226 * config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim
6227 help text that is too long.
6228
6229 2018-04-11 Uros Bizjak <ubizjak@gmail.com>
6230
6231 * config/alpha/alpha.md (stack_probe_internal): Rename
6232 from "probe_stack". Update all callers.
6233
6234 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
6235
6236 PR rtl-optimization/84566
6237 * sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking
6238 sched_macro_fuse_insns.
6239
6240 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
6241
6242 PR target/84301
6243 * sched-rgn.c (add_branch_dependences): Move sel_sched_p check here...
6244 (compute_block_dependences): ... from here.
6245
6246 2018-04-11 Jakub Jelinek <jakub@redhat.com>
6247
6248 PR tree-optimization/85331
6249 * vec-perm-indices.h (vec_perm_indices::clamp): Change input type
6250 from int to HOST_WIDE_INT.
6251
6252 2018-04-11 Martin Jambor <mjambor@suse.cz>
6253
6254 PR ipa/84149
6255 * ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
6256 (cgraph_edge_brings_value_p): New parameter dest_val, check if it is
6257 not the same as the source val.
6258 (cgraph_edge_brings_value_p): New parameter.
6259 (gather_edges_for_value): Pass destination value to
6260 cgraph_edge_brings_value_p.
6261 (perhaps_add_new_callers): Likewise.
6262 (get_info_about_necessary_edges): Likewise and exclude values brought
6263 only by self-recursive edges.
6264 (create_specialized_node): Redirect only clones of self-calling edges.
6265 (+self_recursive_pass_through_p): New function.
6266 (find_more_scalar_values_for_callers_subset): Use it.
6267 (find_aggregate_values_for_callers_subset): Likewise.
6268 (known_aggs_to_agg_replacement_list): Removed.
6269 (decide_whether_version_node): Re-calculate known constants for all
6270 remaining context clones.
6271
6272 2018-04-11 Richard Biener <rguenther@suse.de>
6273
6274 PR lto/85339
6275 * dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute
6276 from early DWARF output.
6277 (dwarf2out_early_finish): Output line info unconditionally into
6278 early DWARF and add reference to it.
6279
6280 2018-04-11 Jakub Jelinek <jakub@redhat.com>
6281
6282 PR target/85281
6283 * config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases.
6284 (<avx512>_vec_dup<mode><mask_name>): Use a single pattern for modes
6285 other than V2DFmode using iptr mode attribute.
6286 (<avx512>_vec_dup<mode><mask_name>): Use iptr mode attribute.
6287
6288 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
6289
6290 PR rtl-optimization/84659
6291 * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
6292
6293 2018-04-11 Jakub Jelinek <jakub@redhat.com>
6294
6295 PR debug/85302
6296 * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
6297 SIZEP is NULL.
6298 (output_loc_list): Pass address of a dummy size variable even in the
6299 locview handling loop.
6300 (index_location_lists): Add comment on why skip_loc_list_entry can't
6301 call size_of_locs.
6302
6303 2018-04-11 Thomas Preud'homme <thomas.preudhomme@arm.com>
6304
6305 PR target/85261
6306 * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
6307 into register.
6308
6309 2018-04-10 Aaron Sawdey <acsawdey@linux.ibm.com>
6310
6311 PR target/85321
6312 * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
6313 -mblock-compare-inline-limit, -mblock-compare-inline-loop-limit,
6314 and -mstring-compare-inline-limit.
6315
6316 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
6317
6318 PR target/85287
6319 * gcc/config/rs6000/rs6000.md (allocate_stack): Put the residual size
6320 for stack clash protection in a register whenever we need it to be in
6321 a register.
6322
6323 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
6324
6325 * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
6326 Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.
6327
6328 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
6329
6330 PR target/85321
6331 * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
6332 the help text.
6333 (mlong-double-): Ditto.
6334 * config/rs6000/sysv4.opt (msdata=): Ditto.
6335 (mtls-size=): Ditto.
6336
6337 2018-04-10 Kelvin Nilsen <kelvin@gcc.gnu.org>
6338
6339 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
6340 erroneous entries for
6341 "vector int vec_ldl (int, long int *)", and
6342 "vector unsigned int vec_ldl (int, unsigned long int *)".
6343 Add comments and entries for
6344 "vector bool char vec_ldl (int, bool char *)",
6345 "vector bool short vec_ldl (int, bool short *)",
6346 "vector bool int vec_ldl (int, bool int *)",
6347 "vector bool long long vec_ldl (int, bool long long *)",
6348 "vector pixel vec_ldl (int, pixel *)",
6349 "vector long long vec_ldl (int, long long *)",
6350 "vector unsigned long long vec_ldl (int, unsigned long long *)".
6351 * config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new
6352 type tree bool_long_long_type_node and correct definition of
6353 bool_V2DI_type_node to make reference to this new type tree.
6354 (rs6000_mangle_type): Replace erroneous reference to
6355 bool_long_type_node with bool_long_long_type_node.
6356 * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
6357 comments to emphasize sign distinctions for char and int types and
6358 replace RS6000_BTI_bool_long constant with
6359 RS6000_BTI_bool_long_long constant. Also add comment to restrict
6360 use of RS6000_BTI_pixel.
6361 (bool_long_type_node): Remove this macro definition.
6362 (bool_long_long_type_node): New macro definition
6363
6364 2018-04-10 Jakub Jelinek <jakub@redhat.com>
6365
6366 PR rtl-optimization/85300
6367 * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
6368 into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if
6369 simplify_unary_operation fails.
6370
6371 2018-04-10 Martin Liska <mliska@suse.cz>
6372
6373 * gdbhooks.py: Add pretty-printers for varpool_node, symtab_node,
6374 cgraph_edge and ipa_ref.
6375
6376 2018-04-10 Jakub Jelinek <jakub@redhat.com>
6377
6378 PR target/85177
6379 PR target/85255
6380 * config/i386/sse.md
6381 (<extract_type>_vinsert<shuffletype><extract_suf>_mask): Fix
6382 computation of the VEC_MERGE selector from mask.
6383 (<extract_type>_vinsert<shuffletype><extract_suf>_1<mask_name>):
6384 Fix decoding of the VEC_MERGE selector into mask.
6385
6386 2018-04-10 Richard Sandiford <richard.sandiford@linaro.org>
6387
6388 PR tree-optimization/85286
6389 * tree-vect-data-refs.c (vect_get_smallest_scalar_type):
6390
6391 2018-04-10 Richard Sandiford <richard.sandiford@linaro.org>
6392
6393 * final.c (final_1): Set insn_last_address as well as
6394 insn_current_address.
6395
6396 2018-04-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6397
6398 PR target/85173
6399 * explow.c (emit_stack_probe): Call validize_mem on memory location
6400 before passing it to gen_probe_stack. Create address operand and
6401 legitimize it for the probe_stack_address case.
6402
6403 2018-04-09 Jan Hubicka <jh@suse.cz>
6404
6405 PR lto/85078
6406 * ipa-devirt.c (rebuild_type_inheritance-hash): New.
6407 * ipa-utils.h (rebuild_type_inheritance-hash): Declare.
6408 * tree.c (free_lang_data_in_type): Fix handling of binfos;
6409 walk basetypes.
6410 (free_lang_data): Rebuild type inheritance graph.
6411
6412 2018-04-09 Martin Sebor <msebor@redhat.com>
6413
6414 * invoke.texi (-finline-small-functions): Mention other optimization
6415 options.
6416 (-findirect-inlining, -fpartial-inlining): Same.
6417 (-finline-functions-called-once): Same.
6418 (-freorder-blocks-and-partition): Same.
6419
6420 2018-04-09 Jan Hubicka <jh@suse.cz>
6421
6422 PR rtl/84058
6423 * cfgcleanup.c (try_forward_edges): Do not give up on crossing
6424 jumps; choose last target that matches the criteria (i.e.
6425 no partition changes for non-crossing jumps).
6426 * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic
6427 support for redirecting crossing jumps to non-crossing.
6428
6429 2018-04-09 Alexey Brodkin <abrodkin@synopsys.com>
6430
6431 * config/arc/arc.c (arc_expand_prologue): Set stack usage info
6432 also for naked functions.
6433
6434 2018-04-09 Claudiu Zissulescu <claziss@synopsys.com>
6435
6436 * config/arc/arc.md (add_shift): New pattern.
6437 (add_shift2): Likewise.
6438 (sub_shift): Likewise.
6439 (sub_shift_cmp0_noout): Likewise.
6440 (compare_si_ashiftsi): Likewise.
6441 (xbfu_cmp0_noout): New combine pattern.
6442 (xbfu_cmp0"): Likewise.
6443 (movsi_set_cc_insn): Place the predicable variant first.
6444 (commutative_binary_cmp0_noout): Remove clobber.
6445 (commutative_binary_cmp0): New pattern.
6446 (noncommutative_binary_cmp0): Likewise.
6447 (noncommutative_binary_cmp0_noout): Likewise.
6448 (noncommutative_binary_comparison_result_used): Removed.
6449 (rsub_cmp0): New pattern.
6450 (rsub_cmp0_noout): Likewise.
6451 (extzvsi): Changed, keep only meaningful variants.
6452 (SQH, SEZ): New iterators.
6453 (SQH_postfix): New mode attribute.
6454 (SEZ_prefix): New code attribute.
6455 (<SEZ_prefix>xt<SQH_postfix>_cmp0_noout): New instruction pattern.
6456 (<SEZ_prefix>xt<SQH_postfix>_cmp0): Likewise.
6457 * config/arc/predicates.md (cc_set_register): Use CC_REG instead
6458 of numerical value.
6459 (noncommutative_operator): Check the availability of barrel
6460 shifter option.
6461
6462 2018-04-09 Richard Biener <rguenther@suse.de>
6463
6464 PR tree-optimization/85284
6465 * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
6466 Only use the niter constraining form of simple_iv when the exit
6467 is always executed.
6468
6469 2018-04-09 Tom de Vries <tom@codesourcery.com>
6470
6471 PR target/84041
6472 * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
6473 (define_expand "*memory_barrier"): New define_expand.
6474 (define_insn "memory_barrier"): New insn.
6475
6476 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
6477
6478 PR rtl-optimization/80463
6479 PR rtl-optimization/83972
6480 PR rtl-optimization/83480
6481
6482 * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
6483 correct producer for the insn.
6484 (tidy_control_flow): Fixup seqnos in case of debug insns.
6485
6486 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
6487
6488 PR rtl-optimization/83913
6489
6490 * sel-sched-ir.c (merge_expr_data): Choose the middle between two
6491 different sched-times when merging exprs.
6492
6493 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
6494
6495 PR rtl-optimization/83962
6496
6497 * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
6498 tidy_fallthru_edge and tidy_control_flow.
6499
6500 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
6501
6502 PR rtl-optimization/83530
6503
6504 * sel-sched.c (force_next_insn): New global variable.
6505 (remove_insn_for_debug): When force_next_insn is true, also leave only
6506 next insn in the ready list.
6507 (sel_sched_region): When the region wasn't scheduled, make another pass
6508 over it with force_next_insn set to 1.
6509
6510 2018-04-08 Monk Chiang <sh.chiang04@gmail.com>
6511
6512 * config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
6513 into tm_file.
6514 * config/nds32/constants.md (unspec_volatile_element): Add enum values
6515 for interrupt control.
6516 * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
6517 functions for interrupt control.
6518 * config/nds32/nds32-intrinsic.md: Likewise.
6519 * config/nds32/nds32_intrinsic.h: Likewise.
6520 * config/nds32/nds32.h (nds32_builtins): Likewise.
6521
6522 2018-04-08 Chung-Ju Wu <jasonwucj@gmail.com>
6523
6524 * config/nds32/nds32.c (nds32_init_machine_status,
6525 nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
6526 strict_aligned_p field.
6527 (nds32_expand_to_rtl_hook): New function.
6528 (TARGET_EXPAND_TO_RTL_HOOK): Define.
6529 * config/nds32/nds32.h (machine_function): Add strict_aligned_p field.
6530
6531 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
6532 Chung-Ju Wu <jasonwucj@gmail.com>
6533
6534 * config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
6535 * config/nds32/nds32-n7.md: New file.
6536 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
6537 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
6538 pipeline.
6539 * config/nds32/nds32-protos.h: More declarations for n7 pipeline.
6540 * config/nds32/nds32.md (pipeline_model): Add n7.
6541 * config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
6542 * config/nds32/pipelines.md: Include n7 settings.
6543
6544 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
6545 Chung-Ju Wu <jasonwucj@gmail.com>
6546
6547 * config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
6548 * config/nds32/nds32-e8.md: New file.
6549 * config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
6550 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
6551 pipeline.
6552 * config/nds32/nds32-protos.h: More declarations for e8 pipeline.
6553 * config/nds32/nds32.md (pipeline_model): Add e8.
6554 * config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
6555 * config/nds32/pipelines.md: Include e8 settings.
6556
6557 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
6558 Chung-Ju Wu <jasonwucj@gmail.com>
6559
6560 * config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
6561 * config/nds32/nds32-n8.md: New file.
6562 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
6563 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
6564 pipeline.
6565 * config/nds32/nds32-protos.h: More declarations for n8 pipeline.
6566 * config/nds32/nds32-utils.c: More implementations for n8 pipeline.
6567 * config/nds32/nds32.md (pipeline_model): Add n8.
6568 * config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
6569 * config/nds32/pipelines.md: Include n8 settings.
6570
6571 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
6572 Chung-Ju Wu <jasonwucj@gmail.com>
6573
6574 * config.gcc (nds32*): Add nds32-utils.o into extra_objs.
6575 * config/nds32/nds32-n9-2r1w.md: New file.
6576 * config/nds32/nds32-n9-3r2w.md: New file.
6577 * config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
6578 nds32_register_ports): New or modify for cpu n9.
6579 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
6580 pipeline.
6581 * config/nds32/nds32-protos.h: More declarations for n9 pipeline.
6582 * config/nds32/nds32-utils.c: New file.
6583 * config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE,
6584 TARGET_MUL_SLOW): Define.
6585 * config/nds32/nds32.md (pipeline_model): New attribute.
6586 * config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
6587 New options that support cpu n9.
6588 * config/nds32/pipelines.md: Include n9 settings.
6589 * config/nds32/t-nds32 (nds32-utils.o): Add dependency.
6590
6591 2018-04-08 Chung-Ju Wu <jasonwucj@gmail.com>
6592
6593 * config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
6594 information if necessary.
6595 (output_cond_branch_compare_zero): Likewise.
6596 * config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
6597 (nds32_target_alignment): Refine for alignment.
6598 * config/nds32/nds32.h (NDS32_ALIGN_P): Define.
6599 (FUNCTION_BOUNDARY): Modify.
6600 * config/nds32/nds32.md (call_internal, call_value_internal): Consider
6601 align case.
6602 * config/nds32/nds32.opt (malways-align, malign-functions): New.
6603
6604 2018-04-08 Monk Chiang <sh.chiang04@gmail.com>
6605
6606 * config/nds32/constants.md (unspec_volatile_element): Add values for
6607 TLB operation and data prefetch.
6608 * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
6609 functions for TLB operation and data prefetch.
6610 * config/nds32/nds32-intrinsic.md: Likewise.
6611 * config/nds32/nds32_intrinsic.h: Likewise.
6612 * config/nds32/nds32.c (nds32_dpref_names): Likewise.
6613 (nds32_print_operand): Likewise.
6614 * config/nds32/nds32.h (nds32_builtins): Likewise.
6615
6616 2018-04-07 Thomas Koenig <tkoenig@gcc.gnu.org>
6617 Andrew Pinski <pinsika@gcc.gnu.org>
6618
6619 PR middle-end/82976
6620 * match.pd: Use constant_boolean_node of correct type instead of
6621 boolean_true_node or boolean_false_node for simplifying
6622 pointer comparisons to zero.
6623
6624 2018-04-07 Jakub Jelinek <jakub@redhat.com>
6625
6626 PR tree-optimization/80021
6627 * tree.c (verify_type_variant): Make error call in verify_variant_match
6628 translatable and remove final full stop.
6629
6630 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
6631
6632 * config/nds32/constants.md (unspec_volatile_element): Add
6633 UNSPEC_VOLATILE_EH_RETURN.
6634 * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
6635 nds32_output_stack_pop): Support dwarf exception handling process.
6636 * config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
6637 * config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
6638 exception handling process.
6639 (nds32_compute_stack_frame): Likewise.
6640 (nds32_return_addr_rtx): Likewise.
6641 (nds32_initial_elimination_offset): Likewise.
6642 (nds32_expand_prologue): Likewise.
6643 (nds32_expand_epilogue): Likewise.
6644 (nds32_dynamic_chain_address): New function.
6645 * config/nds32/nds32.h (machine_function): Add fields for dwarf
6646 exception handling.
6647 (DYNAMIC_CHAIN_ADDRESS): Define.
6648 (EH_RETURN_DATA_REGNO): Define.
6649 (EH_RETURN_STACKADJ_RTX): Define.
6650 * config/nds32/nds32.md (eh_return, nds32_eh_return): Implement
6651 patterns for dwarf exception handling.
6652
6653 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
6654
6655 * config/nds32/nds32.h: Clean up obsolete macros.
6656
6657 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
6658
6659 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
6660 Add enum values for particular instructions.
6661 * config/nds32/nds32-intrinsic.c: Implementation of expanding
6662 particular intrinsic functions.
6663 * config/nds32/nds32-intrinsic.md: Likewise.
6664 * config/nds32/nds32_intrinsic.h: Likewise.
6665 * config/nds32/nds32.h (nds32_builtins): Likewise.
6666 * config/nds32/nds32.md (type): Add pbsad and pbsada.
6667 (btst, ave): New patterns for particular instructions.
6668
6669 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
6670
6671 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
6672 Add enum values for atomic load/store and memory sync.
6673 * config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
6674 and memory sync.
6675 * config/nds32/nds32-intrinsic.md: Likewise.
6676 * config/nds32/nds32_intrinsic.h: Likewise.
6677 * config/nds32/nds32.h (nds32_builtins): Likewise.
6678
6679 2018-04-07 Jakub Jelinek <jakub@redhat.com>
6680
6681 PR tree-optimization/85257
6682 * fold-const.c (native_encode_vector): If not all elts could fit
6683 and off is -1, return 0 rather than offset.
6684 * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
6685 (offseti - offset2) / BITS_PER_UNIT as 4th argument to
6686 native_encode_expr. Verify len * BITS_PER_UNIT >= maxsizei. Don't
6687 adjust buffer in native_interpret_expr call.
6688
6689 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
6690
6691 * config/nds32/constants.md (unspec_volatile_element): Add cache
6692 control enum values.
6693 * config/nds32/nds32-intrinsic.c: Add cache control expand functions.
6694 * config/nds32/nds32-intrinsic.md: Add cache control patterns.
6695 * config/nds32/nds32.c (nds32_cctl_names): New.
6696 (nds32_print_operand): Handle cache control register names.
6697 * config/nds32/nds32.h (nds32_builtins): New enum values.
6698 * config/nds32/nds32_intrinsic.h: Add cache control enum types and
6699 macros.
6700 * config/nds32/nds32.md (type): Add mmu.
6701 * config/nds32/pipelines.md (simple_insn): Add mmu.
6702
6703 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
6704
6705 * config/nds32/nds32.md (type): Remove call.
6706 * config/nds32/pipelines.md (simple_insn): Likewise.
6707
6708 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
6709
6710 * config/nds32/constants.md (unspec_volatile_element): Add
6711 UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and
6712 UNSPEC_VOLATILE_FMFCFG.
6713 * config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
6714 description for fmfcfg and fmfcsr.
6715 (bdesc_1arg): Add fmtcsr.
6716 (bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
6717 (nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
6718 * config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd,
6719 unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
6720 unspec_fmfcfg): New patterns.
6721 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
6722 NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS,
6723 NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD.
6724 * config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
6725 __nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
6726 __nds32__fmfcfg): Define.
6727
6728 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
6729
6730 * config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
6731 intrinsic register names.
6732 * config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
6733 intrinsic register enum values and macros.
6734
6735 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
6736
6737 * config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
6738 for load/store addressing form.
6739 (nds32_print_operand_address): Likewise.
6740
6741 2018-04-06 Eric Botcazou <ebotcazou@adacore.com>
6742
6743 PR target/85196
6744 * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
6745 based on LABEL_REF. Remove useless assertion.
6746 (pic_address_needs_scratch): Fix formatting.
6747 (sparc_legitimize_pic_address): Minor tweaks.
6748 (sparc_delegitimize_address): Adjust assertion accordingly.
6749 * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
6750 into symbolic_operand.
6751 (movsi_high_pic_label_ref): Likewise.
6752 (movsi_lo_sum_pic_label_ref): Likewise.
6753 (movdi_pic_label_ref): Likewise.
6754 (movdi_high_pic_label_ref): Likewise.
6755 (movdi_lo_sum_pic_label_ref): Likewise.
6756
6757 2018-04-06 Amaan Cheval <amaan.cheval@gmail.com>
6758
6759 * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
6760 custom LIB_SPEC setup.
6761
6762 2018-04-06 Ruslan Bukin <br@bsdpad.com>
6763 Kito Cheng <kito.cheng@gmail.com>
6764
6765 * config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
6766 * config/riscv/freebsd.h: New.
6767
6768 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
6769
6770 * config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
6771 * config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
6772 file.
6773
6774 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
6775 Kito Cheng <kito.cheng@gmail.com>
6776
6777 * config/nds32/nds32-md-auxiliary.c (nds32_output_return,
6778 nds32_output_call, nds32_symbol_binds_local_p): New functions.
6779 * config/nds32/nds32-protos.h (nds32_output_call,
6780 nds32_output_return): Declare.
6781 * config/nds32/nds32.md: Refine all the call and return patterns.
6782
6783 2018-04-06 Jakub Jelinek <jakub@redhat.com>
6784
6785 PR debug/85252
6786 * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
6787 build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.
6788
6789 PR rtl-optimization/84872
6790 * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
6791 nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
6792 EDGE_CROSSING edge.
6793
6794 2018-04-06 Tamar Christina <tamar.christina@arm.com>
6795
6796 * expr.c (copy_blkmode_to_reg): Revert 254862.
6797 * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise.
6798
6799 2018-04-06 Richard Biener <rguenther@suse.de>
6800
6801 PR middle-end/85244
6802 * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
6803 after seeing a component reference with an adjacent field. Treat
6804 refs to arrays at struct end of external decls similar to
6805 refs to unconstrained commons.
6806
6807 2018-04-06 Jakub Jelinek <jakub@redhat.com>
6808
6809 PR sanitizer/85213
6810 * fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
6811 look through SAVE_EXPRs with non-side-effects argument. Adjust
6812 recursive calls.
6813 (fold_comparison): Adjust twoval_comparison_p caller, don't handle
6814 save_p here.
6815
6816 2018-04-06 Richard Biener <rguenther@suse.de>
6817
6818 PR middle-end/85180
6819 * alias.c (find_base_term): New wrapper around find_base_term
6820 unwinding CSELIB_VAL_PTR changes.
6821 (find_base_term): Do not restore CSELIB_VAL_PTR during the
6822 recursion.
6823
6824 2018-04-06 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
6825
6826 * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
6827 instructions.
6828 * config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
6829 constant definitions.
6830 ("nop"): lr 0,0 -> nopr r0
6831 ("nop_lr0", "nop_lr1"): New insn definitions.
6832
6833 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
6834
6835 * config/nds32/nds32.md (*stack_push, *stack_pop): Use
6836 NDS32_V3PUSH_AVAILABLE_P macro.
6837
6838 2018-04-06 Monk Chiang <sh.chiang04@gmail.com>
6839 Chung-Ju Wu <jasonwucj@gmail.com>
6840
6841 * config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
6842 (nds32*-*-*): Add float and fpu_config into supported_defaults.
6843 * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
6844 Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA.
6845 * config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN,
6846 UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS.
6847 * config/nds32/constraints.md: New constraints and checking for hard
6848 float configuration.
6849 * config/nds32/iterators.md: New mode iterator and attribute for hard
6850 float configuration.
6851 * config/nds32/nds32-doubleword.md: Use hard float alternatives and
6852 patterns.
6853 * config/nds32/nds32-fpu.md: New file.
6854 * config/nds32/nds32-md-auxiliary.c: New functions and checkings to
6855 deal with hard float code generation.
6856 * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
6857 ARCH_V3S.
6858 (abi_type, float_reg_number): New enum type.
6859 * config/nds32/nds32-predicates.c: New predicates for hard float.
6860 * config/nds32/nds32-protos.h: Declare functions for hard float.
6861 * config/nds32/nds32.c: Implementation for hard float configuration.
6862 * config/nds32/nds32.h: Definitions for hard float configuration.
6863 * config/nds32/nds32.md: Include hard float machine description and
6864 modify patterns for hard float configuration.
6865 * config/nds32/nds32.opt: New options for hard float configuration.
6866 * config/nds32/predicates.md: New predicates for hard float
6867 configuration.
6868
6869 2018-04-06 Kuan-Lin Chen <kuanlinchentw@gmail.com>
6870
6871 * common/config/nds32/nds32-common.c
6872 (nds32_option_optimization_table): Enable -mreleax-hint by default.
6873
6874 2018-04-05 Jakub Jelinek <jakub@redhat.com>
6875
6876 PR middle-end/85195
6877 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
6878 CONSTRUCTOR_ELT (ctor, ...)->value.
6879
6880 2018-04-05 Uros Bizjak <ubizjak@gmail.com>
6881
6882 PR target/85193
6883 * config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
6884
6885 2018-04-05 Tom de Vries <tom@codesourcery.com>
6886
6887 PR target/85204
6888 * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
6889 cond jump.
6890
6891 2018-04-05 Shiva Chen <shiva0217@gmail.com>
6892 Kito Cheng <kito.cheng@gmail.com>
6893
6894 * config/nds32/constraints.md (U33): Fine-tune checking condition.
6895 * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
6896 * config/nds32/nds32.h (nds32_16bit_address_type): Add
6897 ADDRESS_POST_MODIFY_LO_REG_IMM3U.
6898
6899 2018-04-05 Shiva Chen <shiva0217@gmail.com>
6900 Kito Cheng <kito.cheng@gmail.com>
6901
6902 * config/nds32/constraints.md (Ufe): New memory constraint.
6903 * config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
6904 nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
6905 * config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
6906 operands.
6907 * config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
6908 * config/nds32/nds32.md (*mov<mode>): Adjust pattern.
6909
6910 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
6911
6912 * config/nds32/nds32.md: Use optimize_size in the condition for
6913 alu-shift instructions.
6914
6915 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
6916
6917 * config/nds32/nds32.md (divsi4, udivsi4): New patterns.
6918
6919 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
6920
6921 * config/nds32/nds32.md (negsi2): Refine pattern.
6922
6923 2018-04-05 Kito Cheng <kito.cheng@gmail.com>
6924 Chung-Ju Wu <jasonwucj@gmail.com>
6925
6926 * config/nds32/iterators.md (shift_rotate): New code iterator.
6927 (shift): New code attribute.
6928 * config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
6929 * config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
6930 * config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
6931 * config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for
6932 bit-wise operations.
6933 (andsi3, *andsi3): Ditto.
6934 (iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
6935 (xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
6936 (<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
6937 * config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand,
6938 nds32_ior_operand, nds32_xor_operand): New predicates.
6939
6940 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
6941
6942 * config/nds32/nds32.md (add<mode>3, sub<mode>3): Rename to ...
6943 (addsi3, subsi3): ... this.
6944
6945 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
6946
6947 * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator.
6948
6949 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
6950
6951 * config/nds32/nds32.md: Adjust indention.
6952
6953 2018-04-05 Kito Cheng <kito.cheng@gmail.com>
6954
6955 * config/nds32/nds32.md (feature): New attribute.
6956
6957 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
6958
6959 * config/nds32/nds32.md (subtype): New attribute.
6960
6961 2018-04-04 Thomas Preud'homme <thomas.preudhomme@arm.com>
6962
6963 PR target/85203
6964 * config/arm/arm-builtins.c (arm_expand_builtin): Change
6965 expansion to perform a bitwise AND of the argument followed by a
6966 boolean negation of the result.
6967
6968 2018-04-04 Peter Bergner <bergner@vnet.ibm.com>
6969
6970 PR rtl-optimization/84878
6971 * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
6972 the basic block. Assert the use reference is not artificial and that
6973 it has an associated insn.
6974
6975 2018-04-04 Michael Matz <matz@suse.de>
6976
6977 * builtins.c (compute_objsize): Pass correct operand
6978 to array_at_struct_end_p.
6979
6980 2018-04-04 Richard Biener <rguenther@suse.de>
6981
6982 PR lto/85176
6983 * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces
6984 from contexts for DINFO_LEVEL_TERSE and below.
6985
6986 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
6987
6988 * config/nds32/nds32-doubleword.md (move_<mode>): Require
6989 resiter_operand condition.
6990 * config/nds32/nds32.md (*move<mode>): Ditto.
6991
6992 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
6993 Monk Chiang <sh.chiang04@gmail.com>
6994
6995 * config/nds32/nds32.md (movmisalign<mode>): New pattern.
6996
6997 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
6998
6999 * config/nds32/nds32.md (movqi, movhi): Merge into mov<mode>.
7000
7001 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
7002 Kito Cheng <kito.cheng@gmail.com>
7003
7004 * config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code,
7005 nds32_cond_code_str, output_cond_branch,
7006 output_cond_branch_compare_zero, nds32_expand_cbranch,
7007 nds32_expand_cstore, nds32_expand_movcc,
7008 nds32_output_cbranchsi4_equality_zero,
7009 nds32_output_cbranchsi4_equality_reg,
7010 nds32_output_cbranchsi4_equality_reg_or_const_int,
7011 nds32_output_cbranchsi4_greater_less_zero: New functions.
7012 * config/nds32/nds32-protos.h (nds32_expand_cbranch,
7013 nds32_expand_cstore, nds32_expand_movcc,
7014 nds32_output_cbranchsi4_equality_zero,
7015 nds32_output_cbranchsi4_equality_reg,
7016 nds32_output_cbranchsi4_equality_reg_or_const_int,
7017 nds32_output_cbranchsi4_greater_less_zero): Declare.
7018 * config/nds32/predicates.md (nds32_movecc_comparison_operator,
7019 nds32_rimm11s_operand): New predicates.
7020 * config/nds32/nds32.h (nds32_expand_result_type): New enum type.
7021 * config/nds32/nds32.md: Rewrite all the branch and conditional move
7022 patterns.
7023
7024 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
7025
7026 * config/nds32/nds32-doubleword.md: Refine all the instruction type.
7027 * config/nds32/nds32.md: Ditto.
7028 * config/nds32/pipelines.md: Ditto.
7029
7030 2018-04-04 Richard Biener <rguenther@suse.de>
7031
7032 PR tree-optimization/85168
7033 * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
7034 propagating abnormals.
7035
7036 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
7037
7038 * config/nds32/nds32.md (enabled): Use yes/no for this attribute.
7039
7040 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
7041 Kito Cheng <kito.cheng@gmail.com>
7042
7043 * config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function.
7044 * config/nds32/nds32-protos.h (nds32_long_call_p): Declare.
7045 * config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function.
7046 (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
7047 * config/nds32/nds32.md (sibcall_internal): New.
7048 (sibcall_register): Remove.
7049 (sibcall_immediate): Remove.
7050 (sibcall_value_internal): New.
7051 (sibcall_value_register): Remove.
7052 (sibcall_value_immediate): Remove.
7053 * config/nds32/predicates.md (nds32_general_register_operand): New.
7054 (nds32_call_address_operand): New.
7055
7056 2018-04-03 Jakub Jelinek <jakub@redhat.com>
7057
7058 PR rtl-optimization/85167
7059 * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
7060 bb_defs if *split_p, instead preinitialize it to NULL.
7061
7062 PR tree-optimization/85156
7063 * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
7064 evaluating the argument multiple times.
7065
7066 2018-04-03 Bill Schmidt <wschmidt@linux.ibm.com>
7067
7068 * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
7069 than vector.
7070 (_mm_cvtpd_ps): Likewise.
7071 (_mm_cvttpd_epi32): Likewise.
7072 * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
7073 * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
7074 vector, pixel, and bool following altivec.h include.
7075
7076 2018-04-03 Martin Sebor <msebor@redhat.com>
7077
7078 * doc/extend.texi (Common Function Attributes): Clarify.
7079 (const attribute): Likewise.
7080 (pure attribute): Likewise.
7081
7082 2018-04-03 Jakub Jelinek <jakub@redhat.com>
7083
7084 PR target/85169
7085 * config/i386/i386.c (ix86_expand_vector_set): Use
7086 HOST_WIDE_INT_1U << elt instead of 1 << elt. Formatting fix.
7087
7088 2018-04-03 Uros Bizjak <ubizjak@gmail.com>
7089
7090 * config/i386/i386.c (emit_i387_cw_initialization): Always use logic
7091 instructions when changing rounding bits to preserve precision bits
7092 in the x87 control word.
7093
7094 2018-04-03 Martin Liska <mliska@suse.cz>
7095
7096 PR tree-optimization/82491
7097 * rtl.h (strip_offset_and_add): Replace += suboffset with
7098 poly_uint64 () + suboffset.
7099
7100 2018-03-29 Martin Liska <mliska@suse.cz>
7101 Martin Jambor <mjambor@suse.cz>
7102
7103 PR ipa/84947
7104 * ipa-cp.c (propagate_bits_across_jump_function): Bail out if
7105 param_type is not an integral or pointer type.
7106
7107 2018-04-03 Richard Biener <rguenther@suse.de>
7108
7109 * sese.h (recompute_all_dominators): Remove.
7110
7111 2018-04-02 Martin Sebor <msebor@redhat.com>
7112
7113 * doc/invoke.texi (-Wrestrict): Fix typos.
7114
7115 2018-04-02 Jim Wilson <jimw@sifive.com>
7116
7117 * config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero.
7118 * config/riscv/riscv.md (<optab>si3): Use QImode shift count.
7119 (<optab>di3, <optab>si3_extend): Likewise.
7120 (<optab>si3_mask, <optab>si3_mask_1): New.
7121 (<optab>di3_mask, <optab>di3_mask_1): New.
7122 (<optab>si3_extend_mask, <optab>si3_extend_mask_1): New.
7123 (lshrsi3_zero_extend_1): Use VOIDmode shift count.
7124 * config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count.
7125
7126 2018-04-02 Gerald Pfeifer <gerald@pfeifer.com>
7127
7128 * doc/cpp.texi (Variadic Macros): Fix line continuation in an
7129 example.
7130
7131 2018-04-02 Chung-Ju Wu <jasonwucj@gmail.com>
7132
7133 * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define.
7134 (nds32_canonicalize_comparison): New function.
7135
7136 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
7137 Kito Cheng <kito.cheng@gmail.com>
7138 Kuan-Lin Chen <kuanlinchentw@gmail.com>
7139
7140 * config.gcc (nds32): Add nds32-relax-opt.o into extra_objs.
7141 * config/nds32/constants.md (unspec_volatile_element): Add
7142 UNSPEC_VOLATILE_RELAX_GROUP.
7143 * config/nds32/nds32-relax-opt.c: New file.
7144 * config/nds32/nds32-predicates.c
7145 (nds32_symbol_load_store_p): New function.
7146 * config/nds32/nds32-protos.h
7147 (nds32_symbol_load_store_p): Declare function.
7148 (make_pass_nds32_relax_opt): Declare new rtl pass function.
7149 * config/nds32/nds32.c
7150 (nds32_register_pass): New function to register pass.
7151 (nds32_register_passes): New function to register passes.
7152 * config/nds32/nds32.md (relax_group): New pattern.
7153 * config/nds32/nds32.opt (mrelax-hint): New option.
7154 * config/nds32/t-nds32 (nds32-relax-opt.o): New dependency.
7155
7156 2018-04-01 Kito Cheng <kito.cheng@gmail.com>
7157
7158 * config/nds32/t-nds32: Modify files dependency.
7159
7160 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
7161
7162 * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character.
7163 (PROFILE_HOOK): Define its implementation.
7164
7165 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
7166
7167 * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int
7168 type and 32-bit size.
7169
7170 2018-04-01 Jakub Jelinek <jakub@redhat.com>
7171
7172 PR middle-end/85090
7173 * config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F.
7174 (V_128_256): New mode iterator.
7175 (*avx512dq_vextract<shuffletype>64x2_1 splitter): New define_split.
7176 (*avx512f_vextract<shuffletype>32x4_1 splitter): Likewise.
7177 (xop_pcmov_<mode><avxsizesuffix>): Use V_128_256 mode iterator instead
7178 of V.
7179 * config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and
7180 V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F.
7181
7182 2018-03-31 Segher Boessenkool <segher@kernel.crashing.org>
7183
7184 PR target/83315
7185 * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet)
7186 NaN inputs correctly.
7187
7188 2018-03-30 Peter Bergner <bergner@vnet.ibm.com>
7189
7190 PR target/80546
7191 * config/rs6000/vsx.md (??r): New mode attribute.
7192 (*vsx_mov<mode>_64bit): Use it.
7193 (*vsx_mov<mode>_32bit): Likewise.
7194
7195 2018-03-30 Martin Sebor <msebor@redhat.com>
7196
7197 PR tree-optimization/84818
7198 * builtins.c (check_access): Use warning_n.
7199
7200 2018-03-30 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
7201
7202 PR target/83822
7203 * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
7204 condition.
7205 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
7206 condition.
7207
7208 2018-03-30 Julia Koval <julia.koval@intel.com>
7209
7210 PR target/84413
7211 * x86-tune.def (movx, partial_reg_dependency): Enable for
7212 m_SKYLAKE_AVX512.
7213
7214 2018-03-29 Vladimir Makarov <vmakarov@redhat.com>
7215
7216 PR inline-asm/84985
7217 * lra-constraints.c (process_alt_operands): Move setting
7218 this_alternative_matches below.
7219
7220 2018-03-29 Martin Liska <mliska@suse.cz>
7221
7222 PR lto/84995.
7223 * doc/invoke.texi: Document how LTO works with debug info.
7224 Describe auto-load support of binutils. Mention 'x86-64'
7225 as valid option value of -march option.
7226
7227 2018-03-29 Jakub Jelinek <jakub@redhat.com>
7228
7229 * config/i386/sse.md (<avx512>_blendm<mode>): Use <sseintprefix>.
7230
7231 PR c/85094
7232 * fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
7233 For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe
7234 OEP_NO_HASH_CHECK for recursive call, to avoid exponential
7235 checking.
7236
7237 2018-03-28 Peter Bergner <bergner@vnet.ibm.com>
7238
7239 PR target/84912
7240 * config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define.
7241 (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64.
7242 * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support
7243 for RS6000_BTM_POWERPC64.
7244 (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
7245 (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
7246 * config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro
7247 definition.
7248 (DIVDE): Use it.
7249 (DIVDEU): Likewise.
7250
7251 2018-03-28 Carl Love <cel@us.ibm.com>
7252
7253 Revert
7254 2017-09-27 Carl Love <cel@us.ibm.com>
7255
7256 * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
7257 (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
7258 * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
7259 fctiw instruction.
7260
7261 2018-03-28 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
7262
7263 * config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
7264 instead of __vector bool.
7265 (_mm_max_pu8): Likewise.
7266 (_mm_min_pi16): Likewise.
7267
7268 2018-03-28 Peter Bergner <bergner@vnet.ibm.com>
7269
7270 PR target/84912
7271 * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
7272 (DIVWEUO): Likewise.
7273 (DIVDEO): Likewise.
7274 (DIVDEUO): Likewise.
7275 * config/rs6000/rs6000.c (builtin_function_type): Remove support for
7276 DIVWEUO and DIVDEUO.
7277 * config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
7278 (UNSPEC_DIV_EXTEND): Remove deleted unspecs.
7279 (div_extend): Likewise.
7280 * doc/extend.texi (__builtin_divweo): Remove documentation for deleted
7281 builtin function.
7282 (__builtin_divweuo): Likewise.
7283 (__builtin_divdeo): Likewise.
7284 (__builtin_divdeuo): Likewise.
7285
7286 2018-03-28 Jakub Jelinek <jakub@redhat.com>
7287
7288 PR target/85095
7289 * config/i386/i386.md (*add<mode>3_carry_0, *addsi3_carry_zext_0,
7290 *sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
7291
7292 PR tree-optimization/82004
7293 * gimple-match-head.c (optimize_pow_to_exp): New function.
7294 * match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
7295 Don't fold to exp if optimize_pow_to_exp is false.
7296
7297 2018-03-28 Martin Liska <mliska@suse.cz>
7298
7299 PR other/84819
7300 * calls.c (initialize_argument_information): Fix trailing space.
7301 * common.opt: Fix typo and provide better explanation for
7302 -fsanitize-coverage option.
7303 * config/i386/i386.opt: Fix typo.
7304
7305 2018-03-28 Jakub Jelinek <jakub@redhat.com>
7306 Martin Liska <mliska@suse.cz>
7307
7308 PR sanitizer/85081
7309 * gimplify.c (asan_poison_variable): Don't do the check for
7310 gimplify_omp_ctxp here.
7311 (gimplify_decl_expr): Do it here.
7312 (gimplify_target_expr): Likewise.
7313
7314 2018-03-28 Martin Liska <mliska@suse.cz>
7315
7316 PR target/84988
7317 * config/i386/i386.c (ix86_function_arg_advance): Do not call
7318 chkp_type_bounds_count if MPX is not enabled.
7319
7320 2018-03-27 Chung-Ju Wu <jasonwucj@gmail.com>
7321
7322 * config/nds32/nds32.h (BRANCH_COST): Adjust cost.
7323
7324 2018-03-27 Michael Meissner <meissner@linux.vnet.ibm.com>
7325
7326 PR target/84914
7327 * config/rs6000/rs6000.c (create_complex_muldiv): New helper
7328 function to create the function decl for complex long double
7329 multiply and divide for -mabi=ieeelongdouble.
7330 (init_float128_ieee): Call it.
7331
7332 2018-03-27 H.J. Lu <hongjiu.lu@intel.com>
7333
7334 PR target/85044
7335 * config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for
7336 -fcf-protection=branch -mibt.
7337 * config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes.
7338
7339 2018-03-27 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
7340
7341 PR target/81863
7342 * config/arm/arm.c (arm_valid_symbolic_address): Handle
7343 arm_word_relocations.
7344
7345 2018-03-27 Cesar Philippidis <cesar@codesourcery.com>
7346
7347 PR target/85056
7348 * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
7349 extern array declarations.
7350
7351 2018-03-27 Richard Biener <rguenther@suse.de>
7352
7353 PR middle-end/84067
7354 * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with
7355 explicit single_use checks.
7356
7357 2018-03-27 Richard Biener <rguenther@suse.de>
7358
7359 PR tree-optimization/85082
7360 * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces):
7361 Valueize the VUSE.
7362
7363 2018-03-27 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
7364
7365 * config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES
7366 * common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]):
7367 Turn on fasynchronous-unwind-tables and funwind-tables.
7368
7369 2018-03-26 Uros Bizjak <ubizjak@gmail.com>
7370
7371 PR target/85073
7372 * config/i386/i386.md (*bmi_blsr_<mode>_cmp): New insn pattern.
7373 (*bmi_blsr_<mode>_ccz): Ditto.
7374
7375 2018-03-26 Tom de Vries <tom@codesourcery.com>
7376
7377 PR tree-optimization/85063
7378 * omp-general.c (offloading_function_p): New function. Factor out
7379 of ...
7380 * omp-offload.c (pass_omp_target_link::gate): ... here.
7381 * omp-general.h (offloading_function_p): Declare.
7382 * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable
7383 with attribute omp declare target for offloading functions.
7384
7385 2018-03-24 Richard Sandiford <richard.sandiford@linaro.org>
7386
7387 PR tree-optimization/84005
7388 * tree-data-ref.h (get_base_for_alignment): Declare.
7389 * tree-data-ref.c (get_base_for_alignment_1): New function.
7390 (get_base_for_alignment): Likewise.
7391 * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
7392 get_base_for_alignment to find a suitable base object, instead
7393 of always using drb->base_address.
7394
7395 2018-03-23 Jakub Jelinek <jakub@redhat.com>
7396
7397 PR inline-asm/85022
7398 * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
7399 known size by default.
7400
7401 2018-03-23 Vladimir Makarov <vmakarov@redhat.com>
7402
7403 PR inline-asm/85030
7404 * lra-constraints.c (process_alt_operands): Don't match BLKmode
7405 and non BLKmode operands.
7406
7407 2018-03-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7408
7409 PR target/85026
7410 * config/arm/arm.md (unaligned_loadhis): Remove first alternative.
7411 Clean up attributes.
7412
7413 2018-03-23 Richard Biener <rguenther@suse.de>
7414
7415 PR debug/85020
7416 * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
7417 we are going to emit early debug for LTO.
7418
7419 2018-03-23 Jakub Jelinek <jakub@redhat.com>
7420
7421 PR inline-asm/85034
7422 * function.c (match_asm_constraints_1): Don't optimize if input
7423 doesn't satisfy general_operand predicate for output's mode.
7424
7425 PR inline-asm/85022
7426 * alias.c (write_dependence_p): Don't require for x_canonicalized
7427 non-VOIDmode if x has VOIDmode.
7428
7429 PR sanitizer/85029
7430 * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
7431 just don't try to optimize it rather than assert it never happens.
7432
7433 2018-03-22 Kelvin Nilsen <kelvin@gcc.gnu.org>
7434
7435 * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
7436 macro expansions for definition of ST_INTERNAL_<mode> and
7437 LD_INTERNAL_<mode> builtins.
7438 * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
7439 Remove prototype.
7440 * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
7441 function.
7442 (altivec_expand_st_builtin): Likewise.
7443 (altivec_expand_builtin): Remove calls to deleted functions.
7444 (rs6000_address_for_altivec): Delete this function.
7445 * config/rs6000/vector.md: Remove expands for
7446 vector_altivec_load_<mode> and vector_altivec_store_<mode>.
7447
7448 2018-03-22 Sudakshina Das <sudi.das@arm.com>
7449
7450 PR target/84826
7451 * config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
7452 * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
7453 re-computing once computed.
7454 (arm_expand_prologue): Compute machine->static_chain_stack_bytes.
7455 (arm_init_machine_status): Initialize
7456 machine->static_chain_stack_bytes.
7457
7458 2018-03-22 Kelvin Nilsen <kelvin@gcc.gnu.org>
7459
7460 PR target/84760
7461 * doc/extend.texi: Add four new prototypes for vec_ld.
7462 * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
7463 definitions for more logical presentation.
7464 * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
7465 entries for V1TI variants of __builtin_altivec_ld builtin.
7466 * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
7467 handling of V1TI variant of LVX icode pattern.
7468 (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
7469 (rs6000_gimple_fold_builtin): Likewise.
7470 (altivec_init_builtins): Add code to define
7471 __builtin_altivec_lvx_v1ti function.
7472
7473 2018-03-22 Jakub Jelinek <jakub@redhat.com>
7474
7475 PR inline-asm/84941
7476 * function.c (match_asm_constraints_1): Don't do the optimization
7477 if input isn't a REG, SUBREG, MEM or constant.
7478
7479 2018-03-22 Tom de Vries <tom@codesourcery.com>
7480
7481 PR tree-optimization/84956
7482 * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
7483 bb_has_abnormal_pred.
7484
7485 2018-03-22 Jakub Jelinek <jakub@redhat.com>
7486
7487 PR sanitizer/85018
7488 * dwarf2asm.c (dw2_output_indirect_constant_1): Set
7489 DECL_INITIAL (decl) to decl at the end.
7490 * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
7491 adjust the comment.
7492
7493 2018-03-21 Joseph Myers <joseph@codesourcery.com>
7494
7495 * doc/extend.texi (__builtin_tgmath): Document when complex
7496 integer types are treated as _Complex _Float64.
7497
7498 2018-03-21 Tom de Vries <tom@codesourcery.com>
7499
7500 * doc/extend.texi (__builtin_extend_pointer): Remove pasto.
7501
7502 2018-03-21 Jakub Jelinek <jakub@redhat.com>
7503
7504 PR tree-optimization/84960
7505 * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
7506 if it is ENTRY block, move them into single succ of ENTRY in that case.
7507
7508 2018-03-21 Richard Sandiford <richard.sandiford@linaro.org>
7509
7510 PR tree-optimization/84811
7511 * poly-int.h (poly_span_traits): Remove the T3 parameter and
7512 promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
7513 (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
7514 (known_subrange_p): Update accordingly. Cast each value involved
7515 in the size comparison, rather than casting the result of the
7516 subtraction.
7517
7518 2018-03-21 Jakub Jelinek <jakub@redhat.com>
7519
7520 PR tree-optimization/84982
7521 * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
7522 by flipping the least significant bit rather than all bits from
7523 bitpos to bitpos + bitsize - 1.
7524
7525 2018-03-21 Nathan Sidwell <nathan@acm.org>
7526
7527 * doc/extend.texi (Deprecated Features): Remove mention of
7528 long-deleted deprecations.
7529
7530 2018-03-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
7531
7532 PR jit/84288
7533 * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
7534 * configure: Regenerate.
7535
7536 2018-03-21 Tom de Vries <tom@codesourcery.com>
7537
7538 PR tree-optimization/83126
7539 * tree-parloops.c (num_phis): New function.
7540 (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
7541
7542 2018-03-21 Nathan Sidwell <nathan@acm.org>
7543
7544 * doc/extend.texi (Deprecated Features): Update deprecated flags,
7545 mention anon-struct/union members and trailing attributes.
7546
7547 2018-03-21 Bin Cheng <bin.cheng@arm.com>
7548
7549 PR tree-optimization/84969
7550 * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
7551 builtin memset partitions if they set different rhs values.
7552
7553 2018-03-21 Jakub Jelinek <jakub@redhat.com>
7554
7555 PR rtl-optimization/84989
7556 * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
7557 VEC_DUPLICATE with scalar result mode.
7558
7559 2018-03-21 Martin Liska <mliska@suse.cz>
7560
7561 PR ipa/84963
7562 * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
7563 not intended return statement.
7564
7565 2018-03-21 Martin Liska <mliska@suse.cz>
7566
7567 PR target/84988
7568 * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
7569 (chkp_find_bound_slots_1): Limit number of iterations.
7570
7571 2018-03-20 David H. Gutteridge <dhgutteridge@sympatico.ca>
7572
7573 PR target/84838
7574 * Minor grammar fixes for x86 options.
7575
7576 2018-03-20 Jakub Jelinek <jakub@redhat.com>
7577
7578 PR debug/84875
7579 * dce.c (delete_unmarked_insns): Don't remove frame related noop moves
7580 holding REG_CFA_RESTORE notes, instead turn them into a USE.
7581
7582 2018-03-20 Peter Bergner <bergner@vnet.ibm.com>
7583
7584 PR target/83789
7585 * config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
7586 (altivec_lvx_<mode>_1op): Likewise.
7587 (altivec_stvx_<mode>_2op): Likewise.
7588 (altivec_stvx_<mode>_1op): Likewise.
7589 (altivec_lvx_<VM2:mode>): New define_expand.
7590 (altivec_stvx_<VM2:mode>): Likewise.
7591 (altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
7592 (altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
7593 (altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
7594 (altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
7595 * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
7596 (rs6000_gen_lvx): Likewise.
7597 * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
7598 (altivec_expand_stv_builtin): Likewise.
7599 (altivec_expand_builtin): Likewise.
7600 * config/rs6000/vector.md: Likewise.
7601
7602 2018-03-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7603
7604 PR target/82518
7605 * config/arm/arm.c (arm_array_mode_supported_p): Return false for
7606 BYTES_BIG_ENDIAN.
7607
7608 2018-03-20 Richard Biener <rguenther@suse.de>
7609
7610 PR target/84986
7611 * config/i386/i386.c (ix86_add_stmt_cost): Only cost
7612 sign-conversions as zero, fall back to standard scalar_stmt
7613 cost for the rest.
7614
7615 2018-03-20 Martin Liska <mliska@suse.cz>
7616
7617 PR ipa/84825
7618 * predict.c (rebuild_frequencies): Handle case when we have
7619 PROFILE_ABSENT, but flag_guess_branch_prob is false.
7620
7621 2018-03-20 Jakub Jelinek <jakub@redhat.com>
7622
7623 PR target/84990
7624 * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
7625 flag_section_anchors.
7626 * varasm.c (use_blocks_for_decl_p): Remove hack for
7627 dw2_force_const_mem.
7628
7629 PR target/84845
7630 * config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
7631 to ...
7632 (*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this. If pseudos can't
7633 be created, use lowpart_subreg of operands[0] rather than operands[0]
7634 itself.
7635 (*aarch64_reg_<mode>3_minus_mask): Rename to ...
7636 (*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
7637 (*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
7638 and n constraint instead of aarch64_shift_imm_di and Usd.
7639 (*aarch64_reg_<optab>_minus<mode>3): Rename to ...
7640 (*aarch64_<optab>_reg_minus<mode>3): ... this.
7641
7642 2018-03-20 Sudakshina Das <sudi.das@arm.com>
7643
7644 PR target/82989
7645 * config/arm/neon.md (ashldi3_neon): Update ?s for constraints
7646 to favor GPR over NEON registers.
7647 (<shift>di3_neon): Likewise.
7648
7649 2018-03-20 Tom de Vries <tom@codesourcery.com>
7650
7651 PR target/84952
7652 * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
7653 (nvptx_process_pars): Emit bar.sync asap and alap.
7654
7655 2018-03-20 Tom de Vries <tom@codesourcery.com>
7656
7657 PR target/84954
7658 * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
7659 seen_label if seen_label is already set.
7660
7661 2018-03-20 Jakub Jelinek <jakub@redhat.com>
7662
7663 PR target/84945
7664 * config/i386/i386.c (fold_builtin_cpu): For features above 31
7665 use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
7666 Use 1U instead of 1. Formatting fixes.
7667
7668 PR c/84953
7669 * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
7670 instead of TREE_TYPE (s1) for the return value.
7671
7672 2018-03-19 Jakub Jelinek <jakub@redhat.com>
7673
7674 PR tree-optimization/84946
7675 * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
7676 bitsize + bitsize in poly_uint64 rather than poly_int64.
7677
7678 PR sanitizer/78651
7679 * dwarf2asm.c: Include fold-const.c.
7680 (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
7681 of decl rather than decl itself.
7682
7683 PR rtl-optimization/84643
7684 * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
7685
7686 2018-03-19 Maxim Ostapenko <m.ostapenko@samsung.com>
7687
7688 PR sanitizer/78651
7689 * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
7690 calling assemble_variable.
7691
7692 2018-03-19 Sudakshina Das <sudi.das@arm.com>
7693
7694 PR target/81647
7695 * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Modify
7696 instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
7697
7698 2018-03-19 Jim Wilson <jimw@sifive.com>
7699
7700 PR bootstrap/84856
7701 * config/riscv/riscv.c (riscv_function_arg_boundary): Use
7702 PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY.
7703 (riscv_first_stack_step): Likewise.
7704 (riscv_option_override): Use STACK_BOUNDARY instead of
7705 MIN_STACK_BOUNDARY.
7706 * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
7707 MIN_STACK_BOUNDARY.
7708 (BIGGEST_ALIGNMENT): Set to 128.
7709 (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY.
7710 (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of
7711 STACK_BOUNDARY.
7712
7713 2018-03-19 Richard Biener <rguenther@suse.de>
7714
7715 PR tree-optimization/84933
7716 * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
7717 values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
7718
7719 2018-03-19 Richard Biener <rguenther@suse.de>
7720
7721 PR tree-optimization/84859
7722 * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
7723 (cond_if_else_store_replacement): Perform sinking operation on
7724 single-store BBs regardless of MAX_STORES_TO_SINK setting.
7725 Generalize what a BB with a single eligible store is.
7726
7727 2018-03-19 Richard Biener <rguenther@suse.de>
7728
7729 PR tree-optimization/84929
7730 * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
7731 chrec_is_positive against non-chrec arg.
7732
7733 2018-03-19 Tamar Christina <tamar.christina@arm.com>
7734
7735 PR target/84711
7736 * config/arm/arm.c (arm_can_change_mode_class): revert r258554.
7737
7738 2018-03-18 Martin Liska <mliska@suse.cz>
7739
7740 PR rtl-optimization/84635
7741 * regrename.c (build_def_use): Use matches_mode only when
7742 matches >= 0.
7743
7744 2018-03-18 Richard Sandiford <richard.sandiford@linaro.org>
7745
7746 PR tree-optimization/84913
7747 * tree-vect-loop.c (vectorizable_reduction): Don't try to
7748 vectorize chains of COND_EXPRs.
7749
7750 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
7751
7752 * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
7753
7754 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
7755
7756 * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
7757
7758 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
7759
7760 * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
7761
7762 2018-03-17 Chung-Ju Wu <jasonwucj@gmail.com>
7763 Kito Cheng <kito.cheng@gmail.com>
7764
7765 * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
7766 * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
7767 (nds32_adjust_reg_alloc_order): New function.
7768 * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
7769
7770 2018-03-17 Kito Cheng <kito.cheng@gmail.com>
7771
7772 * config/nds32/nds32.c (nds32_asm_output_mi_thunk,
7773 nds32_print_operand, nds32_print_operand_address): Use
7774 HOST_WIDE_INT_PRINT_DEC instead.
7775
7776 2018-03-17 Chung-Ju Wu <jasonwucj@gmail.com>
7777
7778 * config/nds32/nds32.c (nds32_register_priority): Modify cost.
7779
7780 2018-03-17 Jakub Jelinek <jakub@redhat.com>
7781
7782 PR target/84902
7783 * config/i386/i386.c (initial_ix86_tune_features,
7784 initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
7785 unsigned long long.
7786 (set_ix86_tune_features): Change ix86_tune_mask from unsigned int
7787 to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
7788 rather than 1u << ix86_tune. Formatting fix.
7789 (ix86_option_override_internal): Change ix86_arch_mask from
7790 unsigned int to unsigned HOST_WIDE_INT, initialize to
7791 HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
7792 (ix86_function_specific_restore): Likewise.
7793
7794 2018-03-16 Jakub Jelinek <jakub@redhat.com>
7795
7796 PR target/84899
7797 * postreload.c (reload_combine_recognize_pattern): Perform
7798 INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
7799 truncate_int_for_mode the result for the destination's mode.
7800
7801 PR c/84909
7802 * hsa-gen.c (mem_type_for_type): Fix comment typo.
7803 * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
7804 Likewise.
7805 * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
7806 Likewise.
7807
7808 2018-03-16 Vladimir Makarov <vmakarov@redhat.com>
7809
7810 PR target/84876
7811 * lra-assigns.c (lra_split_hard_reg_for): Don't use
7812 regno_allocno_class_array and sorted_pseudos.
7813 * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
7814 insns where regno is used.
7815
7816 2018-03-16 Martin Liska <mliska@suse.cz>
7817
7818 PR ipa/84833
7819 * multiple_target.c (create_dispatcher_calls): Redirect
7820 reference in the symbol table.
7821
7822 2018-03-16 Martin Liska <mliska@suse.cz>
7823
7824 PR ipa/84722
7825 * multiple_target.c (create_dispatcher_calls): Redirect also
7826 an alias.
7827
7828 2018-03-16 Jakub Jelinek <jakub@redhat.com>
7829
7830 PR c++/79937
7831 PR c++/82410
7832 * tree.h (TARGET_EXPR_NO_ELIDE): Define.
7833 * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
7834 TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
7835
7836 2018-03-16 Julia Koval <julia.koval@intel.com>
7837
7838 * doc/invoke.texi (Skylake Server): Add CLWB.
7839 Cannonlake): Remove CLWB.
7840
7841 2018-03-16 Jakub Jelinek <jakub@redhat.com>
7842
7843 PR tree-optimization/84841
7844 * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
7845 1 << 3.
7846 (FLOAT_ONE_CONST_TYPE): Define.
7847 (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
7848 (sort_by_operand_rank): Put entries with higher constant_type last
7849 rather than first to match comments.
7850
7851 2018-03-15 Sandra Loosemore <sandra@codesourcery.com>
7852
7853 * config/nios2/nios2.md (movsi_internal): Fix thinko in
7854 split predicate.
7855
7856 2018-03-15 Jakub Jelinek <jakub@redhat.com>
7857
7858 PR c++/79085
7859 * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
7860 check and use address of target always.
7861
7862 2018-03-15 H.J. Lu <hongjiu.lu@intel.com>
7863
7864 PR target/84574
7865 * config/i386/i386.c (indirect_thunk_needed): Update comments.
7866 (indirect_thunk_bnd_needed): Likewise.
7867 (indirect_thunks_used): Likewise.
7868 (indirect_thunks_bnd_used): Likewise.
7869 (indirect_return_needed): New.
7870 (indirect_return_bnd_needed): Likewise.
7871 (output_indirect_thunk_function): Add a bool argument for
7872 function return.
7873 (output_indirect_thunk_function): Don't generate alias for
7874 function return thunk.
7875 (ix86_code_end): Call output_indirect_thunk_function to generate
7876 function return thunks.
7877 (ix86_output_function_return): Set indirect_return_bnd_needed
7878 and indirect_return_needed instead of indirect_thunk_bnd_needed
7879 and indirect_thunk_needed.
7880
7881 2018-03-15 Olga Makhotina <olga.makhotina@intel.com>
7882
7883 * config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
7884 (__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
7885 (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
7886
7887 2018-03-15 David Malcolm <dmalcolm@redhat.com>
7888 Paul Hua <paul.hua.gm@gmail.com>
7889
7890 PR c/84852
7891 * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
7892
7893 2018-03-15 Segher Boessenkool <segher@kernel.crashing.org>
7894
7895 * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
7896 TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
7897 resp. SFmode cases.
7898
7899 2018-03-15 Tamar Christina <tamar.christina@arm.com>
7900
7901 PR target/84711
7902 * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
7903 instead of GET_MODE_SIZE when comparing Units.
7904
7905 2018-03-15 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
7906
7907 PR target/68256
7908 * varasm.c (hash_section): Return an unchangeble hash value
7909 * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
7910 Return !aarch64_can_use_per_function_literal_pools_p ().
7911
7912 2018-03-15 Jakub Jelinek <jakub@redhat.com>
7913
7914 PR target/84860
7915 * optabs.c (emit_conditional_move): Pass address of cmode's copy
7916 rather than address of cmode as last argument to prepare_cmp_insn.
7917
7918 2018-03-15 Julia Koval <julia.koval@intel.com>
7919
7920 * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
7921 F_AVX512VNNI, F_AVX512BITALG): New.
7922
7923 2018-03-14 John David Anglin <danglin@gcc.gnu.org>
7924
7925 PR target/83451
7926 * config/pa/pa.c (pa_emit_move_sequence): Always emit secondary reload
7927 insn for floating-point loads and stores.
7928
7929 2018-03-14 Carl Love <cel@us.ibm.com>
7930
7931 * config/rs6000/rs6000-c.c: Add macro definitions for
7932 ALTIVEC_BUILTIN_VEC_PERMXOR.
7933 * config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
7934 * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
7935 * config/rs6000/altivec.md (altivec_vpermxor): New define expand.
7936 * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
7937 UNSPEC_VPERMXOR.
7938 * config/doc/extend.texi: Add prototypes for vec_permxor.
7939
7940 2018-03-14 David Malcolm <dmalcolm@redhat.com>
7941
7942 PR c/84852
7943 * diagnostic-show-locus.c (class layout_point): Convert m_line
7944 from int to linenum_type.
7945 (line_span::comparator): Use linenum "compare" function when
7946 comparing line numbers.
7947 (test_line_span): New function.
7948 (layout_range::contains_point): Convert param "row" from int to
7949 linenum_type.
7950 (layout_range::intersects_line_p): Likewise.
7951 (layout::will_show_line_p): Likewise.
7952 (layout::print_source_line): Likewise.
7953 (layout::should_print_annotation_line_p): Likewise.
7954 (layout::print_annotation_line): Likewise.
7955 (layout::print_leading_fixits): Likewise.
7956 (layout::annotation_line_showed_range_p): Likewise.
7957 (struct line_corrections): Likewise for field m_row.
7958 (line_corrections::line_corrections): Likewise for param "row".
7959 (layout::print_trailing_fixits): Likewise.
7960 (layout::get_state_at_point): Likewise.
7961 (layout::get_x_bound_for_row): Likewise.
7962 (layout::print_line): Likewise.
7963 (diagnostic_show_locus): Likewise for locals "last_line" and "row".
7964 (selftest::diagnostic_show_locus_c_tests): Call test_line_span.
7965 * input.c (selftest::test_linenum_comparisons): New function.
7966 (selftest::input_c_tests): Call it.
7967 * selftest.c (selftest::test_assertions): Test ASSERT_GT,
7968 ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
7969 * selftest.h (ASSERT_GT): New macro.
7970 (ASSERT_GT_AT): New macro.
7971 (ASSERT_LT): New macro.
7972 (ASSERT_LT_AT): New macro.
7973
7974 2018-03-14 Segher Boessenkool <segher@kernel.crashing.org>
7975
7976 PR rtl-optimization/84780
7977 * combine.c (distribute_links): Don't make a link based on pc_rtx.
7978
7979 2018-03-14 Martin Liska <mliska@suse.cz>
7980
7981 * tree.c (record_node_allocation_statistics): Use
7982 get_stats_node_kind.
7983 (get_stats_node_kind): New function extracted from
7984 record_node_allocation_statistics.
7985 (free_node): Use get_stats_node_kind.
7986
7987 2018-03-14 Richard Biener <rguenther@suse.de>
7988
7989 * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
7990 that the value-set of ANTIC_IN doesn't grow.
7991
7992 Revert
7993 * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
7994 member.
7995 (BB_VISITED_WITH_VISITED_SUCCS): New define.
7996 (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
7997
7998 2018-03-14 Julia Koval <julia.koval@intel.com>
7999
8000 * config.gcc (icelake-client, icelake-server): New.
8001 (icelake): Remove.
8002 * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
8003 (initial_ix86_arch_features): Ditto.
8004 (PTA_SKYLAKE): Add SGX.
8005 (PTA_ICELAKE): Remove.
8006 (PTA_ICELAKE_CLIENT): New.
8007 (PTA_ICELAKE_SERVER): New.
8008 (ix86_option_override_internal): Split up icelake on icelake client and
8009 icelake server.
8010 (get_builtin_code_for_version): Ditto.
8011 (fold_builtin_cpu): Ditto.
8012 * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
8013 * config/i386/i386-c.c (ix86_target_macros_internal): Ditto
8014 * config/i386/i386.h (processor_type): Ditto.
8015 * doc/invoke.texi: Ditto.
8016
8017 2018-03-14 Jakub Jelinek <jakub@redhat.com>
8018
8019 PR sanitizer/83392
8020 * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
8021 INTEGER_CST offset, add it together with bitpos / 8 and
8022 sign extend based on POINTER_SIZE.
8023
8024 PR target/84844
8025 Revert
8026 2017-04-20 Uros Bizjak <ubizjak@gmail.com>
8027
8028 PR target/78090
8029 * config/i386/constraints.md (Yc): New register constraint.
8030 * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
8031 Use Yc constraint for alternative 2 of operand 0. Remove
8032 preferred_for_speed attribute.
8033
8034 2018-03-14 Richard Biener <rguenther@suse.de>
8035
8036 PR tree-optimization/84830
8037 * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
8038 with the old one to avoid oscillations.
8039
8040 2018-03-13 Vladimir Makarov <vmakarov@redhat.com>
8041
8042 PR target/83712
8043 * lra-assigns.c (find_all_spills_for): Ignore uninteresting
8044 pseudos.
8045 (assign_by_spills): Return a flag of reload assignment failure.
8046 Do not process the reload assignment failures. Do not spill other
8047 reload pseudos if they has the same reg class. Update n if
8048 necessary.
8049 (lra_assign): Add a return arg. Set up from the result of
8050 assign_by_spills call.
8051 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
8052 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
8053 usage_insns if it is not NULL.
8054 (spill_hard_reg_in_range): New function.
8055 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
8056 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
8057 function prototypes.
8058 (lra_assign): Change prototype.
8059 * lra.c (lra): Add code to deal with fails by splitting hard reg
8060 live ranges.
8061
8062 2018-03-01 Palmer Dabbelt <palmer@sifive.com>
8063
8064 * config/riscv/riscv.opt (mrelax): New option.
8065 * config/riscv/riscv.c (riscv_file_start): Emit ".option
8066 "norelax" when riscv_mrelax is disabled.
8067 * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
8068
8069 2018-03-13 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
8070
8071 PR target/84743
8072 * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
8073 reassociation for int modes.
8074
8075 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
8076
8077 * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
8078 Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
8079 for big-endian.
8080 * config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
8081 * config/aarch64/aarch64-sve.md
8082 (*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
8083 (aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
8084 (*extend<mode><Vwide>2): Rename to...
8085 (aarch64_sve_extend<mode><Vwide>2): ...this.
8086 (vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
8087 renaming the old pattern to...
8088 (aarch64_sve_punpk<perm_hilo>_<mode>): ...this. Only define
8089 unsigned packs.
8090 (vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
8091 define_expand, renaming the old pattern to...
8092 (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
8093 (*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
8094 (vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
8095 account when deciding which SVE instruction the optab should use.
8096 (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
8097
8098 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
8099
8100 * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
8101 (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
8102 (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
8103 (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
8104 (tlsdesc_small_<mode>): Turn a define_expand and use
8105 tlsdesc_small_sve_<mode> for SVE. Rename original define_insn to...
8106 (tlsdesc_small_advsimd_<mode>): ...this.
8107 (tlsdesc_small_sve_<mode>): New pattern.
8108
8109 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
8110
8111 * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
8112 (UNSPEC_UMUL_HIGHPART): New constants.
8113 (MUL_HIGHPART): New int iteraor.
8114 (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
8115 * config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
8116 define_expand.
8117 (*<su>mul<mode>3_highpart): New define_insn.
8118
8119 2018-03-13 Eric Botcazou <ebotcazou@adacore.com>
8120
8121 PR lto/84805
8122 * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
8123 incomplete types.
8124
8125 2018-03-13 Martin Liska <mliska@suse.cz>
8126
8127 PR ipa/84658.
8128 * (sem_item_optimizer::sem_item_optimizer): Initialize new
8129 vector.
8130 (sem_item_optimizer::~sem_item_optimizer): Release it.
8131 (sem_item_optimizer::merge_classes): Register variable aliases.
8132 (sem_item_optimizer::fixup_pt_set): New function.
8133 (sem_item_optimizer::fixup_points_to_sets): Likewise.
8134 * ipa-icf.h: Declare new variables and functions.
8135
8136 2018-03-13 Jakub Jelinek <jakub@redhat.com>
8137
8138 PR middle-end/84834
8139 * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
8140 integer_pow2p@2 and test integer_pow2p in condition.
8141 (A < 0 ? C : 0): Similarly for @1.
8142
8143 PR middle-end/84831
8144 * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
8145 characters starting at p contain '\0' character, don't look beyond
8146 that.
8147
8148 PR target/84827
8149 * config/i386/i386.md (round<mode>2): For 387 fancy math, disable
8150 pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
8151
8152 PR target/84828
8153 * reg-stack.c (change_stack): Change update_end var from int to
8154 rtx_insn *, if non-NULL don't update just BB_END (current_block), but
8155 also call set_block_for_insn on the newly added insns and rescan.
8156
8157 PR target/84786
8158 * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
8159 on the last operand.
8160
8161 PR c++/84704
8162 * tree.c (stabilize_reference_1): Return save_expr (e) for
8163 STATEMENT_LIST even if it doesn't have side-effects.
8164
8165 2018-03-12 Jonathan Wakely <jwakely@redhat.com>
8166
8167 * doc/invoke.texi (-mclflushopt): Fix spelling of option.
8168
8169 2018-03-12 Renlin Li <renlin.li@arm.com>
8170
8171 * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
8172 aarch64_output_scalar_simd_mov_immediate.
8173
8174 2018-03-12 Martin Sebor <msebor@redhat.com>
8175
8176 PR tree-optimization/83456
8177 * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
8178 for perfectly overlapping calls to memcpy.
8179 (gimple_fold_builtin_memory_chk): Same.
8180 (gimple_fold_builtin_strcpy): Handle no-warning.
8181 (gimple_fold_builtin_stxcpy_chk): Same.
8182 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
8183
8184 2018-03-12 Segher Boessenkool <segher@kernel.crashing.org>
8185
8186 * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
8187 parameter. Use it for SFmode.
8188 (rs6000_function_arg_advance_1): Adjust.
8189 (rs6000_function_arg): Adjust.
8190 (rs6000_gimplify_va_arg): Pass false for that new parameter.
8191
8192 2018-03-12 Segher Boessenkool <segher@kernel.crashing.org>
8193
8194 PR rtl-optimization/84169
8195 PR rtl-optimization/84780
8196 * combine.c (can_combine_p): Check for a 2-insn combination whether
8197 the destination register is used between the two insns, too.
8198
8199 2018-03-12 Richard Biener <rguenther@suse.de>
8200
8201 PR tree-optimization/84803
8202 * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
8203 for refs DR analysis didn't process.
8204
8205 2018-03-12 Richard Biener <rguenther@suse.de>
8206
8207 PR tree-optimization/84777
8208 * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
8209 force-vectorize loops ignore whether we are optimizing for size.
8210
8211 2018-03-12 Chung-Ju Wu <jasonwucj@gmail.com>
8212
8213 * config/nds32/nds32.c (nds32_md_asm_adjust): New function.
8214 (TARGET_MD_ASM_ADJUST): Define.
8215
8216 2018-03-12 Monk Chiang <sh.chiang04@gmail.com>
8217 Kito Cheng <kito.cheng@gmail.com>
8218 Chung-Ju Wu <jasonwucj@gmail.com>
8219
8220 * config/nds32/nds32.c (nds32_compute_stack_frame,
8221 nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
8222 nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
8223 nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
8224 nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
8225 * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
8226 NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
8227 * config/nds32/nds32.md (prologue, epilogue): Use macro
8228 NDS32_V3PUSH_AVAILABLE_P to do checking.
8229
8230 2018-03-11 Jakub Jelinek <jakub@redhat.com>
8231
8232 PR debug/58150
8233 * dwarf2out.c (gen_enumeration_type_die): Don't guard adding
8234 DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
8235 but on TYPE_SIZE. Don't do anything for ENUM_IS_OPAQUE if not creating
8236 a new die. Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE. Guard
8237 addition of most attributes on !orig_type_die or the attribute not
8238 being present already. Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
8239
8240 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
8241 Chung-Ju Wu <jasonwucj@gmail.com>
8242
8243 * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
8244 __NDS32_VH__ macro.
8245 * config/nds32/nds32.opt (mvh): New option.
8246
8247 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
8248 Chung-Ju Wu <jasonwucj@gmail.com>
8249
8250 * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
8251 function.
8252 * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
8253 * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
8254 definition.
8255
8256 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
8257 Chung-Ju Wu <jasonwucj@gmail.com>
8258
8259 * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
8260 function.
8261 * config/nds32/nds32-multiple.md (strlensi): New pattern.
8262 * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
8263
8264 2018-03-11 Monk Chiang <sh.chiang04@gmail.com>
8265 Kito Cheng <kito.cheng@gmail.com>
8266 Chung-Ju Wu <jasonwucj@gmail.com>
8267
8268 * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
8269 UNSPEC_FFMISM and UNSPEC_FLMISM.
8270 * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
8271 for ffb, ffmism and flmism.
8272 * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
8273 (unspec_ffmism): Ditto.
8274 (unspec_flmism): Ditto.
8275 (nds32_expand_builtin_impl): Check if string extension is available.
8276 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
8277 NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
8278
8279 2018-03-10 Vladimir Makarov <vmakarov@redhat.com>
8280
8281 Reverting patch:
8282 2018-03-09 Vladimir Makarov <vmakarov@redhat.com>
8283
8284 PR target/83712
8285 * lra-assigns.c (assign_by_spills): Return a flag of reload
8286 assignment failure. Do not process the reload assignment
8287 failures. Do not spill other reload pseudos if they has the same
8288 reg class.
8289 (lra_assign): Add a return arg. Set up from the result of
8290 assign_by_spills call.
8291 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
8292 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
8293 usage_insns if it is not NULL.
8294 (spill_hard_reg_in_range): New function.
8295 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
8296 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
8297 function prototypes.
8298 (lra_assign): Change prototype.
8299 * lra.c (lra): Add code to deal with fails by splitting hard reg
8300 live ranges.
8301
8302 2018-03-10 H.J. Lu <hongjiu.lu@intel.com>
8303
8304 PR target/84807
8305 * config/i386/i386.opt: Replace Enforcment with Enforcement.
8306
8307 2018-03-10 Alexandre Oliva <aoliva@redhat.com>
8308
8309 PR debug/84620
8310 * dwarf2out.h (dw_val_class): Add dw_val_class_symview.
8311 (dw_val_node): Add val_symbolic_view.
8312 * dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
8313 (symview_upper_bound): New.
8314 (new_line_info_table): Initialize symviews_since_reset.
8315 (dwarf2out_source_line): Count symviews_since_reset and set
8316 symview_upper_bound.
8317 (dw_val_equal_p): Handle symview.
8318 (add_AT_symview): New.
8319 (print_dw_val): Handle symview.
8320 (attr_checksum, attr_checksum_ordered): Likewise.
8321 (same_dw_val_p, size_of_die): Likewise.
8322 (value_format, output_die): Likewise.
8323 (add_high_low_attributes): Use add_AT_symview for entry_view.
8324 (dwarf2out_finish): Reset symview_upper_bound, clear
8325 zero_view_p.
8326
8327 2018-03-09 Peter Bergner <bergner@vnet.ibm.com>
8328
8329 PR target/83969
8330 * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
8331 Add strict argument and use it.
8332 (rs6000_split_multireg_move): Update for new strict argument.
8333 (mem_operand_gpr): Disallow all non-offsettable addresses.
8334 * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
8335
8336 2018-03-09 Jakub Jelinek <jakub@redhat.com>
8337
8338 PR target/84772
8339 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
8340 temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
8341 * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
8342
8343 PR c++/84767
8344 * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
8345 decl, use remap_type if we want to use the type.
8346
8347 2018-03-09 Martin Sebor <msebor@redhat.com>
8348
8349 PR tree-optimization/84526
8350 * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
8351 Remove dead code.
8352 (builtin_access::generic_overlap): Be prepared to handle non-array
8353 base objects.
8354
8355 2018-03-09 Alexandre Oliva <aoliva@redhat.com>
8356
8357 PR rtl-optimization/84682
8358 * lra-constraints.c (process_address_1): Check is_address flag
8359 for address constraints.
8360 (process_alt_operands): Likewise.
8361 * lra.c (lra_set_insn_recog_data): Pass asm operand locs to
8362 preprocess_constraints.
8363 * recog.h (preprocess_constraints): Add oploc parameter.
8364 Adjust callers.
8365 * recog.c (preprocess_constraints): Test address_operand for
8366 CT_ADDRESS constraints.
8367
8368 2018-03-09 Vladimir Makarov <vmakarov@redhat.com>
8369
8370 PR target/83712
8371 * lra-assigns.c (assign_by_spills): Return a flag of reload
8372 assignment failure. Do not process the reload assignment
8373 failures. Do not spill other reload pseudos if they has the same
8374 reg class.
8375 (lra_assign): Add a return arg. Set up from the result of
8376 assign_by_spills call.
8377 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
8378 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
8379 usage_insns if it is not NULL.
8380 (spill_hard_reg_in_range): New function.
8381 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
8382 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
8383 function prototypes.
8384 (lra_assign): Change prototype.
8385 * lra.c (lra): Add code to deal with fails by splitting hard reg
8386 live ranges.
8387
8388 2018-03-09 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8389
8390 PR target/83193
8391 * common/config/arm/arm-common.c (arm_parse_arch_option_name):
8392 Accept complain bool parameter. Only emit errors if it is true.
8393 (arm_parse_cpu_option_name): Likewise.
8394 (arm_target_thumb_only): Adjust callers of the above.
8395 * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
8396 prototype to take a default true bool parameter.
8397 (arm_parse_arch_option_name): Likewise.
8398
8399 2018-03-09 David Malcolm <dmalcolm@redhat.com>
8400 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
8401
8402 PR jit/64089
8403 PR jit/84288
8404 * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
8405 * configure: Regenerate.
8406 * configure.ac ("linker --version-script option"): New.
8407 ("linker soname option"): New.
8408
8409 2018-03-09 Richard Biener <rguenther@suse.de>
8410
8411 PR tree-optimization/84775
8412 * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
8413 immediate uses of predicate stmts and mark them modified.
8414
8415 Revert
8416 PR tree-optimization/84178
8417 * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
8418 to caller.
8419 (version_loop_for_if_conversion): Delay update_ssa call.
8420 (tree_if_conversion): Delay update_ssa until after predicate
8421 insertion.
8422
8423 2018-03-09 Eric Botcazou <ebotcazou@adacore.com>
8424
8425 PR target/84763
8426 * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
8427 when the function accesses prior frames.
8428
8429 2018-03-08 Jakub Jelinek <jakub@redhat.com>
8430
8431 PR debug/84456
8432 * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
8433 gen_llsym, otherwise call maybe_gen_llsym.
8434
8435 PR inline-asm/84742
8436 * recog.c (asm_operand_ok): Return 0 if multi-character constraint
8437 has ',' character inside of it.
8438
8439 2018-03-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8440
8441 PR target/84748
8442 * config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
8443 as clobbering CC_REGNUM.
8444
8445 2018-03-08 Richard Biener <rguenther@suse.de>
8446
8447 PR middle-end/84552
8448 * tree-scalar-evolution.c: Include tree-into-ssa.h.
8449 (follow_copies_to_constant): Do not follow SSA names registered
8450 for update.
8451
8452 2018-03-08 Richard Biener <rguenther@suse.de>
8453
8454 PR tree-optimization/84178
8455 * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
8456 to caller.
8457 (version_loop_for_if_conversion): Delay update_ssa call.
8458 (tree_if_conversion): Delay update_ssa until after predicate
8459 insertion.
8460
8461 2018-03-08 David Malcolm <dmalcolm@redhat.com>
8462
8463 PR tree-optimization/84178
8464 * tree-if-conv.c (release_bb_predicate): Remove the
8465 the assertion that the stmts have NULL use_ops.
8466 Discard the statements, asserting that they haven't
8467 yet been added to a BB.
8468
8469 2018-03-08 Richard Biener <rguenther@suse.de>
8470
8471 PR tree-optimization/84746
8472 * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
8473 (phi_translate): Pass in destination ANTIC_OUT set.
8474 (phi_translate_1): Likewise. For a simplified result lookup
8475 a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
8476 (phi_translate_set): Adjust.
8477 (do_pre_regular_insertion): Likewise.
8478 (do_pre_partial_partial_insertion): Likewise.
8479
8480 2018-03-08 Martin Liska <mliska@suse.cz>
8481
8482 PR gcov-profile/84735
8483 * doc/gcov.texi: Document usage of profile files.
8484 * gcov-io.h: Document changes in the format.
8485
8486 2018-03-08 Alexandre Oliva <aoliva@redhat.com>
8487
8488 PR debug/84404
8489 PR debug/84408
8490 * dwarf2out.c (struct dw_line_info_table): Update comments for
8491 view == -1.
8492 (FORCE_RESET_NEXT_VIEW): New.
8493 (FORCE_RESETTING_VIEW_P): New.
8494 (RESETTING_VIEW_P): Check for -1 too.
8495 (ZERO_VIEW_P): Likewise.
8496 (new_line_info_table): Force-reset next view.
8497 (dwarf2out_begin_function): Likewise.
8498 (dwarf2out_source_line): Simplify zero_view_p initialization.
8499 Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
8500 view directly. Omit view when omitting .loc at line 0.
8501
8502 2018-03-08 Jakub Jelinek <jakub@redhat.com>
8503
8504 PR tree-optimization/84740
8505 * tree-switch-conversion.c (process_switch): Call build_constructors
8506 only if info.phi_count is non-zero.
8507
8508 PR tree-optimization/84739
8509 * tree-tailcall.c (find_tail_calls): Check call arguments against
8510 DECL_ARGUMENTS (current_function_decl) rather than
8511 DECL_ARGUMENTS (func) when checking for tail recursion.
8512
8513 2018-03-07 Jakub Jelinek <jakub@redhat.com>
8514
8515 * doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
8516 Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
8517 Volker Reichelt's entry and add entries for people that perform
8518 GCC fuzzy testing and report numerous bugs.
8519
8520 2018-03-07 Segher Boessenkool <segher@kernel.crashing.org>
8521
8522 PR target/82411
8523 * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
8524 readonly data in sdata, if that is disabled.
8525 * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
8526 * doc/invoke.texi (RS/6000 and PowerPC Options): Document
8527 -mreadonly-in-sdata option.
8528
8529 2018-03-07 Martin Sebor <msebor@redhat.com>
8530
8531 PR tree-optimization/84468
8532 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
8533 basic block when looking for nul assignment.
8534
8535 2018-03-07 Eric Botcazou <ebotcazou@adacore.com>
8536
8537 PR target/84277
8538 * except.h (output_function_exception_table): Adjust prototype.
8539 * except.c (output_function_exception_table): Remove FNNAME parameter
8540 and add SECTION parameter. Ouput one part of the table at a time.
8541 * final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
8542 the first part of the exception table and emit unwind directives.
8543 * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
8544 (i386_pe_seh_cold_init): Likewise.
8545 * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
8546 (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
8547 * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
8548 (ix86_output_call_insn): Emit a nop in one more case for SEH.
8549 * config/i386/winnt.c: Include except.h.
8550 (struct seh_frame_state): Add reg_offset, after_prologue and
8551 in_cold_section fields.
8552 (i386_pe_seh_end_prologue): Set seh->after_prologue.
8553 (i386_pe_seh_cold_init): New function.
8554 (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
8555 to seh->in_cold_section.
8556 (seh_emit_push): Record the offset of the push.
8557 (seh_emit_save): Record the offet of the save.
8558 (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
8559 Test seh->after_prologue to disregard the epilogue.
8560 (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
8561 (i386_pe_end_cold_function): New function.
8562
8563 2018-03-07 Jakub Jelinek <jakub@redhat.com>
8564
8565 PR fortran/84565
8566 * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
8567 aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
8568
8569 PR c++/84704
8570 * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
8571 on tmp_var.
8572 * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
8573 don't print names of DECL_NAMELESS DECL_IGNORED_P decls.
8574
8575 PR middle-end/84723
8576 * multiple_target.c: Include tree-inline.h and intl.h.
8577 (expand_target_clones): Diagnose and fail if node->definition and
8578 !tree_versionable_function_p (node->decl).
8579
8580 2018-03-06 John David Anglin <danglin@gcc.gnu.org>
8581
8582 * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
8583 sprint_ul.
8584 (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
8585 (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
8586 * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
8587
8588 2018-03-06 Jakub Jelinek <jakub@redhat.com>
8589
8590 PR target/84710
8591 * combine.c (try_combine): Use reg_or_subregno instead of handling
8592 just paradoxical SUBREGs and REGs.
8593
8594 2018-03-06 Claudiu Zissulescu <claziss@synopsys.com>
8595
8596 * config/arc/arc.c (arc_finalize_pic): Remove function.
8597 (arc_must_save_register): We use single base PIC register, remove
8598 checks to save/restore the PIC register.
8599 (arc_expand_prologue): Likewise.
8600 * config/arc/arc-protos.h (arc_set_default_type_attributes):
8601 Remove.
8602 (arc_verify_short): Likewise.
8603 (arc_attr_type): Likewise.
8604 * config/arc/arc.c (arc_set_default_type_attributes): Remove.
8605 (walk_stores): Likewise.
8606 (arc_address_cost): Make it static.
8607 (arc_verify_short): Likewise.
8608 (branch_dest): Likewise.
8609 (arc_attr_type): Likewise.
8610 * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
8611 (TARGET_INSN_LENGTH_PARAMETERS): Likewise.
8612 (arc_final_prescan_insn): Remove inserting the nops due to
8613 hardware hazards. It is done in reorg step.
8614 (insn_length_variant_t): Remove.
8615 (insn_length_parameters_t): Likewise.
8616 (arc_insn_length_parameters): Likewise.
8617 (arc_get_insn_variants): Likewise.
8618 * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
8619
8620 2018-03-06 Jakub Jelinek <jakub@redhat.com>
8621
8622 PR inline-asm/84683
8623 * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
8624 assertion failure.
8625
8626 PR tree-optimization/84687
8627 * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
8628 on new_node->decl.
8629 * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
8630
8631 2018-03-05 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
8632
8633 * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
8634 Rename to ppc_speculation_barrier.
8635 * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
8636 __builtin_ppc_speculation_barrier.
8637
8638 2018-03-05 Jakub Jelinek <jakub@redhat.com>
8639
8640 PR target/84700
8641 * combine.c (combine_simplify_rtx): Don't try to simplify if
8642 if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
8643 are equal to x.
8644
8645 2018-03-05 Segher Boessenkool <segher@kernel.crashing.org>
8646
8647 * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
8648 to 32 bytes when compiling for POWER9.
8649
8650 2018-03-05 Jakub Jelinek <jakub@redhat.com>
8651
8652 PR target/84564
8653 * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
8654 regparm >= 3 with no arg reg available also for calls with
8655 flag_force_indirect_call. Pass decl to ix86_function_regparm.
8656
8657 PR target/84524
8658 * config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
8659 orig,vex.
8660 (*<plusminus_insn><mode>3): Likewise. Remove <mask_operand3> uses.
8661
8662 2018-03-05 Peter Bergner <bergner@vnet.ibm.com>
8663
8664 PR target/84264
8665 * config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
8666
8667 2018-03-05 Richard Biener <rguenther@suse.de>
8668
8669 PR tree-optimization/84486
8670 * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
8671 When inserting a __builtin_assume_aligned call set the LHS
8672 SSA name alignment info accordingly.
8673
8674 2018-03-05 Wilco Dijkstra <wdijkstr@arm.com>
8675
8676 PR tree-optimization/84114
8677 * config/aarch64/aarch64.c (aarch64_reassociation_width)
8678 Avoid reassociation of FLOAT_MODE addition.
8679
8680 2018-03-05 Olga Makhotina <olga.makhotina@intel.com>
8681
8682 * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
8683 OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
8684 OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
8685 (ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
8686 * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
8687 * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
8688 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
8689 and -mwbnoinvd.
8690 * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
8691 __builtin_ia32_wbinvd): New builtins.
8692 (SPECIAL_ARGS2): New.
8693 * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
8694 (SPECIAL_ARGS2): New.
8695 * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
8696 (ix86_valid_target_attribute_inner_p): Ditto.
8697 (ix86_init_mmx_sse_builtins): Add special_args2.
8698 * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
8699 TARGET_WBNOINVD_P): New.
8700 * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
8701 (define_insn "wbinvd", define_insn "wbnoinvd"): New.
8702 * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
8703 * config/i386/immintrin.h (_wbinvd): New intrinsic.
8704 * config/i386/pconfigintrin.h: New file.
8705 * config/i386/wbnoinvdintrin.h: Ditto.
8706 * config/i386/x86intrin.h: Add headers pconfigintrin.h and
8707 wbnoinvdintrin.h.
8708 * doc/invoke.texi (-mpconfig, -mwbnoinvd): New.
8709
8710 2018-03-05 Richard Biener <rguenther@suse.de>
8711
8712 PR tree-optimization/84670
8713 * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
8714 member.
8715 (BB_VISITED_WITH_VISITED_SUCCS): New define.
8716 (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
8717 (compute_antic_aux): Only assert the number of values in ANTIC_IN
8718 doesn't grow if all successors (recursively) were visited at least
8719 once.
8720
8721 2018-03-05 Richard Biener <rguenther@suse.de>
8722
8723 PR tree-optimization/84650
8724 * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
8725 if executed in the loop pipeline.
8726
8727 2018-03-05 Sandra Loosemore <sandra@codesourcery.com>
8728
8729 * doc/configfiles.texi (Configuration Files): Move info about
8730 conditionalizing $target-protos.h to...
8731 * doc/sourcebuild.texi (Back End): Here. Explain how $target.h
8732 differs from $target-protos.h.
8733
8734 2018-03-05 Kito Cheng <kito.cheng@gmail.com>
8735 Chung-Ju Wu <jasonwucj@gmail.com>
8736
8737 * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
8738 * config/nds32/nds32-multiple.md (setmemsi): Define.
8739 * config/nds32/nds32-memory-manipulation.c
8740 (nds32_gen_dup_4_byte_to_word_value): New.
8741 (emit_setmem_word_loop): New.
8742 (emit_setmem_byte_loop): New.
8743 (nds32_expand_setmem_loop): New.
8744 (nds32_expand_setmem_loop_v3m): New.
8745 (nds32_expand_setmem_unroll): New.
8746 (nds32_expand_setmem): New.
8747
8748 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
8749 Chung-Ju Wu <jasonwucj@gmail.com>
8750
8751 * config/nds32/nds32-memory-manipulation.c
8752 (nds32_emit_load_store): New.
8753 (nds32_emit_post_inc_load_store): New.
8754 (nds32_emit_mem_move): New.
8755 (nds32_emit_mem_move_block): New.
8756 (nds32_expand_movmemsi_loop_unknown_size): New.
8757 (nds32_expand_movmemsi_loop_known_size): New.
8758 (nds32_expand_movmemsi_loop): New.
8759 (nds32_expand_movmemsi_unroll): New.
8760 (nds32_expand_movmemqi): Rename ...
8761 (nds32_expand_movmemsi): ... to this.
8762 * config/nds32/nds32-multiple.md (movmemqi): Rename ...
8763 (movmemsi): ... to this.
8764 * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
8765 (nds32_expand_movmemsi): ... to this.
8766
8767 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
8768 Monk Chiang <sh.chiang04@gmail.com>
8769 Chung-Ju Wu <jasonwucj@gmail.com>
8770
8771 * config/nds32/nds32-protos.h
8772 (nds32_expand_load_multiple): New arguments.
8773 (nds32_expand_store_multiple): Ditto.
8774 (nds32_valid_multiple_load_store): Rename ...
8775 (nds32_valid_multiple_load_store_p): ... to this.
8776 * config/nds32/nds32-memory-manipulation.c
8777 (nds32_expand_load_multiple): Refine implementation.
8778 (nds32_expand_store_multiple): Ditto.
8779 * config/nds32/nds32-multiple.md
8780 (load_multiple): Update nds32_expand_load_multiple interface.
8781 (store_multiple): Update nds32_expand_store_multiple interface.
8782 * config/nds32/nds32-predicates.c
8783 (nds32_valid_multiple_load_store): Rename ...
8784 (nds32_valid_multiple_load_store_p): ... to this and refine
8785 implementation.
8786 * config/nds32/predicates.md
8787 (nds32_load_multiple_and_update_address_operation): New predicate.
8788 (nds32_store_multiple_and_update_address_operation): New predicate.
8789
8790 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
8791 Chung-Ju Wu <jasonwucj@gmail.com>
8792
8793 * config/nds32/nds32.md (type): Add load_multiple and store_multiple.
8794 (combo): New attribute.
8795 * config/nds32/nds32-multiple.md: Refine patterns with new attributes.
8796
8797 2018-03-03 Chung-Ju Wu <jasonwucj@gmail.com>
8798
8799 * config/nds32/nds32.opt: Change -mcmodel= default value.
8800
8801 2018-03-03 Kito Cheng <kito.cheng@gmail.com>
8802 Monk Chiang <sh.chiang04@gmail.com>
8803 Chung-Ju Wu <jasonwucj@gmail.com>
8804
8805 * config/nds32/constants.md (unspec_element): New enum.
8806 * config/nds32/constraints.md (Umw): New constraint.
8807 * config/nds32/nds32-intrinsic.c: Add more builtin functions.
8808 * config/nds32/nds32-intrinsic.md: Likewise.
8809 * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
8810 (nds32_valid_smw_lwm_base_p): New.
8811 (nds32_output_smw_single_word): New.
8812 (nds32_output_lmw_single_word): New.
8813 (nds32_expand_unaligned_load): New.
8814 (nds32_expand_unaligned_store): New.
8815 * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
8816 (nds32_output_smw_single_word): Declare.
8817 (nds32_output_lmw_single_word): Declare.
8818 (nds32_expand_unaligned_load): Declare.
8819 (nds32_expand_unaligned_store): Declare.
8820 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
8821 NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
8822 NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
8823 NDS32_BUILTIN_UASTORE_DW.
8824 * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
8825 predicate.
8826
8827 2018-03-03 Monk Chiang <sh.chiang04@gmail.com>
8828 Kito Cheng <kito.cheng@gmail.com>
8829 Chung-Ju Wu <jasonwucj@gmail.com>
8830
8831 * config/nds32/nds32-intrinsic.c
8832 (nds32_expand_builtin_null_ftype_reg): Delete.
8833 (nds32_expand_builtin_reg_ftype_imm): Ditto.
8834 (nds32_expand_builtin_null_ftype_reg_imm): Ditto.
8835 (nds32_read_argument): New.
8836 (nds32_legitimize_target): Ditto.
8837 (nds32_legitimize_argument): Ditto.
8838 (nds32_check_constant_argument): Ditto.
8839 (nds32_expand_unop_builtin): Ditto.
8840 (nds32_expand_unopimm_builtin): Ditto.
8841 (nds32_expand_binop_builtin): Ditto.
8842 (nds32_builtin_decl_impl): Ditto.
8843 (builtin_description): Ditto.
8844 (nds32_expand_builtin_impl): Rewrite with new infrastructure.
8845 (nds32_init_builtins_impl): Ditto.
8846 * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
8847 (nds32_builtin_decl): New.
8848 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
8849 * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.
8850
8851 2018-03-02 Jeff Law <law@redhat.com>
8852
8853 * reorg.c (stop_search_p): Handle DEBUG_INSN.
8854 (redundant_insn, fill_simple_delay_slots): Likewise.
8855 (fill_slots_from_thread): Likewise.
8856 * resource.c (mark_referenced_resources): Likewise.
8857 (mark_set_resources, find_dead_or_set_registers): Likewise.
8858
8859 2018-03-02 Jakub Jelinek <jakub@redhat.com>
8860
8861 * substring-locations.h (format_warning_va): Formatting fix for
8862 ATTRIBUTE_GCC_DIAG.
8863 (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second
8864 argument.
8865 (format_warning_n_va, format_warning_at_substring_n): New prototypes.
8866 * substring-locations.c: Include intl.h.
8867 (format_warning_va): Turned into small wrapper around
8868 format_warning_n_va, renamed to ...
8869 (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments,
8870 rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID,
8871 use ngettext.
8872 (format_warning_at_substring_n): New function.
8873 * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma.
8874 (fmtwarn): Add ATTRIBUTE_GCC_DIAG. Turn into a copy of
8875 format_warning_at_substring with just a shorter name instead of
8876 const function pointer.
8877 (fmtwarn_n): New function.
8878 (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where
8879 appropriate, get rid of all the fmtstr temporaries, move conditionals
8880 with G_() wrapped string literals directly into fmtwarn arguments,
8881 cast dir.len to (int), formatting fixes.
8882
8883 2018-03-02 Thomas Schwinge <thomas@codesourcery.com>
8884
8885 * doc/invoke.texi: Remove "Cilk Plus" references.
8886
8887 2018-03-02 Jakub Jelinek <jakub@redhat.com>
8888 Richard Biener <rguenther@suse.de>
8889
8890 PR ipa/84628
8891 * expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
8892 for error or warning attributes if CALL_FROM_THUNK_P is set.
8893 Formatting fixes.
8894
8895 2018-03-02 Jakub Jelinek <jakub@redhat.com>
8896
8897 PR target/56540
8898 * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
8899 __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
8900
8901 PR target/56540
8902 * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine
8903 __SIZEOF_{FPREG,FLOAT{80,128}}__ macros.
8904
8905 * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED
8906 instead of -1U in last predictors element's probability member.
8907
8908 2018-03-02 Eric Botcazou <ebotcazou@adacore.com>
8909
8910 PR ipa/83983
8911 * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
8912 arguments if they are comparable.
8913
8914 2018-03-02 Richard Sandiford <richard.sandiford@linaro.org>
8915
8916 PR tree-optimization/84634
8917 * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace
8918 masks and masked_loop_p with a single loop_masks, making sure it's
8919 null for bb vectorization.
8920
8921 2018-03-02 Richard Sandiford <richard.sandiford@linaro.org>
8922
8923 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
8924 (vect_analyze_data_ref_access): Use loop->safe_len rather than
8925 loop->force_vectorize to check whether there is no alias.
8926
8927 2018-03-02 Jakub Jelinek <jakub@redhat.com>
8928
8929 PR target/84614
8930 * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
8931 prototypes.
8932 * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
8933 comments.
8934 (next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
8935 * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
8936 instead of a loop around prev_real_insn.
8937 * combine.c (move_deaths): Use prev_real_nondebug_insn instead of
8938 prev_real_insn.
8939
8940 PR inline-asm/84625
8941 * config/i386/i386.c (ix86_print_operand): Use conditional
8942 output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
8943 zero vector.
8944
8945 2018-03-02 Richard Biener <rguenther@suse.de>
8946
8947 PR tree-optimization/84427
8948 * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
8949 (bitmap_set_subtract_values): Rewrite to handle multiple
8950 exprs per value.
8951 (clean): Likewise.
8952 (prune_clobbered_mems): Likewise.
8953 (phi_translate): Take edge instead of pred/phiblock.
8954 (phi_translate_1): Likewise.
8955 (phi_translate_set): Likewise. Insert all translated
8956 exprs for a value into the set, keeping possibly multiple
8957 expressions per value.
8958 (compute_antic_aux): Adjust for phi_translate changes.
8959 When intersecting union the expressions and prune those
8960 not in the final value set, keeping possibly multiple
8961 expressions per value. Do not use value-insertion
8962 for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
8963 all expressions. Add verification that the value-sets
8964 only shrink during iteration.
8965 (compute_partial_antic_aux): Adjust for the phi_translate changes.
8966 (do_pre_regular_insertion): Likewise.
8967 (do_pre_partial_partial_insertion): Likewise.
8968
8969 2018-03-02 Richard Biener <rguenther@suse.de>
8970
8971 PR target/82005
8972 * config/darwin.c (saved_debug_info_level): New static global.
8973 (darwin_asm_lto_start): Disable debug info generation for LTO out.
8974 (darwin_asm_lto_end): Restore debug info generation settings.
8975
8976 2018-03-01 Martin Liska <mliska@suse.cz>
8977
8978 PR sanitizer/82484
8979 * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
8980 volatile arguments.
8981
8982 2018-03-01 Richard Biener <rguenther@suse.de>
8983
8984 PR debug/84645
8985 * dwarf2out.c (gen_variable_die): Properly handle late VLA
8986 type annotation with LTO when debug was disabled at compile-time.
8987
8988 2018-03-01 Matthew Fortune <mfortune@gmail.com>
8989
8990 * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
8991 XINT with INTVAL.
8992 (mips_final_postscan_insn): Likewise.
8993
8994 2018-03-01 Richard Sandiford <richard.sandiford@linaro.org>
8995
8996 PR rtl-optimization/84528
8997 * alias.c (init_alias_target): Add commentary.
8998 (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
8999 a unique base value if the frame pointer is not eliminated
9000 to the stack pointer.
9001
9002 2018-03-01 Tom de Vries <tom@codesourcery.com>
9003
9004 PR rtl-optimization/83327
9005 * lra-int.h (hard_regs_spilled_into): Declare.
9006 * lra.c (hard_regs_spilled_into): Define.
9007 (init_reg_info): Init hard_regs_spilled_into.
9008 * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
9009 * lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
9010 (process_bb_lives): Handle hard_regs_spilled_into.
9011 (lra_create_live_ranges_1): Before doing liveness propagation, clear
9012 regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
9013
9014 2018-02-28 David Edelsohn <dje.gcc@gmail.com>
9015
9016 * config.gcc (powerpc-ibm-aix7.1.*): New stanza.
9017 (powerpc-ibm-aix[789]*): Default to AIX 7.2.
9018 * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
9019 * config/rs6000/aix72.h: New file.
9020
9021 2018-02-28 Jakub Jelinek <jakub@redhat.com>
9022
9023 * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n
9024 instead of warning_at with conditional singular and plural messages
9025 where possible.
9026
9027 PR target/52991
9028 * stor-layout.c (update_alignment_for_field): For
9029 targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
9030 && !DECL_PACKED (field), do the alignment update, just use
9031 only desired_align instead of MAX (type_align, desired_align)
9032 as the alignment.
9033 (place_field): Don't do known_align < desired_align handling
9034 early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
9035 is non-NULL, instead do it after rli->prev_field handling and
9036 only if not within a bitfield word. For DECL_PACKED (field)
9037 use type_align of BITS_PER_UNIT.
9038
9039 2018-02-28 Eric Botcazou <ebotcazou@adacore.com>
9040
9041 * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove
9042 superfluous parentheses and trailing spaces.
9043
9044 2018-02-28 Richard Biener <rguenther@suse.de>
9045
9046 PR tree-optimization/84584
9047 * graphite-scop-detection.c (scop_detection::add_scop): Discard
9048 SCoPs with fake exit edge.
9049
9050 2018-02-28 Martin Liska <mliska@suse.cz>
9051
9052 PR testsuite/84597
9053 * timevar.c (timer::print): Fix format to properly print 100%
9054 values.
9055
9056 2018-02-28 Richard Biener <rguenther@suse.de>
9057
9058 PR middle-end/84607
9059 * genmatch.c (capture_info::walk_match): Do not mark
9060 captured expressions without operands as expr_p given
9061 they act more like predicates and should be subject to
9062 "lost tail" side-effect preserving.
9063
9064 2018-02-28 Alexandre Oliva <aoliva@redhat.com>
9065
9066 PR rtl-optimization/81611
9067 * auto-inc-dec.c (attempt_change): Move dead note from
9068 mem_insn if it's the next use of regno
9069 (find_address): Take address use of reg holding
9070 non-incremented value. Add parm to limit search to the named
9071 reg only.
9072 (merge_in_block): Attempt to use a mem insn that is the next
9073 use of the original regno.
9074
9075 2018-02-27 Martin Sebor <msebor@redhat.com>
9076
9077 PR c++/83871
9078 * gcc/doc/invoke.texi (-Wmissing-attributes): New option.
9079 * gcc/print-tree.c (print_node): Handle DECL_UNINLINABLE.
9080
9081 2018-02-27 Martin Sebor <msebor@redhat.com>
9082
9083 PR translation/84207
9084 * diagnostic-core.h (warning_n, error_n, inform_n): Change
9085 n argument to unsigned HOST_WIDE_INT.
9086 * diagnostic.c (warning_n, error_n, inform_n): Ditto.
9087 (diagnostic_n_impl): Ditto. Handle arguments in excess of LONG_MAX.
9088 * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
9089 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
9090
9091 2018-02-27 Richard Biener <rguenther@suse.de>
9092
9093 PR tree-optimization/84512
9094 * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
9095 Do not use the estimate returned from record_stmt_cost for
9096 the scalar iteration cost but sum properly using add_stmt_cost.
9097
9098 2018-02-27 Richard Biener <rguenther@suse.de>
9099
9100 PR tree-optimization/84466
9101 * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
9102 Adjust last change to less strictly validate use operands.
9103
9104 2018-02-27 Martin Liska <mliska@suse.cz>
9105
9106 PR gcov-profile/84548
9107 * gcov.c (process_file): Allow partial overlap and consider it
9108 also as group functions.
9109 (output_lines): Properly calculate range of lines for a group.
9110
9111 2018-02-27 Martin Liska <mliska@suse.cz>
9112
9113 * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
9114 'ggc' suffixes. Change first column width.
9115 (timer::print): Fix formatting of the column.
9116
9117 2018-02-27 Alexandre Oliva <aoliva@redhat.com>
9118
9119 * tree-ssa-live.c (remove_unused_scope_block_p): Do not
9120 preserve inline entry blocks for the sake of debug inline
9121 entry point markers alone.
9122 (remove_unused_locals): Suggest in comments a better place to
9123 force the preservation of inline entry blocks that are
9124 otherwise unused, but do not preserve them.
9125
9126 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
9127
9128 * config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
9129
9130 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
9131
9132 PR target/84039
9133 * config/i386/constraints.md (Bs): Replace
9134 ix86_indirect_branch_register with
9135 TARGET_INDIRECT_BRANCH_REGISTER.
9136 (Bw): Likewise.
9137 * config/i386/i386.md (indirect_jump): Likewise.
9138 (tablejump): Likewise.
9139 (*sibcall_memory): Likewise.
9140 (*sibcall_value_memory): Likewise.
9141 Peepholes of indirect call and jump via memory: Likewise.
9142 (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
9143 (*sibcall_value_GOT_32): Likewise.
9144 * config/i386/predicates.md (indirect_branch_operand): Likewise.
9145 (GOT_memory_operand): Likewise.
9146 (call_insn_operand): Likewise.
9147 (sibcall_insn_operand): Likewise.
9148 (GOT32_symbol_operand): Likewise.
9149 * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
9150
9151 2018-02-26 Eric Botcazou <ebotcazou@adacore.com>
9152
9153 PR rtl-optimization/83496
9154 * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
9155 booleans to RTXes. Call fix_reg_dead_note on every non-null element.
9156 (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
9157 redundant insn, if any.
9158 (relax_delay_slots): Likewise.
9159 (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
9160
9161 2018-02-26 Richard Sandiford <richard.sandiford@linaro.org>
9162
9163 PR tree-optimization/83965
9164 * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
9165 that grouped statements are part of a reduction chain. Return
9166 true if the statement is not marked as a reduction itself but
9167 is part of a group.
9168 (vect_recog_dot_prod_pattern): Don't check whether the statement
9169 is part of a group here.
9170 (vect_recog_sad_pattern): Likewise.
9171 (vect_recog_widen_sum_pattern): Likewise.
9172
9173 2018-02-26 Eric Botcazou <ebotcazou@adacore.com>
9174
9175 PR debug/84545
9176 * final.c (rest_of_clean_state): Also look for calls inside sequences.
9177
9178 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
9179
9180 PR target/84530
9181 * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
9182 the bool argument.
9183 (ix86_output_indirect_function_return): New prototype.
9184 (ix86_split_simple_return_pop_internal): Likewise.
9185 * config/i386/i386.c (indirect_return_via_cx): New.
9186 (indirect_return_via_cx_bnd): Likewise.
9187 (indirect_thunk_name): Handle return va CX_REG.
9188 (output_indirect_thunk_function): Create alias for
9189 __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
9190 (ix86_output_indirect_jmp): Remove the bool argument.
9191 (ix86_output_indirect_function_return): New function.
9192 (ix86_split_simple_return_pop_internal): Likewise.
9193 * config/i386/i386.md (*indirect_jump): Don't pass false
9194 to ix86_output_indirect_jmp.
9195 (*tablejump_1): Likewise.
9196 (simple_return_pop_internal): Change it to define_insn_and_split.
9197 Call ix86_split_simple_return_pop_internal to split it for
9198 -mfunction-return=.
9199 (simple_return_indirect_internal): Call
9200 ix86_output_indirect_function_return instead of
9201 ix86_output_indirect_jmp.
9202
9203 2018-02-26 Jakub Jelinek <jakub@redhat.com>
9204
9205 PR bootstrap/84405
9206 * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use
9207 memset and value initialization afterwards.
9208
9209 2018-02-26 Christophe Lyon <christophe.lyon@linaro.org>
9210
9211 * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS.
9212
9213 2018-02-26 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
9214
9215 PR target/84521
9216 * common/config/aarch64/aarch64-common.c
9217 (aarch_option_optimization_table[]): Switch
9218 off fomit-frame-pointer
9219
9220 2018-02-26 Kito Cheng <kito.cheng@gmail.com>
9221 Chung-Ju Wu <jasonwucj@gmail.com>
9222
9223 * config/nds32/nds32-multiple.md (load_multiple): Disallow
9224 volatile memory.
9225 (store_multiple): Ditto.
9226
9227 2018-02-26 Kito Cheng <kito.cheng@gmail.com>
9228
9229 * config.gcc: Add --with-cpu support for nds32 target.
9230 * config/nds32/nds32-opts.h (nds32_cpu_type): New.
9231 * config/nds32/nds32.opt: Add -mcpu= option.
9232
9233 2018-02-25 Segher Boessenkool <segher@kernel.crashing.org>
9234
9235 * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no,
9236 isel=yes): Warn for these deprecated options.
9237
9238 2018-02-23 David Edelsohn <dje.gcc@gmail.com>
9239
9240 * config/rs6000/aix71.h (TARGET_DEFAULT): Change to
9241 ISA_2_5_MASKS_EMBEDDED.
9242
9243 2018-02-23 Jakub Jelinek <jakub@redhat.com>
9244
9245 * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
9246 p->max as pointers rather than using iterative_hash_expr.
9247
9248 2018-02-23 Carl Love <cel@us.ibm.com>
9249
9250 * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2
9251 macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to
9252 BU_P8V_OVERLOAD_2.
9253 * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to
9254 P8V_BUILTIN_VEC_VSIGNED2. Change VSX_BUILTIN_VEC_VUNSIGNED2 to
9255 P8V_BUILTIN_VEC_VUNSIGNED2.
9256
9257 2018-02-22 Vladimir Makarov <vmakarov@redhat.com>
9258
9259 PR target/81572
9260 * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
9261 * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
9262 LRA_UNKNOWN_ALT.
9263 * lra-constraints.c (curr_insn_transform): Set up
9264 LRA_NON_CLOBBERED_ALT for moves processed on the fast path. Use
9265 LRA_UNKNOWN_ALT.
9266 (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
9267 * lra-eliminations.c (spill_pseudos): Ditto.
9268 (process_insn_for_elimination): Ditto.
9269 * lra-lives.c (reg_early_clobber_p): Use the new macros.
9270 * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
9271 LRA_NON_CLOBBERED_ALT.
9272
9273 2018-02-22 Martin Sebor <msebor@redhat.com>
9274
9275 PR tree-optimization/84480
9276 * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings
9277 to maybe_diag_stxncpy_trunc. Call it.
9278 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings
9279 from gimple_fold_builtin_strcpy. Print inlining stack.
9280 (handle_builtin_stxncpy): Print inlining stack.
9281 * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare.
9282
9283 2018-02-22 H.J. Lu <hongjiu.lu@intel.com>
9284
9285 PR target/84176
9286 * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
9287 error when -mindirect-branch=thunk-extern, -fcf-protection=branch
9288 and -fcheck-pointer-bounds are used together.
9289 (indirect_thunk_prefix): New enum.
9290 (indirect_thunk_need_prefix): New function.
9291 (indirect_thunk_name): Replace need_bnd_p with need_prefix. Use
9292 "_nt" instead of "_bnd" for NOTRACK prefix.
9293 (output_indirect_thunk): Replace need_bnd_p with need_prefix.
9294 (output_indirect_thunk_function): Likewise.
9295 (): Likewise.
9296 (ix86_code_end): Update output_indirect_thunk_function calls.
9297 (ix86_output_indirect_branch_via_reg): Replace
9298 ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix.
9299 (ix86_output_indirect_branch_via_push): Likewise.
9300 (ix86_output_function_return): Likewise.
9301 * doc/invoke.texi: Document -mindirect-branch=thunk-extern is
9302 incompatible with -fcf-protection=branch and
9303 -fcheck-pointer-bounds.
9304
9305 2018-02-22 Steve Ellcey <sellcey@cavium.com>
9306
9307 PR target/83335
9308 * config/aarch64/aarch64.c (aarch64_print_address_internal):
9309 Change gcc_assert call to output_operand_lossage.
9310
9311 2018-02-22 Steve Ellcey <sellcey@cavium.com>
9312
9313 * doc/extend.texi (__builtin_extend_pointer): Document builtin.
9314
9315 2018-02-22 DJ Delorie <dj@redhat.com>
9316 Sebastian Perta <sebastian.perta@renesas.com>
9317 Oleg Endo <olegendo@gcc.gnu.org>
9318
9319 * config/rx/rx.c (rx_rtx_costs): New function.
9320 (TARGET_RTX_COSTS): Override to use rx_rtx_costs.
9321
9322 2018-02-22 Thomas Preud'homme <thomas.preudhomme@arm.com>
9323
9324 * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.
9325
9326 2018-02-22 Martin Liska <mliska@suse.cz>
9327
9328 PR driver/83193
9329 * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
9330 Add "native" as a possible value.
9331
9332 2018-02-22 Martin Liska <mliska@suse.cz>
9333
9334 PR driver/83193
9335 * config/i386/i386.c (ix86_option_override_internal):
9336 Add "native" as a possible value for -march and -mtune.
9337
9338 2018-02-22 Jakub Jelinek <jakub@redhat.com>
9339
9340 PR target/84502
9341 * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag
9342 to all type variants.
9343
9344 PR tree-optimization/84503
9345 * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute
9346 width as info->bitpos + info->bitsize - start.
9347 (merged_store_group::merge_overlapping): Simplify width computation.
9348 (check_no_overlap): New function.
9349 (imm_store_chain_info::try_coalesce_bswap): Compute expected
9350 start + width and last_order of the group, fail if check_no_overlap
9351 fails.
9352 (imm_store_chain_info::coalesce_immediate_stores): Don't merge info
9353 to group if check_no_overlap fails.
9354
9355 2018-02-21 Segher Boessenkool <segher@kernel.crashing.org>
9356
9357 * config/rs6000/altivec.md: Delete contraint arguments to
9358 define_expand, define_split, and define_peephole2, and in
9359 define_insn_and_split if always unused.
9360 * config/rs6000/darwin.md: Ditto.
9361 * config/rs6000/dfp.md: Ditto.
9362 * config/rs6000/rs6000.md: Ditto.
9363 * config/rs6000/sync.md: Ditto.
9364 * config/rs6000/vector.md: Ditto.
9365 * config/rs6000/vsx.md: Ditto.
9366
9367 2018-02-21 Segher Boessenkool <segher@kernel.crashing.org>
9368
9369 * config/rs6000/altivec.md: Write output control strings as braced
9370 blocks instead of double-quoted strings.
9371 * config/rs6000/darwin.md: Ditto.
9372 * config/rs6000/rs6000.md: Ditto.
9373 * config/rs6000/vector.md: Ditto.
9374 * config/rs6000/vsx.md: Ditto.
9375
9376 2018-02-21 Jason Merrill <jason@redhat.com>
9377
9378 PR c++/84314 - ICE with templates and fastcall attribute.
9379 * attribs.c (build_type_attribute_qual_variant): Remove assert.
9380
9381 2018-02-21 Jan Hubicka <hubicka@ucw.cz>
9382
9383 * ipa-cp.c (determine_versionability): Fix comment typos.
9384
9385 2018-02-21 Jan Hubicka <hubicka@ucw.cz>
9386
9387 PR c/84229
9388 * ipa-cp.c (determine_versionability): Do not version functions caling
9389 va_arg_pack.
9390
9391 2018-02-21 Martin Liska <mliska@suse.cz>
9392
9393 PR driver/83193
9394 * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
9395 Add "native" as a possible value.
9396 * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT): Define
9397 the macro when native cpu detection is available.
9398
9399 2018-02-21 Martin Liska <mliska@suse.cz>
9400
9401 PR driver/83193
9402 * common/config/arm/arm-common.c (arm_print_hint_for_arch_option):
9403 Add "native" as a possible value.
9404 * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro
9405 when native cpu detection is available.
9406
9407 2018-02-21 Jakub Jelinek <jakub@redhat.com>
9408 Martin Sebor <msebor@redhat.com>
9409
9410 PR tree-optimization/84478
9411 * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to
9412 false.
9413 * gimple-fold.c (get_range_strlen): Make minlen const and assume it
9414 can't be NULL. Change FUZZY from bool to int, for 1 add PHI/COND_EXPR
9415 support which is conservatively correct, for 2 only stay conservative
9416 for maxlen. Formatting and comment capitalization fixes. Add STRICT
9417 argument to the 2 argument get_range_strlen, adjust 6 arg
9418 get_range_strlen caller and clear minmaxlen[0] and [1] if it returned
9419 false.
9420 (get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
9421 (gimple_fold_builtin_strlen): Pass true as last argument to
9422 get_range_strlen.
9423
9424 2018-02-20 Martin Sebor <msebor@redhat.com>
9425
9426 PR middle-end/84095
9427 * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New.
9428 (builtin_memref::set_base_and_offset): Same. Handle inner references.
9429 (builtin_memref::builtin_memref): Factor out parts into
9430 set_base_and_offset and call it.
9431
9432 2018-02-20 Richard Sandiford <richard.sandiford@linaro.org>
9433
9434 PR middle-end/84406
9435 * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode
9436 is a scalar_int_mode, assert that to_mode is a scalar_int_mode with
9437 greater precision. If to_mode is a MODE_PARTIAL_INT, stop the
9438 search at the associated MODE_INT.
9439
9440 2018-02-20 Jeff Law <law@redhat.com>
9441
9442 PR middle-end/82123
9443 PR tree-optimization/81592
9444 PR middle-end/79257
9445 * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer
9446 for range data rather than using global data.
9447 * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
9448 range data rather than using global data.
9449 * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
9450 pass it to children as needed.
9451 (struct directive::fmtresult): Similarly.
9452 (struct directive::set_width): Similarly.
9453 (struct directive::set_precision): Similarly.
9454 (format_integer, format_directive, parse_directive): Similarly.
9455 (format_none): Accept unnamed vr_values parameter.
9456 (format_percent, format_floating, format_character): Similarly.
9457 (format_string, format_plain): Similarly.
9458 * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query
9459 the EVRP range analyzer for range data rather than using global data.
9460 * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and
9461 gimple-ssa-evrp-analyze.h
9462 (class sprintf_dom_walker): Add after_dom_children member function.
9463 Add evrp_range_analyzer member.
9464 (sprintf_dom_walker::before_dom_children): Call into the EVRP
9465 range analyzer as needed.
9466 (sprintf_dom_walker::after_dom_children): New member function.
9467 * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
9468 if not optimizing.
9469 (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
9470 (evrp_range_analyzer::pop_to_marker): Likewise.
9471
9472 2018-02-20 Richard Sandiford <richard.sandiford@linaro.org>
9473
9474 PR tree-optimization/84419
9475 * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF
9476 with the required type if its current type is compatible but
9477 different.
9478
9479 2018-02-20 Jakub Jelinek <jakub@redhat.com>
9480
9481 PR middle-end/82004
9482 * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until
9483 after vectorization.
9484
9485 2018-02-20 Martin Liska <mliska@suse.cz>
9486
9487 PR driver/83193
9488 * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print
9489 possible values if we don't have a hint.
9490
9491 2018-02-20 Martin Liska <mliska@suse.cz>
9492
9493 PR c/84310
9494 PR target/79747
9495 * final.c (shorten_branches): Build align_tab array with one
9496 more element.
9497 * opts.c (finish_options): Add alignment option limit check.
9498 (MAX_CODE_ALIGN): Likewise.
9499 (MAX_CODE_ALIGN_VALUE): Likewise.
9500 * doc/invoke.texi: Document maximum allowed option value for
9501 all -falign-* options.
9502
9503 2018-02-19 Jakub Jelinek <jakub@redhat.com>
9504
9505 PR target/84146
9506 * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note.
9507 * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove.
9508 * var-tracking.c (emit_note_insn_var_location): Remove all references
9509 to NOTE_INSN_CALL_ARG_LOCATION.
9510 (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on
9511 the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note.
9512 Use copy_rtx_if_shared.
9513 * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of
9514 NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note.
9515 (dwarf2out_var_location): Remove handling of
9516 NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note
9517 on call_insn.
9518 * final.c (final_scan_insn): Remove all references to
9519 NOTE_INSN_CALL_ARG_LOCATION.
9520 (rest_of_clean_state): Likewise. Remove REG_CALL_ARG_LOCATION notes
9521 before dumping final insns.
9522 * except.c (emit_note_eh_region_end): Remove all references to
9523 NOTE_INSN_CALL_ARG_LOCATION.
9524 * config/alpha/alpha.c (alpha_pad_function_end): Likewise.
9525 * config/c6x/c6x.c (c6x_gen_bundles): Likewise.
9526 * config/arc/arc.c (hwloop_optimize): Likewise.
9527 * config/arm/arm.c (create_fix_barrier): Likewise.
9528 * config/s390/s390.c (s390_chunkify_start): Likewise.
9529 * config/sh/sh.c (find_barrier): Likewise.
9530 * config/i386/i386.c (rest_of_insert_endbranch,
9531 ix86_seh_fixup_eh_fallthru): Likewise.
9532 * config/xtensa/xtensa.c (hwloop_optimize): Likewise.
9533 * config/iq2000/iq2000.c (final_prescan_insn): Likewise.
9534 * config/frv/frv.c (frv_function_prologue): Likewise.
9535 * emit-rtl.c (try_split): Likewise. Copy over REG_CALL_ARG_LOCATION
9536 reg note.
9537 (note_outside_basic_block_p): Remove all references to
9538 NOTE_INSN_CALL_ARG_LOCATION.
9539 * gengtype.c (adjust_field_rtx_def): Likewise.
9540 * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn):
9541 Likewise.
9542 * jump.c (cleanup_barriers, delete_related_insns): Likewise.
9543 * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
9544
9545 PR c++/84444
9546 * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
9547 is ADDR_EXPR.
9548
9549 PR tree-optimization/84452
9550 * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call
9551 expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen
9552 is NULL.
9553
9554 2018-02-19 Martin Liska <mliska@suse.cz>
9555
9556 PR sanitizer/82183
9557 * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0.
9558
9559 2018-02-19 Martin Liska <mliska@suse.cz>
9560 Richard Sandiford <richard.sandiford@linaro.org>
9561
9562 PR tree-optimization/82491
9563 * gimple-fold.c (get_base_constructor): Make earlier bail out
9564 to prevent ubsan.
9565
9566 2018-02-19 Carl Love <cel@us.ibm.com>
9567
9568 * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from
9569 BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to
9570 BU_P8V_OVERLOAD_1.
9571 * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to
9572 P8V_BUILTIN_VEC_NEG.
9573
9574 2018-02-19 Sebastian Perta <sebastian.perta@renesas.com>
9575
9576 * config/rl78/rl78.md (movdf): New define expand.
9577
9578 2018-02-19 Martin Liska <mliska@suse.cz>
9579
9580 PR other/80589
9581 * doc/invoke.texi: Fix typo.
9582 * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
9583
9584 2018-02-18 Segher Boessenkool <segher@kernel.crashing.org>
9585
9586 * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
9587 handle rs6000_single_float and rs6000_double_float specially for
9588 e500 family CPUs.
9589
9590 2018-02-16 Jeff Law <law@redhat.com>
9591
9592 * config/rx/rx.c (add_pop_cfi_notes): New function.;
9593 (pop_regs): Use it.
9594
9595 2018-02-16 Jakub Jelinek <jakub@redhat.com>
9596
9597 PR ipa/84425
9598 * ipa-inline.c (inline_small_functions): Fix a typo.
9599
9600 2018-02-16 Nathan Sidwell <nathan@acm.org>
9601
9602 * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'.
9603
9604 2018-02-16 Carl Love <cel@us.ibm.com>
9605
9606 * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition.
9607 Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and
9608 from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2.
9609 * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2
9610 expansion to P8V_BUILTIN_VEC_FLOAT2.
9611
9612 2018-02-16 Vladimir Makarov <vmakarov@redhat.com>
9613
9614 PR rtl-optimization/70023
9615 * lra-constraints.c (inherit_in_ebb): Take hard reg mode of
9616 src_regno into account.
9617
9618 2018-02-16 Carl Love <cel@us.ibm.com>
9619
9620 * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
9621 * config/rs6000/rs6000-builtin.def: Remove macro expansion for
9622 VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B.
9623 * config/rs6000/rs6000.c: Remove case statements for
9624 P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B,
9625 P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
9626 and P9V_BUILTIN_VEC_VINSERT4B.
9627 * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
9628 P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
9629 * config/rs6000/vsx.md:
9630 * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
9631 vec_insert4b.
9632
9633 2018-02-16 Carl Love <cel@us.ibm.com>
9634
9635 * config/rs6000/altivec.h: Add builtin names vec_extract4b
9636 vec_insert4b.
9637 * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
9638 definitions.
9639 * config/rs6000/rs6000-c.c: Add the definitions for
9640 P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
9641 * config/rs6000/rs6000.c (altivec_expand_builtin): Add
9642 P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
9643 * config/rs6000/vsx.md: Add define_insn extract4b. Add define_expand
9644 definition for insert4b and define insn *insert3b_internal.
9645 * doc/extend.texi: Add documentation for vec_extract4b.
9646
9647 2018-02-16 Nathan Sidwell <nathan@acm.org>
9648
9649 * doc/extend.texi (Backwards Compatibility): Mention friend
9650 injection. Note for-scope is deprecated.
9651 * doc/invoke.texi (-ffriend-injection): Deprecate.
9652
9653 2018-02-16 Segher Boessenkool <segher@kernel.crashing.org>
9654
9655 * combine.c (try_combine): When adjusting LOG_LINKS for the destination
9656 that moved to I2, also allow destinations that are a paradoxical
9657 subreg (instead of a normal reg).
9658
9659 2018-02-16 Oleg Endo <olegendo@gcc.gnu.org>
9660
9661 PR target/83831
9662 * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
9663 to QImode.
9664
9665 2018-02-16 Richard Biener <rguenther@suse.de>
9666
9667 PR tree-optimization/84037
9668 PR tree-optimization/84016
9669 PR target/82862
9670 * config/i386/i386.c (ix86_builtin_vectorization_cost):
9671 Adjust vec_construct for the fact we need additional higher latency
9672 128bit inserts for AVX256 and AVX512 vector builds.
9673 (ix86_add_stmt_cost): Scale vector construction cost for
9674 elementwise loads.
9675
9676 2018-02-16 Richard Biener <rguenther@suse.de>
9677
9678 PR tree-optimization/84417
9679 * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain
9680 the MEM_REF offset when conversion to BIT_FIELD_REF is desired.
9681 (non_rewritable_lvalue_p): Likewise, use poly-ints.
9682
9683 2018-02-16 Martin Liska <mliska@suse.cz>
9684
9685 PR sanitizer/84307
9686 * internal-fn.def (ASAN_CHECK): Set proper flags.
9687 (ASAN_MARK): Likewise.
9688
9689 2018-02-16 Julia Koval <julia.koval@intel.com>
9690
9691 * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB
9692 from PTA_CANNONLAKE.
9693
9694 2018-02-16 Jakub Jelinek <jakub@redhat.com>
9695
9696 PR target/84272
9697 * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest):
9698 Use ++iter rather than iter++ for std::list iterators.
9699 (func_fma_steering::dfs): Likewise. Don't delete nodes right away,
9700 defer deleting them until all nodes in the forest are processed. Do
9701 free even leaf nodes. Change to_process into auto_vec.
9702
9703 PR bootstrap/84405
9704 * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3.
9705 * vec.h (vec_default_construct): Use memset instead of placement new
9706 if BROKEN_VALUE_INITIALIZATION is defined.
9707 * hash-table.h (hash_table<Descriptor, Allocator>::empty_slow): Use
9708 memset instead of value initialization if BROKEN_VALUE_INITIALIZATION
9709 is defined.
9710
9711 PR rtl-optimization/83723
9712 * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument.
9713 * lra.c (lra_substitute_pseudo): Likewise. If true, use
9714 gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG. Pass DEBUG_P to
9715 recursive calls.
9716 (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
9717 callers.
9718 * lra-constraints.c (inherit_reload_reg, split_reg): Likewise.
9719
9720 2018-02-16 Eric Botcazou <ebotcazou@adacore.com>
9721
9722 PR rtl-optimization/81443
9723 * rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
9724 from inner REGs to paradoxical SUBREGs.
9725
9726 2018-02-16 Richard Biener <rguenther@suse.de>
9727
9728 PR tree-optimization/84399
9729 * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
9730 For operands we can analyze at their definition make sure we can
9731 analyze them at each use as well.
9732
9733 2018-02-16 Richard Biener <rguenther@suse.de>
9734
9735 PR tree-optimization/84190
9736 * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
9737 volatile accesses if the decl isn't volatile.
9738
9739 2018-02-15 Jason Merrill <jason@redhat.com>
9740
9741 PR c++/84314 - ICE with templates and fastcall attribute.
9742 * attribs.c (build_type_attribute_qual_variant): Don't clobber
9743 TYPE_CANONICAL on an existing type.
9744
9745 2018-02-15 Jakub Jelinek <jakub@redhat.com>
9746
9747 PR tree-optimization/84383
9748 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at
9749 dstoff nor call operand_equal_p if dstbase is NULL.
9750
9751 PR tree-optimization/84334
9752 * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is
9753 also a CONSTANT_CLASS_P, punt.
9754
9755 2018-02-14 Jim Wilson <jimw@sifive.com>
9756
9757 * config/riscv/riscv.c (riscv_first_stack_step): Move locals after
9758 first SMALL_OPERAND check. New local min_second_step. Move assert
9759 to where locals are set. Add TARGET_RVC support.
9760 * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New.
9761
9762 2018-02-14 Indu Bhagat <indu.bhagat@oracle.com>
9763
9764 * doc/invoke.texi: Correct -Wformat-overflow code sample.
9765
9766 2018-02-14 Martin Sebor <msebor@redhat.com>
9767
9768 PR tree-optimization/83698
9769 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For
9770 arrays constrain the offset range to their bounds.
9771 (builtin_access::strcat_overlap): Adjust the bounds of overlap offset.
9772 (builtin_access::overlap): Avoid setting the size of overlap if it's
9773 already been set.
9774 (maybe_diag_overlap): Also consider arrays when deciding what values
9775 of offsets to include in diagnostics.
9776
9777 2018-02-14 Martin Sebor <msebor@redhat.com>
9778
9779 PR c/84108
9780 * attribs.c (diag_attr_exclusions): Consider the exclusion(s)
9781 that correspond to the kind of a declaration.
9782
9783 2018-02-14 John David Anglin <danglin@gcc.gnu.org>
9784
9785 PR target/83984
9786 * config/pa/pa.md: Load address of PIC label using the linkage table
9787 if the label is nonlocal.
9788
9789 2018-02-14 Kelvin Nilsen <kelvin@gcc.gnu.org>
9790
9791 * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue
9792 warning message if user requests -maltivec=be.
9793 * doc/invoke.texi: Document deprecation of -maltivec=be.
9794
9795 2018-02-14 Will Schmidt <will_schmidt@vnet.ibm.com>
9796
9797 PR target/84220
9798 * config/rs6000/rs6000-c.c: Update definitions for
9799 ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW,
9800 VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins.
9801
9802 2018-02-14 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
9803
9804 PR target/84239
9805 * config/i386/cetintrin.h: Remove _rdssp[d|q] and
9806 add _get_ssp intrinsics. Remove argument from
9807 __builtin_ia32_rdssp[d|q].
9808 * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
9809 * config/i386/i386-builtin.def: Remove argument from
9810 __builtin_ia32_rdssp[d|q].
9811 * config/i386/i386.c: Use UINT_FTYPE_VOID. Use
9812 ix86_expand_special_args_builtin for _rdssp[d|q].
9813 * config/i386/i386.md: Remove argument from rdssp[si|di] insn.
9814 Clear register before usage.
9815 * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
9816 Add documentation for new _get_ssp and _inc_ssp intrinsics.
9817
9818 2018-02-14 Richard Sandiford <richard.sandiford@linaro.org>
9819
9820 PR tree-optimization/84357
9821 * tree-data-ref.c (object_address_invariant_in_loop_p): Check
9822 operand 1 of an ARRAY_REF too.
9823
9824 2018-02-14 Oleg Endo <olegendo@gcc.gnu.org>
9825
9826 PR target/83831
9827 * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn,
9828 rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
9829 declarations.
9830 (set_of_reg): New struct.
9831 (rx_find_set_of_reg, rx_find_use_of_reg): New functions.
9832 * config/rx/rx.c (rx_reg_dead_or_unused_after_insn,
9833 rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
9834 functions.
9835 * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split.
9836 Split into bitclr, bitset, bitinvert patterns if appropriate.
9837 (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and
9838 use rx_fuse_in_memory_bitop.
9839 (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
9840 to named insn, correct maximum insn length.
9841
9842 2018-02-14 Jozef Lawrynowicz <jozefl.gcc@gmail.com>
9843
9844 PR target/79242
9845 * machmode.def: Define a complex mode for PARTIAL_INT.
9846 * genmodes.c (complex_class): Return MODE_COMPLEX_INT for
9847 MODE_PARTIAL_INT.
9848 * doc/rtl.texi: Document CSPImode.
9849 * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
9850 handling.
9851 (msp430_hard_regno_nregs_with_padding): Likewise.
9852
9853 2018-02-13 Peter Bergner <bergner@vnet.ibm.com>
9854
9855 PR target/84279
9856 * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
9857
9858 2018-02-13 Segher Boessenkool <segher@kernel.crashing.org>
9859
9860 PR rtl-optimization/84169
9861 * combine.c (try_combine): New variable split_i2i3. Set it to true if
9862 we generated a parallel as new i3 and we split that to new i2 and i3
9863 instructions. Handle split_i2i3 similar to swap_i2i3: scan the
9864 LOG_LINKs of i3 to see which of those need to link to i2 now. Link
9865 those to i2, not i1. Partially rewrite this scan code.
9866
9867 2018-02-13 Jakub Jelinek <jakub@redhat.com>
9868
9869 PR c/82210
9870 * stor-layout.c (place_field): For variable length fields, adjust
9871 offset_align afterwards not just based on the field's alignment,
9872 but also on the size.
9873
9874 PR middle-end/84309
9875 * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead
9876 of exps and logs in the use_exp2 case.
9877
9878 2018-02-13 Jeff Law <law@redhat.com>
9879
9880 * config/rl/rl78.c (rl78_attribute_table): Fix terminator and
9881 entry for "vector".
9882
9883 * config/rl78/rl78.c (rl78_handle_func_attribute): Mark
9884 ARGS as unused.
9885
9886 2018-02-13 Alexandre Oliva <aoliva@redhat.com>
9887
9888 PR debug/84342
9889 PR debug/84319
9890 * common.opt (gas-loc-support, gas-locview-support): New.
9891 (ginline-points, ginternal-reset-location-views): New.
9892 * doc/invoke.texi: Document them. Use @itemx where intended.
9893 (gvariable-location-views): Adjust.
9894 * target.def (reset_location_view): New.
9895 * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
9896 (TARGET_RESET_LOCATION_VIEW): New.
9897 * doc/tm.texi: Rebuilt.
9898 * dwarf2out.c (dwarf2out_default_as_loc_support): New.
9899 (dwarf2out_default_as_locview_support): New.
9900 (output_asm_line_debug_info): Use option variables.
9901 (dwarf2out_maybe_output_loclist_view_pair): Likewise.
9902 (output_loc_list): Likewise.
9903 (add_high_low_attributes): Check option variables.
9904 Don't output entry view attribute in strict mode.
9905 (gen_inlined_subroutine_die): Check option variables.
9906 (dwarf2out_inline_entry): Likewise.
9907 (init_sections_and_labels): Likewise.
9908 (dwarf2out_early_finish): Likewise.
9909 (maybe_reset_location_view): New, from...
9910 (dwarf2out_var_location): ... here. Call it.
9911 * debug.h (dwarf2out_default_as_loc_support): Declare.
9912 (dwarf2out_default_as_locview_support): Declare.
9913 * hooks.c (hook_int_rtx_insn_0): New.
9914 * hooks.h (hook_int_rtx_insn_0): Declare.
9915 * toplev.c (process_options): Take -gas-loc-support and
9916 -gas-locview-support from dwarf2out. Enable
9917 -gvariable-location-views by default only with locview
9918 assembler support. Enable -ginternal-reset-location-views by
9919 default only if the target defines the corresponding hook.
9920 Enable -ginline-points by default if location views are
9921 enabled; force it disabled if statement frontiers are
9922 disabled.
9923 * tree-inline.c (expand_call_inline): Check option variables.
9924 * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
9925
9926 2018-02-13 Richard Sandiford <richard.sandiford@linaro.org>
9927
9928 PR tree-optimization/84321
9929 * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE
9930 handling. Also check whether the anti-range contains any values
9931 that satisfy the mask; switch to a VR_RANGE if not.
9932
9933 2018-02-13 Paolo Bonzini <bonzini@gnu.org>
9934
9935 PR sanitizer/84340
9936 * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
9937
9938 2018-02-13 Martin Jambor <mjambor@suse.cz>
9939
9940 PR c++/83990
9941 * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location
9942 of call statements, also set location of a load to a temporary.
9943
9944 2018-02-13 Sebastian Perta <sebastian.perta@renesas.com>
9945
9946 * config/rl78/rl78.c (add_vector_labels): New function.
9947 * config/rl78/rl78.c (rl78_handle_vector_attribute): New function.
9948 * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels.
9949 * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert
9950 which checks that no arguments are passed.
9951 * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute.
9952 * doc/extend.texi: Documentation for the new attribute.
9953
9954 2018-02-13 Andreas Schwab <schwab@suse.de>
9955
9956 * config/riscv/linux.h (CPP_SPEC): Define.
9957
9958 2018-02-13 Jakub Jelinek <jakub@redhat.com>
9959
9960 PR target/84335
9961 * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass
9962 OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of
9963 OPTION_MASK_ISA_AES as first argument to def_builtin_const
9964 for AES builtins. Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2
9965 instead of OPTION_MASK_ISA_PCLMUL as first argument to
9966 def_builtin_const for __builtin_ia32_pclmulqdq128 builtin.
9967 * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it
9968 temporarily for AES and PCLMUL builtins.
9969
9970 PR tree-optimization/84339
9971 * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling
9972 ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF.
9973 Formatting fixes.
9974
9975 PR middle-end/84309
9976 * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into
9977 exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available.
9978 * generic-match-head.c (canonicalize_math_after_vectorization_p): New
9979 inline function.
9980 * gimple-match-head.c (canonicalize_math_after_vectorization_p): New
9981 inline function.
9982 * omp-simd-clone.h: New file.
9983 * omp-simd-clone.c: Include omp-simd-clone.h.
9984 (expand_simd_clones): No longer static.
9985 * tree-vect-patterns.c: Include fold-const-call.h, attribs.h,
9986 cgraph.h and omp-simd-clone.h.
9987 (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x).
9988 (vect_recog_widen_shift_pattern): Formatting fix.
9989 (vect_pattern_recog_1): Don't check optab for calls.
9990
9991 PR target/84336
9992 * config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
9993 operands[2] into a REG before using gen_lowpart on it.
9994
9995 2018-02-12 Jeff Law <law@redhat.com>
9996
9997 PR target/83760
9998 * config/sh/sh.c (find_barrier): Consider a sibling call
9999 a barrier as well.
10000
10001 * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
10002 successfully back substituting a reg.
10003
10004 2018-02-12 Richard Biener <rguenther@suse.de>
10005
10006 PR tree-optimization/84037
10007 * tree-vect-slp.c (vect_analyze_slp_cost): Add visited
10008 parameter, move visited init to caller.
10009 (vect_slp_analyze_operations): Separate cost from validity
10010 check, initialize visited once for all instances.
10011 (vect_schedule_slp): Analyze map to CSE vectorized nodes once
10012 for all instances.
10013 * tree-vect-stmts.c (vect_model_simple_cost): Make early
10014 out an assert.
10015 (vect_model_promotion_demotion_cost): Likewise.
10016 (vectorizable_bswap): Guard cost modeling with !slp_node
10017 instead of !PURE_SLP_STMT to avoid double-counting on hybrid
10018 SLP stmts.
10019 (vectorizable_call): Likewise.
10020 (vectorizable_conversion): Likewise.
10021 (vectorizable_assignment): Likewise.
10022 (vectorizable_shift): Likewise.
10023 (vectorizable_operation): Likewise.
10024 (vectorizable_store): Likewise.
10025 (vectorizable_load): Likewise.
10026 (vectorizable_condition): Likewise.
10027 (vectorizable_comparison): Likewise.
10028
10029 2018-02-12 Paolo Bonzini <bonzini@gnu.org>
10030
10031 PR sanitizer/84307
10032 * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
10033 (ASAN_MARK): Fix fnspec to account for return value, change pointer
10034 argument from 'R' to 'W' so that the pointed-to datum is clobbered.
10035
10036 2018-02-08 Jan Hubicka <hubicka@ucw.cz>
10037
10038 PR middle-end/83665
10039 * params.def (inline-min-speedup): Increase from 8 to 15.
10040 (max-inline-insns-auto): Decrease from 40 to 30.
10041 * ipa-split.c (consider_split): Add some buffer for function to
10042 be considered inlining candidate.
10043 * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
10044 default values.
10045
10046 2018-02-12 Richard Biener <rguenther@suse.de>
10047
10048 PR tree-optimization/84037
10049 * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the
10050 matched stmts if we cannot swap the non-matched ones.
10051
10052 2018-02-12 Olga Makhotina <olga.makhotina@intel.com>
10053
10054 * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd,
10055 _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss,
10056 _mm_maskz_scalef_round_ss): New intrinsics.
10057 (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix.
10058 * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round,
10059 __builtin_ia32_scalefss_round): Remove.
10060 (__builtin_ia32_scalefsd_mask_round,
10061 __builtin_ia32_scalefss_mask_round): New intrinsics.
10062 * config/i386/sse.md (vmscalef<mode><round_name>): Renamed to ...
10063 (vmscalef<mode><mask_scalar_name><round_scalar_name>): ... this.
10064 ((match_operand:VF_128 2 "<round_nimm_predicate>"
10065 "<round_constraint>")): Changed to ...
10066 ((match_operand:VF_128 2 "<round_scalar_nimm_predicate>"
10067 "<round_scalar_constraint>")): ... this.
10068 ("vscalef<ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|
10069 %0, %1, %2<round_op3>}"): Changed to ...
10070 ("vscalef<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1,
10071 %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1,
10072 %2<round_scalar_mask_op3>}"): ... this.
10073 * config/i386/subst.md (round_scalar_nimm_predicate): New.
10074
10075 2018-02-12 Olga Makhotina <olga.makhotina@intel.com>
10076
10077 * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd)
10078 (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss)
10079 (_mm_maskz_sqrt_round_ss): New intrinsics.
10080 (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove.
10081 (__builtin_ia32_sqrtsd_mask_round)
10082 (__builtin_ia32_sqrtss_mask_round): New builtins.
10083 * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round)
10084 (__builtin_ia32_sqrtss_round): Remove.
10085 (__builtin_ia32_sqrtsd_mask_round)
10086 (__builtin_ia32_sqrtss_mask_round): New builtins.
10087 * config/i386/sse.md (vmsqrt<mode>2<round_name>): Renamed to ...
10088 (vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): ... this.
10089 ((match_operand:VF_128 1 "vector_operand"
10090 "xBm,<round_constraint>")): Changed to ...
10091 ((match_operand:VF_128 1 "vector_operand"
10092 "xBm,<round_scalar_constraint>")): ... this.
10093 (vsqrt<ssescalarmodesuffix>\t{<round_op3>%1, %2, %0|
10094 %0, %2, %<iptr>1<round_op3>}): Changed to ...
10095 (vsqrt<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%1, %2,
10096 %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %2,
10097 %<iptr>1<round_scalar_mask_op3>}): ... this.
10098 ((set_attr "prefix" "<round_prefix>")): Changed to ...
10099 ((set_attr "prefix" "<round_scalar_prefix>")): ... this.
10100
10101 2018-02-11 Steven Munroe <munroesj@gcc.gnu.org>
10102
10103 PR target/84266
10104 * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
10105 Cast vec_cmpeq result to correct type.
10106 * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
10107 Cast vec_cmpgt result to correct type.
10108
10109 2018-02-11 Alexandre Oliva <aoliva@redhat.com>
10110
10111 * final.c (final_scan_insn_1): Renamed from...
10112 (final_scan_insn): ... this. New wrapper, to recover
10113 seen from the outermost call in recursive ones.
10114 * config/sparc/sparc.c (output_return): Drop seen from call.
10115 (output_sibcall): Likewise.
10116 * config/visium/visium.c (output_branch): Likewise.
10117
10118 2018-02-10 John David Anglin <danglin@gcc.gnu.org>
10119
10120 * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
10121 function label.
10122
10123 2018-02-10 Alan Modra <amodra@gmail.com>
10124
10125 PR target/84300
10126 * config/rs6000/rs6000.md (split_stack_return): Remove (use ..).
10127 Specify LR as an input.
10128
10129 2018-02-10 Jakub Jelinek <jakub@redhat.com>
10130
10131 PR sanitizer/83987
10132 * omp-low.c (maybe_remove_omp_member_access_dummy_vars,
10133 remove_member_access_dummy_vars): New functions.
10134 (lower_omp_for, lower_omp_taskreg, lower_omp_target,
10135 lower_omp_1, execute_lower_omp): Use them.
10136
10137 PR rtl-optimization/84308
10138 * shrink-wrap.c (spread_components): Release todo vector.
10139
10140 2018-02-09 Vladimir Makarov <vmakarov@redhat.com>
10141
10142 PR rtl-optimization/57193
10143 * ira-color.c (struct allocno_color_data): Add member
10144 conflict_allocno_hard_prefs.
10145 (update_conflict_allocno_hard_prefs): New.
10146 (bucket_allocno_compare_func): Add a preference based on
10147 conflict_allocno_hard_prefs.
10148 (push_allocno_to_stack): Update conflict_allocno_hard_prefs.
10149 (color_allocnos): Remove a dead code. Initiate
10150 conflict_allocno_hard_prefs. Call update_costs_from_prefs.
10151
10152 2018-02-09 Jakub Jelinek <jakub@redhat.com>
10153
10154 PR target/84226
10155 * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand
10156 constraint from =wa to wa. Avoid a subreg on the output operand,
10157 instead use a pseudo and subreg it in a move.
10158 (p9_xxbrd_<mode>): Changed to ...
10159 (p9_xxbrd_v2di): ... this insn, without VSX_D iterator.
10160 (p9_xxbrd_v2df): New expander.
10161 (p9_xxbrw_<mode>): Changed to ...
10162 (p9_xxbrw_v4si): ... this insn, without VSX_W iterator.
10163 (p9_xxbrw_v4sf): New expander.
10164
10165 2018-02-09 Sebastian Perta <sebastian.perta@renesas.com>
10166
10167 * config/rx/rx.md (movsicc): Update expander to be matched by GCC.
10168
10169 2018-02-09 Peter Bergner <bergner@vnet.ibm.com>
10170
10171 PR target/83926
10172 * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit
10173 multiply in 32-bit mode.
10174 (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode.
10175 (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit
10176 mode.
10177
10178 2018-02-09 Sebastian Perta <sebastian.perta@renesas.com>
10179
10180 * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint
10181 to allow or block "symbol_ref" depending on the value of TARGET_JSR.
10182 * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF.
10183 * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF.
10184
10185 2018-02-09 Pierre-Marie de Rodat <derodat@adacore.com>
10186
10187 PR lto/84213
10188 * dwarf2out.c (is_trivial_indirect_ref): New function.
10189 (dwarf2out_late_global_decl): Do not generate a location
10190 attribute for variables that have a non-trivial DECL_VALUE_EXPR
10191 and that are not defined in the current unit.
10192
10193 2018-02-09 Eric Botcazou <ebotcazou@adacore.com>
10194
10195 * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison
10196 instead of a libcall for UNORDERED.
10197
10198 2018-02-09 Tamar Christina <tamar.christina@arm.com>
10199
10200 PR target/82641
10201 * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX,
10202 __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP.
10203
10204 2018-02-09 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
10205
10206 PR target/PR84295
10207 * config/s390/s390.c (s390_set_current_function): Invoke
10208 s390_indirect_branch_settings also if fndecl didn't change.
10209
10210 2018-02-09 Alexandre Oliva <aoliva@redhat.com>
10211
10212 * config/rs6000/rs6000.md (blockage): Set length to zero.
10213
10214 2018-02-09 Eric Botcazou <ebotcazou@adacore.com>
10215
10216 * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
10217
10218 2018-02-09 Jakub Jelinek <jakub@redhat.com>
10219
10220 PR sanitizer/84285
10221 * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
10222 STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
10223 -static-lib*san.
10224
10225 PR debug/84252
10226 * var-tracking.c (vt_add_function_parameter): Punt for non-onepart
10227 PARALLEL incoming that failed vt_get_decl_and_offset check.
10228
10229 PR middle-end/84237
10230 * output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
10231 * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
10232 TREE_READONLY bit.
10233 (get_variable_section): For decls in named .bss* sections pass true as
10234 second argument to bss_initializer_p.
10235
10236 2018-02-09 Marek Polacek <polacek@redhat.com>
10237 Jakub Jelinek <jakub@redhat.com>
10238
10239 PR c++/83659
10240 * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
10241 Formatting fixes. Verify first that tree_fits_poly_int64_p (op01).
10242 Sync some changes from cxx_fold_indirect_ref.
10243
10244 2018-02-09 Alexandre Oliva <aoliva@redhat.com>
10245
10246 * cfgexpand.c (expand_gimple_basic_block): Handle inline entry
10247 markers.
10248 * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
10249 (BLOCK_INLINE_ENTRY_LABEL): New.
10250 (dwarf2out_var_location): Disregard inline entry markers.
10251 (inline_entry_data): New struct.
10252 (inline_entry_data_hasher): New hashtable type.
10253 (inline_entry_data_hasher::hash): New.
10254 (inline_entry_data_hasher::equal): New.
10255 (inline_entry_data_table): New variable.
10256 (add_high_low_attributes): Add DW_AT_entry_pc and
10257 DW_AT_GNU_entry_view attributes if a pending entry is found
10258 in inline_entry_data_table. Add old entry_pc attribute only
10259 if debug nonbinding markers are disabled.
10260 (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
10261 markers are enabled.
10262 (block_within_block_p, dwarf2out_inline_entry): New.
10263 (dwarf2out_finish): Check that no entries remained in
10264 inline_entry_data_table.
10265 * final.c (reemit_insn_block_notes): Handle inline entry notes.
10266 (final_scan_insn, notice_source_line): Likewise.
10267 (rest_of_clean_state): Skip inline entry markers.
10268 * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
10269 markers.
10270 * gimple.c (gimple_build_debug_inline_entry): New.
10271 * gimple.h (enum gimple_debug_subcode): Add
10272 GIMPLE_DEBUG_INLINE_ENTRY.
10273 (gimple_build_debug_inline_entry): Declare.
10274 (gimple_debug_inline_entry_p): New.
10275 (gimple_debug_nonbind_marker_p): Adjust.
10276 * insn-notes.def (INLINE_ENTRY): New.
10277 * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
10278 inline entry marker notes.
10279 (print_insn): Likewise.
10280 * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support.
10281 (INSN_DEBUG_MARKER_KIND): Likewise.
10282 (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
10283 * tree-inline.c (expand_call_inline): Build and insert
10284 debug_inline_entry stmt.
10285 * tree-ssa-live.c (remove_unused_scope_block_p): Preserve
10286 inline entry blocks early, if nonbind markers are enabled.
10287 (dump_scope_block): Dump fragment info.
10288 * var-tracking.c (reemit_marker_as_note): Handle inline entry note.
10289 * doc/gimple.texi (gimple_debug_inline_entry_p): New.
10290 (gimple_build_debug_inline_entry): New.
10291 * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
10292 Enable/disable inline entry points too.
10293 * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
10294 (DEBUG_INSN): Describe inline entry markers.
10295
10296 * common.opt (gvariable-location-views): New.
10297 (gvariable-location-views=incompat5): New.
10298 * config.in: Rebuilt.
10299 * configure: Rebuilt.
10300 * configure.ac: Test assembler for view support.
10301 * dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
10302 * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
10303 * dwarf2out.c (var_loc_view): New typedef.
10304 (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
10305 (dwarf2out_locviews_in_attribute): New.
10306 (dwarf2out_locviews_in_loclist): New.
10307 (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
10308 (enum dw_line_info_opcode): Add LI_adv_address.
10309 (struct dw_line_info_table): Add view.
10310 (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
10311 (DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
10312 (zero_view_p): New variable.
10313 (ZERO_VIEW_P): New macro.
10314 (output_asm_line_debug_info): New.
10315 (struct var_loc_node): Add view.
10316 (add_AT_view_list, AT_loc_list): New.
10317 (add_var_loc_to_decl): Add view param. Test it against last.
10318 (new_loc_list): Add view params. Record them.
10319 (AT_loc_list_ptr): Handle loc and view lists.
10320 (view_list_to_loc_list_val_node): New.
10321 (print_dw_val): Handle dw_val_class_view_list.
10322 (size_of_die): Likewise.
10323 (value_format): Likewise.
10324 (loc_list_has_views): New.
10325 (gen_llsym): Set vl_symbol too.
10326 (maybe_gen_llsym, skip_loc_list_entry): New.
10327 (dwarf2out_maybe_output_loclist_view_pair): New.
10328 (output_loc_list): Output view list or entries too.
10329 (output_view_list_offset): New.
10330 (output_die): Handle dw_val_class_view_list.
10331 (output_dwarf_version): New.
10332 (output_compilation_unit_header): Use it.
10333 (output_skeleton_debug_sections): Likewise.
10334 (output_rnglists, output_line_info): Likewise.
10335 (output_pubnames, output_aranges): Update version comments.
10336 (output_one_line_info_table): Output view numbers in asm comments.
10337 (dw_loc_list): Determine current endview, pass it to new_loc_list.
10338 Call maybe_gen_llsym.
10339 (loc_list_from_tree_1): Adjust.
10340 (add_AT_location_description): Create view list attribute if
10341 needed, check it's absent otherwise.
10342 (convert_cfa_to_fb_loc_list): Adjust.
10343 (maybe_emit_file): Call output_asm_line_debug_info for test.
10344 (dwarf2out_var_location): Reset views as needed. Precompute
10345 add_var_loc_to_decl args. Call get_attr_min_length only if we have the
10346 attribute. Set view.
10347 (new_line_info_table): Reset next view.
10348 (set_cur_line_info_table): Call output_asm_line_debug_info for test.
10349 (dwarf2out_source_line): Likewise. Output view resets and labels to
10350 the assembler, or select appropriate line info opcodes.
10351 (prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
10352 (optimize_string_length): Catch it. Adjust.
10353 (resolve_addr): Copy vl_symbol along with ll_symbol. Handle
10354 dw_val_class_view_list, and remove it if no longer needed.
10355 (hash_loc_list): Hash view numbers.
10356 (loc_list_hasher::equal): Compare them.
10357 (optimize_location_lists): Check whether a view list symbol is
10358 needed, and whether the locview attribute is present, and
10359 whether they match. Remove the locview attribute if no longer
10360 needed.
10361 (index_location_lists): Call skip_loc_list_entry for test.
10362 (dwarf2out_finish): Call output_asm_line_debug_info for test.
10363 Use output_dwarf_version.
10364 * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
10365 (struct dw_val_node): Add val_view_list.
10366 * final.c (SEEN_NEXT_VIEW): New.
10367 (set_next_view_needed): New.
10368 (clear_next_view_needed): New.
10369 (maybe_output_next_view): New.
10370 (final_start_function): Rename to...
10371 (final_start_function_1): ... this. Take pointer to FIRST,
10372 add SEEN parameter. Emit param bindings in the initial view.
10373 (final_start_function): Reintroduce SEEN-less interface.
10374 (final): Rename to...
10375 (final_1): ... this. Take SEEN parameter. Output final pending
10376 next view at the end.
10377 (final): Reintroduce seen-less interface.
10378 (final_scan_insn): Output pending next view before switching
10379 sections or ending a block. Mark the next view as needed when
10380 outputting variable locations. Notify debug backend of section
10381 changes, and of location view changes.
10382 (rest_of_handle_final): Adjust.
10383 * toplev.c (process_options): Autodetect value for debug variable
10384 location views option. Warn on incompat5 without -gdwarf-5.
10385 * doc/invoke.texi (gvariable-location-views): New.
10386 (gvariable-location-views=incompat5): New.
10387 (gno-variable-location-views): New.
10388
10389 2018-02-08 David Malcolm <dmalcolm@redhat.com>
10390
10391 PR tree-optimization/84136
10392 * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion
10393 that the result of find_edge is non-NULL.
10394
10395 2018-02-08 Sergey Shalnov <sergey.shalnov@intel.com>
10396
10397 PR target/83008
10398 * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of
10399 storing integer register in SImode. Fix cost of 256 and 512
10400 byte aligned SSE register store.
10401
10402 2018-02-08 Sergey Shalnov <sergey.shalnov@intel.com>
10403
10404 * config/i386/i386.c (ix86_multiplication_cost): Fix
10405 multiplication cost for TARGET_AVX512DQ.
10406
10407 2018-02-08 Marek Polacek <polacek@redhat.com>
10408
10409 PR tree-optimization/84238
10410 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
10411 get_range_strlen.
10412
10413 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
10414
10415 PR tree-optimization/84265
10416 * tree-vect-stmts.c (vectorizable_store): Don't treat
10417 VMAT_CONTIGUOUS accesses as grouped.
10418 (vectorizable_load): Likewise.
10419
10420 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
10421
10422 PR tree-optimization/81635
10423 * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
10424 * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
10425 (test_round_for_mask): New functions.
10426 (wide_int_cc_tests): Call test_round_for_mask.
10427 * tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
10428 * tree-vrp.c (intersect_range_with_nonzero_bits): New function.
10429 * tree-data-ref.c (split_constant_offset_1): Use it to refine the
10430 range returned by get_range_info.
10431
10432 2018-02-08 Jan Hubicka <hubicka@ucw.cz>
10433
10434 PR ipa/81360
10435 * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
10436 * symtab.c: Include builtins.h
10437 (symtab_node::output_to_lto_symbol_table_p): Move here
10438 from lto-streamer-out.c:output_symbol_p.
10439 * lto-streamer-out.c (write_symbol): Turn early exit to assert.
10440 (output_symbol_p): Move all logic to symtab.c
10441 (produce_symtab): Update.
10442
10443 2018-02-08 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
10444
10445 * config/s390/s390-opts.h (enum indirect_branch): Define.
10446 * config/s390/s390-protos.h (s390_return_addr_from_memory)
10447 (s390_indirect_branch_via_thunk)
10448 (s390_indirect_branch_via_inline_thunk): Add function prototypes.
10449 (enum s390_indirect_branch_type): Define.
10450 * config/s390/s390.c (struct s390_frame_layout, struct
10451 machine_function): Remove.
10452 (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
10453 (indirect_branch_table_label_no, indirect_branch_table_name):
10454 Define variables.
10455 (INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
10456 (enum s390_indirect_branch_option): Define.
10457 (s390_return_addr_from_memory): New function.
10458 (s390_handle_string_attribute): New function.
10459 (s390_attribute_table): Add new attribute handler.
10460 (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
10461 (s390_indirect_branch_via_thunk): New function.
10462 (s390_indirect_branch_via_inline_thunk): New function.
10463 (s390_function_ok_for_sibcall): When jumping via thunk disallow
10464 sibling call optimization for non z10 compiles.
10465 (s390_emit_call): Force indirect branch target to be a single
10466 register. Add r1 clobber for non-z10 compiles.
10467 (s390_emit_epilogue): Emit return jump via return_use expander.
10468 (s390_reorg): Handle JUMP_INSNs as execute targets.
10469 (s390_option_override_internal): Perform validity checks for the
10470 new command line options.
10471 (s390_indirect_branch_attrvalue): New function.
10472 (s390_indirect_branch_settings): New function.
10473 (s390_set_current_function): Invoke s390_indirect_branch_settings.
10474 (s390_output_indirect_thunk_function): New function.
10475 (s390_code_end): Implement target hook.
10476 (s390_case_values_threshold): Implement target hook.
10477 (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
10478 macros.
10479 * config/s390/s390.h (struct s390_frame_layout)
10480 (struct machine_function): Move here from s390.c.
10481 (TARGET_INDIRECT_BRANCH_NOBP_RET)
10482 (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
10483 (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
10484 (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
10485 (TARGET_INDIRECT_BRANCH_NOBP_CALL)
10486 (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
10487 (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
10488 (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
10489 (TARGET_INDIRECT_BRANCH_TABLE): Define macros.
10490 * config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
10491 (INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
10492 (mnemonic attribute): Add values which aren't recognized
10493 automatically.
10494 ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
10495 pattern for branch conversion. Fix mnemonic attribute.
10496 ("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
10497 indirect branch via thunk if requested.
10498 ("indirect_jump", "<code>"): Expand patterns for branch conversion.
10499 ("*indirect_jump"): Disable for branch conversion using out of
10500 line thunks.
10501 ("indirect_jump_via_thunk<mode>_z10")
10502 ("indirect_jump_via_thunk<mode>")
10503 ("indirect_jump_via_inlinethunk<mode>_z10")
10504 ("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
10505 ("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
10506 ("casesi_jump_via_inlinethunk<mode>_z10")
10507 ("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
10508 ("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
10509 ("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
10510 ("*indirect2_jump"): Disable for branch conversion.
10511 ("casesi_jump"): Turn into expander and expand patterns for branch
10512 conversion.
10513 ("return_use"): New expander.
10514 ("*return"): Emit return via thunk and rename it to ...
10515 ("*return<mode>"): ... this one.
10516 * config/s390/s390.opt: Add new options and and enum for the
10517 option values.
10518
10519 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
10520
10521 * lra-constraints.c (match_reload): Unconditionally use
10522 gen_lowpart_SUBREG, rather than selecting between that
10523 and equivalent gen_rtx_SUBREG code.
10524
10525 2018-02-08 Richard Biener <rguenther@suse.de>
10526
10527 PR tree-optimization/84233
10528 * tree-ssa-phiprop.c (propagate_with_phi): Use separate
10529 changed flag instead of boguously re-using phi_inserted.
10530
10531 2018-02-08 Martin Jambor <mjambor@suse.cz>
10532
10533 * hsa-gen.c (get_symbol_for_decl): Set program allocation for
10534 static local variables.
10535
10536 2018-02-08 Richard Biener <rguenther@suse.de>
10537
10538 PR tree-optimization/84278
10539 * tree-vect-stmts.c (vectorizable_store): When looking for
10540 smaller vector types to perform grouped strided loads/stores
10541 make sure the mode is supported by the target.
10542 (vectorizable_load): Likewise.
10543
10544 2018-02-08 Wilco Dijkstra <wdijkstr@arm.com>
10545
10546 * config/aarch64/aarch64.c (aarch64_components_for_bb):
10547 Increase LDP/STP opportunities by adding adjacent callee-saves.
10548
10549 2018-02-08 Wilco Dijkstra <wdijkstr@arm.com>
10550
10551 PR rtl-optimization/84068
10552 PR rtl-optimization/83459
10553 * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
10554
10555 2018-02-08 Aldy Hernandez <aldyh@redhat.com>
10556
10557 PR tree-optimization/84224
10558 * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
10559 * calls.c (gimple_alloca_call_p): Only return TRUE when we have
10560 non-zero arguments.
10561
10562 2018-02-07 Iain Sandoe <iain@codesourcery.com>
10563
10564 PR target/84113
10565 * config/rs6000/altivec.md (*restore_world): Remove LR use.
10566 * config/rs6000/predicates.md (restore_world_operation): Adjust op
10567 count, remove one USE.
10568
10569 2018-02-07 Michael Meissner <meissner@linux.vnet.ibm.com>
10570
10571 * doc/install.texi (Configuration): Document the
10572 --with-long-double-format={ibm,ieee} PowerPC configuration
10573 options.
10574
10575 PR target/84154
10576 * config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
10577 Convert from define_expand to be define_insn_and_split. Rework
10578 float/double/_Float128 conversions to QI/HI/SImode to work with
10579 both ISA 2.07 (power8) or ISA 3.0 (power9). Fix regression where
10580 conversions to QI/HImode types did a store and then a load to
10581 truncate the value. For conversions to VSX registers, don't split
10582 the insn, instead emit the code directly. Use the code iterator
10583 any_fix to combine signed and unsigned conversions.
10584 (fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
10585 (fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
10586 (fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
10587 (fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
10588 (fix_<mode>di2_hw): Likewise.
10589 (fixuns_<mode>di2_hw): Likewise.
10590 (fix_<mode>si2_hw): Likewise.
10591 (fixuns_<mode>si2_hw): Likewise.
10592 (fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
10593 (fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
10594 (fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
10595 fix<uns>_trunc<SFDF:mode>si2_p8.
10596 (fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer used.
10597 (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
10598 (fix<uns>_<mode>_mem): Likewise.
10599 (fctiw<u>z_<mode>_mem): Likewise.
10600 (fix<uns>_<mode>_mem): Likewise.
10601 (fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
10602 the register allocator from doing a direct move to the GPRs to do
10603 a store, and instead use the ISA 3.0 store byte/half-word from
10604 vector register instruction. For IEEE 128-bit floating point,
10605 also optimize stores of 32-bit ints.
10606 (fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
10607
10608 2018-02-07 Alan Hayward <alan.hayward@arm.com>
10609
10610 * genextract.c (push_pathstr_operand): New function to support
10611 [a-zA-Z].
10612 (walk_rtx): Call push_pathstr_operand.
10613 (print_path): Support [a-zA-Z].
10614
10615 2018-02-07 Richard Biener <rguenther@suse.de>
10616
10617 PR tree-optimization/84037
10618 * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
10619 (cse_and_gimplify_to_preheader): Declare.
10620 (vect_get_place_in_interleaving_chain): Likewise.
10621 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
10622 ivexpr_map.
10623 (_loop_vec_info::~_loop_vec_info): Delete it.
10624 (cse_and_gimplify_to_preheader): New function.
10625 * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
10626 * tree-vect-stmts.c (vectorizable_store): CSE base and steps.
10627 (vectorizable_load): Likewise. For grouped stores always base
10628 the IV on the first element.
10629 * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
10630 condition before gimplifying.
10631
10632 2018-02-07 Jakub Jelinek <jakub@redhat.com>
10633
10634 * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
10635 *DIV_EXPR and *MOD_EXPR.
10636
10637 2018-02-07 H.J. Lu <hongjiu.lu@intel.com>
10638
10639 PR target/84248
10640 * config/i386/i386.c (ix86_option_override_internal): Mask out
10641 the CF_SET bit when checking -fcf-protection.
10642
10643 2018-02-07 Tom de Vries <tom@codesourcery.com>
10644
10645 PR libgomp/84217
10646 * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
10647 enough.
10648
10649 2018-02-07 Richard Biener <rguenther@suse.de>
10650
10651 PR tree-optimization/84204
10652 * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
10653 this place.
10654
10655 PR tree-optimization/84205
10656 * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
10657 special-case isl_ast_op_zdiv_r.
10658
10659 PR tree-optimization/84223
10660 * graphite-scop-detection.c (gather_bbs::before_dom_children):
10661 Only add conditions from within the region.
10662 (gather_bbs::after_dom_children): Adjust.
10663
10664 2018-02-07 Georg-Johann Lay <avr@gjlay.de>
10665
10666 PR target/84209
10667 * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
10668 * config/avr/avr.md: Only post-reload split REG-REG moves if
10669 either register is GENERAL_REG_P.
10670
10671 2018-02-07 Jakub Jelinek <jakub@redhat.com>
10672
10673 PR tree-optimization/84235
10674 * tree-ssa-scopedtables.c
10675 (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
10676 if the subtraction is performed in floating point type where NaNs are
10677 honored. For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
10678 build 1. Formatting fix.
10679
10680 2018-02-06 Jakub Jelinek <jakub@redhat.com>
10681
10682 PR target/84146
10683 * config/i386/i386.c (rest_of_insert_endbranch): Only skip
10684 NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
10685 and skip it regardless of bb boundaries. Use CALL_P macro,
10686 don't test INSN_P (insn) together with CALL_P or JUMP_P check
10687 unnecessarily, formatting fix.
10688
10689 2018-02-06 Michael Collison <michael.collison@arm.com>
10690
10691 * config/arm/thumb2.md:
10692 (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
10693 (*thumb_mov_notscc): Ditto.
10694
10695 2018-02-06 Michael Meissner <meissner@linux.vnet.ibm.com>
10696
10697 PR target/84154
10698 * config/rs6000/rs6000.md (su code attribute): Use "u" for
10699 unsigned_fix, not "s".
10700
10701 2018-02-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
10702
10703 * configure.ac (gcc_fn_eh_frame_ro): New function.
10704 (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
10705 correct .eh_frame permissions.
10706 * configure: Regenerate.
10707
10708 2018-02-06 Andrew Jenner <andrew@codeourcery.com>
10709
10710 * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
10711 irrelevant options.
10712
10713 2018-02-06 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
10714
10715 * config/rs6000/rs6000.c (rs6000_option_override_internal):
10716 Display warning message for -mno-speculate-indirect-jumps.
10717
10718 2018-02-06 Andrew Jenner <andrew@codesourcery.com>
10719
10720 * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
10721 Undocumented.
10722 * config/powerpcspe/sysv4.opt (mbit-align): Likewise.
10723
10724 2018-02-06 Aldy Hernandez <aldyh@redhat.com>
10725
10726 PR tree-optimization/84225
10727 * tree-eh.c (find_trapping_overflow): Only call
10728 operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
10729
10730 2018-02-06 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
10731
10732 PR target/84145
10733 * config/i386/i386.c: Reimplement the check of possible options
10734 -mibt/-mshstk conbination. Change error messages.
10735 * doc/invoke.texi: Fix a typo: remove extra '='.
10736
10737 2018-02-06 Marek Polacek <polacek@redhat.com>
10738
10739 PR tree-optimization/84228
10740 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
10741
10742 2018-02-06 Tamar Christina <tamar.christina@arm.com>
10743
10744 PR target/82641
10745 * config/arm/arm.c (arm_print_asm_arch_directives): Record already
10746 emitted arch directives.
10747 * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
10748 __ARM_FEATURE_COPROC before changing architectures.
10749
10750 2018-02-06 Richard Biener <rguenther@suse.de>
10751
10752 * config/i386/i386.c (print_reg): Fix typo.
10753 (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
10754
10755 2018-02-06 Eric Botcazou <ebotcazou@adacore.com>
10756
10757 * configure: Regenerate.
10758
10759 2018-02-05 Martin Sebor <msebor@redhat.com>
10760
10761 PR tree-optimization/83369
10762 * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
10763 inlining context.
10764
10765 2018-02-05 Martin Liska <mliska@suse.cz>
10766
10767 * doc/invoke.texi: Cherry-pick upstream r323995.
10768
10769 2018-02-05 Richard Sandiford <richard.sandiford@linaro.org>
10770
10771 * ira.c (ira_init_register_move_cost): Adjust comment.
10772
10773 2018-02-05 Martin Liska <mliska@suse.cz>
10774
10775 PR gcov-profile/84137
10776 * doc/gcov.texi: Fix typo in documentation.
10777
10778 2018-02-05 Martin Liska <mliska@suse.cz>
10779
10780 PR gcov-profile/83879
10781 * doc/gcov.texi: Document necessity of --dynamic-list-data when
10782 using dlopen functionality.
10783
10784 2018-02-05 Olga Makhotina <olga.makhotina@intel.com>
10785
10786 * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
10787 _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
10788 _mm_maskz_range_ss, _mm_mask_range_round_ss,
10789 _mm_maskz_range_round_ss): New intrinsics.
10790 (__builtin_ia32_rangesd128_round)
10791 (__builtin_ia32_rangess128_round): Remove.
10792 (__builtin_ia32_rangesd128_mask_round,
10793 __builtin_ia32_rangess128_mask_round): New builtins.
10794 * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
10795 __builtin_ia32_rangess128_round): Remove.
10796 (__builtin_ia32_rangesd128_mask_round,
10797 __builtin_ia32_rangess128_mask_round): New builtins.
10798 * config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
10799 (ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
10800 ((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
10801 "<round_saeonly_constraint>")): Changed to ...
10802 ((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
10803 "<round_saeonly_scalar_constraint>")): ... this.
10804 ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
10805 %0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
10806 ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
10807 %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
10808 %2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
10809
10810 2018-02-02 Andrew Jenner <andrew@codesourcery.com>
10811
10812 * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
10813 options.
10814 * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
10815 Remove all values except native, 8540 and 8548.
10816
10817 2018-02-02 H.J. Lu <hongjiu.lu@intel.com>
10818
10819 * config/i386/i386.c (ix86_output_function_return): Pass
10820 INVALID_REGNUM, instead of -1, as invalid register number to
10821 indirect_thunk_name and output_indirect_thunk.
10822
10823 2018-02-02 Julia Koval <julia.koval@intel.com>
10824
10825 * config.gcc: Add -march=icelake.
10826 * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
10827 * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
10828 * config/i386/i386.c (processor_costs): Add m_ICELAKE.
10829 (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
10830 PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
10831 (processor_target_table): Add icelake.
10832 (ix86_option_override_internal): Handle new PTAs.
10833 (get_builtin_code_for_version): Handle icelake.
10834 (M_INTEL_COREI7_ICELAKE): New.
10835 (fold_builtin_cpu): Handle icelake.
10836 * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
10837 * doc/invoke.texi: Add -march=icelake.
10838
10839 2018-02-02 Julia Koval <julia.koval@intel.com>
10840
10841 * config/i386/i386.c (ix86_option_override_internal): Change flags type
10842 to wide_int_bitmask.
10843 * wide-int-bitmask.h: New.
10844
10845 2018-02-02 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
10846
10847 PR target/84066
10848 * config/i386/i386.md: Replace Pmode with word_mode in
10849 builtin_setjmp_setup and builtin_longjmp to support x32.
10850
10851 2018-02-01 Peter Bergner <bergner@vnet.ibm.com>
10852
10853 PR target/56010
10854 PR target/83743
10855 * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
10856 #include "opts.h".
10857 (rs6000_supported_cpu_names): New static variable.
10858 (linux_cpu_translation_table): Likewise.
10859 (elf_platform) <cpu>: Define new static variable and use it.
10860 Translate kernel AT_PLATFORM name to canonical name if needed.
10861 Error if platform name is unknown.
10862
10863 2018-02-01 Aldy Hernandez <aldyh@redhat.com>
10864
10865 PR target/84089
10866 * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
10867
10868 2018-02-01 Jeff Law <law@redhat.com>
10869
10870 PR target/84128
10871 * config/i386/i386.c (release_scratch_register_on_entry): Add new
10872 OFFSET and RELEASE_VIA_POP arguments. Use SP+OFFSET to restore
10873 the scratch if RELEASE_VIA_POP is false.
10874 (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
10875 If we have to save a temporary register, decrement SIZE appropriately.
10876 Pass new arguments to release_scratch_register_on_entry.
10877 (ix86_adjust_stack_and_probe): Likewise.
10878 (ix86_emit_probe_stack_range): Pass new arguments to
10879 release_scratch_register_on_entry.
10880
10881 2018-02-01 Uros Bizjak <ubizjak@gmail.com>
10882
10883 PR rtl-optimization/84157
10884 * combine.c (change_zero_ext): Use REG_P predicate in
10885 front of HARD_REGISTER_P predicate.
10886
10887 2018-02-01 Georg-Johann Lay <avr@gjlay.de>
10888
10889 * config/avr/avr.c (avr_option_override): Move disabling of
10890 -fdelete-null-pointer-checks to...
10891 * common/config/avr/avr-common.c (avr_option_optimization_table):
10892 ...here.
10893
10894 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
10895
10896 PR tree-optimization/81635
10897 * tree-data-ref.c (split_constant_offset_1): For types that
10898 wrap on overflow, try to use range info to prove that wrapping
10899 cannot occur.
10900
10901 2018-02-01 Renlin Li <renlin.li@arm.com>
10902
10903 PR target/83370
10904 * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
10905 TAILCALL_ADDR_REGS.
10906 (aarch64_register_move_cost): Likewise.
10907 * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
10908 TAILCALL_ADDR_REGS.
10909 (REG_CLASS_NAMES): Likewise.
10910 (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
10911 TAILCALL_ADDR_REGS. Remove IP registers.
10912 * config/aarch64/aarch64.md (Ucs): Update register constraint.
10913
10914 2018-02-01 Richard Biener <rguenther@suse.de>
10915
10916 * domwalk.h (dom_walker::dom_walker): Add additional constructor
10917 for specifying RPO order and allow NULL for that.
10918 * domwalk.c (dom_walker::dom_walker): Likewise.
10919 (dom_walker::walk): Handle NULL RPO order.
10920 * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
10921 in RPO order.
10922 (rewrite_update_dom_walker): Likewise.
10923 (mark_def_dom_walker): Likewise.
10924
10925 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
10926
10927 * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
10928 (aarch64_maybe_expand_sve_subreg_move): Declare.
10929 * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
10930 * config/aarch64/predicates.md (aarch64_any_register_operand): New
10931 predicate.
10932 * config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
10933 that are semantically a reverse operation.
10934 (*aarch64_sve_mov<mode>_subreg_be): New pattern.
10935 * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
10936 (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
10937 functions.
10938 (aarch64_can_change_mode_class): For big-endian, forbid changes
10939 between two SVE modes if they have different element sizes.
10940
10941 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
10942
10943 * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
10944 the TImode handling for big-endian targets.
10945
10946 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
10947
10948 * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
10949 (*sve_ld1rq<Vesize>): ... this new pattern. Handle all element sizes,
10950 not just bytes.
10951 * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
10952 Remove BSWAP handing for big-endian targets and use the form of
10953 LD1RQ appropariate for the mode.
10954
10955 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
10956
10957 * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
10958 all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
10959 duplicated element.
10960
10961 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
10962
10963 PR tearget/83845
10964 * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
10965 check for operands that need to go through aarch64_sve_reload_be.
10966
10967 2018-02-01 Jakub Jelinek <jakub@redhat.com>
10968
10969 PR tree-optimization/81661
10970 PR tree-optimization/84117
10971 * tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
10972 * tree-eh.c: Include gimplify.h.
10973 (find_trapping_overflow, replace_trapping_overflow,
10974 rewrite_to_non_trapping_overflow): New functions.
10975 * tree-vect-loop.c: Include tree-eh.h.
10976 (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
10977 * tree-data-ref.c: Include tree-eh.h.
10978 (get_segment_min_max): Use rewrite_to_non_trapping_overflow.
10979
10980 2018-01-31 Uros Bizjak <ubizjak@gmail.com>
10981
10982 PR rtl-optimization/84123
10983 * combine.c (change_zero_ext): Check if hard register satisfies
10984 can_change_dest_mode before calling gen_lowpart_SUBREG.
10985
10986 2018-01-31 Vladimir Makarov <vmakarov@redhat.com>
10987
10988 PR target/82444
10989 * ira.c (ira_init_register_move_cost): Remove assert.
10990
10991 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
10992
10993 PR rtl-optimization/84071
10994 * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
10995 * doc/tm.texi: Regenerate.
10996
10997 2018-01-31 Richard Biener <rguenther@suse.de>
10998
10999 PR tree-optimization/84132
11000 * tree-data-ref.c (analyze_miv_subscript): Properly
11001 check whether evolution_function_is_affine_multivariate_p
11002 before calling gcd_of_steps_may_divide_p.
11003
11004 2018-01-31 Julia Koval <julia.koval@intel.com>
11005
11006 PR target/83618
11007 * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
11008 * config/i386/i386.md (rdpid_rex64) New.
11009 (rdpid): Make 32bit only.
11010
11011 2018-01-29 Aldy Hernandez <aldyh@redhat.com>
11012
11013 PR lto/84105
11014 * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
11015 an IDENTIFIER_NODE for FUNCTION_TYPE's.
11016
11017 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
11018
11019 Revert
11020 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
11021
11022 * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
11023
11024 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
11025
11026 PR rtl-optimization/84071
11027 * combine.c (record_dead_and_set_regs_1): Record the source unmodified
11028 for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
11029
11030 2018-01-31 Claudiu Zissulescu <claziss@synopsys.com>
11031
11032 * config/arc/arc.c (arc_handle_aux_attribute): New function.
11033 (arc_attribute_table): Add 'aux' attribute.
11034 (arc_in_small_data_p): Consider aux like variables.
11035 (arc_is_aux_reg_p): New function.
11036 (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
11037 (arc_get_aux_arg): New function.
11038 (prepare_move_operands): Handle aux-register access.
11039 (arc_handle_aux_attribute): New function.
11040 * doc/extend.texi (ARC Variable attributes): Add subsection.
11041
11042 2018-01-31 Claudiu Zissulescu <claziss@synopsys.com>
11043
11044 * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
11045 * config/arc/arc.c (arc_handle_uncached_attribute): New function.
11046 (arc_attribute_table): Add 'uncached' attribute.
11047 (arc_print_operand): Print '.di' flag for uncached memory
11048 accesses.
11049 (arc_in_small_data_p): Do not consider for small data the uncached
11050 types.
11051 (arc_is_uncached_mem_p): New function.
11052 * config/arc/predicates.md (compact_store_memory_operand): Check
11053 for uncached memory accesses.
11054 (nonvol_nonimm_operand): Likewise.
11055 * gcc/doc/extend.texi (ARC Type Attribute): New subsection.
11056
11057 2018-01-31 Jakub Jelinek <jakub@redhat.com>
11058
11059 PR c/84100
11060 * common.opt (falign-functions=, falign-jumps=, falign-labels=,
11061 falign-loops=): Add Optimization flag.
11062
11063 2018-01-30 Jeff Law <law@redhat.com>
11064
11065 PR target/84064
11066 * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
11067 INT_REGISTERS_SAVED. Check it prior to calling
11068 get_scratch_register_on_entry.
11069 (ix86_adjust_stack_and_probe): Similarly.
11070 (ix86_emit_probe_stack_range): Similarly.
11071 (ix86_expand_prologue): Corresponding changes.
11072
11073 2018-01-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
11074
11075 PR target/40411
11076 * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*,
11077 -std=iso9899:199409 instead of -pedantic to select values-Xc.o.
11078
11079 2018-01-30 Vladimir Makarov <vmakarov@redhat.com>
11080
11081 PR target/84112
11082 * lra-constraints.c (curr_insn_transform): Process AND in the
11083 address.
11084
11085 2018-01-30 Jakub Jelinek <jakub@redhat.com>
11086
11087 PR rtl-optimization/83986
11088 * sched-deps.c (sched_analyze_insn): For frame related insns, add anti
11089 dependence against last_pending_memory_flush in addition to
11090 pending_jump_insns.
11091
11092 2018-01-30 Alexandre Oliva <aoliva@redhat.com>
11093
11094 PR tree-optimization/81611
11095 * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
11096 copies.
11097
11098 2018-01-30 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
11099
11100 PR target/83758
11101 * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
11102 a reg rtx.
11103
11104 2018-01-30 Richard Biener <rguenther@suse.de>
11105 Jakub Jelinek <jakub@redhat.com>
11106
11107 PR tree-optimization/84111
11108 * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip
11109 inner loops added during recursion, as they don't have up-to-date
11110 SSA form.
11111
11112 2018-01-30 Jan Hubicka <hubicka@ucw.cz>
11113
11114 PR ipa/81360
11115 * ipa-inline.c (can_inline_edge_p): Break out late tests to...
11116 (can_inline_edge_by_limits_p): ... here.
11117 (can_early_inline_edge_p, check_callers,
11118 update_caller_keys, update_callee_keys, recursive_inlining,
11119 add_new_edges_to_heap, speculation_useful_p,
11120 inline_small_functions,
11121 inline_small_functions, flatten_function,
11122 inline_to_all_callers_1): Update.
11123
11124 2018-01-30 Jan Hubicka <hubicka@ucw.cz>
11125
11126 * profile-count.c (profile_count::combine_with_ipa_count): Handle
11127 zeros correctly.
11128
11129 2018-01-30 Richard Biener <rguenther@suse.de>
11130
11131 PR tree-optimization/83008
11132 * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost
11133 invariant and constant vector uses in stmts when they need
11134 more than one stmt.
11135
11136 2018-01-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
11137
11138 PR bootstrap/84017
11139 * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
11140 * configure: Regenerate.
11141
11142 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
11143
11144 * config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_0): New
11145 pattern.
11146 (*vec_extract<mode><Vel>_v128): Require a nonzero lane number.
11147 Use gen_rtx_REG rather than gen_lowpart.
11148
11149 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
11150
11151 * lra-constraints.c (match_reload): Use subreg_lowpart_offset
11152 rather than 0 when creating partial subregs.
11153
11154 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
11155
11156 * vec-perm-indices.c (vec_perm_indices::series_p): Give examples
11157 of usage.
11158
11159 2018-01-29 Michael Meissner <meissner@linux.vnet.ibm.com>
11160
11161 PR target/81550
11162 * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode
11163 and SFmode can go in Altivec registers (-mcpu=power7 for DFmode,
11164 -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY
11165 flags. This restores the settings used before the 2017-07-24.
11166 Turning off pre increment/decrement/modify allows IVOPTS to
11167 optimize DF/SF loops where the index is an int.
11168
11169 2018-01-29 Richard Biener <rguenther@suse.de>
11170 Kelvin Nilsen <kelvin@gcc.gnu.org>
11171
11172 PR bootstrap/80867
11173 * tree-vect-stmts.c (vectorizable_call): Don't call
11174 targetm.vectorize_builtin_md_vectorized_function if callee is
11175 NULL.
11176
11177 2018-01-22 Carl Love <cel@us.ibm.com>
11178
11179 * doc/extend.tex: Fix typo in second arg in
11180 __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
11181
11182 2018-01-29 Richard Biener <rguenther@suse.de>
11183
11184 PR tree-optimization/84086
11185 * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
11186 (flush_ssaname_freelist): When SSA names were released reset
11187 the SCEV hash table.
11188
11189 2018-01-29 Richard Biener <rguenther@suse.de>
11190
11191 PR tree-optimization/84057
11192 * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
11193 removed paths when removing edges.
11194
11195 2018-01-27 H.J. Lu <hongjiu.lu@intel.com>
11196
11197 * doc/invoke.texi: Replace -mfunction-return==@var{choice} with
11198 -mfunction-return=@var{choice}.
11199
11200 2018-01-27 Bernd Edlinger <bernd.edlinger@hotmail.de>
11201
11202 PR diagnostic/84034
11203 * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
11204 Handle CR like TAB.
11205 (layout::print_source_line): Likewise.
11206 (test_get_line_width_without_trailing_whitespace): Add test cases.
11207
11208 2018-01-27 Jakub Jelinek <jakub@redhat.com>
11209
11210 PR middle-end/84040
11211 * sched-deps.c (sched_macro_fuse_insns): Return immediately for
11212 debug insns.
11213
11214 2018-01-26 Jim Wilson <jimw@sifive.com>
11215
11216 * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
11217
11218 * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs
11219 specified.
11220
11221 2018-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11222
11223 * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS
11224 and CMP + SUB-immediate -> SUBS.
11225
11226 2018-01-26 Martin Sebor <msebor@redhat.com>
11227
11228 PR tree-optimization/83896
11229 * tree-ssa-strlen.c (get_string_len): Rename...
11230 (get_string_cst_length): ...to this. Return HOST_WIDE_INT.
11231 Avoid assuming length is constant.
11232 (handle_char_store): Use HOST_WIDE_INT for string length.
11233
11234 2018-01-26 Uros Bizjak <ubizjak@gmail.com>
11235
11236 PR target/81763
11237 * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
11238 to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
11239
11240 2018-01-26 Richard Biener <rguenther@suse.de>
11241
11242 PR rtl-optimization/84003
11243 * dse.c (record_store): Only record redundant stores when
11244 the earlier store aliases at least all accesses the later one does.
11245
11246 2018-01-26 Jakub Jelinek <jakub@redhat.com>
11247
11248 PR rtl-optimization/83985
11249 * dce.c (deletable_insn_p): Return false for separate shrink wrapping
11250 REG_CFA_RESTORE insns.
11251 (delete_unmarked_insns): Don't ignore separate shrink wrapping
11252 REG_CFA_RESTORE insns here.
11253
11254 PR c/83989
11255 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't
11256 use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR.
11257
11258 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
11259
11260 * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3.
11261 * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... .
11262 (arc_init): Likewise.
11263 (arc_override_options): Likewise.
11264 (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune
11265 value.
11266 (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
11267 support.
11268 * config/arc/arc.h (TARGET_DBNZ): Define.
11269 * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to
11270 properly set the tune attribute.
11271 (dbnz): Use TARGET_DBNZ guard.
11272 * config/arc/arc.opt (mtune): Add core3 option.
11273
11274 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
11275
11276 * config/arc/arc.c (arc_delegitimize_address_0): Refactored to
11277 recognize new pic like addresses.
11278 (arc_delegitimize_address): Clean up.
11279
11280 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
11281
11282 * config/arc/arc-arches.def: Option mrf16 valid for all
11283 architectures.
11284 * config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
11285 * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
11286 * config/arc/arc-options.def (FL_RF16): Add mrf16 option.
11287 * config/arc/arc-tables.opt: Regenerate.
11288 * config/arc/arc.c (arc_conditional_register_usage): Handle
11289 reduced register file case.
11290 (arc_file_start): Set must have build attributes.
11291 * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
11292 mrf16 option value.
11293 * config/arc/arc.opt (mrf16): Add new option.
11294 * config/arc/elf.h (ATTRIBUTE_PCS): Define.
11295 * config/arc/genmultilib.awk: Handle new mrf16 option.
11296 * config/arc/linux.h (ATTRIBUTE_PCS): Define.
11297 * config/arc/t-multilib: Regenerate.
11298 * doc/invoke.texi (ARC Options): Document mrf16 option.
11299
11300 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
11301
11302 * config/arc/arc-protos.h: Add arc_is_secure_call_p proto.
11303 * config/arc/arc.c (arc_handle_secure_attribute): New function.
11304 (arc_attribute_table): Add 'secure_call' attribute.
11305 (arc_print_operand): Print secure call operand.
11306 (arc_function_ok_for_sibcall): Don't optimize tail calls when
11307 secure.
11308 (arc_is_secure_call_p): New function. * config/arc/arc.md
11309 (call_i): Add support for sjli instruction.
11310 (call_value_i): Likewise.
11311 * config/arc/constraints.md (Csc): New constraint.
11312
11313 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
11314 John Eric Martin <John.Martin@emmicro-us.com>
11315
11316 * config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
11317 * config/arc/arc.c (_arc_jli_section): New struct.
11318 (arc_jli_section): New type.
11319 (rc_jli_sections): New static variable.
11320 (arc_handle_jli_attribute): New function.
11321 (arc_attribute_table): Add jli_always and jli_fixed attribute.
11322 (arc_file_end): New function.
11323 (TARGET_ASM_FILE_END): Define.
11324 (arc_print_operand): Reuse 'S' letter for JLI output instruction.
11325 (arc_add_jli_section): New function.
11326 (jli_call_scan): Likewise.
11327 (arc_reorg): Call jli_call_scan.
11328 (arc_output_addsi): Remove 'S' from printing asm operand.
11329 (arc_is_jli_call_p): New function.
11330 * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm
11331 operand.
11332 (movhi_insn): Likewise.
11333 (movsi_insn): Likewise.
11334 (movsi_set_cc_insn): Likewise.
11335 (loadqi_update): Likewise.
11336 (load_zeroextendqisi_update): Likewise.
11337 (load_signextendqisi_update): Likewise.
11338 (loadhi_update): Likewise.
11339 (load_zeroextendhisi_update): Likewise.
11340 (load_signextendhisi_update): Likewise.
11341 (loadsi_update): Likewise.
11342 (loadsf_update): Likewise.
11343 (movsicc_insn): Likewise.
11344 (bset_insn): Likewise.
11345 (bxor_insn): Likewise.
11346 (bclr_insn): Likewise.
11347 (bmsk_insn): Likewise.
11348 (bicsi3_insn): Likewise.
11349 (cmpsi_cc_c_insn): Likewise.
11350 (movsi_ne): Likewise.
11351 (movsi_cond_exec): Likewise.
11352 (clrsbsi2): Likewise.
11353 (norm_f): Likewise.
11354 (normw): Likewise.
11355 (swap): Likewise.
11356 (divaw): Likewise.
11357 (flag): Likewise.
11358 (sr): Likewise.
11359 (kflag): Likewise.
11360 (ffs): Likewise.
11361 (ffs_f): Likewise.
11362 (fls): Likewise.
11363 (call_i): Remove 'S' asm letter, add jli instruction.
11364 (call_value_i): Likewise.
11365 * config/arc/arc.op (mjli-always): New option.
11366 * config/arc/constraints.md (Cji): New constraint.
11367 * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm
11368 operand.
11369 (subsf3_fpx): Likewise.
11370 (mulsf3_fpx): Likewise.
11371 * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
11372 asm operand.
11373 * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed'
11374 function attrbutes.
11375 * doc/invoke.texi (ARC): Document mjli-always option.
11376
11377 2018-01-26 Sebastian Perta <sebastian.perta@renesas.com>
11378
11379 * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const
11380 avoid addition with 0 and use incw and decw where possible.
11381
11382 2018-01-26 Richard Biener <rguenther@suse.de>
11383
11384 PR tree-optimization/81082
11385 * fold-const.c (fold_plusminus_mult_expr): Do not perform the
11386 association if it requires casting to unsigned.
11387 * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived
11388 from fold_plusminus_mult_expr to catch important cases late when
11389 range info is available.
11390
11391 2018-01-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
11392
11393 * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
11394 * configure.ac (hidden_linkonce): New test.
11395 * configure: Regenerate.
11396 * config.in: Regenerate.
11397
11398 2018-01-26 Julia Koval <julia.koval@intel.com>
11399
11400 * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
11401 _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
11402 _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
11403 _mm_mask_bitshuffle_epi64_mask): Fix type.
11404 * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
11405 USI_FTYPE_V4DI_V4DI_USI): Remove.
11406 * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
11407 __builtin_ia32_vpshufbitqmb256_mask,
11408 __builtin_ia32_vpshufbitqmb128_mask): Fix types.
11409 * config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
11410 * config/i386/sse.md (VI1_AVX512VLBW): Change types.
11411
11412 2018-01-26 Alan Modra <amodra@gmail.com>
11413
11414 PR target/84033
11415 * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude
11416 UNSPEC_VBPERMQ. Sort other unspecs.
11417
11418 2018-01-25 David Edelsohn <dje.gcc@gmail.com>
11419
11420 * doc/invoke.texi (PowerPC Options): Document 'native' cpu type.
11421
11422 2018-01-25 Jan Hubicka <hubicka@ucw.cz>
11423
11424 PR middle-end/83055
11425 * predict.c (drop_profile): Do not push/pop cfun; update also
11426 node->count.
11427 (handle_missing_profiles): Fix logic looking for zero profiles.
11428
11429 2018-01-25 Jakub Jelinek <jakub@redhat.com>
11430
11431 PR middle-end/83977
11432 * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature
11433 on functions with #pragma omp declare simd or functions with simd
11434 attribute.
11435 * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change.
11436 * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
11437 Remove trailing \n from warning_at calls.
11438
11439 2018-01-25 Tom de Vries <tom@codesourcery.com>
11440
11441 PR target/84028
11442 * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
11443 for neutered workers.
11444
11445 2018-01-24 Joseph Myers <joseph@codesourcery.com>
11446
11447 PR target/68467
11448 * config/m68k/m68k.c (m68k_promote_function_mode): New function.
11449 (TARGET_PROMOTE_FUNCTION_MODE): New macro.
11450
11451 2018-01-24 Jeff Law <law@redhat.com>
11452
11453 PR target/83994
11454 * i386.c (get_probe_interval): Move to earlier point.
11455 (ix86_compute_frame_layout): If -fstack-clash-protection and
11456 the frame is larger than the probe interval, then use pushes
11457 to save registers rather than reg->mem moves.
11458 (ix86_expand_prologue): Remove conditional for int_registers_saved
11459 assertion.
11460
11461 2018-01-24 Vladimir Makarov <vmakarov@redhat.com>
11462
11463 PR target/84014
11464 * ira-build.c (setup_min_max_allocno_live_range_point): Set up
11465 min/max for never referenced object.
11466
11467 2018-01-24 Jakub Jelinek <jakub@redhat.com>
11468
11469 PR middle-end/83977
11470 * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN
11471 here.
11472 * omp-low.c (create_omp_child_function): Remove "omp declare simd"
11473 attributes from DECL_ATTRIBUTES (decl) without affecting
11474 DECL_ATTRIBUTES (current_function_decl).
11475 * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL
11476 functions with non-NULL DECL_ABSTRACT_ORIGIN.
11477
11478 2018-01-24 Richard Sandiford <richard.sandiford@linaro.org>
11479
11480 PR tree-optimization/83979
11481 * fold-const.c (fold_comparison): Use constant_boolean_node
11482 instead of boolean_{true,false}_node.
11483
11484 2018-01-24 Jan Hubicka <hubicka@ucw.cz>
11485
11486 * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
11487 with zero counts.
11488
11489 2018-01-24 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
11490
11491 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
11492 Simplify the clause that sets the length attribute.
11493 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
11494 (*sibcall_nonlocal_sysv<mode>): Clean up code block; simplify the
11495 clause that sets the length attribute.
11496 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
11497
11498 2018-01-24 Tom de Vries <tom@codesourcery.com>
11499
11500 PR target/83589
11501 * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1.
11502 (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c.
11503 Add strict parameter.
11504 (prevent_branch_around_nothing): Insert dummy insn between branch to
11505 label and label with no ptx insn inbetween.
11506 * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn.
11507
11508 2018-01-24 Tom de Vries <tom@codesourcery.com>
11509
11510 PR target/81352
11511 * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
11512 for neutered threads in warp.
11513 * config/nvptx/nvptx.md (define_insn "exit"): New insn.
11514
11515 2018-01-24 Richard Biener <rguenther@suse.de>
11516
11517 PR tree-optimization/83176
11518 * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
11519 operands.
11520
11521 2018-01-24 Richard Biener <rguenther@suse.de>
11522
11523 PR tree-optimization/82819
11524 * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid
11525 code generating pluses that are no-ops in the target precision.
11526
11527 2018-01-24 Richard Biener <rguenther@suse.de>
11528
11529 PR middle-end/84000
11530 * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind.
11531
11532 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
11533
11534 * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count
11535 to merge probabilities.
11536 * predict.c (probably_never_executed): Also mark as cold functions
11537 with global 0 profile and guessed local profile.
11538 * profile-count.c (profile_probability::combine_with_count): New
11539 member function.
11540 * profile-count.h (profile_probability::operator*,
11541 profile_probability::operator*=, profile_probability::operator/,
11542 profile_probability::operator/=): Reduce precision to adjusted
11543 and set value to guessed on contradictory divisions.
11544 (profile_probability::combine_with_freq): Remove.
11545 (profile_probability::combine_wiht_count): Declare.
11546 (profile_count::force_nonzero):: Set to adjusted.
11547 (profile_count::probability_in):: Set quality to adjusted.
11548 * tree-ssa-tail-merge.c (replace_block_by): Use
11549 combine_with_count.
11550
11551 2018-01-23 Andrew Waterman <andrew@sifive.com>
11552 Jim Wilson <jimw@sifive.com>
11553
11554 * config/riscv/riscv.c (riscv_stack_boundary): New.
11555 (riscv_option_override): Set riscv_stack_boundary. Handle
11556 riscv_preferred_stack_boundary_arg.
11557 * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New.
11558 (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY.
11559 (STACK_BOUNDARY): Set to riscv_stack_boundary.
11560 (RISCV_STACK_ALIGN): Use STACK_BOUNDARY.
11561 * config/riscv/riscv.opt (mpreferred-stack-boundary): New.
11562 * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary.
11563
11564 2018-01-23 H.J. Lu <hongjiu.lu@intel.com>
11565
11566 PR target/83905
11567 * config/i386/i386.c (ix86_expand_prologue): Use cost reference
11568 of struct ix86_frame.
11569 (ix86_expand_epilogue): Likewise. Add a local variable for
11570 the reg_save_offset field in struct ix86_frame.
11571
11572 2018-01-23 Bin Cheng <bin.cheng@arm.com>
11573
11574 PR tree-optimization/82604
11575 * tree-loop-distribution.c (enum partition_kind): New enum item
11576 PKIND_PARTIAL_MEMSET.
11577 (partition_builtin_p): Support above new enum item.
11578 (generate_code_for_partition): Ditto.
11579 (compute_access_range): Differentiate cases that equality can be
11580 proven at all loops, the innermost loops or no loops.
11581 (classify_builtin_st, classify_builtin_ldst): Adjust call to above
11582 function. Set PKIND_PARTIAL_MEMSET for partition appropriately.
11583 (finalize_partitions, distribute_loop): Don't fuse partition of
11584 PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest.
11585 (prepare_perfect_loop_nest): Distribute 3-level loop nest only if
11586 parloop is enabled.
11587
11588 2018-01-23 Martin Liska <mliska@suse.cz>
11589
11590 * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in
11591 order to ignore the predictor.
11592 (PRED_POLYMORPHIC_CALL): Likewise.
11593 (PRED_RECURSIVE_CALL): Likewise.
11594
11595 2018-01-23 Martin Liska <mliska@suse.cz>
11596
11597 * tree-profile.c (tree_profiling): Print function header to
11598 aware reader which function we are working on.
11599 * value-prof.c (gimple_find_values_to_profile): Do not print
11600 not interesting value histograms.
11601
11602 2018-01-23 Martin Liska <mliska@suse.cz>
11603
11604 * profile-count.h (enum profile_quality): Add
11605 profile_uninitialized as the first value. Do not number values
11606 as they are zero based.
11607 (profile_count::verify): Update sanity check.
11608 (profile_probability::verify): Likewise.
11609
11610 2018-01-23 Nathan Sidwell <nathan@acm.org>
11611
11612 * doc/invoke.texi (ffor-scope): Deprecate.
11613
11614 2018-01-23 David Malcolm <dmalcolm@redhat.com>
11615
11616 PR tree-optimization/83510
11617 * domwalk.c (set_all_edges_as_executable): New function.
11618 (dom_walker::dom_walker): Convert bool param
11619 "skip_unreachable_blocks" to enum reachability. Move setup of
11620 edge flags to set_all_edges_as_executable and only do it when
11621 reachability is REACHABLE_BLOCKS.
11622 * domwalk.h (enum dom_walker::reachability): New enum.
11623 (dom_walker::dom_walker): Convert bool param
11624 "skip_unreachable_blocks" to enum reachability.
11625 (set_all_edges_as_executable): New decl.
11626 * graphite-scop-detection.c (gather_bbs::gather_bbs): Convert
11627 from false for "skip_unreachable_blocks" to ALL_BLOCKS for
11628 "reachability".
11629 * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
11630 but converting true to REACHABLE_BLOCKS.
11631 * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
11632 * tree-vrp.c
11633 (check_array_bounds_dom_walker::check_array_bounds_dom_walker):
11634 Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
11635 (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
11636 REACHABLE_BLOCKS.
11637 (vrp_prop::vrp_finalize): Call set_all_edges_as_executable
11638 if check_all_array_refs will be called.
11639
11640 2018-01-23 David Malcolm <dmalcolm@redhat.com>
11641
11642 * tree.c (selftest::test_location_wrappers): Add more test
11643 coverage.
11644
11645 2018-01-23 David Malcolm <dmalcolm@redhat.com>
11646
11647 * sbitmap.c (selftest::test_set_range): Fix memory leaks.
11648 (selftest::test_bit_in_range): Likewise.
11649
11650 2018-01-23 Richard Sandiford <richard.sandiford@linaro.org>
11651
11652 PR testsuite/83888
11653 * doc/sourcebuild.texi (vect_float): Say that the selector
11654 only describes the situation when -funsafe-math-optimizations is on.
11655 (vect_float_strict): Document.
11656
11657 2018-01-23 Richard Sandiford <richard.sandiford@linaro.org>
11658
11659 PR tree-optimization/83965
11660 * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
11661 (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
11662 instead of checking only for a reduction.
11663 (vect_recog_widen_sum_pattern): Likewise.
11664
11665 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
11666
11667 * predict.c (probably_never_executed): Only use precise profile info.
11668 (compute_function_frequency): Skip after inlining hack since we now
11669 have quality checking.
11670
11671 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
11672
11673 * profile-count.h (profile_probability::very_unlikely,
11674 profile_probability::unlikely, profile_probability::even): Set
11675 precision to guessed.
11676
11677 2018-01-23 Richard Biener <rguenther@suse.de>
11678
11679 PR tree-optimization/83963
11680 * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
11681 Properly terminate dominator walk when crossing the exit edge not
11682 when visiting its source block.
11683
11684 2018-01-23 Jakub Jelinek <jakub@redhat.com>
11685
11686 PR c++/83918
11687 * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
11688 VIEW_CONVERT_EXPR to wrap CONST_DECLs.
11689
11690 2018-01-22 Jakub Jelinek <jakub@redhat.com>
11691
11692 PR tree-optimization/83957
11693 * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs. Remove
11694 semicolon after for body surrounded by braces.
11695
11696 PR tree-optimization/83081
11697 * profile-count.h (profile_probability::split): New method.
11698 * dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
11699 Use profile_probability::split.
11700 (do_compare_rtx_and_jump): Fix adjustment of probabilities
11701 when splitting a single conditional jump into 2.
11702
11703 2018-01-22 David Malcolm <dmalcolm@redhat.com>
11704
11705 PR tree-optimization/69452
11706 * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
11707 decl.
11708
11709 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
11710
11711 * config/rl78/rl78-expand.md (bswaphi2): New define_expand.
11712 * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn.
11713 * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn.
11714
11715 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
11716
11717 * config/rl78/rl78-protos.h (rl78_split_movdi): New function
11718 declaration.
11719 * config/rl78/rl78.md (movdi): New define_expand.
11720 * config/rl78/rl78.c (rl78_split_movdi): New function.
11721
11722 2018-01-22 Michael Meissner <meissner@linux.vnet.ibm.com>
11723
11724 PR target/83862
11725 * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
11726 no longer used.
11727 * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
11728 * config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
11729 128-bit to produce an UNSPEC move to get the double word with the
11730 signbit and then a shift directly to do signbit.
11731 (signbit<mode>2_dm): Replace old IEEE 128-bit signbit
11732 implementation with a new version that just does either a direct
11733 move or a regular move. Move memory interface to separate insns.
11734 Move insns so they are next to the expander.
11735 (signbit<mode>2_dm_mem_be): New combiner insns to combine load
11736 with signbit move. Split big and little endian case.
11737 (signbit<mode>2_dm_mem_le): Likewise.
11738 (signbit<mode>2_dm_<su>ext): Delete, no longer used.
11739 (signbit<mode>2_dm2): Likewise.
11740
11741 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
11742
11743 * config/rl78/rl78.md (anddi3): New define_expand.
11744
11745 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
11746
11747 * config/rl78/rl78.md (umindi3): New define_expand.
11748
11749 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
11750
11751 * config/rl78/rl78.md (smindi3): New define_expand.
11752
11753 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
11754
11755 * config/rl78/rl78.md (smaxdi3): New define_expand.
11756
11757 2018-01-22 Carl Love <cel@us.ibm.com>
11758
11759 * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
11760 LVX_V1TI): Add macro expansion.
11761 * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
11762 definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
11763 VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
11764 * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
11765 Change check to determine if the instruction is a byte reversing
11766 entry. Fix typo in comment.
11767 * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
11768 for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
11769 Add def_builtin calls for new builtins.
11770 * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
11771 Add define_insn expansion.
11772
11773 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
11774
11775 * config/rl78/rl78.md (umaxdi3): New define_expand.
11776
11777 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
11778
11779 * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check
11780 for non-QImode registers.
11781
11782 2018-01-22 Richard Biener <rguenther@suse.de>
11783
11784 PR tree-optimization/83963
11785 * graphite-scop-detection.c (scop_detection::get_sese): Delay
11786 including the loop exit block.
11787 (scop_detection::merge_sese): Likewise.
11788 (scop_detection::add_scop): Do it here instead.
11789
11790 2018-01-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11791
11792 * doc/sourcebuild.texi (arm_softfloat): Document.
11793
11794 2018-01-21 John David Anglin <danglin@gcc.gnu.org>
11795
11796 PR gcc/77734
11797 * config/pa/pa.c (pa_function_ok_for_sibcall): Use
11798 targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
11799 Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
11800
11801 2018-01-21 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
11802 David Edelsohn <dje.gcc@gmail.com>
11803
11804 PR target/83946
11805 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
11806 Change "crset eq" to "crset 2".
11807 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
11808 (*call_indirect_aix<mode>_nospec): Likewise.
11809 (*call_value_indirect_aix<mode>_nospec): Likewise.
11810 (*call_indirect_elfv2<mode>_nospec): Likewise.
11811 (*call_value_indirect_elfv2<mode>_nospec): Likewise.
11812 (*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
11813 change assembly output from . to $.
11814 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
11815 (indirect_jump<mode>_nospec): Change assembly output from . to $.
11816 (*tablejump<mode>_internal1_nospec): Likewise.
11817
11818 2018-01-21 Oleg Endo <olegendo@gcc.gnu.org>
11819
11820 PR target/80870
11821 * config/sh/sh_optimize_sett_clrt.cc:
11822 Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
11823
11824 2018-01-20 Richard Sandiford <richard.sandiford@linaro.org>
11825
11826 PR tree-optimization/83940
11827 * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
11828 offset_dt to vect_constant_def rather than vect_unknown_def_type.
11829 (vect_check_load_store_mask): Add a mask_dt_out parameter and
11830 use it to pass back the definition type.
11831 (vect_check_store_rhs): Likewise rhs_dt_out.
11832 (vect_build_gather_load_calls): Add a mask_dt argument and use
11833 it instead of a call to vect_is_simple_use.
11834 (vectorizable_store): Update calls to vect_check_load_store_mask
11835 and vect_check_store_rhs. Use the dt returned by the latter instead
11836 of scatter_src_dt. Use the cached mask_dt and gs_info.offset_dt
11837 instead of calls to vect_is_simple_use. Pass the scalar rather
11838 than the vector operand to vect_is_simple_use when handling
11839 second and subsequent copies of an rhs value.
11840 (vectorizable_load): Update calls to vect_check_load_store_mask
11841 and vect_build_gather_load_calls. Use the cached mask_dt and
11842 gs_info.offset_dt instead of calls to vect_is_simple_use.
11843
11844 2018-01-20 Jakub Jelinek <jakub@redhat.com>
11845
11846 PR middle-end/83945
11847 * tree-emutls.c: Include gimplify.h.
11848 (lower_emutls_2): New function.
11849 (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
11850 with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
11851 it before further processing.
11852
11853 PR target/83930
11854 * simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
11855 UINTVAL (trueop1) instead of INTVAL (op1).
11856
11857 2018-01-19 Jakub Jelinek <jakub@redhat.com>
11858
11859 PR debug/81570
11860 PR debug/83728
11861 * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
11862 INCOMING_FRAME_SP_OFFSET if not defined.
11863 (scan_trace): Add ENTRY argument. If true and
11864 DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
11865 emit a note to adjust the CFA offset.
11866 (create_cfi_notes): Adjust scan_trace callers.
11867 (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
11868 INCOMING_FRAME_SP_OFFSET in the CIE.
11869 * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
11870 * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
11871 Likewise.
11872 * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
11873 * doc/tm.texi: Regenerated.
11874
11875 2018-01-19 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
11876
11877 PR rtl-optimization/83147
11878 * lra-constraints.c (remove_inheritance_pseudos): Use
11879 lra_substitute_pseudo_within_insn.
11880
11881 2018-01-19 Tom de Vries <tom@codesourcery.com>
11882 Cesar Philippidis <cesar@codesourcery.com>
11883
11884 PR target/83920
11885 * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
11886
11887 2018-01-19 Cesar Philippidis <cesar@codesourcery.com>
11888
11889 PR target/83790
11890 * config/nvptx/nvptx.c (output_init_frag): Don't use generic address
11891 spaces for function labels.
11892
11893 2018-01-19 Martin Liska <mliska@suse.cz>
11894
11895 * predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
11896 (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
11897 (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
11898 (PRED_OPCODE_POSITIVE): Change from 64 to 59.
11899 (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
11900 (PRED_CONST_RETURN): Change from 69 to 65.
11901 (PRED_NULL_RETURN): Change from 91 to 71.
11902 (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
11903 (PRED_LOOP_GUARD): Change from 66 to 73.
11904
11905 2018-01-19 Martin Liska <mliska@suse.cz>
11906
11907 * predict.c (predict_insn_def): Add new assert.
11908 (struct branch_predictor): Change type to signed integer.
11909 (test_prediction_value_range): Amend test to cover
11910 PROB_UNINITIALIZED.
11911 * predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
11912 (PRED_LOOP_ITERATIONS_GUESSED): Likewise.
11913 (PRED_LOOP_ITERATIONS_MAX): Likewise.
11914 (PRED_LOOP_IV_COMPARE): Likewise.
11915 * predict.h (PROB_UNINITIALIZED): Define new constant.
11916
11917 2018-01-19 Martin Liska <mliska@suse.cz>
11918
11919 * predict.c (dump_prediction): Add new format for
11920 analyze_brprob.py script which is enabled with -details
11921 suboption.
11922 * profile-count.h (precise_p): New function.
11923
11924 2018-01-19 Richard Sandiford <richard.sandiford@linaro.org>
11925
11926 PR tree-optimization/83922
11927 * tree-vect-loop.c (vect_verify_full_masking): Return false if
11928 there are no statements that need masking.
11929 (vect_active_double_reduction_p): New function.
11930 (vect_analyze_loop_operations): Use it when handling phis that
11931 are not in the loop header.
11932
11933 2018-01-19 Richard Sandiford <richard.sandiford@linaro.org>
11934
11935 PR tree-optimization/83914
11936 * tree-vect-loop.c (vectorizable_induction): Don't convert
11937 init_expr or apply the peeling adjustment for inductions
11938 that are nested within the vectorized loop.
11939
11940 2018-01-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11941
11942 * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
11943 instead of NEG.
11944
11945 2018-01-18 Jakub Jelinek <jakub@redhat.com>
11946
11947 PR sanitizer/81715
11948 PR testsuite/83882
11949 * function.h (gimplify_parameters): Add gimple_seq * argument.
11950 * function.c: Include gimple.h and options.h.
11951 (gimplify_parameters): Add cleanup argument, add CLOBBER stmts
11952 for the added local temporaries if needed.
11953 * gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
11954 if there are any parameter cleanups, wrap whole body into a
11955 try/finally with the cleanups.
11956
11957 2018-01-18 Wilco Dijkstra <wdijkstr@arm.com>
11958
11959 PR target/82964
11960 * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
11961 Use GET_MODE_CLASS for scalar floating point.
11962
11963 2018-01-18 Jan Hubicka <hubicka@ucw.cz>
11964
11965 PR ipa/82256
11966 patch by PaX Team
11967 * cgraphclones.c (cgraph_node::create_version_clone_with_body):
11968 Fix call of call_cgraph_insertion_hooks.
11969
11970 2018-01-18 Martin Sebor <msebor@redhat.com>
11971
11972 * doc/invoke.texi (-Wclass-memaccess): Tweak text.
11973
11974 2018-01-18 Jan Hubicka <hubicka@ucw.cz>
11975
11976 PR ipa/83619
11977 * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
11978 frequencies.
11979
11980 2018-01-18 Boris Kolpackov <boris@codesynthesis.com>
11981
11982 PR other/70268
11983 * common.opt: (-ffile-prefix-map): New option.
11984 * opts.c (common_handle_option): Defer it.
11985 * opts-global.c (handle_common_deferred_options): Handle it.
11986 * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
11987 * file-prefix-map.h: New file.
11988 (remap_debug_filename, add_debug_prefix_map): ...here.
11989 (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
11990 * final.c (debug_prefix_map, add_debug_prefix_map
11991 remap_debug_filename): Move to...
11992 * file-prefix-map.c: New file.
11993 (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
11994 generalize, get rid of alloca(), use strrchr() instead of strchr().
11995 (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
11996 Implement in terms of add_prefix_map().
11997 (remap_macro_filename, remap_debug_filename): Implement in term of
11998 remap_filename().
11999 * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
12000 * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
12001 * dbxout.c: Include file-prefix-map.h.
12002 * varasm.c: Likewise.
12003 * vmsdbgout.c: Likewise.
12004 * xcoffout.c: Likewise.
12005 * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
12006 * doc/cppopts.texi (-fmacro-prefix-map): Document.
12007 * doc/invoke.texi (-ffile-prefix-map): Document.
12008 (-fdebug-prefix-map): Update description.
12009
12010 2018-01-18 Martin Liska <mliska@suse.cz>
12011
12012 * config/i386/i386.c (indirect_thunk_name): Document that also
12013 lfence is emitted.
12014 (output_indirect_thunk): Document why both instructions
12015 (pause and lfence) are generated.
12016
12017 2018-01-18 Richard Biener <rguenther@suse.de>
12018
12019 PR tree-optimization/83887
12020 * graphite-scop-detection.c
12021 (scop_detection::get_nearest_dom_with_single_entry): Remove.
12022 (scop_detection::get_nearest_pdom_with_single_exit): Likewise.
12023 (scop_detection::merge_sese): Re-implement with a flood-fill
12024 algorithm that properly finds a SESE region if it exists.
12025
12026 2018-01-18 Jakub Jelinek <jakub@redhat.com>
12027
12028 PR c/61240
12029 * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For
12030 pointer_diff optimizations use view_convert instead of convert.
12031
12032 2018-01-17 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
12033
12034 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
12035 Generate different code for -mno-speculate-indirect-jumps.
12036 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
12037 (*call_indirect_aix<mode>): Disable for
12038 -mno-speculate-indirect-jumps.
12039 (*call_indirect_aix<mode>_nospec): New define_insn.
12040 (*call_value_indirect_aix<mode>): Disable for
12041 -mno-speculate-indirect-jumps.
12042 (*call_value_indirect_aix<mode>_nospec): New define_insn.
12043 (*sibcall_nonlocal_sysv<mode>): Generate different code for
12044 -mno-speculate-indirect-jumps.
12045 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
12046
12047 2018-01-17 Michael Meissner <meissner@linux.vnet.ibm.com>
12048
12049 * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a
12050 long double type, set the flags for noting the default long double
12051 type, even if we don't pass or return a long double type.
12052
12053 2018-01-17 Jan Hubicka <hubicka@ucw.cz>
12054
12055 PR ipa/83051
12056 * ipa-inline.c (flatten_function): Do not overwrite final inlining
12057 failure.
12058
12059 2018-01-17 Will Schmidt <will_schmidt@vnet.ibm.com>
12060
12061 * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
12062 support for merge[hl].
12063 (fold_mergehl_helper): New helper function.
12064 (tree-vector-builder.h): New #include for tree_vector_builder usage.
12065 * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn.
12066 (altivec_vmrglw_direct): Add xxmrglw insn.
12067
12068 2018-01-17 Andrew Waterman <andrew@sifive.com>
12069
12070 * config/riscv/riscv.c (riscv_conditional_register_usage): If
12071 UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs.
12072
12073 2018-01-17 David Malcolm <dmalcolm@redhat.com>
12074
12075 PR lto/83121
12076 * ipa-devirt.c (add_type_duplicate): When comparing memory layout,
12077 call the lto_location_cache before reading the
12078 DECL_SOURCE_LOCATION of the types.
12079
12080 2018-01-17 Wilco Dijkstra <wdijkstr@arm.com>
12081 Richard Sandiford <richard.sandiford@linaro.org>
12082
12083 * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint.
12084 * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function.
12085 (aarch64_legitimate_constant_p): Just support CONST_DOUBLE
12086 SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates.
12087 * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate):
12088 Add declaration.
12089 * config/aarch64/constraints.md (aarch64_movti_operand):
12090 Limit immediates.
12091 * config/aarch64/predicates.md (Uti): Add new constraint.
12092
12093 2018-01-17 Carl Love <cel@us.ibm.com>
12094
12095 * config/rs6000/vsx.md (define_expand xl_len_r,
12096 define_expand stxvl, define_expand *stxvl): Add match_dup argument.
12097 (define_insn): Add, match_dup 1 argument to define_insn stxvll and
12098 lxvll.
12099 (define_expand, define_insn): Move the shift left from the
12100 define_insn to the define_expand for lxvl and stxvl instructions.
12101 * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL
12102 and XL_LEN_R definitions to PURE.
12103
12104 2018-01-17 Uros Bizjak <ubizjak@gmail.com>
12105
12106 * config/i386/i386.c (indirect_thunk_name): Declare regno
12107 as unsigned int. Compare regno with INVALID_REGNUM.
12108 (output_indirect_thunk): Ditto.
12109 (output_indirect_thunk_function): Ditto.
12110 (ix86_code_end): Declare regno as unsigned int. Use INVALID_REGNUM
12111 in the call to output_indirect_thunk_function.
12112
12113 2018-01-17 Richard Sandiford <richard.sandiford@linaro.org>
12114
12115 PR middle-end/83884
12116 * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
12117 rather than the size of inner_type to determine the stack slot size
12118 when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
12119
12120 2018-01-16 Sebastian Peryt <sebastian.peryt@intel.com>
12121
12122 PR target/83546
12123 * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
12124 to PTA_SILVERMONT.
12125
12126 2018-01-16 Michael Meissner <meissner@linux.vnet.ibm.com>
12127
12128 * config.gcc (powerpc*-linux*-*): Add support for 64-bit little
12129 endian Linux systems to optionally enable multilibs for selecting
12130 the long double type if the user configured an explicit type.
12131 * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
12132 have no long double multilibs if not defined.
12133 * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
12134 warn if the user used -mabi={ieee,ibm}longdouble and we built
12135 multilibs for long double.
12136 * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
12137 appropriate multilib option.
12138 (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
12139 multilib options.
12140 * config/rs6000/t-ldouble-linux64le-ibm: New configuration files
12141 for building long double multilibs.
12142 * config/rs6000/t-ldouble-linux64le-ieee: Likewise.
12143
12144 2018-01-16 John David Anglin <danglin@gcc.gnu.org>
12145
12146 * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
12147 copies.
12148
12149 * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
12150 64 bits.
12151 * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
12152 128 bits.
12153
12154 * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
12155 variables.
12156
12157 * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
12158 return value.
12159
12160 2018-01-16 Eric Botcazou <ebotcazou@adacore.com>
12161
12162 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
12163 ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
12164
12165 2018-01-16 Kelvin Nilsen <kelvin@gcc.gnu.org>
12166
12167 * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
12168 different rtl trees depending on TARGET_64BIT.
12169 (rs6000_gen_lvx): Likewise.
12170
12171 2018-01-16 Eric Botcazou <ebotcazou@adacore.com>
12172
12173 * config/visium/visium.md (nop): Tweak comment.
12174 (hazard_nop): Likewise.
12175
12176 2018-01-16 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
12177
12178 * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
12179 -mspeculate-indirect-jumps.
12180 * config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
12181 for -mno-speculate-indirect-jumps.
12182 (*call_indirect_elfv2<mode>_nospec): New define_insn.
12183 (*call_value_indirect_elfv2<mode>): Disable for
12184 -mno-speculate-indirect-jumps.
12185 (*call_value_indirect_elfv2<mode>_nospec): New define_insn.
12186 (indirect_jump): Emit different RTL for
12187 -mno-speculate-indirect-jumps.
12188 (*indirect_jump<mode>): Disable for
12189 -mno-speculate-indirect-jumps.
12190 (*indirect_jump<mode>_nospec): New define_insn.
12191 (tablejump): Emit different RTL for
12192 -mno-speculate-indirect-jumps.
12193 (tablejumpsi): Disable for -mno-speculate-indirect-jumps.
12194 (tablejumpsi_nospec): New define_expand.
12195 (tablejumpdi): Disable for -mno-speculate-indirect-jumps.
12196 (tablejumpdi_nospec): New define_expand.
12197 (*tablejump<mode>_internal1): Disable for
12198 -mno-speculate-indirect-jumps.
12199 (*tablejump<mode>_internal1_nospec): New define_insn.
12200 * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
12201 option.
12202
12203 2018-01-16 Artyom Skrobov tyomitch@gmail.com
12204
12205 * caller-save.c (insert_save): Drop unnecessary parameter. All
12206 callers updated.
12207
12208 2018-01-16 Jakub Jelinek <jakub@redhat.com>
12209 Richard Biener <rguenth@suse.de>
12210
12211 PR libgomp/83590
12212 * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
12213 return early, inline manually is_gimple_sizepos. Make sure if we
12214 call gimplify_expr we don't end up with a gimple constant.
12215 * tree.c (variably_modified_type_p): Don't return true for
12216 is_gimple_constant (_t). Inline manually is_gimple_sizepos.
12217 * gimplify.h (is_gimple_sizepos): Remove.
12218
12219 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
12220
12221 PR tree-optimization/83857
12222 * tree-vect-loop.c (vect_analyze_loop_operations): Don't call
12223 vectorizable_live_operation for pure SLP statements.
12224 (vectorizable_live_operation): Handle PHIs.
12225
12226 2018-01-16 Richard Biener <rguenther@suse.de>
12227
12228 PR tree-optimization/83867
12229 * tree-vect-stmts.c (vect_transform_stmt): Precompute
12230 nested_in_vect_loop_p since the scalar stmt may get invalidated.
12231
12232 2018-01-16 Jakub Jelinek <jakub@redhat.com>
12233
12234 PR c/83844
12235 * stor-layout.c (handle_warn_if_not_align): Use byte_position and
12236 multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
12237 If off is not INTEGER_CST, issue a may not be aligned warning
12238 rather than isn't aligned. Use isn%'t rather than isn't.
12239 * fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
12240 into MULT_EXPR.
12241 <case MULT_EXPR>: Improve the case when bottom and one of the
12242 MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
12243 operand, in that case check if the other operand is multiple of
12244 bottom divided by the INTEGER_CST operand.
12245
12246 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
12247
12248 PR target/83858
12249 * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
12250 * config/pa/pa-protos.h (pa_function_arg_size): Declare.
12251 * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
12252 pa_function_arg_size instead of FUNCTION_ARG_SIZE.
12253 * config/pa/pa.c (pa_function_arg_advance): Likewise.
12254 (pa_function_arg, pa_arg_partial_bytes): Likewise.
12255 (pa_function_arg_size): New function.
12256
12257 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
12258
12259 * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
12260 in a separate statement.
12261
12262 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
12263
12264 PR tree-optimization/83847
12265 * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't
12266 group gathers and scatters.
12267
12268 2018-01-16 Jakub Jelinek <jakub@redhat.com>
12269
12270 PR rtl-optimization/86620
12271 * params.def (max-sched-ready-insns): Bump minimum value to 1.
12272
12273 PR rtl-optimization/83213
12274 * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
12275 to last if both are JUMP_INSNs.
12276
12277 PR tree-optimization/83843
12278 * gimple-ssa-store-merging.c
12279 (imm_store_chain_info::output_merged_store): Handle bit_not_p on
12280 store_immediate_info for bswap/nop orig_stores.
12281
12282 2018-01-15 Andrew Waterman <andrew@sifive.com>
12283
12284 * config/riscv/riscv.c (riscv_rtx_costs) <MULT>: Increase cost if
12285 !TARGET_MUL.
12286 <UDIV>: Increase cost if !TARGET_DIV.
12287
12288 2018-01-15 Segher Boessenkool <segher@kernel.crashing.org>
12289
12290 * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr.
12291 (define_attr "cr_logical_3op"): New.
12292 (cceq_ior_compare): Adjust.
12293 (cceq_ior_compare_complement): Adjust.
12294 (*cceq_rev_compare): Adjust.
12295 * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust.
12296 (is_cracked_insn): Adjust.
12297 (insn_must_be_first_in_group): Adjust.
12298 * config/rs6000/40x.md: Adjust.
12299 * config/rs6000/440.md: Adjust.
12300 * config/rs6000/476.md: Adjust.
12301 * config/rs6000/601.md: Adjust.
12302 * config/rs6000/603.md: Adjust.
12303 * config/rs6000/6xx.md: Adjust.
12304 * config/rs6000/7450.md: Adjust.
12305 * config/rs6000/7xx.md: Adjust.
12306 * config/rs6000/8540.md: Adjust.
12307 * config/rs6000/cell.md: Adjust.
12308 * config/rs6000/e300c2c3.md: Adjust.
12309 * config/rs6000/e500mc.md: Adjust.
12310 * config/rs6000/e500mc64.md: Adjust.
12311 * config/rs6000/e5500.md: Adjust.
12312 * config/rs6000/e6500.md: Adjust.
12313 * config/rs6000/mpc.md: Adjust.
12314 * config/rs6000/power4.md: Adjust.
12315 * config/rs6000/power5.md: Adjust.
12316 * config/rs6000/power6.md: Adjust.
12317 * config/rs6000/power7.md: Adjust.
12318 * config/rs6000/power8.md: Adjust.
12319 * config/rs6000/power9.md: Adjust.
12320 * config/rs6000/rs64.md: Adjust.
12321 * config/rs6000/titan.md: Adjust.
12322
12323 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
12324
12325 * config/i386/predicates.md (indirect_branch_operand): Rewrite
12326 ix86_indirect_branch_register logic.
12327
12328 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
12329
12330 * config/i386/constraints.md (Bs): Update
12331 ix86_indirect_branch_register check. Don't check
12332 ix86_indirect_branch_register with GOT_memory_operand.
12333 (Bw): Likewise.
12334 * config/i386/predicates.md (GOT_memory_operand): Don't check
12335 ix86_indirect_branch_register here.
12336 (GOT32_symbol_operand): Likewise.
12337
12338 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
12339
12340 * config/i386/predicates.md (constant_call_address_operand):
12341 Rewrite ix86_indirect_branch_register logic.
12342 (sibcall_insn_operand): Likewise.
12343
12344 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
12345
12346 * config/i386/constraints.md (Bs): Replace
12347 ix86_indirect_branch_thunk_register with
12348 ix86_indirect_branch_register.
12349 (Bw): Likewise.
12350 * config/i386/i386.md (indirect_jump): Likewise.
12351 (tablejump): Likewise.
12352 (*sibcall_memory): Likewise.
12353 (*sibcall_value_memory): Likewise.
12354 Peepholes of indirect call and jump via memory: Likewise.
12355 * config/i386/i386.opt: Likewise.
12356 * config/i386/predicates.md (indirect_branch_operand): Likewise.
12357 (GOT_memory_operand): Likewise.
12358 (call_insn_operand): Likewise.
12359 (sibcall_insn_operand): Likewise.
12360 (GOT32_symbol_operand): Likewise.
12361
12362 2018-01-15 Jakub Jelinek <jakub@redhat.com>
12363
12364 PR middle-end/83837
12365 * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val
12366 type rather than type addr's type points to.
12367 (expand_omp_atomic_mutex): Likewise.
12368 (expand_omp_atomic): Likewise.
12369
12370 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
12371
12372 PR target/83839
12373 * config/i386/i386.c (output_indirect_thunk_function): Use
12374 ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
12375 for __x86_return_thunk.
12376
12377 2018-01-15 Richard Biener <rguenther@suse.de>
12378
12379 PR middle-end/83850
12380 * expmed.c (extract_bit_field_1): Fix typo.
12381
12382 2018-01-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12383
12384 PR target/83687
12385 * config/arm/iterators.md (VF): New mode iterator.
12386 * config/arm/neon.md (neon_vabd<mode>_2): Use the above.
12387 Remove integer-related logic from pattern.
12388 (neon_vabd<mode>_3): Likewise.
12389
12390 2018-01-15 Jakub Jelinek <jakub@redhat.com>
12391
12392 PR middle-end/82694
12393 * common.opt (fstrict-overflow): No longer an alias.
12394 (fwrapv-pointer): New option.
12395 * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
12396 also for pointer types based on flag_wrapv_pointer.
12397 * opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
12398 opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
12399 opts->x_flag_wrapv got set.
12400 * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
12401 changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
12402 POINTER_TYPE_OVERFLOW_UNDEFINED.
12403 * match.pd: Likewise in address comparison pattern.
12404 * doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
12405
12406 2018-01-15 Richard Biener <rguenther@suse.de>
12407
12408 PR lto/83804
12409 * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
12410 from TYPE_FIELDS. Free TYPE_BINFO if not used by devirtualization.
12411 Reset type names to their identifier if their TYPE_DECL doesn't
12412 have linkage (and thus is used for ODR and devirt).
12413 (save_debug_info_for_decl): Remove.
12414 (save_debug_info_for_type): Likewise.
12415 (add_tree_to_fld_list): Adjust.
12416 * tree-pretty-print.c (dump_generic_node): Make dumping of
12417 type names more robust.
12418
12419 2018-01-15 Richard Biener <rguenther@suse.de>
12420
12421 * BASE-VER: Bump to 8.0.1.
12422
12423 2018-01-14 Martin Sebor <msebor@redhat.com>
12424
12425 PR other/83508
12426 * builtins.c (check_access): Avoid warning when the no-warning bit
12427 is set.
12428
12429 2018-01-14 Cory Fields <cory-nospam-@coryfields.com>
12430
12431 * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
12432 * ira-color (allocno_hard_regs_compare): Likewise.
12433
12434 2018-01-14 Nathan Rossi <nathan@nathanrossi.com>
12435
12436 PR target/83013
12437 * config/microblaze/microblaze.c (microblaze_asm_output_ident):
12438 Use .pushsection/.popsection.
12439
12440 2018-01-14 Martin Sebor <msebor@redhat.com>
12441
12442 PR c++/81327
12443 * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
12444
12445 2018-01-14 Jakub Jelinek <jakub@redhat.com>
12446
12447 * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
12448 entry from extra_headers.
12449 (x86_64-*-*): Remove two duplicate gfniintrin.h entries from
12450 extra_headers, make the list bitwise identical to the i?86-*-* one.
12451
12452 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
12453
12454 * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
12455 -mcmodel=large with -mindirect-branch=thunk,
12456 -mindirect-branch=thunk-extern, -mfunction-return=thunk and
12457 -mfunction-return=thunk-extern.
12458 * doc/invoke.texi: Document -mcmodel=large is incompatible with
12459 -mindirect-branch=thunk, -mindirect-branch=thunk-extern,
12460 -mfunction-return=thunk and -mfunction-return=thunk-extern.
12461
12462 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
12463
12464 * config/i386/i386.c (print_reg): Print the name of the full
12465 integer register without '%'.
12466 (ix86_print_operand): Handle 'V'.
12467 * doc/extend.texi: Document 'V' modifier.
12468
12469 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
12470
12471 * config/i386/constraints.md (Bs): Disallow memory operand for
12472 -mindirect-branch-register.
12473 (Bw): Likewise.
12474 * config/i386/predicates.md (indirect_branch_operand): Likewise.
12475 (GOT_memory_operand): Likewise.
12476 (call_insn_operand): Likewise.
12477 (sibcall_insn_operand): Likewise.
12478 (GOT32_symbol_operand): Likewise.
12479 * config/i386/i386.md (indirect_jump): Call convert_memory_address
12480 for -mindirect-branch-register.
12481 (tablejump): Likewise.
12482 (*sibcall_memory): Likewise.
12483 (*sibcall_value_memory): Likewise.
12484 Disallow peepholes of indirect call and jump via memory for
12485 -mindirect-branch-register.
12486 (*call_pop): Replace m with Bw.
12487 (*call_value_pop): Likewise.
12488 (*sibcall_pop_memory): Replace m with Bs.
12489 * config/i386/i386.opt (mindirect-branch-register): New option.
12490 * doc/invoke.texi: Document -mindirect-branch-register option.
12491
12492 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
12493
12494 * config/i386/i386-protos.h (ix86_output_function_return): New.
12495 * config/i386/i386.c (ix86_set_indirect_branch_type): Also
12496 set function_return_type.
12497 (indirect_thunk_name): Add ret_p to indicate thunk for function
12498 return.
12499 (output_indirect_thunk_function): Pass false to
12500 indirect_thunk_name.
12501 (ix86_output_indirect_branch_via_reg): Likewise.
12502 (ix86_output_indirect_branch_via_push): Likewise.
12503 (output_indirect_thunk_function): Create alias for function
12504 return thunk if regno < 0.
12505 (ix86_output_function_return): New function.
12506 (ix86_handle_fndecl_attribute): Handle function_return.
12507 (ix86_attribute_table): Add function_return.
12508 * config/i386/i386.h (machine_function): Add
12509 function_return_type.
12510 * config/i386/i386.md (simple_return_internal): Use
12511 ix86_output_function_return.
12512 (simple_return_internal_long): Likewise.
12513 * config/i386/i386.opt (mfunction-return=): New option.
12514 (indirect_branch): Mention -mfunction-return=.
12515 * doc/extend.texi: Document function_return function attribute.
12516 * doc/invoke.texi: Document -mfunction-return= option.
12517
12518 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
12519
12520 * config/i386/i386-opts.h (indirect_branch): New.
12521 * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
12522 * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
12523 with local indirect jump when converting indirect call and jump.
12524 (ix86_set_indirect_branch_type): New.
12525 (ix86_set_current_function): Call ix86_set_indirect_branch_type.
12526 (indirectlabelno): New.
12527 (indirect_thunk_needed): Likewise.
12528 (indirect_thunk_bnd_needed): Likewise.
12529 (indirect_thunks_used): Likewise.
12530 (indirect_thunks_bnd_used): Likewise.
12531 (INDIRECT_LABEL): Likewise.
12532 (indirect_thunk_name): Likewise.
12533 (output_indirect_thunk): Likewise.
12534 (output_indirect_thunk_function): Likewise.
12535 (ix86_output_indirect_branch_via_reg): Likewise.
12536 (ix86_output_indirect_branch_via_push): Likewise.
12537 (ix86_output_indirect_branch): Likewise.
12538 (ix86_output_indirect_jmp): Likewise.
12539 (ix86_code_end): Call output_indirect_thunk_function if needed.
12540 (ix86_output_call_insn): Call ix86_output_indirect_branch if
12541 needed.
12542 (ix86_handle_fndecl_attribute): Handle indirect_branch.
12543 (ix86_attribute_table): Add indirect_branch.
12544 * config/i386/i386.h (machine_function): Add indirect_branch_type
12545 and has_local_indirect_jump.
12546 * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
12547 to true.
12548 (tablejump): Likewise.
12549 (*indirect_jump): Use ix86_output_indirect_jmp.
12550 (*tablejump_1): Likewise.
12551 (simple_return_indirect_internal): Likewise.
12552 * config/i386/i386.opt (mindirect-branch=): New option.
12553 (indirect_branch): New.
12554 (keep): Likewise.
12555 (thunk): Likewise.
12556 (thunk-inline): Likewise.
12557 (thunk-extern): Likewise.
12558 * doc/extend.texi: Document indirect_branch function attribute.
12559 * doc/invoke.texi: Document -mindirect-branch= option.
12560
12561 2018-01-14 Jan Hubicka <hubicka@ucw.cz>
12562
12563 PR ipa/83051
12564 * ipa-inline.c (edge_badness): Tolerate roundoff errors.
12565
12566 2018-01-14 Richard Sandiford <richard.sandiford@linaro.org>
12567
12568 * ipa-inline.c (want_inline_small_function_p): Return false if
12569 inlining has already failed with CIF_FINAL_ERROR.
12570 (update_caller_keys): Call want_inline_small_function_p before
12571 can_inline_edge_p.
12572 (update_callee_keys): Likewise.
12573
12574 2018-01-10 Kelvin Nilsen <kelvin@gcc.gnu.org>
12575
12576 * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
12577 New function.
12578 (rs6000_quadword_masked_address_p): Likewise.
12579 (quad_aligned_load_p): Likewise.
12580 (quad_aligned_store_p): Likewise.
12581 (const_load_sequence_p): Add comment to describe the outer-most loop.
12582 (mimic_memory_attributes_and_flags): New function.
12583 (rs6000_gen_stvx): Likewise.
12584 (replace_swapped_aligned_store): Likewise.
12585 (rs6000_gen_lvx): Likewise.
12586 (replace_swapped_aligned_load): Likewise.
12587 (replace_swapped_load_constant): Capitalize argument name in
12588 comment describing this function.
12589 (rs6000_analyze_swaps): Add a third pass to search for vector loads
12590 and stores that access quad-word aligned addresses and replace
12591 with stvx or lvx instructions when appropriate.
12592 * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
12593 New function prototype.
12594 (rs6000_quadword_masked_address_p): Likewise.
12595 (rs6000_gen_lvx): Likewise.
12596 (rs6000_gen_stvx): Likewise.
12597 * config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
12598 VSX_D (V2DF, V2DI), modify this split to select lvx instruction
12599 when memory address is aligned.
12600 (*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
12601 this split to select lvx instruction when memory address is aligned.
12602 (*vsx_le_perm_load_v8hi): Modify this split to select lvx
12603 instruction when memory address is aligned.
12604 (*vsx_le_perm_load_v16qi): Likewise.
12605 (four unnamed splitters): Modify to select the stvx instruction
12606 when memory is aligned.
12607
12608 2018-01-13 Jan Hubicka <hubicka@ucw.cz>
12609
12610 * predict.c (determine_unlikely_bbs): Handle correctly BBs
12611 which appears in the queue multiple times.
12612
12613 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12614 Alan Hayward <alan.hayward@arm.com>
12615 David Sherwood <david.sherwood@arm.com>
12616
12617 * tree-vectorizer.h (vec_lower_bound): New structure.
12618 (_loop_vec_info): Add check_nonzero and lower_bounds.
12619 (LOOP_VINFO_CHECK_NONZERO): New macro.
12620 (LOOP_VINFO_LOWER_BOUNDS): Likewise.
12621 (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
12622 * tree-data-ref.h (dr_with_seg_len): Add access_size and align
12623 fields. Make seg_len the distance travelled, not including the
12624 access size.
12625 (dr_direction_indicator): Declare.
12626 (dr_zero_step_indicator): Likewise.
12627 (dr_known_forward_stride_p): Likewise.
12628 * tree-data-ref.c: Include stringpool.h, tree-vrp.h and
12629 tree-ssanames.h.
12630 (runtime_alias_check_p): Allow runtime alias checks with
12631 variable strides.
12632 (operator ==): Compare access_size and align.
12633 (prune_runtime_alias_test_list): Rework for new distinction between
12634 the access_size and seg_len.
12635 (create_intersect_range_checks_index): Likewise. Cope with polynomial
12636 segment lengths.
12637 (get_segment_min_max): New function.
12638 (create_intersect_range_checks): Use it.
12639 (dr_step_indicator): New function.
12640 (dr_direction_indicator): Likewise.
12641 (dr_zero_step_indicator): Likewise.
12642 (dr_known_forward_stride_p): Likewise.
12643 * tree-loop-distribution.c (data_ref_segment_size): Return
12644 DR_STEP * (niters - 1).
12645 (compute_alias_check_pairs): Update call to the dr_with_seg_len
12646 constructor.
12647 * tree-vect-data-refs.c (vect_check_nonzero_value): New function.
12648 (vect_preserves_scalar_order_p): New function, split out from...
12649 (vect_analyze_data_ref_dependence): ...here. Check for zero steps.
12650 (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
12651 (vect_vfa_access_size): New function.
12652 (vect_vfa_align): Likewise.
12653 (vect_compile_time_alias): Take access_size_a and access_b arguments.
12654 (dump_lower_bound): New function.
12655 (vect_check_lower_bound): Likewise.
12656 (vect_small_gap_p): Likewise.
12657 (vectorizable_with_step_bound_p): Likewise.
12658 (vect_prune_runtime_alias_test_list): Ignore cross-iteration
12659 depencies if the vectorization factor is 1. Convert the checks
12660 for nonzero steps into checks on the bounds of DR_STEP. Try using
12661 a bunds check for variable steps if the minimum required step is
12662 relatively small. Update calls to the dr_with_seg_len
12663 constructor and to vect_compile_time_alias.
12664 * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
12665 function.
12666 (vect_loop_versioning): Call it.
12667 * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
12668 when retrying.
12669 (vect_estimate_min_profitable_iters): Account for any bounds checks.
12670
12671 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12672 Alan Hayward <alan.hayward@arm.com>
12673 David Sherwood <david.sherwood@arm.com>
12674
12675 * doc/sourcebuild.texi (vect_scatter_store): Document.
12676 * optabs.def (scatter_store_optab, mask_scatter_store_optab): New
12677 optabs.
12678 * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
12679 Document.
12680 * genopinit.c (main): Add supports_vec_scatter_store and
12681 supports_vec_scatter_store_cached to target_optabs.
12682 * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and
12683 IFN_MASK_SCATTER_STORE.
12684 * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal
12685 functions.
12686 * internal-fn.h (internal_store_fn_p): Declare.
12687 (internal_fn_stored_value_index): Likewise.
12688 * internal-fn.c (scatter_store_direct): New macro.
12689 (expand_scatter_store_optab_fn): New function.
12690 (direct_scatter_store_optab_supported_p): New macro.
12691 (internal_store_fn_p): New function.
12692 (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and
12693 IFN_MASK_SCATTER_STORE.
12694 (internal_fn_mask_index): Likewise.
12695 (internal_fn_stored_value_index): New function.
12696 (internal_gather_scatter_fn_supported_p): Adjust operand numbers
12697 for scatter stores.
12698 * optabs-query.h (supports_vec_scatter_store_p): Declare.
12699 * optabs-query.c (supports_vec_scatter_store_p): New function.
12700 * tree-vectorizer.h (vect_get_store_rhs): Declare.
12701 * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return
12702 true for scatter stores.
12703 (vect_gather_scatter_fn_p): Handle scatter stores too.
12704 (vect_check_gather_scatter): Consider using scatter stores if
12705 supports_vec_scatter_store_p.
12706 * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle
12707 scatter stores too.
12708 * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
12709 internal_fn_stored_value_index.
12710 (check_load_store_masking): Handle scatter stores too.
12711 (vect_get_store_rhs): Make public.
12712 (vectorizable_call): Use internal_store_fn_p.
12713 (vectorizable_store): Handle scatter store internal functions.
12714 (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE
12715 when deciding whether the end of the group has been reached.
12716 * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec.
12717 * config/aarch64/aarch64-sve.md (scatter_store<mode>): New expander.
12718 (mask_scatter_store<mode>): New insns.
12719
12720 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12721 Alan Hayward <alan.hayward@arm.com>
12722 David Sherwood <david.sherwood@arm.com>
12723
12724 * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare.
12725 * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public.
12726 * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New
12727 function.
12728 (vect_use_strided_gather_scatters_p): Take a masked_p argument.
12729 Use vect_truncate_gather_scatter_offset if we can't treat the
12730 operation as a normal gather load or scatter store.
12731 (get_group_load_store_type): Take the gather_scatter_info
12732 as argument. Try using a gather load or scatter store for
12733 single-element groups.
12734 (get_load_store_type): Update calls to get_group_load_store_type
12735 and vect_use_strided_gather_scatters_p.
12736
12737 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12738 Alan Hayward <alan.hayward@arm.com>
12739 David Sherwood <david.sherwood@arm.com>
12740
12741 * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra
12742 optional tree argument.
12743 * tree-vect-data-refs.c (vect_check_gather_scatter): Check for
12744 null target hooks.
12745 (vect_create_data_ref_ptr): Take the iv_step as an optional argument,
12746 but continue to use the current value as a fallback.
12747 (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare
12748 to compare the updates.
12749 * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function.
12750 (get_load_store_type): Use it when handling a strided access.
12751 (vect_get_strided_load_store_ops): New function.
12752 (vect_get_data_ptr_increment): Likewise.
12753 (vectorizable_load): Handle strided gather loads. Always pass
12754 a step to vect_create_data_ref_ptr and bump_vector_ptr.
12755
12756 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12757 Alan Hayward <alan.hayward@arm.com>
12758 David Sherwood <david.sherwood@arm.com>
12759
12760 * doc/md.texi (gather_load@var{m}): Document.
12761 (mask_gather_load@var{m}): Likewise.
12762 * genopinit.c (main): Add supports_vec_gather_load and
12763 supports_vec_gather_load_cached to target_optabs.
12764 * optabs-tree.c (init_tree_optimization_optabs): Use
12765 ggc_cleared_alloc to allocate target_optabs.
12766 * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs.
12767 * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal
12768 functions.
12769 * internal-fn.h (internal_load_fn_p): Declare.
12770 (internal_gather_scatter_fn_p): Likewise.
12771 (internal_fn_mask_index): Likewise.
12772 (internal_gather_scatter_fn_supported_p): Likewise.
12773 * internal-fn.c (gather_load_direct): New macro.
12774 (expand_gather_load_optab_fn): New function.
12775 (direct_gather_load_optab_supported_p): New macro.
12776 (direct_internal_fn_optab): New function.
12777 (internal_load_fn_p): Likewise.
12778 (internal_gather_scatter_fn_p): Likewise.
12779 (internal_fn_mask_index): Likewise.
12780 (internal_gather_scatter_fn_supported_p): Likewise.
12781 * optabs-query.c (supports_at_least_one_mode_p): New function.
12782 (supports_vec_gather_load_p): Likewise.
12783 * optabs-query.h (supports_vec_gather_load_p): Declare.
12784 * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type
12785 and memory_type field.
12786 (NUM_PATTERNS): Bump to 15.
12787 * tree-vect-data-refs.c: Include internal-fn.h.
12788 (vect_gather_scatter_fn_p): New function.
12789 (vect_describe_gather_scatter_call): Likewise.
12790 (vect_check_gather_scatter): Try using internal functions for
12791 gather loads. Recognize existing calls to a gather load function.
12792 (vect_analyze_data_refs): Consider using gather loads if
12793 supports_vec_gather_load_p.
12794 * tree-vect-patterns.c (vect_get_load_store_mask): New function.
12795 (vect_get_gather_scatter_offset_type): Likewise.
12796 (vect_convert_mask_for_vectype): Likewise.
12797 (vect_add_conversion_to_patterm): Likewise.
12798 (vect_try_gather_scatter_pattern): Likewise.
12799 (vect_recog_gather_scatter_pattern): New pattern recognizer.
12800 (vect_vect_recog_func_ptrs): Add it.
12801 * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
12802 internal_fn_mask_index and internal_gather_scatter_fn_p.
12803 (check_load_store_masking): Take the gather_scatter_info as an
12804 argument and handle gather loads.
12805 (vect_get_gather_scatter_ops): New function.
12806 (vectorizable_call): Check internal_load_fn_p.
12807 (vectorizable_load): Likewise. Handle gather load internal
12808 functions.
12809 (vectorizable_store): Update call to check_load_store_masking.
12810 * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec.
12811 * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators.
12812 * config/aarch64/predicates.md (aarch64_gather_scale_operand_w)
12813 (aarch64_gather_scale_operand_d): New predicates.
12814 * config/aarch64/aarch64-sve.md (gather_load<mode>): New expander.
12815 (mask_gather_load<mode>): New insns.
12816
12817 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12818 Alan Hayward <alan.hayward@arm.com>
12819 David Sherwood <david.sherwood@arm.com>
12820
12821 * optabs.def (fold_left_plus_optab): New optab.
12822 * doc/md.texi (fold_left_plus_@var{m}): Document.
12823 * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function.
12824 * internal-fn.c (fold_left_direct): Define.
12825 (expand_fold_left_optab_fn): Likewise.
12826 (direct_fold_left_optab_supported_p): Likewise.
12827 * fold-const-call.c (fold_const_fold_left): New function.
12828 (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS.
12829 * tree-parloops.c (valid_reduction_p): New function.
12830 (gather_scalar_reductions): Use it.
12831 * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type.
12832 (vect_finish_replace_stmt): Declare.
12833 * tree-vect-loop.c (fold_left_reduction_fn): New function.
12834 (needs_fold_left_reduction_p): New function, split out from...
12835 (vect_is_simple_reduction): ...here. Accept reductions that
12836 forbid reassociation, but give them type FOLD_LEFT_REDUCTION.
12837 (vect_force_simple_reduction): Also store the reduction type in
12838 the assignment's STMT_VINFO_REDUC_TYPE.
12839 (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION.
12840 (merge_with_identity): New function.
12841 (vect_expand_fold_left): Likewise.
12842 (vectorize_fold_left_reduction): Likewise.
12843 (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION. Leave the
12844 scalar phi in place for it. Check for target support and reject
12845 cases that would reassociate the operation. Defer the transform
12846 phase to vectorize_fold_left_reduction.
12847 * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec.
12848 * config/aarch64/aarch64-sve.md (fold_left_plus_<mode>): New expander.
12849 (*fold_left_plus_<mode>, *pred_fold_left_plus_<mode>): New insns.
12850
12851 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12852
12853 * tree-if-conv.c (predicate_mem_writes): Remove redundant
12854 call to ifc_temp_var.
12855
12856 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12857 Alan Hayward <alan.hayward@arm.com>
12858 David Sherwood <david.sherwood@arm.com>
12859
12860 * target.def (legitimize_address_displacement): Take the original
12861 offset as a poly_int.
12862 * targhooks.h (default_legitimize_address_displacement): Update
12863 accordingly.
12864 * targhooks.c (default_legitimize_address_displacement): Likewise.
12865 * doc/tm.texi: Regenerate.
12866 * lra-constraints.c (base_plus_disp_to_reg): Take the displacement
12867 as an argument, moving assert of ad->disp == ad->disp_term to...
12868 (process_address_1): ...here. Update calls to base_plus_disp_to_reg.
12869 Try calling targetm.legitimize_address_displacement before expanding
12870 the address rather than afterwards, and adjust for the new interface.
12871 * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
12872 Match the new hook interface. Handle SVE addresses.
12873 * config/sh/sh.c (sh_legitimize_address_displacement): Make the
12874 new hook interface.
12875
12876 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12877
12878 * Makefile.in (OBJS): Add early-remat.o.
12879 * target.def (select_early_remat_modes): New hook.
12880 * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
12881 * doc/tm.texi: Regenerate.
12882 * targhooks.h (default_select_early_remat_modes): Declare.
12883 * targhooks.c (default_select_early_remat_modes): New function.
12884 * timevar.def (TV_EARLY_REMAT): New timevar.
12885 * passes.def (pass_early_remat): New pass.
12886 * tree-pass.h (make_pass_early_remat): Declare.
12887 * early-remat.c: New file.
12888 * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
12889 function.
12890 (TARGET_SELECT_EARLY_REMAT_MODES): Define.
12891
12892 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12893 Alan Hayward <alan.hayward@arm.com>
12894 David Sherwood <david.sherwood@arm.com>
12895
12896 * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
12897 vfm1 with a bound_epilog parameter.
12898 (vect_do_peeling): Update calls accordingly, and move the prologue
12899 call earlier in the function. Treat the base bound_epilog as 0 for
12900 fully-masked loops and retain vf - 1 for other loops. Add 1 to
12901 this base when peeling for gaps.
12902 * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
12903 with fully-masked loops.
12904 (vect_estimate_min_profitable_iters): Handle the single peeled
12905 iteration in that case.
12906
12907 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12908 Alan Hayward <alan.hayward@arm.com>
12909 David Sherwood <david.sherwood@arm.com>
12910
12911 * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow
12912 single-element interleaving even if the size is not a power of 2.
12913 * tree-vect-stmts.c (get_load_store_type): Disallow elementwise
12914 accesses for single-element interleaving if the group size is
12915 not a power of 2.
12916
12917 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12918 Alan Hayward <alan.hayward@arm.com>
12919 David Sherwood <david.sherwood@arm.com>
12920
12921 * doc/md.texi (fold_extract_last_@var{m}): Document.
12922 * doc/sourcebuild.texi (vect_fold_extract_last): Likewise.
12923 * optabs.def (fold_extract_last_optab): New optab.
12924 * internal-fn.def (FOLD_EXTRACT_LAST): New internal function.
12925 * internal-fn.c (fold_extract_direct): New macro.
12926 (expand_fold_extract_optab_fn): Likewise.
12927 (direct_fold_extract_optab_supported_p): Likewise.
12928 * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type.
12929 * tree-vect-loop.c (vect_model_reduction_cost): Handle
12930 EXTRACT_LAST_REDUCTION.
12931 (get_initial_def_for_reduction): Do not create an initial vector
12932 for EXTRACT_LAST_REDUCTION reductions.
12933 (vectorizable_reduction): Leave the scalar phi in place for
12934 EXTRACT_LAST_REDUCTIONs. Try using EXTRACT_LAST_REDUCTION
12935 ahead of INTEGER_INDUC_COND_REDUCTION. Do not check for an
12936 epilogue code for EXTRACT_LAST_REDUCTION and defer the
12937 transform phase to vectorizable_condition.
12938 * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function,
12939 split out from...
12940 (vect_finish_stmt_generation): ...here.
12941 (vect_finish_replace_stmt): New function.
12942 (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION.
12943 * config/aarch64/aarch64-sve.md (fold_extract_last_<mode>): New
12944 pattern.
12945 * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec.
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 (extract_last_@var{m}): Document.
12952 * optabs.def (extract_last_optab): New optab.
12953 * internal-fn.def (EXTRACT_LAST): New internal function.
12954 * internal-fn.c (cond_unary_direct): New macro.
12955 (expand_cond_unary_optab_fn): Likewise.
12956 (direct_cond_unary_optab_supported_p): Likewise.
12957 * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked
12958 loops using EXTRACT_LAST.
12959 * config/aarch64/aarch64-sve.md (aarch64_sve_lastb<mode>): Rename to...
12960 (extract_last_<mode>): ...this optab.
12961 (vec_extract<mode><Vel>): Update accordingly.
12962
12963 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12964 Alan Hayward <alan.hayward@arm.com>
12965 David Sherwood <david.sherwood@arm.com>
12966
12967 * target.def (empty_mask_is_expensive): New hook.
12968 * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
12969 * doc/tm.texi: Regenerate.
12970 * targhooks.h (default_empty_mask_is_expensive): Declare.
12971 * targhooks.c (default_empty_mask_is_expensive): New function.
12972 * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores
12973 if the target says that empty masks are expensive.
12974 * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive):
12975 New function.
12976 (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.
12977
12978 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
12979 Alan Hayward <alan.hayward@arm.com>
12980 David Sherwood <david.sherwood@arm.com>
12981
12982 * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field.
12983 (LOOP_VINFO_MASK_SKIP_NITERS): New macro.
12984 (vect_use_loop_mask_for_alignment_p): New function.
12985 (vect_prepare_for_masked_peels, vect_gen_while_not): Declare.
12986 * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an
12987 niters_skip argument. Make sure that the first niters_skip elements
12988 of the first iteration are inactive.
12989 (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS.
12990 Update call to vect_set_loop_masks_directly.
12991 (get_misalign_in_elems): New function, split out from...
12992 (vect_gen_prolog_loop_niters): ...here.
12993 (vect_update_init_of_dr): Take a code argument that specifies whether
12994 the adjustment should be added or subtracted.
12995 (vect_update_init_of_drs): Likewise.
12996 (vect_prepare_for_masked_peels): New function.
12997 (vect_do_peeling): Skip prologue peeling if we're using a mask
12998 instead. Update call to vect_update_inits_of_drs.
12999 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
13000 mask_skip_niters.
13001 (vect_analyze_loop_2): Allow fully-masked loops with peeling for
13002 alignment. Do not include the number of peeled iterations in
13003 the minimum threshold in that case.
13004 (vectorizable_induction): Adjust the start value down by
13005 LOOP_VINFO_MASK_SKIP_NITERS iterations.
13006 (vect_transform_loop): Call vect_prepare_for_masked_peels.
13007 Take the number of skipped iterations into account when calculating
13008 the loop bounds.
13009 * tree-vect-stmts.c (vect_gen_while_not): New function.
13010
13011 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
13012 Alan Hayward <alan.hayward@arm.com>
13013 David Sherwood <david.sherwood@arm.com>
13014
13015 * doc/sourcebuild.texi (vect_fully_masked): Document.
13016 * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
13017 default value to 0.
13018 * tree-vect-loop.c (vect_analyze_loop_costing): New function,
13019 split out from...
13020 (vect_analyze_loop_2): ...here. Don't check the vectorization
13021 factor against the number of loop iterations if the loop is
13022 fully-masked.
13023
13024 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
13025 Alan Hayward <alan.hayward@arm.com>
13026 David Sherwood <david.sherwood@arm.com>
13027
13028 * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into...
13029 (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types.
13030 (dump_groups): Update accordingly.
13031 (iv_use::mem_type): New member variable.
13032 (address_p): New function.
13033 (record_use): Add a mem_type argument and initialize the new
13034 mem_type field.
13035 (record_group_use): Add a mem_type argument. Use address_p.
13036 Remove obsolete null checks of base_object. Update call to record_use.
13037 (find_interesting_uses_op): Update call to record_group_use.
13038 (find_interesting_uses_cond): Likewise.
13039 (find_interesting_uses_address): Likewise.
13040 (get_mem_type_for_internal_fn): New function.
13041 (find_address_like_use): Likewise.
13042 (find_interesting_uses_stmt): Try find_address_like_use before
13043 calling find_interesting_uses_op.
13044 (addr_offset_valid_p): Use the iv mem_type field as the type
13045 of the addressed memory.
13046 (add_autoinc_candidates): Likewise.
13047 (get_address_cost): Likewise.
13048 (split_small_address_groups_p): Use address_p.
13049 (split_address_groups): Likewise.
13050 (add_iv_candidate_for_use): Likewise.
13051 (autoinc_possible_for_pair): Likewise.
13052 (rewrite_groups): Likewise.
13053 (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS.
13054 (determine_group_iv_cost): Update after split of USE_ADDRESS.
13055 (get_alias_ptr_type_for_ptr_address): New function.
13056 (rewrite_use_address): Rewrite address uses in calls that were
13057 identified by find_address_like_use.
13058
13059 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
13060 Alan Hayward <alan.hayward@arm.com>
13061 David Sherwood <david.sherwood@arm.com>
13062
13063 * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of
13064 TARGET_MEM_REFs.
13065 * gimple-expr.h (is_gimple_addressable: Likewise.
13066 * gimple-expr.c (is_gimple_address): Likewise.
13067 * internal-fn.c (expand_call_mem_ref): New function.
13068 (expand_mask_load_optab_fn): Use it.
13069 (expand_mask_store_optab_fn): Likewise.
13070
13071 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
13072 Alan Hayward <alan.hayward@arm.com>
13073 David Sherwood <david.sherwood@arm.com>
13074
13075 * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode})
13076 (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode})
13077 (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode})
13078 (cond_umax@var{mode}): Document.
13079 * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab)
13080 (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab)
13081 (cond_umin_optab, cond_umax_optab): New optabs.
13082 * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND)
13083 (COND_IOR, COND_XOR): New internal functions.
13084 * internal-fn.h (get_conditional_internal_fn): Declare.
13085 * internal-fn.c (cond_binary_direct): New macro.
13086 (expand_cond_binary_optab_fn): Likewise.
13087 (direct_cond_binary_optab_supported_p): Likewise.
13088 (get_conditional_internal_fn): New function.
13089 * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops.
13090 Cope with reduction statements that are vectorized as calls rather
13091 than assignments.
13092 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New insns.
13093 * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB)
13094 (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN)
13095 (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
13096 (UNSPEC_COND_EOR): New unspecs.
13097 (optab): Add mappings for them.
13098 (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators.
13099 (sve_int_op, sve_fp_op): New int attributes.
13100
13101 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
13102 Alan Hayward <alan.hayward@arm.com>
13103 David Sherwood <david.sherwood@arm.com>
13104
13105 * optabs.def (while_ult_optab): New optab.
13106 * doc/md.texi (while_ult@var{m}@var{n}): Document.
13107 * internal-fn.def (WHILE_ULT): New internal function.
13108 * internal-fn.h (direct_internal_fn_supported_p): New override
13109 that takes two types as argument.
13110 * internal-fn.c (while_direct): New macro.
13111 (expand_while_optab_fn): New function.
13112 (convert_optab_supported_p): Likewise.
13113 (direct_while_optab_supported_p): New macro.
13114 * wide-int.h (wi::udiv_ceil): New function.
13115 * tree-vectorizer.h (rgroup_masks): New structure.
13116 (vec_loop_masks): New typedef.
13117 (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p
13118 and fully_masked_p.
13119 (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P)
13120 (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros.
13121 (vect_max_vf): New function.
13122 (slpeel_make_loop_iterate_ntimes): Delete.
13123 (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while)
13124 (vect_halve_mask_nunits, vect_double_mask_nunits): Declare.
13125 (vect_record_loop_mask, vect_get_loop_mask): Likewise.
13126 * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h,
13127 internal-fn.h, stor-layout.h and optabs-query.h.
13128 (vect_set_loop_mask): New function.
13129 (add_preheader_seq): Likewise.
13130 (add_header_seq): Likewise.
13131 (interleave_supported_p): Likewise.
13132 (vect_maybe_permute_loop_masks): Likewise.
13133 (vect_set_loop_masks_directly): Likewise.
13134 (vect_set_loop_condition_masked): Likewise.
13135 (vect_set_loop_condition_unmasked): New function, split out from
13136 slpeel_make_loop_iterate_ntimes.
13137 (slpeel_make_loop_iterate_ntimes): Rename to..
13138 (vect_set_loop_condition): ...this. Use vect_set_loop_condition_masked
13139 for fully-masked loops and vect_set_loop_condition_unmasked otherwise.
13140 (vect_do_peeling): Update call accordingly.
13141 (vect_gen_vector_loop_niters): Use VF as the step for fully-masked
13142 loops.
13143 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
13144 mask_compare_type, can_fully_mask_p and fully_masked_p.
13145 (release_vec_loop_masks): New function.
13146 (_loop_vec_info): Use it to free the loop masks.
13147 (can_produce_all_loop_masks_p): New function.
13148 (vect_get_max_nscalars_per_iter): Likewise.
13149 (vect_verify_full_masking): Likewise.
13150 (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around
13151 retries, and free the mask rgroups before retrying. Check loop-wide
13152 reasons for disallowing fully-masked loops. Make the final decision
13153 about whether use a fully-masked loop or not.
13154 (vect_estimate_min_profitable_iters): Do not assume that peeling
13155 for the number of iterations will be needed for fully-masked loops.
13156 (vectorizable_reduction): Disable fully-masked loops.
13157 (vectorizable_live_operation): Likewise.
13158 (vect_halve_mask_nunits): New function.
13159 (vect_double_mask_nunits): Likewise.
13160 (vect_record_loop_mask): Likewise.
13161 (vect_get_loop_mask): Likewise.
13162 (vect_transform_loop): Handle the case in which the final loop
13163 iteration might handle a partial vector. Call vect_set_loop_condition
13164 instead of slpeel_make_loop_iterate_ntimes.
13165 * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h.
13166 (check_load_store_masking): New function.
13167 (prepare_load_store_mask): Likewise.
13168 (vectorizable_store): Handle fully-masked loops.
13169 (vectorizable_load): Likewise.
13170 (supportable_widening_operation): Use vect_halve_mask_nunits for
13171 booleans.
13172 (supportable_narrowing_operation): Likewise vect_double_mask_nunits.
13173 (vect_gen_while): New function.
13174 * config/aarch64/aarch64.md (umax<mode>3): New expander.
13175 (aarch64_uqdec<mode>): New insn.
13176
13177 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
13178 Alan Hayward <alan.hayward@arm.com>
13179 David Sherwood <david.sherwood@arm.com>
13180
13181 * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab)
13182 (reduc_xor_scal_optab): New optabs.
13183 * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m})
13184 (reduc_xor_scal_@var{m}): Document.
13185 * doc/sourcebuild.texi (vect_logical_reduc): Likewise.
13186 * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New
13187 internal functions.
13188 * fold-const-call.c (fold_const_call): Handle them.
13189 * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new
13190 internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
13191 * config/aarch64/aarch64-sve.md (reduc_<bit_reduc>_scal_<mode>):
13192 (*reduc_<bit_reduc>_scal_<mode>): New patterns.
13193 * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV)
13194 (UNSPEC_XORV): New unspecs.
13195 (optab): Add entries for them.
13196 (BITWISEV): New int iterator.
13197 (bit_reduc_op): New int attributes.
13198
13199 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
13200 Alan Hayward <alan.hayward@arm.com>
13201 David Sherwood <david.sherwood@arm.com>
13202
13203 * doc/md.texi (vec_shl_insert_@var{m}): New optab.
13204 * internal-fn.def (VEC_SHL_INSERT): New internal function.
13205 * optabs.def (vec_shl_insert_optab): New optab.
13206 * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare.
13207 (duplicate_and_interleave): Likewise.
13208 * tree-vect-loop.c: Include internal-fn.h.
13209 (neutral_op_for_slp_reduction): New function, split out from
13210 get_initial_defs_for_reduction.
13211 (get_initial_def_for_reduction): Handle option 2 for variable-length
13212 vectors by loading the neutral value into a vector and then shifting
13213 the initial value into element 0.
13214 (get_initial_defs_for_reduction): Replace the code argument with
13215 the neutral value calculated by neutral_op_for_slp_reduction.
13216 Use gimple_build_vector for constant-length vectors.
13217 Use IFN_VEC_SHL_INSERT for variable-length vectors if all
13218 but the first group_size elements have a neutral value.
13219 Use duplicate_and_interleave otherwise.
13220 (vect_create_epilog_for_reduction): Take a neutral_op parameter.
13221 Update call to get_initial_defs_for_reduction. Handle SLP
13222 reductions for variable-length vectors by creating one vector
13223 result for each scalar result, with the elements associated
13224 with other scalar results stubbed out with the neutral value.
13225 (vectorizable_reduction): Call neutral_op_for_slp_reduction.
13226 Require IFN_VEC_SHL_INSERT for double reductions on
13227 variable-length vectors, or SLP reductions that have
13228 a neutral value. Require can_duplicate_and_interleave_p
13229 support for variable-length unchained SLP reductions if there
13230 is no neutral value, such as for MIN/MAX reductions. Also require
13231 the number of vector elements to be a multiple of the number of
13232 SLP statements when doing variable-length unchained SLP reductions.
13233 Update call to vect_create_epilog_for_reduction.
13234 * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public
13235 and remove initial values.
13236 (duplicate_and_interleave): Make public.
13237 * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec.
13238 * config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): New insn.
13239
13240 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
13241 Alan Hayward <alan.hayward@arm.com>
13242 David Sherwood <david.sherwood@arm.com>
13243
13244 * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
13245 (can_duplicate_and_interleave_p): New function.
13246 (vect_get_and_check_slp_defs): Take the vector of statements
13247 rather than just the current one. Remove excess parentheses.
13248 Restriction rejectinon of vect_constant_def and vect_external_def
13249 for variable-length vectors to boolean types, or types for which
13250 can_duplicate_and_interleave_p is false.
13251 (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
13252 (duplicate_and_interleave): New function.
13253 (vect_get_constant_vectors): Use gimple_build_vector for
13254 constant-length vectors and suitable variable-length constant
13255 vectors. Use duplicate_and_interleave for other variable-length
13256 vectors. Don't defer the update when inserting new statements.
13257
13258 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
13259 Alan Hayward <alan.hayward@arm.com>
13260 David Sherwood <david.sherwood@arm.com>
13261
13262 * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
13263 min_profitable_iters doesn't go negative.
13264
13265 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
13266 Alan Hayward <alan.hayward@arm.com>
13267 David Sherwood <david.sherwood@arm.com>
13268
13269 * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
13270 (vec_mask_store_lanes@var{m}@var{n}): Likewise.
13271 * optabs.def (vec_mask_load_lanes_optab): New optab.
13272 (vec_mask_store_lanes_optab): Likewise.
13273 * internal-fn.def (MASK_LOAD_LANES): New internal function.
13274 (MASK_STORE_LANES): Likewise.
13275 * internal-fn.c (mask_load_lanes_direct): New macro.
13276 (mask_store_lanes_direct): Likewise.
13277 (expand_mask_load_optab_fn): Handle masked operations.
13278 (expand_mask_load_lanes_optab_fn): New macro.
13279 (expand_mask_store_optab_fn): Handle masked operations.
13280 (expand_mask_store_lanes_optab_fn): New macro.
13281 (direct_mask_load_lanes_optab_supported_p): Likewise.
13282 (direct_mask_store_lanes_optab_supported_p): Likewise.
13283 * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
13284 parameter.
13285 (vect_load_lanes_supported): Likewise.
13286 * tree-vect-data-refs.c (strip_conversion): New function.
13287 (can_group_stmts_p): Likewise.
13288 (vect_analyze_data_ref_accesses): Use it instead of checking
13289 for a pair of assignments.
13290 (vect_store_lanes_supported): Take a masked_p parameter.
13291 (vect_load_lanes_supported): Likewise.
13292 * tree-vect-loop.c (vect_analyze_loop_2): Update calls to
13293 vect_store_lanes_supported and vect_load_lanes_supported.
13294 * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
13295 * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
13296 parameter. Don't allow gaps for masked accesses.
13297 Use vect_get_store_rhs. Update calls to vect_store_lanes_supported
13298 and vect_load_lanes_supported.
13299 (get_load_store_type): Take a masked_p parameter and update
13300 call to get_group_load_store_type.
13301 (vectorizable_store): Update call to get_load_store_type.
13302 Handle IFN_MASK_STORE_LANES.
13303 (vectorizable_load): Update call to get_load_store_type.
13304 Handle IFN_MASK_LOAD_LANES.
13305
13306 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
13307 Alan Hayward <alan.hayward@arm.com>
13308 David Sherwood <david.sherwood@arm.com>
13309
13310 * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector
13311 modes for SVE.
13312 * config/aarch64/aarch64-protos.h
13313 (aarch64_sve_struct_memory_operand_p): Declare.
13314 * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator.
13315 (vector_count, insn_length, VSINGLE, vsingle): New mode attributes.
13316 (VPRED, vpred): Handle SVE structure modes.
13317 * config/aarch64/constraints.md (Utx): New constraint.
13318 * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand)
13319 (aarch64_sve_struct_nonimmediate_operand): New predicates.
13320 * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs.
13321 * config/aarch64/aarch64-sve.md (mov<mode>, *aarch64_sve_mov<mode>_le)
13322 (*aarch64_sve_mov<mode>_be, pred_mov<mode>): New patterns for
13323 structure modes. Split into pieces after RA.
13324 (vec_load_lanes<mode><vsingle>, vec_mask_load_lanes<mode><vsingle>)
13325 (vec_store_lanes<mode><vsingle>, vec_mask_store_lanes<mode><vsingle>):
13326 New patterns.
13327 * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
13328 SVE structure modes.
13329 (aarch64_classify_address): Likewise.
13330 (sizetochar): Move earlier in file.
13331 (aarch64_print_operand): Handle SVE register lists.
13332 (aarch64_array_mode): New function.
13333 (aarch64_sve_struct_memory_operand_p): Likewise.
13334 (TARGET_ARRAY_MODE): Redefine.
13335
13336 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
13337 Alan Hayward <alan.hayward@arm.com>
13338 David Sherwood <david.sherwood@arm.com>
13339
13340 * target.def (array_mode): New target hook.
13341 * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook.
13342 * doc/tm.texi: Regenerate.
13343 * hooks.h (hook_optmode_mode_uhwi_none): Declare.
13344 * hooks.c (hook_optmode_mode_uhwi_none): New function.
13345 * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use
13346 targetm.array_mode.
13347 * stor-layout.c (mode_for_array): Likewise. Support polynomial
13348 type sizes.
13349
13350 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
13351 Alan Hayward <alan.hayward@arm.com>
13352 David Sherwood <david.sherwood@arm.com>
13353
13354 * fold-const.c (fold_binary_loc): Check the argument types
13355 rather than the result type when testing for a vector operation.
13356
13357 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
13358
13359 * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
13360 * doc/tm.texi: Regenerate.
13361
13362 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
13363 Alan Hayward <alan.hayward@arm.com>
13364 David Sherwood <david.sherwood@arm.com>
13365
13366 * doc/invoke.texi (-msve-vector-bits=): Document new option.
13367 (sve): Document new AArch64 extension.
13368 * doc/md.texi (w): Extend the description of the AArch64
13369 constraint to include SVE vectors.
13370 (Upl, Upa): Document new AArch64 predicate constraints.
13371 * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New
13372 enum.
13373 * config/aarch64/aarch64.opt (sve_vector_bits): New enum.
13374 (msve-vector-bits=): New option.
13375 * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable
13376 SVE when these are disabled.
13377 (sve): New extension.
13378 * config/aarch64/aarch64-modes.def: Define SVE vector and predicate
13379 modes. Adjust their number of units based on aarch64_sve_vg.
13380 (MAX_BITSIZE_MODE_ANY_MODE): Define.
13381 * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New
13382 aarch64_addr_query_type.
13383 (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode)
13384 (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p)
13385 (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries)
13386 (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate)
13387 (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate)
13388 (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare.
13389 (aarch64_simd_imm_zero_p): Delete.
13390 (aarch64_check_zero_based_sve_index_immediate): Declare.
13391 (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
13392 (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
13393 (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
13394 (aarch64_sve_float_mul_immediate_p): Likewise.
13395 (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
13396 rather than an rtx.
13397 (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare.
13398 (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback.
13399 (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare.
13400 (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float)
13401 (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare.
13402 (aarch64_regmode_natural_size): Likewise.
13403 * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro.
13404 (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift
13405 left one place.
13406 (AARCH64_ISA_SVE, TARGET_SVE): New macros.
13407 (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries
13408 for VG and the SVE predicate registers.
13409 (V_ALIASES): Add a "z"-prefixed alias.
13410 (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1.
13411 (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros.
13412 (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise.
13413 (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes.
13414 (REG_CLASS_NAMES): Add entries for them.
13415 (REG_CLASS_CONTENTS): Likewise. Update ALL_REGS to include VG
13416 and the predicate registers.
13417 (aarch64_sve_vg): Declare.
13418 (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED)
13419 (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros.
13420 (REGMODE_NATURAL_SIZE): Define.
13421 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
13422 SVE macros.
13423 * config/aarch64/aarch64.c: Include cfgrtl.h.
13424 (simd_immediate_info): Add a constructor for series vectors,
13425 and an associated step field.
13426 (aarch64_sve_vg): New variable.
13427 (aarch64_dbx_register_number): Handle VG and the predicate registers.
13428 (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete.
13429 (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE)
13430 (VEC_ANY_DATA, VEC_STRUCT): New constants.
13431 (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p)
13432 (aarch64_classify_vector_mode, aarch64_vector_data_mode_p)
13433 (aarch64_sve_data_mode_p, aarch64_sve_pred_mode)
13434 (aarch64_get_mask_mode): New functions.
13435 (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS
13436 and FP_LO_REGS. Handle PR_REGS, PR_LO_REGS and PR_HI_REGS.
13437 (aarch64_hard_regno_mode_ok): Handle VG. Also handle the SVE
13438 predicate modes and predicate registers. Explicitly restrict
13439 GPRs to modes of 16 bytes or smaller. Only allow FP registers
13440 to store a vector mode if it is recognized by
13441 aarch64_classify_vector_mode.
13442 (aarch64_regmode_natural_size): New function.
13443 (aarch64_hard_regno_caller_save_mode): Return the original mode
13444 for predicates.
13445 (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate)
13446 (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl)
13447 (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate)
13448 (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New
13449 functions.
13450 (aarch64_add_offset): Add a temp2 parameter. Assert that temp1
13451 does not overlap dest if the function is frame-related. Handle
13452 SVE constants.
13453 (aarch64_split_add_offset): New function.
13454 (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass
13455 them aarch64_add_offset.
13456 (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter
13457 and update call to aarch64_sub_sp.
13458 (aarch64_add_cfa_expression): New function.
13459 (aarch64_expand_prologue): Pass extra temporary registers to the
13460 functions above. Handle the case in which we need to emit new
13461 DW_CFA_expressions for registers that were originally saved
13462 relative to the stack pointer, but now have to be expressed
13463 relative to the frame pointer.
13464 (aarch64_output_mi_thunk): Pass extra temporary registers to the
13465 functions above.
13466 (aarch64_expand_epilogue): Likewise. Prevent inheritance of
13467 IP0 and IP1 values for SVE frames.
13468 (aarch64_expand_vec_series): New function.
13469 (aarch64_expand_sve_widened_duplicate): Likewise.
13470 (aarch64_expand_sve_const_vector): Likewise.
13471 (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter.
13472 Handle SVE constants. Use emit_move_insn to move a force_const_mem
13473 into the register, rather than emitting a SET directly.
13474 (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move)
13475 (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p)
13476 (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p)
13477 (offset_9bit_signed_scaled_p): New functions.
13478 (aarch64_replicate_bitmask_imm): New function.
13479 (aarch64_bitmask_imm): Use it.
13480 (aarch64_cannot_force_const_mem): Reject expressions involving
13481 a CONST_POLY_INT. Update call to aarch64_classify_symbol.
13482 (aarch64_classify_index): Handle SVE indices, by requiring
13483 a plain register index with a scale that matches the element size.
13484 (aarch64_classify_address): Handle SVE addresses. Assert that
13485 the mode of the address is VOIDmode or an integer mode.
13486 Update call to aarch64_classify_symbol.
13487 (aarch64_classify_symbolic_expression): Update call to
13488 aarch64_classify_symbol.
13489 (aarch64_const_vec_all_in_range_p): New function.
13490 (aarch64_print_vector_float_operand): Likewise.
13491 (aarch64_print_operand): Handle 'N' and 'C'. Use "zN" rather than
13492 "vN" for FP registers with SVE modes. Handle (const ...) vectors
13493 and the FP immediates 1.0 and 0.5.
13494 (aarch64_print_address_internal): Handle SVE addresses.
13495 (aarch64_print_operand_address): Use ADDR_QUERY_ANY.
13496 (aarch64_regno_regclass): Handle predicate registers.
13497 (aarch64_secondary_reload): Handle big-endian reloads of SVE
13498 data modes.
13499 (aarch64_class_max_nregs): Handle SVE modes and predicate registers.
13500 (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions.
13501 (aarch64_convert_sve_vector_bits): New function.
13502 (aarch64_override_options): Use it to handle -msve-vector-bits=.
13503 (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
13504 rather than an rtx.
13505 (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode.
13506 Handle SVE vector and predicate modes. Accept VL-based constants
13507 that need only one temporary register, and VL offsets that require
13508 no temporary registers.
13509 (aarch64_conditional_register_usage): Mark the predicate registers
13510 as fixed if SVE isn't available.
13511 (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode.
13512 Return true for SVE vector and predicate modes.
13513 (aarch64_simd_container_mode): Take the number of bits as a poly_int64
13514 rather than an unsigned int. Handle SVE modes.
13515 (aarch64_preferred_simd_mode): Update call accordingly. Handle
13516 SVE modes.
13517 (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
13518 if SVE is enabled.
13519 (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
13520 (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
13521 (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
13522 (aarch64_sve_float_mul_immediate_p): New functions.
13523 (aarch64_sve_valid_immediate): New function.
13524 (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors.
13525 Explicitly reject structure modes. Check for INDEX constants.
13526 Handle PTRUE and PFALSE constants.
13527 (aarch64_check_zero_based_sve_index_immediate): New function.
13528 (aarch64_simd_imm_zero_p): Delete.
13529 (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for
13530 vector modes. Accept constants in the range of CNT[BHWD].
13531 (aarch64_simd_scalar_immediate_valid_for_move): Explicitly
13532 ask for an Advanced SIMD mode.
13533 (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions.
13534 (aarch64_simd_vector_alignment): Handle SVE predicates.
13535 (aarch64_vectorize_preferred_vector_alignment): New function.
13536 (aarch64_simd_vector_alignment_reachable): Use it instead of
13537 the vector size.
13538 (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
13539 (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
13540 functions.
13541 (MAX_VECT_LEN): Delete.
13542 (expand_vec_perm_d): Add a vec_flags field.
13543 (emit_unspec2, aarch64_expand_sve_vec_perm): New functions.
13544 (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
13545 (aarch64_evpc_ext): Don't apply a big-endian lane correction
13546 for SVE modes.
13547 (aarch64_evpc_rev): Rename to...
13548 (aarch64_evpc_rev_local): ...this. Use a predicated operation for SVE.
13549 (aarch64_evpc_rev_global): New function.
13550 (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP.
13551 (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of
13552 MAX_VECT_LEN.
13553 (aarch64_evpc_sve_tbl): New function.
13554 (aarch64_expand_vec_perm_const_1): Update after rename of
13555 aarch64_evpc_rev. Handle SVE permutes too, trying
13556 aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather
13557 than aarch64_evpc_tbl.
13558 (aarch64_vectorize_vec_perm_const): Initialize vec_flags.
13559 (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code)
13560 (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int)
13561 (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or)
13562 (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float)
13563 (aarch64_expand_sve_vcond): New functions.
13564 (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead
13565 of aarch64_vector_mode_p.
13566 (aarch64_dwarf_poly_indeterminate_value): New function.
13567 (aarch64_compute_pressure_classes): Likewise.
13568 (aarch64_can_change_mode_class): Likewise.
13569 (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine.
13570 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise.
13571 (TARGET_VECTORIZE_GET_MASK_MODE): Likewise.
13572 (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise.
13573 (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise.
13574 (TARGET_CAN_CHANGE_MODE_CLASS): Likewise.
13575 * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr)
13576 (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New
13577 constraints.
13578 (Dn, Dl, Dr): Accept const as well as const_vector.
13579 (Dz): Likewise. Compare against CONST0_RTX.
13580 * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead
13581 of "vector" where appropriate.
13582 (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD)
13583 (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators.
13584 (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT)
13585 (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE)
13586 (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS)
13587 (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs.
13588 (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV)
13589 (v_int_equiv): Extend to SVE modes.
13590 (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New
13591 mode attributes.
13592 (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators.
13593 (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt.
13594 (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs.
13595 (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP)
13596 (SVE_COND_FP_CMP): New int iterators.
13597 (perm_hilo): Handle the new unpack unspecs.
13598 (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int
13599 attributes.
13600 * config/aarch64/predicates.md (aarch64_sve_cnt_immediate)
13601 (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate)
13602 (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand)
13603 (aarch64_equality_operator, aarch64_constant_vector_operand)
13604 (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates.
13605 (aarch64_sve_nonimmediate_operand): Likewise.
13606 (aarch64_sve_general_operand): Likewise.
13607 (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise.
13608 (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate)
13609 (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise.
13610 (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise.
13611 (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise.
13612 (aarch64_sve_float_arith_immediate): Likewise.
13613 (aarch64_sve_float_arith_with_sub_immediate): Likewise.
13614 (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise.
13615 (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise.
13616 (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise.
13617 (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise.
13618 (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise.
13619 (aarch64_sve_float_arith_operand): Likewise.
13620 (aarch64_sve_float_arith_with_sub_operand): Likewise.
13621 (aarch64_sve_float_mul_operand): Likewise.
13622 (aarch64_sve_vec_perm_operand): Likewise.
13623 (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate.
13624 (aarch64_mov_operand): Accept const_poly_int and const_vector.
13625 (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const
13626 as well as const_vector.
13627 (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier
13628 in file. Use CONST0_RTX and CONSTM1_RTX.
13629 (aarch64_simd_or_scalar_imm_zero): Likewise. Add match_codes.
13630 (aarch64_simd_reg_or_zero): Accept const as well as const_vector.
13631 Use aarch64_simd_imm_zero.
13632 * config/aarch64/aarch64-sve.md: New file.
13633 * config/aarch64/aarch64.md: Include it.
13634 (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers.
13635 (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE)
13636 (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI)
13637 (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK)
13638 (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants.
13639 (sve): New attribute.
13640 (enabled): Disable instructions with the sve attribute unless
13641 TARGET_SVE.
13642 (movqi, movhi): Pass CONST_POLY_INT operaneds through
13643 aarch64_expand_mov_immediate.
13644 (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Handle
13645 CNT[BHSD] immediates.
13646 (movti): Split CONST_POLY_INT moves into two halves.
13647 (add<mode>3): Accept aarch64_pluslong_or_poly_operand.
13648 Split additions that need a temporary here if the destination
13649 is the stack pointer.
13650 (*add<mode>3_aarch64): Handle ADDVL and ADDPL immediates.
13651 (*add<mode>3_poly_1): New instruction.
13652 (set_clobber_cc): New expander.
13653
13654 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
13655
13656 * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes
13657 parameter and use it instead of GET_MODE_SIZE (innermode). Use
13658 inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode).
13659 Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of
13660 GET_MODE_NUNITS (innermode). Also add a first_elem parameter.
13661 Change innermode from fixed_mode_size to machine_mode.
13662 (simplify_subreg): Update call accordingly. Handle a constant-sized
13663 subreg of a variable-length CONST_VECTOR.
13664
13665 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
13666 Alan Hayward <alan.hayward@arm.com>
13667 David Sherwood <david.sherwood@arm.com>
13668
13669 * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function.
13670 (add_offset_to_base): New function, split out from...
13671 (create_mem_ref): ...here. When handling a scale other than 1,
13672 check first whether the address is valid without the offset.
13673 Add it into the base if so, leaving the index and scale as-is.
13674
13675 2018-01-12 Jakub Jelinek <jakub@redhat.com>
13676
13677 PR c++/83778
13678 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call
13679 fold_for_warn before checking if arg2 is INTEGER_CST.
13680
13681 2018-01-12 Segher Boessenkool <segher@kernel.crashing.org>
13682
13683 * config/rs6000/predicates.md (load_multiple_operation): Delete.
13684 (store_multiple_operation): Delete.
13685 * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING.
13686 * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete.
13687 * config/rs6000/rs6000-string.c (expand_block_move): Delete everything
13688 guarded by TARGET_STRING.
13689 (rs6000_output_load_multiple): Delete.
13690 * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
13691 OPTION_MASK_STRING / TARGET_STRING handling.
13692 (print_operand) <'N', 'O'>: Add comment that these are unused now.
13693 (const rs6000_opt_masks) <"string">: Change mask to 0.
13694 * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING.
13695 (MASK_STRING): Delete.
13696 * config/rs6000/rs6000.md (*mov<mode>_string): Delete TARGET_STRING
13697 parts. Simplify.
13698 (load_multiple): Delete.
13699 (*ldmsi8): Delete.
13700 (*ldmsi7): Delete.
13701 (*ldmsi6): Delete.
13702 (*ldmsi5): Delete.
13703 (*ldmsi4): Delete.
13704 (*ldmsi3): Delete.
13705 (store_multiple): Delete.
13706 (*stmsi8): Delete.
13707 (*stmsi7): Delete.
13708 (*stmsi6): Delete.
13709 (*stmsi5): Delete.
13710 (*stmsi4): Delete.
13711 (*stmsi3): Delete.
13712 (movmemsi_8reg): Delete.
13713 (corresponding unnamed define_insn): Delete.
13714 (movmemsi_6reg): Delete.
13715 (corresponding unnamed define_insn): Delete.
13716 (movmemsi_4reg): Delete.
13717 (corresponding unnamed define_insn): Delete.
13718 (movmemsi_2reg): Delete.
13719 (corresponding unnamed define_insn): Delete.
13720 (movmemsi_1reg): Delete.
13721 (corresponding unnamed define_insn): Delete.
13722 * config/rs6000/rs6000.opt (mno-string): New.
13723 (mstring): Replace by deprecation warning stub.
13724 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring.
13725
13726 2018-01-12 Jakub Jelinek <jakub@redhat.com>
13727
13728 * regrename.c (regrename_do_replace): If replacing the same
13729 reg multiple times, try to reuse last created gen_raw_REG.
13730
13731 PR debug/81155
13732 * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition
13733 main to workaround a bug in GDB.
13734
13735 2018-01-12 Tom de Vries <tom@codesourcery.com>
13736
13737 PR target/83737
13738 * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap.
13739
13740 2018-01-12 Vladimir Makarov <vmakarov@redhat.com>
13741
13742 PR rtl-optimization/80481
13743 * ira-color.c (get_cap_member): New function.
13744 (allocnos_conflict_by_live_ranges_p): Use it.
13745 (slot_coalesced_allocno_live_ranges_intersect_p): Add assert.
13746 (setup_slot_coalesced_allocno_live_ranges): Ditto.
13747
13748 2018-01-12 Uros Bizjak <ubizjak@gmail.com>
13749
13750 PR target/83628
13751 * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
13752 (*saddl_se_1): Ditto.
13753 (*ssubsi_1): Ditto.
13754 (*ssubl_se_1): Ditto.
13755
13756 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
13757
13758 * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest
13759 rather than wi::to_widest for DR_INITs.
13760 * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use
13761 wi::to_poly_offset rather than wi::to_offset for DR_INIT.
13762 (vect_analyze_data_ref_accesses): Require both DR_INITs to be
13763 INTEGER_CSTs.
13764 (vect_analyze_group_access_1): Note that here.
13765
13766 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
13767
13768 * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
13769 polynomial type sizes.
13770
13771 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
13772
13773 * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
13774 poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
13775 (gimple_add_tmp_var): Likewise.
13776
13777 2018-01-12 Martin Liska <mliska@suse.cz>
13778
13779 * gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
13780 (gimple_alloc_sizes): Likewise.
13781 (dump_gimple_statistics): Use PRIu64 in printf format.
13782 * gimple.h: Change uint64_t to int.
13783
13784 2018-01-12 Martin Liska <mliska@suse.cz>
13785
13786 * tree-core.h: Use uint64_t instead of int.
13787 * tree.c (tree_node_counts): Likewise.
13788 (tree_node_sizes): Likewise.
13789 (dump_tree_statistics): Use PRIu64 in printf format.
13790
13791 2018-01-12 Martin Liska <mliska@suse.cz>
13792
13793 * Makefile.in: As qsort_chk is implemented in vec.c, add
13794 vec.o to linkage of gencfn-macros.
13795 * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's
13796 passing the info to record_node_allocation_statistics.
13797 (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration
13798 and pass the info.
13799 * ggc-common.c (struct ggc_usage): Add operator== and use
13800 it in operator< and compare function.
13801 * mem-stats.h (struct mem_usage): Likewise.
13802 * vec.c (struct vec_usage): Remove operator< and compare
13803 function. Can be simply inherited.
13804
13805 2018-01-12 Martin Jambor <mjambor@suse.cz>
13806
13807 PR target/81616
13808 * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS.
13809 * tree-ssa-math-opts.c: Include domwalk.h.
13810 (convert_mult_to_fma_1): New function.
13811 (fma_transformation_info): New type.
13812 (fma_deferring_state): Likewise.
13813 (cancel_fma_deferring): New function.
13814 (result_of_phi): Likewise.
13815 (last_fma_candidate_feeds_initial_phi): Likewise.
13816 (convert_mult_to_fma): Added deferring logic, split actual
13817 transformation to convert_mult_to_fma_1.
13818 (math_opts_dom_walker): New type.
13819 (math_opts_dom_walker::after_dom_children): New method, body moved
13820 here from pass_optimize_widening_mul::execute, added deferring logic
13821 bits.
13822 (pass_optimize_widening_mul::execute): Moved most of code to
13823 math_opts_dom_walker::after_dom_children.
13824 * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New.
13825 * config/i386/i386.c (ix86_option_override_internal): Added
13826 maybe_setting of PARAM_AVOID_FMA_MAX_BITS.
13827
13828 2018-01-12 Richard Biener <rguenther@suse.de>
13829
13830 PR debug/83157
13831 * dwarf2out.c (gen_variable_die): Do not reset old_die for
13832 inline instance vars.
13833
13834 2018-01-12 Oleg Endo <olegendo@gcc.gnu.org>
13835
13836 PR target/81819
13837 * config/rx/rx.c (rx_is_restricted_memory_address):
13838 Handle SUBREG case.
13839
13840 2018-01-12 Richard Biener <rguenther@suse.de>
13841
13842 PR tree-optimization/80846
13843 * target.def (split_reduction): New target hook.
13844 * targhooks.c (default_split_reduction): New function.
13845 * targhooks.h (default_split_reduction): Declare.
13846 * tree-vect-loop.c (vect_create_epilog_for_reduction): If the
13847 target requests first reduce vectors by combining low and high
13848 parts.
13849 * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust.
13850 (get_vectype_for_scalar_type_and_size): Export.
13851 * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare.
13852 * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document.
13853 * doc/tm.texi: Regenerate.
13854 * config/i386/i386.c (ix86_split_reduction): Implement
13855 TARGET_VECTORIZE_SPLIT_REDUCTION.
13856
13857 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
13858
13859 PR target/83368
13860 * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
13861 in PIC mode except for TARGET_VXWORKS_RTP.
13862 * config/sparc/sparc.c: Include cfgrtl.h.
13863 (TARGET_INIT_PIC_REG): Define.
13864 (TARGET_USE_PSEUDO_PIC_REG): Likewise.
13865 (sparc_pic_register_p): New predicate.
13866 (sparc_legitimate_address_p): Use it.
13867 (sparc_legitimize_pic_address): Likewise.
13868 (sparc_delegitimize_address): Likewise.
13869 (sparc_mode_dependent_address_p): Likewise.
13870 (gen_load_pcrel_sym): Remove 4th parameter.
13871 (load_got_register): Adjust call to above. Remove obsolete stuff.
13872 (sparc_expand_prologue): Do not call load_got_register here.
13873 (sparc_flat_expand_prologue): Likewise.
13874 (sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
13875 (sparc_use_pseudo_pic_reg): New function.
13876 (sparc_init_pic_reg): Likewise.
13877 * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
13878 (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.
13879
13880 2018-01-12 Christophe Lyon <christophe.lyon@linaro.org>
13881
13882 * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
13883 Add item for branch_cost.
13884
13885 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
13886
13887 PR rtl-optimization/83565
13888 * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
13889 not extend the result to a larger mode for rotate operations.
13890 (num_sign_bit_copies1): Likewise.
13891
13892 2018-01-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
13893
13894 PR target/40411
13895 * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
13896 -symbolic.
13897 Use values-Xc.o for -pedantic.
13898 Link with values-xpg4.o for C90, values-xpg6.o otherwise.
13899
13900 2018-01-12 Martin Liska <mliska@suse.cz>
13901
13902 PR ipa/83054
13903 * ipa-devirt.c (final_warning_record::grow_type_warnings):
13904 New function.
13905 (possible_polymorphic_call_targets): Use it.
13906 (ipa_devirt): Likewise.
13907
13908 2018-01-12 Martin Liska <mliska@suse.cz>
13909
13910 * profile-count.h (enum profile_quality): Use 0 as invalid
13911 enum value of profile_quality.
13912
13913 2018-01-12 Chung-Ju Wu <jasonwucj@gmail.com>
13914
13915 * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
13916 -mext-string options.
13917
13918 2018-01-12 Richard Biener <rguenther@suse.de>
13919
13920 * lto-streamer-out.c (DFS::DFS_write_tree_body): Process
13921 DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P.
13922 * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
13923 Likewise.
13924 * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
13925
13926 2018-01-11 Michael Meissner <meissner@linux.vnet.ibm.com>
13927
13928 * configure.ac (--with-long-double-format): Add support for the
13929 configuration option to change the default long double format on
13930 PowerPC systems.
13931 * config.gcc (powerpc*-linux*-*): Likewise.
13932 * configure: Regenerate.
13933 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
13934 double is IEEE, define __KC__ and __KF__ to allow floatn.h to be
13935 used without modification.
13936
13937 2018-01-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
13938
13939 * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define.
13940 (SPEC_BARRIER): New instantiation of BU_P7_MISC_X.
13941 * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle
13942 MISC_BUILTIN_SPEC_BARRIER.
13943 (rs6000_init_builtins): Likewise.
13944 * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV
13945 enum value.
13946 (speculation_barrier): New define_insn.
13947 * doc/extend.texi: Document __builtin_speculation_barrier.
13948
13949 2018-01-11 Jakub Jelinek <jakub@redhat.com>
13950
13951 PR target/83203
13952 * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
13953 is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set<mode>_0.
13954 * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
13955 iterators.
13956 (ssescalarmodesuffix): Add 512-bit vectors. Use "d" or "q" for
13957 integral modes instead of "ss" and "sd".
13958 (vec_set<mode>_0): New define_insns for 256-bit and 512-bit
13959 vectors with 32-bit and 64-bit elements.
13960 (vecdupssescalarmodesuffix): New mode attribute.
13961 (vec_dup<mode>): Use it.
13962
13963 2018-01-11 H.J. Lu <hongjiu.lu@intel.com>
13964
13965 PR target/83330
13966 * config/i386/i386.c (ix86_compute_frame_layout): Align stack
13967 frame if argument is passed on stack.
13968
13969 2018-01-11 Jakub Jelinek <jakub@redhat.com>
13970
13971 PR target/82682
13972 * ree.c (combine_reaching_defs): Optimize also
13973 reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
13974 reg2=any_extend(exp); reg1=reg2;, formatting fix.
13975
13976 2018-01-11 Jan Hubicka <hubicka@ucw.cz>
13977
13978 PR middle-end/83189
13979 * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.
13980
13981 2018-01-11 Jan Hubicka <hubicka@ucw.cz>
13982
13983 PR middle-end/83718
13984 * tree-inline.c (copy_cfg_body): Adjust num&den for scaling
13985 after they are computed.
13986
13987 2018-01-11 Bin Cheng <bin.cheng@arm.com>
13988
13989 PR tree-optimization/83695
13990 * gimple-loop-linterchange.cc
13991 (tree_loop_interchange::interchange_loops): Call scev_reset_htab to
13992 reset cached scev information after interchange.
13993 (pass_linterchange::execute): Remove call to scev_reset_htab.
13994
13995 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13996
13997 * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32,
13998 vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32,
13999 vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32,
14000 vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32,
14001 vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32,
14002 vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define.
14003 * config/arm/arm_neon_builtins.def (vfmal_lane_low,
14004 vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high,
14005 vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low,
14006 vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high,
14007 vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins.
14008 * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes.
14009 (V_lane_reg): Likewise.
14010 * config/arm/neon.md (neon_vfm<vfml_op>l_lane_<vfml_half><VCVTF:mode>):
14011 New define_expand.
14012 (neon_vfm<vfml_op>l_lane_<vfml_half><vfmlsel2><mode>): Likewise.
14013 (vfmal_lane_low<mode>_intrinsic,
14014 vfmal_lane_low<vfmlsel2><mode>_intrinsic,
14015 vfmal_lane_high<vfmlsel2><mode>_intrinsic,
14016 vfmal_lane_high<mode>_intrinsic, vfmsl_lane_low<mode>_intrinsic,
14017 vfmsl_lane_low<vfmlsel2><mode>_intrinsic,
14018 vfmsl_lane_high<vfmlsel2><mode>_intrinsic,
14019 vfmsl_lane_high<mode>_intrinsic): New define_insns.
14020
14021 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14022
14023 * config/arm/arm-cpus.in (fp16fml): New feature.
14024 (ALL_SIMD): Add fp16fml.
14025 (armv8.2-a): Add fp16fml as an option.
14026 (armv8.3-a): Likewise.
14027 (armv8.4-a): Add fp16fml as part of fp16.
14028 * config/arm/arm.h (TARGET_FP16FML): Define.
14029 * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML
14030 when appropriate.
14031 * config/arm/arm-modes.def (V2HF): Define.
14032 * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
14033 vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32,
14034 vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define.
14035 * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high,
14036 vfmsl_low, vfmsl_high): New set of builtins.
14037 * config/arm/iterators.md (PLUSMINUS): New code iterator.
14038 (vfml_op): New code attribute.
14039 (VFMLHALVES): New int iterator.
14040 (VFML, VFMLSEL): New mode attributes.
14041 (V_reg): Define mapping for V2HF.
14042 (V_hi, V_lo): New mode attributes.
14043 (VF_constraint): Likewise.
14044 (vfml_half, vfml_half_selector): New int attributes.
14045 * config/arm/neon.md (neon_vfm<vfml_op>l_<vfml_half><mode>): New
14046 define_expand.
14047 (vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
14048 vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
14049 New define_insn.
14050 * config/arm/t-arm-elf (v8_fps): Add fp16fml.
14051 * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml.
14052 * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs.
14053 * doc/invoke.texi (ARM Options): Document fp16fml. Update armv8.4-a
14054 documentation.
14055 * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
14056 Document new effective target and option set.
14057
14058 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14059
14060 * config/arm/arm-cpus.in (armv8_4): New feature.
14061 (ARMv8_4a): New fgroup.
14062 (armv8.4-a): New arch.
14063 * config/arm/arm-tables.opt: Regenerate.
14064 * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a.
14065 * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a.
14066 * config/arm/t-multilib (v8_4_a_simd_variants): New variable.
14067 Add matching rules for -march=armv8.4-a and extensions.
14068 * doc/invoke.texi (ARM Options): Document -march=armv8.4-a.
14069
14070 2018-01-11 Oleg Endo <olegendo@gcc.gnu.org>
14071
14072 PR target/81821
14073 * config/rx/rx.md (BW): New mode attribute.
14074 (sync_lock_test_and_setsi): Add mode suffix to insn output.
14075
14076 2018-01-11 Richard Biener <rguenther@suse.de>
14077
14078 PR tree-optimization/83435
14079 * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
14080 * graphite-scop-detection.c (scop_detection::get_sese): Likewise.
14081 * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
14082
14083 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
14084 Alan Hayward <alan.hayward@arm.com>
14085 David Sherwood <david.sherwood@arm.com>
14086
14087 * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset
14088 field.
14089 (aarch64_classify_address): Initialize it. Track polynomial offsets.
14090 (aarch64_print_address_internal): Use it to check for a zero offset.
14091
14092 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
14093 Alan Hayward <alan.hayward@arm.com>
14094 David Sherwood <david.sherwood@arm.com>
14095
14096 * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2.
14097 * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset):
14098 Return a poly_int64 rather than a HOST_WIDE_INT.
14099 (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64
14100 rather than a HOST_WIDE_INT.
14101 * config/aarch64/aarch64.h (aarch64_frame): Protect with
14102 HAVE_POLY_INT_H rather than HOST_WIDE_INT. Change locals_offset,
14103 hard_fp_offset, frame_size, initial_adjust, callee_offset and
14104 final_offset from HOST_WIDE_INT to poly_int64.
14105 * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
14106 to_constant when getting the number of units in an Advanced SIMD
14107 mode.
14108 (aarch64_builtin_vectorized_function): Check for a constant number
14109 of units.
14110 * config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
14111 GET_MODE_SIZE.
14112 (aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): Use the nunits
14113 attribute instead of GET_MODE_NUNITS.
14114 * config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
14115 (aarch64_class_max_nregs): Use the constant_lowest_bound of the
14116 GET_MODE_SIZE for fixed-size registers.
14117 (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p.
14118 (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index)
14119 (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address)
14120 (aarch64_legitimize_address_displacement, aarch64_secondary_reload)
14121 (aarch64_print_operand, aarch64_print_address_internal)
14122 (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost)
14123 (aarch64_short_vector_p, aapcs_vfp_sub_candidate)
14124 (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp):
14125 Handle polynomial GET_MODE_SIZE.
14126 (aarch64_hard_regno_caller_save_mode): Likewise. Return modes
14127 wider than SImode without modification.
14128 (tls_symbolic_operand_type): Use strip_offset instead of split_const.
14129 (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward)
14130 (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle
14131 passing and returning SVE modes.
14132 (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode
14133 rather than GEN_INT.
14134 (aarch64_emit_probe_stack_range): Take the size as a poly_int64
14135 rather than a HOST_WIDE_INT, but call sorry if it isn't constant.
14136 (aarch64_allocate_and_probe_stack_space): Likewise.
14137 (aarch64_layout_frame): Cope with polynomial offsets.
14138 (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the
14139 start_offset as a poly_int64 rather than a HOST_WIDE_INT. Track
14140 polynomial offsets.
14141 (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p)
14142 (aarch64_offset_7bit_signed_scaled_p): Take the offset as a
14143 poly_int64 rather than a HOST_WIDE_INT.
14144 (aarch64_get_separate_components, aarch64_process_components)
14145 (aarch64_expand_prologue, aarch64_expand_epilogue)
14146 (aarch64_use_return_insn_p): Handle polynomial frame offsets.
14147 (aarch64_anchor_offset): New function, split out from...
14148 (aarch64_legitimize_address): ...here.
14149 (aarch64_builtin_vectorization_cost): Handle polynomial
14150 TYPE_VECTOR_SUBPARTS.
14151 (aarch64_simd_check_vect_par_cnst_half): Handle polynomial
14152 GET_MODE_NUNITS.
14153 (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the
14154 number of elements from the PARALLEL rather than the mode.
14155 (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE
14156 rather than GET_MODE_BITSIZE.
14157 (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext)
14158 (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip)
14159 (aarch64_expand_vec_perm_const_1): Handle polynomial
14160 d->perm.length () and d->perm elements.
14161 (aarch64_evpc_tbl): Likewise. Use nelt rather than GET_MODE_NUNITS.
14162 Apply to_constant to d->perm elements.
14163 (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle
14164 polynomial CONST_VECTOR_NUNITS.
14165 (aarch64_move_pointer): Take amount as a poly_int64 rather
14166 than an int.
14167 (aarch64_progress_pointer): Avoid temporary variable.
14168 * config/aarch64/aarch64.md (aarch64_<crc_variant>): Use
14169 the mode attribute instead of GET_MODE.
14170
14171 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
14172 Alan Hayward <alan.hayward@arm.com>
14173 David Sherwood <david.sherwood@arm.com>
14174
14175 * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that
14176 x exists before using it.
14177 (aarch64_add_constant_internal): Rename to...
14178 (aarch64_add_offset_1): ...this. Replace regnum with separate
14179 src and dest rtxes. Handle the case in which they're different,
14180 including when the offset is zero. Replace scratchreg with an rtx.
14181 Use 2 additions if there is no spare register into which we can
14182 move a 16-bit constant.
14183 (aarch64_add_constant): Delete.
14184 (aarch64_add_offset): Replace reg with separate src and dest
14185 rtxes. Take a poly_int64 offset instead of a HOST_WIDE_INT.
14186 Use aarch64_add_offset_1.
14187 (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as
14188 an rtx rather than an int. Take the delta as a poly_int64
14189 rather than a HOST_WIDE_INT. Use aarch64_add_offset.
14190 (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset.
14191 (aarch64_expand_prologue): Update calls to aarch64_sub_sp,
14192 aarch64_allocate_and_probe_stack_space and aarch64_add_offset.
14193 (aarch64_expand_epilogue): Update calls to aarch64_add_offset
14194 and aarch64_add_sp.
14195 (aarch64_output_mi_thunk): Use aarch64_add_offset rather than
14196 aarch64_add_constant.
14197
14198 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
14199
14200 * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
14201 Use scalar_float_mode.
14202
14203 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
14204
14205 * config/aarch64/aarch64-simd.md
14206 (aarch64_fml<f16mac1>l<f16quad>_low<mode>): Avoid GET_MODE_NUNITS.
14207 (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Likewise.
14208 (aarch64_fml<f16mac1>l_lane_lowv2sf): Likewise.
14209 (aarch64_fml<f16mac1>l_lane_highv2sf): Likewise.
14210 (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Likewise.
14211 (aarch64_fml<f16mac1>lq_laneq_highv4sf): Likewise.
14212 (aarch64_fml<f16mac1>l_laneq_lowv2sf): Likewise.
14213 (aarch64_fml<f16mac1>l_laneq_highv2sf): Likewise.
14214 (aarch64_fml<f16mac1>lq_lane_lowv4sf): Likewise.
14215 (aarch64_fml<f16mac1>lq_lane_highv4sf): Likewise.
14216
14217 2018-01-11 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
14218
14219 PR target/83514
14220 * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if
14221 targ_options->x_arm_arch_string is non NULL.
14222
14223 2018-01-11 Tamar Christina <tamar.christina@arm.com>
14224
14225 * config/aarch64/aarch64.h
14226 (AARCH64_FL_FOR_ARCH8_4): Add AARCH64_FL_DOTPROD.
14227
14228 2018-01-11 Sudakshina Das <sudi.das@arm.com>
14229
14230 PR target/82096
14231 * expmed.c (emit_store_flag_force): Swap if const op0
14232 and change VOIDmode to mode of op0.
14233
14234 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
14235
14236 PR rtl-optimization/83761
14237 * caller-save.c (replace_reg_with_saved_mem): Pass bits rather
14238 than bytes to mode_for_size.
14239
14240 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
14241
14242 PR middle-end/83189
14243 * gfortran.fortran-torture/compile/pr83189.f90: New testcase.
14244 * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
14245 profile.
14246
14247 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
14248
14249 PR middle-end/83575
14250 * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
14251 when in layout mode.
14252 (cfg_layout_finalize): Do not verify cfg before we are out of layout.
14253 * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
14254 partition fixup.
14255
14256 2018-01-10 Michael Collison <michael.collison@arm.com>
14257
14258 * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
14259 * config/aarch64/aarch64-option-extension.def: Add
14260 AARCH64_OPT_EXTENSION of 'fp16fml'.
14261 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
14262 (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
14263 * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
14264 * config/aarch64/constraints.md (Ui7): New constraint.
14265 * config/aarch64/iterators.md (VFMLA_W): New mode iterator.
14266 (VFMLA_SEL_W): Ditto.
14267 (f16quad): Ditto.
14268 (f16mac1): Ditto.
14269 (VFMLA16_LOW): New int iterator.
14270 (VFMLA16_HIGH): Ditto.
14271 (UNSPEC_FMLAL): New unspec.
14272 (UNSPEC_FMLSL): Ditto.
14273 (UNSPEC_FMLAL2): Ditto.
14274 (UNSPEC_FMLSL2): Ditto.
14275 (f16mac): New code attribute.
14276 * config/aarch64/aarch64-simd-builtins.def
14277 (aarch64_fmlal_lowv2sf): Ditto.
14278 (aarch64_fmlsl_lowv2sf): Ditto.
14279 (aarch64_fmlalq_lowv4sf): Ditto.
14280 (aarch64_fmlslq_lowv4sf): Ditto.
14281 (aarch64_fmlal_highv2sf): Ditto.
14282 (aarch64_fmlsl_highv2sf): Ditto.
14283 (aarch64_fmlalq_highv4sf): Ditto.
14284 (aarch64_fmlslq_highv4sf): Ditto.
14285 (aarch64_fmlal_lane_lowv2sf): Ditto.
14286 (aarch64_fmlsl_lane_lowv2sf): Ditto.
14287 (aarch64_fmlal_laneq_lowv2sf): Ditto.
14288 (aarch64_fmlsl_laneq_lowv2sf): Ditto.
14289 (aarch64_fmlalq_lane_lowv4sf): Ditto.
14290 (aarch64_fmlsl_lane_lowv4sf): Ditto.
14291 (aarch64_fmlalq_laneq_lowv4sf): Ditto.
14292 (aarch64_fmlsl_laneq_lowv4sf): Ditto.
14293 (aarch64_fmlal_lane_highv2sf): Ditto.
14294 (aarch64_fmlsl_lane_highv2sf): Ditto.
14295 (aarch64_fmlal_laneq_highv2sf): Ditto.
14296 (aarch64_fmlsl_laneq_highv2sf): Ditto.
14297 (aarch64_fmlalq_lane_highv4sf): Ditto.
14298 (aarch64_fmlsl_lane_highv4sf): Ditto.
14299 (aarch64_fmlalq_laneq_highv4sf): Ditto.
14300 (aarch64_fmlsl_laneq_highv4sf): Ditto.
14301 * config/aarch64/aarch64-simd.md:
14302 (aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
14303 (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
14304 (aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
14305 (aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
14306 (aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
14307 (aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
14308 (aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
14309 (aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
14310 (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
14311 (aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
14312 (aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
14313 (aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
14314 (aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
14315 (aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
14316 (aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
14317 (aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
14318 (aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
14319 (aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
14320 (aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
14321 (aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
14322 * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
14323 (vfmlsl_low_u32): Ditto.
14324 (vfmlalq_low_u32): Ditto.
14325 (vfmlslq_low_u32): Ditto.
14326 (vfmlal_high_u32): Ditto.
14327 (vfmlsl_high_u32): Ditto.
14328 (vfmlalq_high_u32): Ditto.
14329 (vfmlslq_high_u32): Ditto.
14330 (vfmlal_lane_low_u32): Ditto.
14331 (vfmlsl_lane_low_u32): Ditto.
14332 (vfmlal_laneq_low_u32): Ditto.
14333 (vfmlsl_laneq_low_u32): Ditto.
14334 (vfmlalq_lane_low_u32): Ditto.
14335 (vfmlslq_lane_low_u32): Ditto.
14336 (vfmlalq_laneq_low_u32): Ditto.
14337 (vfmlslq_laneq_low_u32): Ditto.
14338 (vfmlal_lane_high_u32): Ditto.
14339 (vfmlsl_lane_high_u32): Ditto.
14340 (vfmlal_laneq_high_u32): Ditto.
14341 (vfmlsl_laneq_high_u32): Ditto.
14342 (vfmlalq_lane_high_u32): Ditto.
14343 (vfmlslq_lane_high_u32): Ditto.
14344 (vfmlalq_laneq_high_u32): Ditto.
14345 (vfmlslq_laneq_high_u32): Ditto.
14346 * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
14347 (AARCH64_FL_FOR_ARCH8_4): New.
14348 (AARCH64_ISA_F16FML): New ISA flag.
14349 (TARGET_F16FML): New feature flag for fp16fml.
14350 (doc/invoke.texi): Document new fp16fml option.
14351
14352 2018-01-10 Michael Collison <michael.collison@arm.com>
14353
14354 * config/aarch64/aarch64-builtins.c:
14355 (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
14356 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
14357 (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
14358 * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
14359 (AARCH64_ISA_SHA3): New ISA flag.
14360 (TARGET_SHA3): New feature flag for sha3.
14361 * config/aarch64/iterators.md (sha512_op): New int attribute.
14362 (CRYPTO_SHA512): New int iterator.
14363 (UNSPEC_SHA512H): New unspec.
14364 (UNSPEC_SHA512H2): Ditto.
14365 (UNSPEC_SHA512SU0): Ditto.
14366 (UNSPEC_SHA512SU1): Ditto.
14367 * config/aarch64/aarch64-simd-builtins.def
14368 (aarch64_crypto_sha512hqv2di): New builtin.
14369 (aarch64_crypto_sha512h2qv2di): Ditto.
14370 (aarch64_crypto_sha512su0qv2di): Ditto.
14371 (aarch64_crypto_sha512su1qv2di): Ditto.
14372 (aarch64_eor3qv8hi): Ditto.
14373 (aarch64_rax1qv2di): Ditto.
14374 (aarch64_xarqv2di): Ditto.
14375 (aarch64_bcaxqv8hi): Ditto.
14376 * config/aarch64/aarch64-simd.md:
14377 (aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
14378 (aarch64_crypto_sha512su0qv2di): Ditto.
14379 (aarch64_crypto_sha512su1qv2di): Ditto.
14380 (aarch64_eor3qv8hi): Ditto.
14381 (aarch64_rax1qv2di): Ditto.
14382 (aarch64_xarqv2di): Ditto.
14383 (aarch64_bcaxqv8hi): Ditto.
14384 * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
14385 (vsha512h2q_u64): Ditto.
14386 (vsha512su0q_u64): Ditto.
14387 (vsha512su1q_u64): Ditto.
14388 (veor3q_u16): Ditto.
14389 (vrax1q_u64): Ditto.
14390 (vxarq_u64): Ditto.
14391 (vbcaxq_u16): Ditto.
14392 * config/arm/types.md (crypto_sha512): New type attribute.
14393 (crypto_sha3): Ditto.
14394 (doc/invoke.texi): Document new sha3 option.
14395
14396 2018-01-10 Michael Collison <michael.collison@arm.com>
14397
14398 * config/aarch64/aarch64-builtins.c:
14399 (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
14400 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
14401 (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
14402 (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
14403 * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
14404 (AARCH64_ISA_SM4): New ISA flag.
14405 (TARGET_SM4): New feature flag for sm4.
14406 * config/aarch64/aarch64-simd-builtins.def
14407 (aarch64_sm3ss1qv4si): Ditto.
14408 (aarch64_sm3tt1aq4si): Ditto.
14409 (aarch64_sm3tt1bq4si): Ditto.
14410 (aarch64_sm3tt2aq4si): Ditto.
14411 (aarch64_sm3tt2bq4si): Ditto.
14412 (aarch64_sm3partw1qv4si): Ditto.
14413 (aarch64_sm3partw2qv4si): Ditto.
14414 (aarch64_sm4eqv4si): Ditto.
14415 (aarch64_sm4ekeyqv4si): Ditto.
14416 * config/aarch64/aarch64-simd.md:
14417 (aarch64_sm3ss1qv4si): Ditto.
14418 (aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
14419 (aarch64_sm3partw<sm3part_op>qv4si): Ditto.
14420 (aarch64_sm4eqv4si): Ditto.
14421 (aarch64_sm4ekeyqv4si): Ditto.
14422 * config/aarch64/iterators.md (sm3tt_op): New int iterator.
14423 (sm3part_op): Ditto.
14424 (CRYPTO_SM3TT): Ditto.
14425 (CRYPTO_SM3PART): Ditto.
14426 (UNSPEC_SM3SS1): New unspec.
14427 (UNSPEC_SM3TT1A): Ditto.
14428 (UNSPEC_SM3TT1B): Ditto.
14429 (UNSPEC_SM3TT2A): Ditto.
14430 (UNSPEC_SM3TT2B): Ditto.
14431 (UNSPEC_SM3PARTW1): Ditto.
14432 (UNSPEC_SM3PARTW2): Ditto.
14433 (UNSPEC_SM4E): Ditto.
14434 (UNSPEC_SM4EKEY): Ditto.
14435 * config/aarch64/constraints.md (Ui2): New constraint.
14436 * config/aarch64/predicates.md (aarch64_imm2): New predicate.
14437 * config/arm/types.md (crypto_sm3): New type attribute.
14438 (crypto_sm4): Ditto.
14439 * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
14440 (vsm3tt1aq_u32): Ditto.
14441 (vsm3tt1bq_u32): Ditto.
14442 (vsm3tt2aq_u32): Ditto.
14443 (vsm3tt2bq_u32): Ditto.
14444 (vsm3partw1q_u32): Ditto.
14445 (vsm3partw2q_u32): Ditto.
14446 (vsm4eq_u32): Ditto.
14447 (vsm4ekeyq_u32): Ditto.
14448 (doc/invoke.texi): Document new sm4 option.
14449
14450 2018-01-10 Michael Collison <michael.collison@arm.com>
14451
14452 * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
14453 * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
14454 (AARCH64_FL_FOR_ARCH8_4): New.
14455 (AARCH64_FL_V8_4): New flag.
14456 (doc/invoke.texi): Document new armv8.4-a option.
14457
14458 2018-01-10 Michael Collison <michael.collison@arm.com>
14459
14460 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
14461 (__ARM_FEATURE_AES): Define if TARGET_AES is true.
14462 (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
14463 * config/aarch64/aarch64-option-extension.def: Add
14464 AARCH64_OPT_EXTENSION of 'sha2'.
14465 (aes): Add AARCH64_OPT_EXTENSION of 'aes'.
14466 (crypto): Disable sha2 and aes if crypto disabled.
14467 (crypto): Enable aes and sha2 if enabled.
14468 (simd): Disable sha2 and aes if simd disabled.
14469 * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
14470 New flags.
14471 (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
14472 (TARGET_SHA2): New feature flag for sha2.
14473 (TARGET_AES): New feature flag for aes.
14474 * config/aarch64/aarch64-simd.md:
14475 (aarch64_crypto_aes<aes_op>v16qi): Make pattern
14476 conditional on TARGET_AES.
14477 (aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
14478 (aarch64_crypto_sha1hsi): Make pattern conditional
14479 on TARGET_SHA2.
14480 (aarch64_crypto_sha1hv4si): Ditto.
14481 (aarch64_be_crypto_sha1hv4si): Ditto.
14482 (aarch64_crypto_sha1su1v4si): Ditto.
14483 (aarch64_crypto_sha1<sha1_op>v4si): Ditto.
14484 (aarch64_crypto_sha1su0v4si): Ditto.
14485 (aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
14486 (aarch64_crypto_sha256su0v4si): Ditto.
14487 (aarch64_crypto_sha256su1v4si): Ditto.
14488 (doc/invoke.texi): Document new aes and sha2 options.
14489
14490 2018-01-10 Martin Sebor <msebor@redhat.com>
14491
14492 PR tree-optimization/83781
14493 * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
14494 as string arrays.
14495
14496 2018-01-11 Martin Sebor <msebor@gmail.com>
14497 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
14498
14499 PR tree-optimization/83501
14500 PR tree-optimization/81703
14501
14502 * tree-ssa-strlen.c (get_string_cst): Rename...
14503 (get_string_len): ...to this. Handle global constants.
14504 (handle_char_store): Adjust.
14505
14506 2018-01-10 Kito Cheng <kito.cheng@gmail.com>
14507 Jim Wilson <jimw@sifive.com>
14508
14509 * config/riscv/riscv-protos.h (riscv_output_return): New.
14510 * config/riscv/riscv.c (struct machine_function): New naked_p field.
14511 (riscv_attribute_table, riscv_output_return),
14512 (riscv_handle_fndecl_attribute, riscv_naked_function_p),
14513 (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
14514 (riscv_compute_frame_info): Only compute frame->mask if not a naked
14515 function.
14516 (riscv_expand_prologue): Add early return for naked function.
14517 (riscv_expand_epilogue): Likewise.
14518 (riscv_function_ok_for_sibcall): Return false for naked function.
14519 (riscv_set_current_function): New.
14520 (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
14521 (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
14522 * config/riscv/riscv.md (simple_return): Call riscv_output_return.
14523 * doc/extend.texi (RISC-V Function Attributes): New.
14524
14525 2018-01-10 Michael Meissner <meissner@linux.vnet.ibm.com>
14526
14527 * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
14528 check for 128-bit long double before checking TCmode.
14529 * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
14530 128-bit long doubles before checking TFmode or TCmode.
14531 (FLOAT128_IBM_P): Likewise.
14532
14533 2018-01-10 Martin Sebor <msebor@redhat.com>
14534
14535 PR tree-optimization/83671
14536 * builtins.c (c_strlen): Unconditionally return zero for the empty
14537 string.
14538 Use -Warray-bounds for warnings.
14539 * gimple-fold.c (get_range_strlen): Handle non-constant lengths
14540 for non-constant array indices with COMPONENT_REF, arrays of
14541 arrays, and pointers to arrays.
14542 (gimple_fold_builtin_strlen): Determine and set length range for
14543 non-constant character arrays.
14544
14545 2018-01-10 Aldy Hernandez <aldyh@redhat.com>
14546
14547 PR middle-end/81897
14548 * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
14549 empty blocks.
14550
14551 2018-01-10 Eric Botcazou <ebotcazou@adacore.com>
14552
14553 * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf.
14554
14555 2018-01-10 Peter Bergner <bergner@vnet.ibm.com>
14556
14557 PR target/83399
14558 * config/rs6000/rs6000.c (print_operand) <'y'>: Use
14559 VECTOR_MEM_ALTIVEC_OR_VSX_P.
14560 * config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
14561 indexed_or_indirect_operand predicate.
14562 (*vsx_le_perm_load_<mode> for VSX_W): Likewise.
14563 (*vsx_le_perm_load_v8hi): Likewise.
14564 (*vsx_le_perm_load_v16qi): Likewise.
14565 (*vsx_le_perm_store_<mode> for VSX_D): Likewise.
14566 (*vsx_le_perm_store_<mode> for VSX_W): Likewise.
14567 (*vsx_le_perm_store_v8hi): Likewise.
14568 (*vsx_le_perm_store_v16qi): Likewise.
14569 (eight unnamed splitters): Likewise.
14570
14571 2018-01-10 Peter Bergner <bergner@vnet.ibm.com>
14572
14573 * config/rs6000/x86intrin.h: Change #warning to #error. Update message.
14574 * config/rs6000/emmintrin.h: Likewise.
14575 * config/rs6000/mmintrin.h: Likewise.
14576 * config/rs6000/xmmintrin.h: Likewise.
14577
14578 2018-01-10 David Malcolm <dmalcolm@redhat.com>
14579
14580 PR c++/43486
14581 * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
14582 "public_flag".
14583 * tree.c (tree_nop_conversion): Return true for location wrapper
14584 nodes.
14585 (maybe_wrap_with_location): New function.
14586 (selftest::check_strip_nops): New function.
14587 (selftest::test_location_wrappers): New function.
14588 (selftest::tree_c_tests): Call it.
14589 * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
14590 (maybe_wrap_with_location): New decl.
14591 (EXPR_LOCATION_WRAPPER_P): New macro.
14592 (location_wrapper_p): New inline function.
14593 (tree_strip_any_location_wrapper): New inline function.
14594
14595 2018-01-10 H.J. Lu <hongjiu.lu@intel.com>
14596
14597 PR target/83735
14598 * config/i386/i386.c (ix86_compute_frame_layout): Always adjust
14599 stack_realign_offset for the largest alignment of stack slot
14600 actually used.
14601 (ix86_find_max_used_stack_alignment): New function.
14602 (ix86_finalize_stack_frame_flags): Use it. Set
14603 max_used_stack_alignment if we don't realign stack.
14604 * config/i386/i386.h (machine_function): Add
14605 max_used_stack_alignment.
14606
14607 2018-01-10 Christophe Lyon <christophe.lyon@linaro.org>
14608
14609 * config/arm/arm.opt (-mbranch-cost): New option.
14610 * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
14611 account.
14612
14613 2018-01-10 Segher Boessenkool <segher@kernel.crashing.org>
14614
14615 PR target/83629
14616 * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
14617 load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
14618
14619 2018-01-10 Richard Biener <rguenther@suse.de>
14620
14621 PR debug/83765
14622 * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
14623 early out so it also covers the case where we have a non-NULL
14624 origin.
14625
14626 2018-01-10 Richard Sandiford <richard.sandiford@linaro.org>
14627
14628 PR tree-optimization/83753
14629 * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
14630 for non-strided grouped accesses if the number of elements is 1.
14631
14632 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
14633
14634 PR target/81616
14635 * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
14636 * i386.h (TARGET_USE_GATHER): Define.
14637 * x86-tune.def (X86_TUNE_USE_GATHER): New.
14638
14639 2018-01-10 Martin Liska <mliska@suse.cz>
14640
14641 PR bootstrap/82831
14642 * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
14643 * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
14644 partitioning.
14645 * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
14646 CLEANUP_NO_PARTITIONING is not set.
14647
14648 2018-01-10 Richard Sandiford <richard.sandiford@linaro.org>
14649
14650 * doc/rtl.texi: Remove documentation of (const ...) wrappers
14651 for vectors, as a partial revert of r254296.
14652 * rtl.h (const_vec_p): Delete.
14653 (const_vec_duplicate_p): Don't test for vector CONSTs.
14654 (unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
14655 * expmed.c (make_tree): Likewise.
14656
14657 Revert:
14658 * common.md (E, F): Use CONSTANT_P instead of checking for
14659 CONST_VECTOR.
14660 * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
14661 checking for CONST_VECTOR.
14662
14663 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
14664
14665 PR middle-end/83575
14666 * predict.c (force_edge_cold): Handle in more sane way edges
14667 with no prediction.
14668
14669 2018-01-09 Carl Love <cel@us.ibm.com>
14670
14671 * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
14672 V4SI, V4SF types.
14673 (p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
14674 * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
14675 VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
14676 VMRGOW_V2DI, VMRGOW_V2DF. Remove definition for VMRGOW.
14677 * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
14678 P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW): Add definitions.
14679 * config/rs6000/rs6000-protos.h: Add extern defition for
14680 rs6000_generate_float2_double_code.
14681 * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
14682 function.
14683 * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
14684 (float2_v2df): Add define_expand.
14685
14686 2018-01-09 Uros Bizjak <ubizjak@gmail.com>
14687
14688 PR target/83628
14689 * combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
14690 op_mode in the force_to_mode call.
14691
14692 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
14693
14694 * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
14695 instead of checking each element individually.
14696 (aarch64_evpc_uzp): Likewise.
14697 (aarch64_evpc_zip): Likewise.
14698 (aarch64_evpc_ext): Likewise.
14699 (aarch64_evpc_rev): Likewise.
14700 (aarch64_evpc_dup): Test the encoding for a single duplicated element,
14701 instead of checking each element individually. Return true without
14702 generating rtl if
14703 (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
14704 whether all selected elements come from the same input, instead of
14705 checking each element individually. Remove calls to gen_rtx_REG,
14706 start_sequence and end_sequence and instead assert that no rtl is
14707 generated.
14708
14709 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
14710
14711 * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
14712 order of HIGH and CONST checks.
14713
14714 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
14715
14716 * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
14717 if the destination isn't an SSA_NAME.
14718
14719 2018-01-09 Richard Biener <rguenther@suse.de>
14720
14721 PR tree-optimization/83668
14722 * graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
14723 move prologue...
14724 (canonicalize_loop_form): ... here, renamed from ...
14725 (canonicalize_loop_closed_ssa_form): ... this and amended to
14726 swap successor edges for loop exit blocks to make us use
14727 the RPO order we need for initial schedule generation.
14728
14729 2018-01-09 Joseph Myers <joseph@codesourcery.com>
14730
14731 PR tree-optimization/64811
14732 * match.pd: When optimizing comparisons with Inf, avoid
14733 introducing or losing exceptions from comparisons with NaN.
14734
14735 2018-01-09 Martin Liska <mliska@suse.cz>
14736
14737 PR sanitizer/82517
14738 * asan.c (shadow_mem_size): Add gcc_assert.
14739
14740 2018-01-09 Georg-Johann Lay <avr@gjlay.de>
14741
14742 Don't save registers in main().
14743
14744 PR target/83738
14745 * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
14746 * config/avr/avr.opt (-mmain-is-OS_task): New target option.
14747 * config/avr/avr.c (avr_set_current_function): Don't error if
14748 naked, OS_task or OS_main are specified at the same time.
14749 (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
14750 OS_main.
14751 (avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
14752 attribute.
14753 * common/config/avr/avr-common.c (avr_option_optimization_table):
14754 Switch on -mmain-is-OS_task for optimizing compilations.
14755
14756 2018-01-09 Richard Biener <rguenther@suse.de>
14757
14758 PR tree-optimization/83572
14759 * graphite.c: Include cfganal.h.
14760 (graphite_transform_loops): Connect infinite loops to exit
14761 and remove fake edges at the end.
14762
14763 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
14764
14765 * ipa-inline.c (edge_badness): Revert accidental checkin.
14766
14767 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
14768
14769 PR ipa/80763
14770 * ipa-comdats.c (set_comdat_group): Only set comdat group of real
14771 symbols; not inline clones.
14772
14773 2018-01-09 Jakub Jelinek <jakub@redhat.com>
14774
14775 PR target/83507
14776 * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
14777 hard registers. Formatting fixes.
14778
14779 PR preprocessor/83722
14780 * gcc.c (try_generate_repro): Pass
14781 &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
14782 &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
14783 do_report_bug.
14784
14785 2018-01-08 Monk Chiang <sh.chiang04@gmail.com>
14786 Kito Cheng <kito.cheng@gmail.com>
14787
14788 * config/riscv/riscv.c (machine_function::is_leaf): Remove field.
14789 (riscv_leaf_function_p): Delete.
14790 (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
14791
14792 2018-01-08 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
14793
14794 * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
14795 function.
14796 (do_ifelse): New function.
14797 (do_isel): New function.
14798 (do_sub3): New function.
14799 (do_add3): New function.
14800 (do_load_mask_compare): New function.
14801 (do_overlap_load_compare): New function.
14802 (expand_compare_loop): New function.
14803 (expand_block_compare): Call expand_compare_loop() when appropriate.
14804 * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
14805 option description.
14806 (-mblock-compare-inline-loop-limit): New option.
14807
14808 2018-01-08 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
14809
14810 PR target/83677
14811 * config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
14812 Reverse order of second and third operands in first alternative.
14813 * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
14814 of first and second elements in UNSPEC_VPERMR vector.
14815 (altivec_expand_vec_perm_le): Likewise.
14816
14817 2018-01-08 Jeff Law <law@redhat.com>
14818
14819 PR rtl-optimizatin/81308
14820 * tree-switch-conversion.c (cfg_altered): New file scoped static.
14821 (process_switch): If group_case_labels makes a change, then set
14822 cfg_altered.
14823 (pass_convert_switch::execute): If a switch is converted, then
14824 set cfg_altered. Return TODO_cfg_cleanup if cfg_altered is true.
14825
14826 PR rtl-optimization/81308
14827 * recog.c (split_all_insns): Conditionally cleanup the CFG after
14828 splitting insns.
14829
14830 2018-01-08 Vidya Praveen <vidyapraveen@arm.com>
14831
14832 PR target/83663 - Revert r255946
14833 * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
14834 generation for cases where splatting a value is not useful.
14835 * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
14836 across a vec_duplicate and a paradoxical subreg forming a vector
14837 mode to a vec_concat.
14838
14839 2018-01-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14840
14841 * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
14842 -march=armv8.3-a variants.
14843 * config/arm/t-multilib: Likewise.
14844 * config/arm/t-arm-elf: Likewise. Handle dotprod extension.
14845
14846 2018-01-08 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
14847
14848 * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
14849 to generate rtl.
14850 (cceq_ior_compare_complement): Give it a name so I can use it, and
14851 change boolean_or_operator predicate to boolean_operator so it can
14852 be used to generate a crand.
14853 (eqne): New code iterator.
14854 (bd/bd_neg): New code_attrs.
14855 (<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
14856 a single define_insn.
14857 (<bd>tf_<mode>): A new insn pattern for the conditional form branch
14858 decrement (bdnzt/bdnzf/bdzt/bdzf).
14859 * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
14860 with the new names of the branch decrement patterns, and added the
14861 names of the branch decrement conditional patterns.
14862
14863 2018-01-08 Richard Biener <rguenther@suse.de>
14864
14865 PR tree-optimization/83563
14866 * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
14867 cache.
14868
14869 2018-01-08 Richard Biener <rguenther@suse.de>
14870
14871 PR middle-end/83713
14872 * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
14873
14874 2018-01-08 Richard Biener <rguenther@suse.de>
14875
14876 PR tree-optimization/83685
14877 * tree-ssa-pre.c (create_expression_by_pieces): Do not insert
14878 references to abnormals.
14879
14880 2018-01-08 Richard Biener <rguenther@suse.de>
14881
14882 PR lto/83719
14883 * dwarf2out.c (output_indirect_strings): Handle empty
14884 skeleton_debug_str_hash.
14885 (dwarf2out_early_finish): Index strings for -gsplit-dwarf.
14886
14887 2018-01-08 Claudiu Zissulescu <claziss@synopsys.com>
14888
14889 * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
14890 (emit_store_direct): Likewise.
14891 (arc_trampoline_adjust_address): Likewise.
14892 (arc_asm_trampoline_template): New function.
14893 (arc_initialize_trampoline): Use asm_trampoline_template.
14894 (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
14895 * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
14896 * config/arc/arc.md (flush_icache): Delete pattern.
14897
14898 2018-01-08 Claudiu Zissulescu <claziss@synopsys.com>
14899
14900 * config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
14901 * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
14902 munaligned-access.
14903
14904 2018-01-08 Sebastian Huber <sebastian.huber@embedded-brains.de>
14905
14906 PR target/83681
14907 * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
14908 by not USED_FOR_TARGET.
14909 (make_pass_resolve_sw_modes): Likewise.
14910
14911 2018-01-08 Sebastian Huber <sebastian.huber@embedded-brains.de>
14912
14913 * config/nios2/nios2.h (nios2_section_threshold): Guard by not
14914 USED_FOR_TARGET.
14915
14916 2018-01-08 Richard Biener <rguenther@suse.de>
14917
14918 PR middle-end/83580
14919 * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
14920
14921 2018-01-08 Richard Biener <rguenther@suse.de>
14922
14923 PR middle-end/83517
14924 * match.pd ((t * 2) / 2) -> t): Add missing :c.
14925
14926 2018-01-06 Aldy Hernandez <aldyh@redhat.com>
14927
14928 PR middle-end/81897
14929 * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
14930 basic blocks with a small number of successors.
14931 (convert_control_dep_chain_into_preds): Improve handling of
14932 forwarder blocks.
14933 (dump_predicates): Split apart into...
14934 (dump_pred_chain): ...here...
14935 (dump_pred_info): ...and here.
14936 (can_one_predicate_be_invalidated_p): Add debugging printfs.
14937 (can_chain_union_be_invalidated_p): Improve check for invalidation
14938 of paths.
14939 (uninit_uses_cannot_happen): Avoid unnecessary if
14940 convert_control_dep_chain_into_preds yielded nothing.
14941
14942 2018-01-06 Martin Sebor <msebor@redhat.com>
14943
14944 PR tree-optimization/83640
14945 * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
14946 subtracting negative offset from size.
14947 (builtin_access::overlap): Adjust offset bounds of the access to fall
14948 within the size of the object if possible.
14949
14950 2018-01-06 Richard Sandiford <richard.sandiford@linaro.org>
14951
14952 PR rtl-optimization/83699
14953 * expmed.c (extract_bit_field_1): Restrict the vector usage of
14954 extract_bit_field_as_subreg to cases in which the extracted
14955 value is also a vector.
14956
14957 * lra-constraints.c (process_alt_operands): Test for the equivalence
14958 substitutions when detecting a possible reload cycle.
14959
14960 2018-01-06 Jakub Jelinek <jakub@redhat.com>
14961
14962 PR debug/83480
14963 * toplev.c (process_options): Don't enable debug_nonbind_markers_p
14964 by default if flag_selective_schedling{,2}. Formatting fixes.
14965
14966 PR rtl-optimization/83682
14967 * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
14968 if it has non-VECTOR_MODE element mode.
14969 (vec_duplicate_p): Likewise.
14970
14971 PR middle-end/83694
14972 * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
14973 and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
14974
14975 2018-01-05 Jakub Jelinek <jakub@redhat.com>
14976
14977 PR target/83604
14978 * config/i386/i386-builtin.def
14979 (__builtin_ia32_vgf2p8affineinvqb_v64qi,
14980 __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
14981 Require also OPTION_MASK_ISA_AVX512F in addition to
14982 OPTION_MASK_ISA_GFNI.
14983 (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
14984 __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
14985 OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
14986 to OPTION_MASK_ISA_GFNI.
14987 (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
14988 OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
14989 OPTION_MASK_ISA_AVX512BW.
14990 (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
14991 OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
14992 addition to OPTION_MASK_ISA_GFNI.
14993 (__builtin_ia32_vgf2p8affineinvqb_v16qi,
14994 __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
14995 Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
14996 to OPTION_MASK_ISA_GFNI.
14997 * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
14998 a requirement for all ISAs rather than any of them with a few
14999 exceptions.
15000 (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
15001 processing.
15002 (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
15003 bitmasks to be enabled with 3 exceptions, instead of requiring any
15004 enabled ISA with lots of exceptions.
15005 * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
15006 vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
15007 Change avx512bw in isa attribute to avx512f.
15008 * config/i386/sgxintrin.h: Add license boilerplate.
15009 * config/i386/vaesintrin.h: Likewise. Fix macro spelling __AVX512F
15010 to __AVX512F__ and __AVX512VL to __AVX512VL__.
15011 (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
15012 _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
15013 defined.
15014 * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
15015 _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
15016 temporarily sse2 rather than sse if not enabled already.
15017
15018 PR target/83604
15019 * config/i386/sse.md (VI248_VLBW): Rename to ...
15020 (VI248_AVX512VL): ... this. Don't guard V32HI with TARGET_AVX512BW.
15021 (vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
15022 vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
15023 vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
15024 vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
15025 mode iterator instead of VI248_VLBW.
15026
15027 2018-01-05 Jan Hubicka <hubicka@ucw.cz>
15028
15029 * ipa-fnsummary.c (record_modified_bb_info): Add OP.
15030 (record_modified): Skip clobbers; add debug output.
15031 (param_change_prob): Use sreal frequencies.
15032
15033 2018-01-05 Richard Sandiford <richard.sandiford@linaro.org>
15034
15035 * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
15036 punt for user-aligned variables.
15037
15038 2018-01-05 Richard Sandiford <richard.sandiford@linaro.org>
15039
15040 * tree-chrec.c (chrec_contains_symbols): Return true for
15041 POLY_INT_CST.
15042
15043 2018-01-05 Sudakshina Das <sudi.das@arm.com>
15044
15045 PR target/82439
15046 * simplify-rtx.c (simplify_relational_operation_1): Add simplifications
15047 of (x|y) == x for BICS pattern.
15048
15049 2018-01-05 Jakub Jelinek <jakub@redhat.com>
15050
15051 PR tree-optimization/83605
15052 * gimple-ssa-strength-reduction.c: Include tree-eh.h.
15053 (find_candidates_dom_walker::before_dom_children): Ignore stmts that
15054 can throw.
15055
15056 2018-01-05 Sebastian Huber <sebastian.huber@embedded-brains.de>
15057
15058 * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
15059 * config/epiphany/rtems.h: New file.
15060
15061 2018-01-04 Jakub Jelinek <jakub@redhat.com>
15062 Uros Bizjak <ubizjak@gmail.com>
15063
15064 PR target/83554
15065 * config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
15066 QIreg_operand instead of register_operand predicate.
15067 * config/i386/i386.c (ix86_rop_should_change_byte_p,
15068 set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
15069 comments instead of -fmitigate[-_]rop.
15070
15071 2018-01-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
15072
15073 PR bootstrap/81926
15074 * cgraphunit.c (symbol_table::compile): Switch to text_section
15075 before calling assembly_start debug hook.
15076 * run-rtl-passes.c (run_rtl_passes): Likewise.
15077 Include output.h.
15078
15079 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
15080
15081 * tree-vrp.c (extract_range_from_binary_expr_1): Check
15082 range_int_cst_p rather than !symbolic_range_p before calling
15083 extract_range_from_multiplicative_op_1.
15084
15085 2018-01-04 Jeff Law <law@redhat.com>
15086
15087 * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
15088 redundant test in assertion.
15089
15090 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
15091
15092 * doc/rtl.texi: Document machine_mode wrapper classes.
15093
15094 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
15095
15096 * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
15097 using tree_to_uhwi.
15098
15099 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
15100
15101 * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
15102 the VEC_PERM_EXPR fold to fail.
15103
15104 2018-01-04 Jakub Jelinek <jakub@redhat.com>
15105
15106 PR debug/83585
15107 * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
15108 to switched_sections.
15109
15110 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
15111
15112 PR target/83680
15113 * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
15114 test for d.testing.
15115
15116 2018-01-04 Peter Bergner <bergner@vnet.ibm.com>
15117
15118 PR target/83387
15119 * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not
15120 allow arguments in FP registers if TARGET_HARD_FLOAT is false.
15121
15122 2018-01-04 Jakub Jelinek <jakub@redhat.com>
15123
15124 PR debug/83666
15125 * cfgexpand.c (expand_debug_expr) <case BIT_FIELD_REF>: Punt if mode
15126 is BLKmode and bitpos not zero or mode change is needed.
15127
15128 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
15129
15130 PR target/83675
15131 * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
15132 TARGET_VIS2.
15133
15134 2018-01-04 Uros Bizjak <ubizjak@gmail.com>
15135
15136 PR target/83628
15137 * config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
15138 instead of MULT rtx. Update all corresponding splitters.
15139 (*saddl_se): Ditto.
15140 (*ssub<modesuffix>): Ditto.
15141 (*ssubl_se): Ditto.
15142 (*cmp_sadd_di): Update split patterns.
15143 (*cmp_sadd_si): Ditto.
15144 (*cmp_sadd_sidi): Ditto.
15145 (*cmp_ssub_di): Ditto.
15146 (*cmp_ssub_si): Ditto.
15147 (*cmp_ssub_sidi): Ditto.
15148 * config/alpha/predicates.md (const23_operand): New predicate.
15149 * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
15150 Look for ASHIFT, not MULT inner operand.
15151 (alpha_split_conditional_move): Update for *sadd<modesuffix> change.
15152
15153 2018-01-04 Martin Liska <mliska@suse.cz>
15154
15155 PR gcov-profile/83669
15156 * gcov.c (output_intermediate_file): Add version to intermediate
15157 gcov file.
15158 * doc/gcov.texi: Document new field 'version' in intermediate
15159 file format. Fix location of '-k' option of gcov command.
15160
15161 2018-01-04 Martin Liska <mliska@suse.cz>
15162
15163 PR ipa/82352
15164 * ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
15165
15166 2018-01-04 Jakub Jelinek <jakub@redhat.com>
15167
15168 * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi.
15169
15170 2018-01-03 Martin Sebor <msebor@redhat.com>
15171
15172 PR tree-optimization/83655
15173 * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid
15174 checking calls with invalid arguments.
15175
15176 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15177
15178 * tree-vect-stmts.c (vect_get_store_rhs): New function.
15179 (vectorizable_mask_load_store): Delete.
15180 (vectorizable_call): Return false for masked loads and stores.
15181 (vectorizable_store): Handle IFN_MASK_STORE. Use vect_get_store_rhs
15182 instead of gimple_assign_rhs1.
15183 (vectorizable_load): Handle IFN_MASK_LOAD.
15184 (vect_transform_stmt): Don't set is_store for call_vec_info_type.
15185
15186 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15187
15188 * tree-vect-stmts.c (vect_build_gather_load_calls): New function,
15189 split out from..,
15190 (vectorizable_mask_load_store): ...here.
15191 (vectorizable_load): ...and here.
15192
15193 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15194
15195 * tree-vect-stmts.c (vect_build_all_ones_mask)
15196 (vect_build_zero_merge_argument): New functions, split out from...
15197 (vectorizable_load): ...here.
15198
15199 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15200
15201 * tree-vect-stmts.c (vect_check_store_rhs): New function,
15202 split out from...
15203 (vectorizable_mask_load_store): ...here.
15204 (vectorizable_store): ...and here.
15205
15206 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15207
15208 * tree-vect-stmts.c (vect_check_load_store_mask): New function,
15209 split out from...
15210 (vectorizable_mask_load_store): ...here.
15211
15212 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15213
15214 * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c
15215 (vect_model_store_cost): Take a vec_load_store_type instead of a
15216 vect_def_type.
15217 * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h.
15218 (vect_model_store_cost): Take a vec_load_store_type instead of a
15219 vect_def_type.
15220 (vectorizable_mask_load_store): Update accordingly.
15221 (vectorizable_store): Likewise.
15222 * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly.
15223
15224 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15225
15226 * tree-vect-loop.c (vect_transform_loop): Stub out scalar
15227 IFN_MASK_LOAD calls here rather than...
15228 * tree-vect-stmts.c (vectorizable_mask_load_store): ...here.
15229
15230 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15231 Alan Hayward <alan.hayward@arm.com>
15232 David Sherwood <david.sherwood@arm.com>
15233
15234 * expmed.c (extract_bit_field_1): For vector extracts,
15235 fall back to extract_bit_field_as_subreg if vec_extract
15236 isn't available.
15237
15238 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15239 Alan Hayward <alan.hayward@arm.com>
15240 David Sherwood <david.sherwood@arm.com>
15241
15242 * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether
15243 they are variable or constant sized.
15244 (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized
15245 slots for constant-sized data.
15246
15247 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15248 Alan Hayward <alan.hayward@arm.com>
15249 David Sherwood <david.sherwood@arm.com>
15250
15251 * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When
15252 handling COND_EXPRs with boolean comparisons, try to find a better
15253 basis for the mask type than the boolean itself.
15254
15255 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15256
15257 * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default
15258 is calculated and how it can be overridden.
15259 * genmodes.c (max_bitsize_mode_any_mode): New variable.
15260 (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE,
15261 if defined.
15262 (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
15263 if nonzero.
15264
15265 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15266 Alan Hayward <alan.hayward@arm.com>
15267 David Sherwood <david.sherwood@arm.com>
15268
15269 * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate):
15270 Remove the mode argument.
15271 (aarch64_simd_valid_immediate): Remove the mode and inverse
15272 arguments.
15273 * config/aarch64/iterators.md (bitsize): New iterator.
15274 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>, and<mode>3)
15275 (ior<mode>3): Update calls to aarch64_output_simd_mov_immediate.
15276 * config/aarch64/constraints.md (Do, Db, Dn): Update calls to
15277 aarch64_simd_valid_immediate.
15278 * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise.
15279 (aarch64_reg_or_bic_imm): Likewise.
15280 * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn
15281 with an insn_type enum and msl with a modifier_type enum.
15282 Replace element_width with a scalar_mode. Change the shift
15283 to unsigned int. Add constructors for scalar_float_mode and
15284 scalar_int_mode elements.
15285 (aarch64_vect_float_const_representable_p): Delete.
15286 (aarch64_can_const_movi_rtx_p)
15287 (aarch64_simd_scalar_immediate_valid_for_move)
15288 (aarch64_simd_make_constant): Update call to
15289 aarch64_simd_valid_immediate.
15290 (aarch64_advsimd_valid_immediate_hs): New function.
15291 (aarch64_advsimd_valid_immediate): Likewise.
15292 (aarch64_simd_valid_immediate): Remove mode and inverse
15293 arguments. Rewrite to use the above. Use const_vec_duplicate_p
15294 to detect duplicated constants and use aarch64_float_const_zero_rtx_p
15295 and aarch64_float_const_representable_p on the result.
15296 (aarch64_output_simd_mov_immediate): Remove mode argument.
15297 Update call to aarch64_simd_valid_immediate and use of
15298 simd_immediate_info.
15299 (aarch64_output_scalar_simd_mov_immediate): Update call
15300 accordingly.
15301
15302 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15303 Alan Hayward <alan.hayward@arm.com>
15304 David Sherwood <david.sherwood@arm.com>
15305
15306 * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION.
15307 (mode_nunits): Likewise CONST_MODE_NUNITS.
15308 * machmode.def (ADJUST_NUNITS): Document.
15309 * genmodes.c (mode_data::need_nunits_adj): New field.
15310 (blank_mode): Update accordingly.
15311 (adj_nunits): New variable.
15312 (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ
15313 parameter.
15314 (emit_mode_size_inline): Set need_bytesize_adj for all modes
15315 listed in adj_nunits.
15316 (emit_mode_nunits_inline): Set need_nunits_adj for all modes
15317 listed in adj_nunits. Don't emit case statements for such modes.
15318 (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS
15319 and CONST_MODE_PRECISION. Make CONST_MODE_SIZE expand to
15320 nothing if adj_nunits is nonnull.
15321 (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl.
15322 (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit)
15323 (emit_mode_fbit): Update use of print_maybe_const_decl.
15324 (emit_move_size): Likewise. Treat the array as non-const
15325 if adj_nunits.
15326 (emit_mode_adjustments): Handle adj_nunits.
15327
15328 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15329
15330 * machmode.def (VECTOR_MODES_WITH_PREFIX): Document.
15331 * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro.
15332 (VECTOR_MODES): Use it.
15333 (make_vector_modes): Take the prefix as an argument.
15334
15335 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15336 Alan Hayward <alan.hayward@arm.com>
15337 David Sherwood <david.sherwood@arm.com>
15338
15339 * mode-classes.def (MODE_VECTOR_BOOL): New mode class.
15340 * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
15341 for MODE_VECTOR_BOOL.
15342 * machmode.def (VECTOR_BOOL_MODE): Document.
15343 * genmodes.c (VECTOR_BOOL_MODE): New macro.
15344 (make_vector_bool_mode): New function.
15345 (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
15346 MODE_VECTOR_BOOL.
15347 * lto-streamer-in.c (lto_input_mode_table): Likewise.
15348 * rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
15349 Likewise.
15350 * stor-layout.c (int_mode_for_mode): Likewise.
15351 * tree.c (build_vector_type_for_mode): Likewise.
15352 * varasm.c (output_constant_pool_2): Likewise.
15353 * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
15354 CONSTM1_RTX (BImode) are the same thing. Initialize const_tiny_rtx
15355 for MODE_VECTOR_BOOL.
15356 * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
15357 of mode class checks.
15358 * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
15359 instead of a list of mode class checks.
15360 (expand_vector_scalar_condition): Likewise.
15361 (type_for_widest_vector_mode): Handle BImode as an inner mode.
15362
15363 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15364 Alan Hayward <alan.hayward@arm.com>
15365 David Sherwood <david.sherwood@arm.com>
15366
15367 * machmode.h (mode_size): Change from unsigned short to
15368 poly_uint16_pod.
15369 (mode_to_bytes): Return a poly_uint16 rather than an unsigned short.
15370 (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
15371 or if measurement_type is not polynomial.
15372 (fixed_size_mode::includes_p): Check for constant-sized modes.
15373 * genmodes.c (emit_mode_size_inline): Make mode_size_inline
15374 return a poly_uint16 rather than an unsigned short.
15375 (emit_mode_size): Change the type of mode_size from unsigned short
15376 to poly_uint16_pod. Use ZERO_COEFFS for the initializer.
15377 (emit_mode_adjustments): Cope with polynomial vector sizes.
15378 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
15379 for GET_MODE_SIZE.
15380 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
15381 for GET_MODE_SIZE.
15382 * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial.
15383 * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise.
15384 * caller-save.c (setup_save_areas): Likewise.
15385 (replace_reg_with_saved_mem): Likewise.
15386 * calls.c (emit_library_call_value_1): Likewise.
15387 * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise.
15388 * combine.c (simplify_set, make_extraction, simplify_shift_const_1)
15389 (gen_lowpart_for_combine): Likewise.
15390 * convert.c (convert_to_integer_1): Likewise.
15391 * cse.c (equiv_constant, cse_insn): Likewise.
15392 * cselib.c (autoinc_split, cselib_hash_rtx): Likewise.
15393 (cselib_subst_to_values): Likewise.
15394 * dce.c (word_dce_process_block): Likewise.
15395 * df-problems.c (df_word_lr_mark_ref): Likewise.
15396 * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise.
15397 * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor)
15398 (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor)
15399 (rtl_for_decl_location): Likewise.
15400 * emit-rtl.c (gen_highpart, widen_memory_access): Likewise.
15401 * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise.
15402 * expr.c (emit_group_load_1, clear_storage_hints): Likewise.
15403 (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise.
15404 (expand_expr_real_1): Likewise.
15405 * function.c (assign_parm_setup_block_p, assign_parm_setup_block)
15406 (pad_below): Likewise.
15407 * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
15408 * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise.
15409 * ira.c (get_subreg_tracking_sizes): Likewise.
15410 * ira-build.c (ira_create_allocno_objects): Likewise.
15411 * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise.
15412 (ira_sort_regnos_for_alter_reg): Likewise.
15413 * ira-costs.c (record_operand_costs): Likewise.
15414 * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn)
15415 (resolve_simple_move): Likewise.
15416 * lra-constraints.c (get_reload_reg, operands_match_p): Likewise.
15417 (process_addr_reg, simplify_operand_subreg, curr_insn_transform)
15418 (lra_constraints): Likewise.
15419 (CONST_POOL_OK_P): Reject variable-sized modes.
15420 * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare)
15421 (add_pseudo_to_slot, lra_spill): Likewise.
15422 * omp-low.c (omp_clause_aligned_alignment): Likewise.
15423 * optabs-query.c (get_best_extraction_insn): Likewise.
15424 * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
15425 * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise.
15426 (expand_mult_highpart, valid_multiword_target_p): Likewise.
15427 * recog.c (offsettable_address_addr_space_p): Likewise.
15428 * regcprop.c (maybe_mode_change): Likewise.
15429 * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise.
15430 * regrename.c (build_def_use): Likewise.
15431 * regstat.c (dump_reg_info): Likewise.
15432 * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload)
15433 (find_reloads, find_reloads_subreg_address): Likewise.
15434 * reload1.c (eliminate_regs_1): Likewise.
15435 * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise.
15436 * simplify-rtx.c (avoid_constant_pool_reference): Likewise.
15437 (simplify_binary_operation_1, simplify_subreg): Likewise.
15438 * targhooks.c (default_function_arg_padding): Likewise.
15439 (default_hard_regno_nregs, default_class_max_nregs): Likewise.
15440 * tree-cfg.c (verify_gimple_assign_binary): Likewise.
15441 (verify_gimple_assign_ternary): Likewise.
15442 * tree-inline.c (estimate_move_cost): Likewise.
15443 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
15444 * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise.
15445 (get_address_cost_ainc): Likewise.
15446 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
15447 (vect_supportable_dr_alignment): Likewise.
15448 * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
15449 (vectorizable_reduction): Likewise.
15450 * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift)
15451 (vectorizable_operation, vectorizable_load): Likewise.
15452 * tree.c (build_same_sized_truth_vector_type): Likewise.
15453 * valtrack.c (cleanup_auto_inc_dec): Likewise.
15454 * var-tracking.c (emit_note_insn_var_location): Likewise.
15455 * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a <scalar_int_mode>.
15456 (ADDR_VEC_ALIGN): Likewise.
15457
15458 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15459 Alan Hayward <alan.hayward@arm.com>
15460 David Sherwood <david.sherwood@arm.com>
15461
15462 * machmode.h (mode_to_bits): Return a poly_uint16 rather than an
15463 unsigned short.
15464 (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
15465 or if measurement_type is polynomial.
15466 * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial.
15467 * combine.c (make_extraction): Likewise.
15468 * dse.c (find_shift_sequence): Likewise.
15469 * dwarf2out.c (mem_loc_descriptor): Likewise.
15470 * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise.
15471 (extract_bit_field, extract_low_bits): Likewise.
15472 * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise.
15473 (optimize_bitfield_assignment_op, expand_assignment): Likewise.
15474 (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise.
15475 * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise.
15476 * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
15477 * reload.c (find_reloads): Likewise.
15478 * reload1.c (alter_reg): Likewise.
15479 * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise.
15480 * targhooks.c (default_secondary_memory_needed_mode): Likewise.
15481 * tree-if-conv.c (predicate_mem_writes): Likewise.
15482 * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
15483 * tree-vect-patterns.c (adjust_bool_pattern): Likewise.
15484 * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
15485 * valtrack.c (dead_debug_insert_temp): Likewise.
15486 * varasm.c (mergeable_constant_section): Likewise.
15487 * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a <fixed_size_mode>.
15488
15489 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15490 Alan Hayward <alan.hayward@arm.com>
15491 David Sherwood <david.sherwood@arm.com>
15492
15493 * expr.c (expand_assignment): Cope with polynomial mode sizes
15494 when assigning to a CONCAT.
15495
15496 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15497 Alan Hayward <alan.hayward@arm.com>
15498 David Sherwood <david.sherwood@arm.com>
15499
15500 * machmode.h (mode_precision): Change from unsigned short to
15501 poly_uint16_pod.
15502 (mode_to_precision): Return a poly_uint16 rather than an unsigned
15503 short.
15504 (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
15505 or if measurement_type is not polynomial.
15506 (HWI_COMPUTABLE_MODE_P): Turn into a function. Optimize the case
15507 in which the mode is already known to be a scalar_int_mode.
15508 * genmodes.c (emit_mode_precision): Change the type of mode_precision
15509 from unsigned short to poly_uint16_pod. Use ZERO_COEFFS for the
15510 initializer.
15511 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
15512 for GET_MODE_PRECISION.
15513 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
15514 for GET_MODE_PRECISION.
15515 * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
15516 as polynomial.
15517 (try_combine, find_split_point, combine_simplify_rtx): Likewise.
15518 (expand_field_assignment, make_extraction): Likewise.
15519 (make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
15520 (get_last_value): Likewise.
15521 * convert.c (convert_to_integer_1): Likewise.
15522 * cse.c (cse_insn): Likewise.
15523 * expr.c (expand_expr_real_1): Likewise.
15524 * lra-constraints.c (simplify_operand_subreg): Likewise.
15525 * optabs-query.c (can_atomic_load_p): Likewise.
15526 * optabs.c (expand_atomic_load): Likewise.
15527 (expand_atomic_store): Likewise.
15528 * ree.c (combine_reaching_defs): Likewise.
15529 * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
15530 * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
15531 * tree.h (type_has_mode_precision_p): Likewise.
15532 * ubsan.c (instrument_si_overflow): Likewise.
15533
15534 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15535 Alan Hayward <alan.hayward@arm.com>
15536 David Sherwood <david.sherwood@arm.com>
15537
15538 * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
15539 polynomial numbers of units.
15540 (SET_TYPE_VECTOR_SUBPARTS): Likewise.
15541 (valid_vector_subparts_p): New function.
15542 (build_vector_type): Remove temporary shim and take the number
15543 of units as a poly_uint64 rather than an int.
15544 (build_opaque_vector_type): Take the number of units as a
15545 poly_uint64 rather than an int.
15546 * tree.c (build_vector_from_ctor): Handle polynomial
15547 TYPE_VECTOR_SUBPARTS.
15548 (type_hash_canon_hash, type_cache_hasher::equal): Likewise.
15549 (uniform_vector_p, vector_type_mode, build_vector): Likewise.
15550 (build_vector_from_val): If the number of units is variable,
15551 use build_vec_duplicate_cst for constant operands and
15552 VEC_DUPLICATE_EXPR otherwise.
15553 (make_vector_type): Remove temporary is_constant ().
15554 (build_vector_type, build_opaque_vector_type): Take the number of
15555 units as a poly_uint64 rather than an int.
15556 (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
15557 VECTOR_CST_NELTS.
15558 * cfgexpand.c (expand_debug_expr): Likewise.
15559 * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
15560 (store_constructor, expand_expr_real_1): Likewise.
15561 (const_scalar_mask_from_tree): Likewise.
15562 * fold-const-call.c (fold_const_reduction): Likewise.
15563 * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
15564 (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
15565 (native_encode_vector, vec_cst_ctor_to_array): Likewise.
15566 (fold_relational_const): Likewise.
15567 (native_interpret_vector): Likewise. Change the size from an
15568 int to an unsigned int.
15569 * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
15570 TYPE_VECTOR_SUBPARTS.
15571 (gimple_fold_indirect_ref, gimple_build_vector): Likewise.
15572 (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
15573 duplicating a non-constant operand into a variable-length vector.
15574 * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
15575 TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
15576 * ipa-icf.c (sem_variable::equals): Likewise.
15577 * match.pd: Likewise.
15578 * omp-simd-clone.c (simd_clone_subparts): Likewise.
15579 * print-tree.c (print_node): Likewise.
15580 * stor-layout.c (layout_type): Likewise.
15581 * targhooks.c (default_builtin_vectorization_cost): Likewise.
15582 * tree-cfg.c (verify_gimple_comparison): Likewise.
15583 (verify_gimple_assign_binary): Likewise.
15584 (verify_gimple_assign_ternary): Likewise.
15585 (verify_gimple_assign_single): Likewise.
15586 * tree-pretty-print.c (dump_generic_node): Likewise.
15587 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
15588 (simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
15589 * tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
15590 (vect_grouped_load_supported, vect_permute_load_chain): Likewise.
15591 (vect_shift_permute_load_chain): Likewise.
15592 * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
15593 (expand_vector_condition, optimize_vector_constructor): Likewise.
15594 (lower_vec_perm, get_compute_type): Likewise.
15595 * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
15596 (get_initial_defs_for_reduction, vect_transform_loop): Likewise.
15597 * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
15598 (vect_recog_mask_conversion_pattern): Likewise.
15599 * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
15600 (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
15601 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
15602 (get_group_load_store_type, vectorizable_mask_load_store): Likewise.
15603 (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
15604 (vectorizable_shift, vectorizable_operation, vectorizable_store)
15605 (vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
15606 (supportable_widening_operation): Likewise.
15607 (supportable_narrowing_operation): Likewise.
15608 * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
15609 Likewise.
15610 * varasm.c (output_constant): Likewise.
15611
15612 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15613 Alan Hayward <alan.hayward@arm.com>
15614 David Sherwood <david.sherwood@arm.com>
15615
15616 * tree-vect-data-refs.c (vect_permute_store_chain): Reorganize
15617 so that both the length == 3 and length != 3 cases set up their
15618 own permute vectors. Add comments explaining why we know the
15619 number of elements is constant.
15620 (vect_permute_load_chain): Likewise.
15621
15622 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15623 Alan Hayward <alan.hayward@arm.com>
15624 David Sherwood <david.sherwood@arm.com>
15625
15626 * machmode.h (mode_nunits): Change from unsigned char to
15627 poly_uint16_pod.
15628 (ONLY_FIXED_SIZE_MODES): New macro.
15629 (pod_mode::measurement_type, scalar_int_mode::measurement_type)
15630 (scalar_float_mode::measurement_type, scalar_mode::measurement_type)
15631 (complex_mode::measurement_type, fixed_size_mode::measurement_type):
15632 New typedefs.
15633 (mode_to_nunits): Return a poly_uint16 rather than an unsigned short.
15634 (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES,
15635 or if measurement_type is not polynomial.
15636 * genmodes.c (ZERO_COEFFS): New macro.
15637 (emit_mode_nunits_inline): Make mode_nunits_inline return a
15638 poly_uint16.
15639 (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod.
15640 Use ZERO_COEFFS when emitting initializers.
15641 * data-streamer.h (bp_pack_poly_value): New function.
15642 (bp_unpack_poly_value): Likewise.
15643 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
15644 for GET_MODE_NUNITS.
15645 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
15646 for GET_MODE_NUNITS.
15647 * tree.c (make_vector_type): Remove temporary shim and make
15648 the real function take the number of units as a poly_uint64
15649 rather than an int.
15650 (build_vector_type_for_mode): Handle polynomial nunits.
15651 * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise.
15652 * emit-rtl.c (const_vec_series_p_1): Likewise.
15653 (gen_rtx_CONST_VECTOR): Likewise.
15654 * fold-const.c (test_vec_duplicate_folding): Likewise.
15655 * genrecog.c (validate_pattern): Likewise.
15656 * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise.
15657 * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
15658 * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise.
15659 (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise.
15660 (expand_vec_cond_expr, expand_mult_highpart): Likewise.
15661 * rtlanal.c (subreg_get_info): Likewise.
15662 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
15663 (vect_grouped_load_supported): Likewise.
15664 * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
15665 * tree-vect-loop.c (have_whole_vector_shift): Likewise.
15666 * simplify-rtx.c (simplify_unary_operation_1): Likewise.
15667 (simplify_const_unary_operation, simplify_binary_operation_1)
15668 (simplify_const_binary_operation, simplify_ternary_operation)
15669 (test_vector_ops_duplicate, test_vector_ops): Likewise.
15670 (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode
15671 instead of CONST_VECTOR_NUNITS.
15672 * varasm.c (output_constant_pool_2): Likewise.
15673 * rtx-vector-builder.c (rtx_vector_builder::build): Only include the
15674 explicit-encoded elements in the XVEC for variable-length vectors.
15675
15676 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15677
15678 * lra-constraints.c (curr_insn_transform): Use partial_subreg_p.
15679
15680 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15681 Alan Hayward <alan.hayward@arm.com>
15682 David Sherwood <david.sherwood@arm.com>
15683
15684 * coretypes.h (fixed_size_mode): Declare.
15685 (fixed_size_mode_pod): New typedef.
15686 * builtins.h (target_builtins::x_apply_args_mode)
15687 (target_builtins::x_apply_result_mode): Change type to
15688 fixed_size_mode_pod.
15689 * builtins.c (apply_args_size, apply_result_size, result_vector)
15690 (expand_builtin_apply_args_1, expand_builtin_apply)
15691 (expand_builtin_return): Update accordingly.
15692
15693 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15694
15695 * cse.c (hash_rtx_cb): Hash only the encoded elements.
15696 * cselib.c (cselib_hash_rtx): Likewise.
15697 * expmed.c (make_tree): Build VECTOR_CSTs directly from the
15698 CONST_VECTOR encoding.
15699
15700 2018-01-03 Jakub Jelinek <jakub@redhat.com>
15701 Jeff Law <law@redhat.com>
15702
15703 PR target/83641
15704 * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For
15705 noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop,
15706 only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp
15707 and add REG_CFA_ADJUST_CFA notes in that case to both insns.
15708
15709 PR target/83641
15710 * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not
15711 explicitly probe *sp in a noreturn function if there were any callee
15712 register saves or frame pointer is needed.
15713
15714 2018-01-03 Jakub Jelinek <jakub@redhat.com>
15715
15716 PR debug/83621
15717 * cfgexpand.c (expand_debug_expr): Return NULL if mode is
15718 BLKmode for ternary, binary or unary expressions.
15719
15720 PR debug/83645
15721 * var-tracking.c (delete_vta_debug_insn): New inline function.
15722 (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
15723 insns from get_insns () to NULL instead of each bb separately.
15724 Use delete_vta_debug_insn. No longer static.
15725 (vt_debug_insns_local, variable_tracking_main_1): Adjust
15726 delete_vta_debug_insns callers.
15727 * rtl.h (delete_vta_debug_insns): Declare.
15728 * final.c (rest_of_handle_final): Call delete_vta_debug_insns
15729 instead of variable_tracking_main.
15730
15731 2018-01-03 Martin Sebor <msebor@redhat.com>
15732
15733 PR tree-optimization/83603
15734 * calls.c (maybe_warn_nonstring_arg): Avoid accessing function
15735 arguments past the endof the argument list in functions declared
15736 without a prototype.
15737 * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
15738 Avoid checking when arguments are null.
15739
15740 2018-01-03 Martin Sebor <msebor@redhat.com>
15741
15742 PR c/83559
15743 * doc/extend.texi (attribute const): Fix a typo.
15744 * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
15745 issuing -Wsuggest-attribute for void functions.
15746
15747 2018-01-03 Martin Sebor <msebor@redhat.com>
15748
15749 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
15750 offset_int::from instead of wide_int::to_shwi.
15751 (maybe_diag_overlap): Remove assertion.
15752 Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
15753 * gimple-ssa-sprintf.c (format_directive): Same.
15754 (parse_directive): Same.
15755 (sprintf_dom_walker::compute_format_length): Same.
15756 (try_substitute_return_value): Same.
15757
15758 2018-01-03 Jeff Law <law@redhat.com>
15759
15760 PR middle-end/83654
15761 * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a
15762 non-constant residual for zero at runtime and avoid probing in
15763 that case. Reorganize code for trailing problem to mirror handling
15764 of the residual.
15765
15766 2018-01-03 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
15767
15768 PR tree-optimization/83501
15769 * tree-ssa-strlen.c (get_string_cst): New.
15770 (handle_char_store): Call get_string_cst.
15771
15772 2018-01-03 Martin Liska <mliska@suse.cz>
15773
15774 PR tree-optimization/83593
15775 * tree-ssa-strlen.c: Include tree-cfg.h.
15776 (strlen_check_and_optimize_stmt): Add new argument cleanup_eh.
15777 (strlen_dom_walker): Add new member variable m_cleanup_cfg.
15778 (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg
15779 to false.
15780 (strlen_dom_walker::before_dom_children): Call
15781 gimple_purge_dead_eh_edges. Dump tranformation with details
15782 dump flags.
15783 (strlen_dom_walker::before_dom_children): Update call by adding
15784 new argument cleanup_eh.
15785 (pass_strlen::execute): Return TODO_cleanup_cfg if needed.
15786
15787 2018-01-03 Martin Liska <mliska@suse.cz>
15788
15789 PR ipa/83549
15790 * cif-code.def (VARIADIC_THUNK): New enum value.
15791 * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
15792 thunks.
15793
15794 2018-01-03 Jan Beulich <jbeulich@suse.com>
15795
15796 * sse.md (mov<mode>_internal): Tighten condition for when to use
15797 vmovdqu<ssescalarsize> for TI and OI modes.
15798
15799 2018-01-03 Jakub Jelinek <jakub@redhat.com>
15800
15801 Update copyright years.
15802
15803 2018-01-03 Martin Liska <mliska@suse.cz>
15804
15805 PR ipa/83594
15806 * ipa-visibility.c (function_and_variable_visibility): Skip
15807 functions with noipa attribure.
15808
15809 2018-01-03 Jakub Jelinek <jakub@redhat.com>
15810
15811 * gcc.c (process_command): Update copyright notice dates.
15812 * gcov-dump.c (print_version): Ditto.
15813 * gcov.c (print_version): Ditto.
15814 * gcov-tool.c (print_version): Ditto.
15815 * gengtype.c (create_file): Ditto.
15816 * doc/cpp.texi: Bump @copying's copyright year.
15817 * doc/cppinternals.texi: Ditto.
15818 * doc/gcc.texi: Ditto.
15819 * doc/gccint.texi: Ditto.
15820 * doc/gcov.texi: Ditto.
15821 * doc/install.texi: Ditto.
15822 * doc/invoke.texi: Ditto.
15823
15824 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15825
15826 * vector-builder.h (vector_builder::m_full_nelts): Change from
15827 unsigned int to poly_uint64.
15828 (vector_builder::full_nelts): Update prototype accordingly.
15829 (vector_builder::new_vector): Likewise.
15830 (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts.
15831 (vector_builder::operator ==): Likewise.
15832 (vector_builder::finalize): Likewise.
15833 * int-vector-builder.h (int_vector_builder::int_vector_builder):
15834 Take the number of elements as a poly_uint64 rather than an
15835 unsigned int.
15836 * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change
15837 from unsigned int to poly_uint64.
15838 (vec_perm_indices::vec_perm_indices): Update prototype accordingly.
15839 (vec_perm_indices::new_vector): Likewise.
15840 (vec_perm_indices::length): Likewise.
15841 (vec_perm_indices::nelts_per_input): Likewise.
15842 (vec_perm_indices::input_nelts): Likewise.
15843 * vec-perm-indices.c (vec_perm_indices::new_vector): Take the
15844 number of elements per input as a poly_uint64 rather than an
15845 unsigned int. Use the original encoding for variable-length
15846 vectors, rather than clamping each individual element.
15847 For the second and subsequent elements in each pattern,
15848 clamp the step and base before clamping their sum.
15849 (vec_perm_indices::series_p): Handle polynomial element counts.
15850 (vec_perm_indices::all_in_range_p): Likewise.
15851 (vec_perm_indices_to_tree): Likewise.
15852 (vec_perm_indices_to_rtx): Likewise.
15853 * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
15854 * tree-vector-builder.c (tree_vector_builder::new_unary_operation)
15855 (tree_vector_builder::new_binary_operation): Handle polynomial
15856 element counts. Return false if we need to know the number
15857 of elements at compile time.
15858 * fold-const.c (fold_vec_perm): Punt if the number of elements
15859 isn't known at compile time.
15860
15861 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15862
15863 * vec-perm-indices.h (vec_perm_builder): Change element type
15864 from HOST_WIDE_INT to poly_int64.
15865 (vec_perm_indices::element_type): Update accordingly.
15866 (vec_perm_indices::clamp): Handle polynomial element_types.
15867 * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
15868 (vec_perm_indices::all_in_range_p): Likewise.
15869 (tree_to_vec_perm_builder): Check for poly_int64 trees rather
15870 than shwi trees.
15871 * vector-builder.h (vector_builder::stepped_sequence_p): Handle
15872 polynomial vec_perm_indices element types.
15873 * int-vector-builder.h (int_vector_builder::equal_p): Likewise.
15874 * fold-const.c (fold_vec_perm): Likewise.
15875 * optabs.c (shift_amt_for_vec_perm_mask): Likewise.
15876 * tree-vect-generic.c (lower_vec_perm): Likewise.
15877 * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
15878 * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm
15879 element type to HOST_WIDE_INT.
15880
15881 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15882 Alan Hayward <alan.hayward@arm.com>
15883 David Sherwood <david.sherwood@arm.com>
15884
15885 * alias.c (addr_side_effect_eval): Take the size as a poly_int64
15886 rather than an int. Use plus_constant.
15887 (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints.
15888 Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT.
15889
15890 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15891 Alan Hayward <alan.hayward@arm.com>
15892 David Sherwood <david.sherwood@arm.com>
15893
15894 * calls.c (emit_call_1, expand_call): Change struct_value_size from
15895 a HOST_WIDE_INT to a poly_int64.
15896
15897 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15898 Alan Hayward <alan.hayward@arm.com>
15899 David Sherwood <david.sherwood@arm.com>
15900
15901 * calls.c (load_register_parameters): Cope with polynomial
15902 mode sizes. Require a constant size for BLKmode parameters
15903 that aren't described by a PARALLEL. If BLOCK_REG_PADDING
15904 forces a parameter to be padded at the lsb end in order to
15905 fill a complete number of words, require the parameter size
15906 to be ordered wrt UNITS_PER_WORD.
15907
15908 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15909 Alan Hayward <alan.hayward@arm.com>
15910 David Sherwood <david.sherwood@arm.com>
15911
15912 * reload1.c (spill_stack_slot_width): Change element type
15913 from unsigned int to poly_uint64_pod.
15914 (alter_reg): Treat mode sizes as polynomial.
15915
15916 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15917 Alan Hayward <alan.hayward@arm.com>
15918 David Sherwood <david.sherwood@arm.com>
15919
15920 * reload.c (complex_word_subreg_p): New function.
15921 (reload_inner_reg_of_subreg, push_reload): Use it.
15922
15923 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15924 Alan Hayward <alan.hayward@arm.com>
15925 David Sherwood <david.sherwood@arm.com>
15926
15927 * lra-constraints.c (process_alt_operands): Reject matched
15928 operands whose sizes aren't ordered.
15929 (match_reload): Refer to this check here.
15930
15931 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15932 Alan Hayward <alan.hayward@arm.com>
15933 David Sherwood <david.sherwood@arm.com>
15934
15935 * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
15936 that the mode size is in the set {1, 2, 4, 8, 16}.
15937
15938 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15939 Alan Hayward <alan.hayward@arm.com>
15940 David Sherwood <david.sherwood@arm.com>
15941
15942 * var-tracking.c (adjust_mems): Treat mode sizes as polynomial.
15943 Use plus_constant instead of gen_rtx_PLUS.
15944
15945 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15946 Alan Hayward <alan.hayward@arm.com>
15947 David Sherwood <david.sherwood@arm.com>
15948
15949 * config/cr16/cr16-protos.h (cr16_push_rounding): Declare.
15950 * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to...
15951 * config/cr16/cr16.c (cr16_push_rounding): ...this new function.
15952 * config/h8300/h8300-protos.h (h8300_push_rounding): Declare.
15953 * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to...
15954 * config/h8300/h8300.c (h8300_push_rounding): ...this new function.
15955 * config/i386/i386-protos.h (ix86_push_rounding): Declare.
15956 * config/i386/i386.h (PUSH_ROUNDING): Move implementation to...
15957 * config/i386/i386.c (ix86_push_rounding): ...this new function.
15958 * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return
15959 a poly_int64.
15960 * config/m32c/m32c.c (m32c_push_rounding): Likewise.
15961 * config/m68k/m68k-protos.h (m68k_push_rounding): Declare.
15962 * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to...
15963 * config/m68k/m68k.c (m68k_push_rounding): ...this new function.
15964 * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare.
15965 * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to...
15966 * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function.
15967 * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare.
15968 * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to...
15969 * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new
15970 function.
15971 * expr.c (emit_move_resolve_push): Treat the input and result
15972 of PUSH_ROUNDING as a poly_int64.
15973 (emit_move_complex_push, emit_single_push_insn_1): Likewise.
15974 (emit_push_insn): Likewise.
15975 * lra-eliminations.c (mark_not_eliminable): Likewise.
15976 * recog.c (push_operand): Likewise.
15977 * reload1.c (elimination_effects): Likewise.
15978 * rtlanal.c (nonzero_bits1): Likewise.
15979 * calls.c (store_one_arg): Likewise. Require the padding to be
15980 known at compile time.
15981
15982 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15983 Alan Hayward <alan.hayward@arm.com>
15984 David Sherwood <david.sherwood@arm.com>
15985
15986 * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial.
15987 Use plus_constant instead of gen_rtx_PLUS.
15988
15989 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15990 Alan Hayward <alan.hayward@arm.com>
15991 David Sherwood <david.sherwood@arm.com>
15992
15993 * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64
15994 rather than an int.
15995
15996 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
15997 Alan Hayward <alan.hayward@arm.com>
15998 David Sherwood <david.sherwood@arm.com>
15999
16000 * expr.c (expand_expr_real_1): Use tree_to_poly_uint64
16001 instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs
16002 via stack temporaries. Treat the mode size as polynomial too.
16003
16004 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16005 Alan Hayward <alan.hayward@arm.com>
16006 David Sherwood <david.sherwood@arm.com>
16007
16008 * expr.c (expand_expr_real_2): When handling conversions involving
16009 unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than
16010 multiplying int_size_in_bytes by BITS_PER_UNIT. Treat GET_MODE_BISIZE
16011 as a poly_uint64 too.
16012
16013 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16014 Alan Hayward <alan.hayward@arm.com>
16015 David Sherwood <david.sherwood@arm.com>
16016
16017 * rtlanal.c (subreg_get_info): Handle polynomial mode sizes.
16018
16019 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16020 Alan Hayward <alan.hayward@arm.com>
16021 David Sherwood <david.sherwood@arm.com>
16022
16023 * combine.c (can_change_dest_mode): Handle polynomial
16024 REGMODE_NATURAL_SIZE.
16025 * expmed.c (store_bit_field_1): Likewise.
16026 * expr.c (store_constructor): Likewise.
16027 * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes
16028 and polynomial REGMODE_NATURAL_SIZE.
16029 (gen_lowpart_common): Likewise.
16030 * reginfo.c (record_subregs_of_mode): Likewise.
16031 * rtlanal.c (read_modify_subreg_p): Likewise.
16032
16033 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16034 Alan Hayward <alan.hayward@arm.com>
16035 David Sherwood <david.sherwood@arm.com>
16036
16037 * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial
16038 numbers of elements.
16039
16040 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16041 Alan Hayward <alan.hayward@arm.com>
16042 David Sherwood <david.sherwood@arm.com>
16043
16044 * match.pd: Cope with polynomial numbers of vector elements.
16045
16046 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16047 Alan Hayward <alan.hayward@arm.com>
16048 David Sherwood <david.sherwood@arm.com>
16049
16050 * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets
16051 in a POINTER_PLUS_EXPR.
16052
16053 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16054 Alan Hayward <alan.hayward@arm.com>
16055 David Sherwood <david.sherwood@arm.com>
16056
16057 * omp-simd-clone.c (simd_clone_subparts): New function.
16058 (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS.
16059 (ipa_simd_modify_function_body): Likewise.
16060
16061 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16062 Alan Hayward <alan.hayward@arm.com>
16063 David Sherwood <david.sherwood@arm.com>
16064
16065 * tree-vect-generic.c (nunits_for_known_piecewise_op): New function.
16066 (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS.
16067 (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise.
16068 (expand_vector_condition, vector_element): Likewise.
16069 (subparts_gt): New function.
16070 (get_compute_type): Use subparts_gt.
16071 (count_type_subparts): Delete.
16072 (expand_vector_operations_1): Use subparts_gt instead of
16073 count_type_subparts.
16074
16075 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16076 Alan Hayward <alan.hayward@arm.com>
16077 David Sherwood <david.sherwood@arm.com>
16078
16079 * tree-vect-data-refs.c (vect_no_alias_p): Replace with...
16080 (vect_compile_time_alias): ...this new function. Do the calculation
16081 on poly_ints rather than trees.
16082 (vect_prune_runtime_alias_test_list): Update call accordingly.
16083
16084 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16085 Alan Hayward <alan.hayward@arm.com>
16086 David Sherwood <david.sherwood@arm.com>
16087
16088 * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial
16089 numbers of units.
16090 (vect_schedule_slp_instance): Likewise.
16091
16092 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16093 Alan Hayward <alan.hayward@arm.com>
16094 David Sherwood <david.sherwood@arm.com>
16095
16096 * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
16097 constant and extern definitions for variable-length vectors.
16098 (vect_get_constant_vectors): Note that the number of units
16099 is known to be constant.
16100
16101 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16102 Alan Hayward <alan.hayward@arm.com>
16103 David Sherwood <david.sherwood@arm.com>
16104
16105 * tree-vect-stmts.c (vectorizable_conversion): Treat the number
16106 of units as polynomial. Choose between WIDE and NARROW based
16107 on multiple_p.
16108
16109 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16110 Alan Hayward <alan.hayward@arm.com>
16111 David Sherwood <david.sherwood@arm.com>
16112
16113 * tree-vect-stmts.c (simd_clone_subparts): New function.
16114 (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS.
16115
16116 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16117 Alan Hayward <alan.hayward@arm.com>
16118 David Sherwood <david.sherwood@arm.com>
16119
16120 * tree-vect-stmts.c (vectorizable_call): Treat the number of
16121 vectors as polynomial. Use build_index_vector for
16122 IFN_GOMP_SIMD_LANE.
16123
16124 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16125 Alan Hayward <alan.hayward@arm.com>
16126 David Sherwood <david.sherwood@arm.com>
16127
16128 * tree-vect-stmts.c (get_load_store_type): Treat the number of
16129 units as polynomial. Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP
16130 for variable-length vectors.
16131 (vectorizable_mask_load_store): Treat the number of units as
16132 polynomial, asserting that it is constant if the condition has
16133 already been enforced.
16134 (vectorizable_store, vectorizable_load): Likewise.
16135
16136 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16137 Alan Hayward <alan.hayward@arm.com>
16138 David Sherwood <david.sherwood@arm.com>
16139
16140 * tree-vect-loop.c (vectorizable_live_operation): Treat the number
16141 of units as polynomial. Punt if we can't tell at compile time
16142 which vector contains the final result.
16143
16144 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16145 Alan Hayward <alan.hayward@arm.com>
16146 David Sherwood <david.sherwood@arm.com>
16147
16148 * tree-vect-loop.c (vectorizable_induction): Treat the number
16149 of units as polynomial. Punt on SLP inductions. Use an integer
16150 VEC_SERIES_EXPR for variable-length integer reductions. Use a
16151 cast of such a series for variable-length floating-point
16152 reductions.
16153
16154 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16155 Alan Hayward <alan.hayward@arm.com>
16156 David Sherwood <david.sherwood@arm.com>
16157
16158 * tree.h (build_index_vector): Declare.
16159 * tree.c (build_index_vector): New function.
16160 * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number
16161 of units as polynomial, forcibly converting it to a constant if
16162 vectorizable_reduction has already enforced the condition.
16163 (vect_create_epilog_for_reduction): Likewise. Use build_index_vector
16164 to create a {1,2,3,...} vector.
16165 (vectorizable_reduction): Treat the number of units as polynomial.
16166 Choose vectype_in based on the largest scalar element size rather
16167 than the smallest number of units. Enforce the restrictions
16168 relied on above.
16169
16170 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16171 Alan Hayward <alan.hayward@arm.com>
16172 David Sherwood <david.sherwood@arm.com>
16173
16174 * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the
16175 number of units as polynomial.
16176
16177 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16178 Alan Hayward <alan.hayward@arm.com>
16179 David Sherwood <david.sherwood@arm.com>
16180
16181 * target.h (vector_sizes, auto_vector_sizes): New typedefs.
16182 * target.def (autovectorize_vector_sizes): Return the vector sizes
16183 by pointer, using vector_sizes rather than a bitmask.
16184 * targhooks.h (default_autovectorize_vector_sizes): Update accordingly.
16185 * targhooks.c (default_autovectorize_vector_sizes): Likewise.
16186 * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
16187 Likewise.
16188 * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
16189 * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
16190 * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise.
16191 * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
16192 * omp-general.c (omp_max_vf): Likewise.
16193 * omp-low.c (omp_clause_aligned_alignment): Likewise.
16194 * optabs-query.c (can_vec_mask_load_store_p): Likewise.
16195 * tree-vect-loop.c (vect_analyze_loop): Likewise.
16196 * tree-vect-slp.c (vect_slp_bb): Likewise.
16197 * doc/tm.texi: Regenerate.
16198 * tree-vectorizer.h (current_vector_size): Change from an unsigned int
16199 to a poly_uint64.
16200 * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take
16201 the vector size as a poly_uint64 rather than an unsigned int.
16202 (current_vector_size): Change from an unsigned int to a poly_uint64.
16203 (get_vectype_for_scalar_type): Update accordingly.
16204 * tree.h (build_truth_vector_type): Take the size and number of
16205 units as a poly_uint64 rather than an unsigned int.
16206 (build_vector_type): Add a temporary overload that takes
16207 the number of units as a poly_uint64 rather than an unsigned int.
16208 * tree.c (make_vector_type): Likewise.
16209 (build_truth_vector_type): Take the number of units as a poly_uint64
16210 rather than an unsigned int.
16211
16212 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16213 Alan Hayward <alan.hayward@arm.com>
16214 David Sherwood <david.sherwood@arm.com>
16215
16216 * target.def (get_mask_mode): Take the number of units and length
16217 as poly_uint64s rather than unsigned ints.
16218 * targhooks.h (default_get_mask_mode): Update accordingly.
16219 * targhooks.c (default_get_mask_mode): Likewise.
16220 * config/i386/i386.c (ix86_get_mask_mode): Likewise.
16221 * doc/tm.texi: Regenerate.
16222
16223 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16224 Alan Hayward <alan.hayward@arm.com>
16225 David Sherwood <david.sherwood@arm.com>
16226
16227 * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int.
16228 * omp-general.c (omp_max_vf): Likewise.
16229 * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf.
16230 (expand_omp_simd): Handle polynomial safelen.
16231 * omp-low.c (omplow_simd_context): Add a default constructor.
16232 (omplow_simd_context::max_vf): Change from int to poly_uint64.
16233 (lower_rec_simd_input_clauses): Update accordingly.
16234 (lower_rec_input_clauses): Likewise.
16235
16236 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16237 Alan Hayward <alan.hayward@arm.com>
16238 David Sherwood <david.sherwood@arm.com>
16239
16240 * tree-vectorizer.h (vect_nunits_for_cost): New function.
16241 * tree-vect-loop.c (vect_model_reduction_cost): Use it.
16242 * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise.
16243 (vect_analyze_slp_cost): Likewise.
16244 * tree-vect-stmts.c (vect_model_store_cost): Likewise.
16245 (vect_model_load_cost): Likewise.
16246
16247 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16248 Alan Hayward <alan.hayward@arm.com>
16249 David Sherwood <david.sherwood@arm.com>
16250
16251 * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1)
16252 (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits
16253 from an unsigned int * to a poly_uint64_pod *.
16254 (calculate_unrolling_factor): New function.
16255 (vect_analyze_slp_instance): Use it. Track polynomial max_nunits.
16256
16257 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16258 Alan Hayward <alan.hayward@arm.com>
16259 David Sherwood <david.sherwood@arm.com>
16260
16261 * tree-vectorizer.h (_slp_instance::unrolling_factor): Change
16262 from an unsigned int to a poly_uint64.
16263 (_loop_vec_info::slp_unrolling_factor): Likewise.
16264 (_loop_vec_info::vectorization_factor): Change from an int
16265 to a poly_uint64.
16266 (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX.
16267 (vect_get_num_vectors): New function.
16268 (vect_update_max_nunits, vect_vf_for_cost): Likewise.
16269 (vect_get_num_copies): Use vect_get_num_vectors.
16270 (vect_analyze_data_ref_dependences): Change max_vf from an int *
16271 to an unsigned int *.
16272 (vect_analyze_data_refs): Change min_vf from an int * to a
16273 poly_uint64 *.
16274 (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
16275 than an unsigned HOST_WIDE_INT.
16276 * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
16277 (vect_analyze_data_ref_dependence): Change max_vf from an int *
16278 to an unsigned int *.
16279 (vect_analyze_data_ref_dependences): Likewise.
16280 (vect_compute_data_ref_alignment): Handle polynomial vf.
16281 (vect_enhance_data_refs_alignment): Likewise.
16282 (vect_prune_runtime_alias_test_list): Likewise.
16283 (vect_shift_permute_load_chain): Likewise.
16284 (vect_supportable_dr_alignment): Likewise.
16285 (dependence_distance_ge_vf): Take the vectorization factor as a
16286 poly_uint64 rather than an unsigned HOST_WIDE_INT.
16287 (vect_analyze_data_refs): Change min_vf from an int * to a
16288 poly_uint64 *.
16289 * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take
16290 vfm1 as a poly_uint64 rather than an int. Make the same change
16291 for the returned bound_scalar.
16292 (vect_gen_vector_loop_niters): Handle polynomial vf.
16293 (vect_do_peeling): Likewise. Update call to
16294 vect_gen_scalar_loop_niters and handle polynomial bound_scalars.
16295 (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must
16296 be constant.
16297 * tree-vect-loop.c (vect_determine_vectorization_factor)
16298 (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf.
16299 (vect_get_known_peeling_cost): Likewise.
16300 (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise.
16301 (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise.
16302 (vect_transform_loop): Likewise. Use the lowest possible VF when
16303 updating the upper bounds of the loop.
16304 (vect_min_worthwhile_factor): Make static. Return an unsigned int
16305 rather than an int.
16306 * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with
16307 polynomial unroll factors.
16308 (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise.
16309 (vect_make_slp_decision): Likewise.
16310 (vect_supported_load_permutation_p): Likewise, and polynomial
16311 vf too.
16312 (vect_analyze_slp_cost): Handle polynomial vf.
16313 (vect_slp_analyze_node_operations): Likewise.
16314 (vect_slp_analyze_bb_1): Likewise.
16315 (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
16316 than an unsigned HOST_WIDE_INT.
16317 * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store)
16318 (vectorizable_load): Handle polynomial vf.
16319 * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to
16320 a poly_uint64.
16321 (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly.
16322
16323 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16324 Alan Hayward <alan.hayward@arm.com>
16325 David Sherwood <david.sherwood@arm.com>
16326
16327 * match.pd: Handle bit operations involving three constants
16328 and try to fold one pair.
16329
16330 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
16331
16332 * tree-vect-loop-manip.c: Include gimple-fold.h.
16333 (slpeel_make_loop_iterate_ntimes): Add step, final_iv and
16334 niters_maybe_zero parameters. Handle other cases besides a step of 1.
16335 (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter.
16336 Add a path that uses a step of VF instead of 1, but disable it
16337 for now.
16338 (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var
16339 and niters_no_overflow parameters. Update calls to
16340 slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters.
16341 Create a new SSA name if the latter choses to use a ste other
16342 than zero, and return it via niters_vector_mult_vf_var.
16343 * tree-vect-loop.c (vect_transform_loop): Update calls to
16344 vect_do_peeling, vect_gen_vector_loop_niters and
16345 slpeel_make_loop_iterate_ntimes.
16346 * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling)
16347 (vect_gen_vector_loop_niters): Update declarations after above changes.
16348
16349 2018-01-02 Michael Meissner <meissner@linux.vnet.ibm.com>
16350
16351 * config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE
16352 128-bit round to integer instructions.
16353 (ceil<mode>2): Likewise.
16354 (btrunc<mode>2): Likewise.
16355 (round<mode>2): Likewise.
16356
16357 2018-01-02 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
16358
16359 * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of
16360 unaligned VSX load/store on P8/P9.
16361 (expand_block_clear): Allow the use of unaligned VSX
16362 load/store on P8/P9.
16363
16364 2018-01-02 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
16365
16366 * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
16367 New function.
16368 (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
16369 swap associated with both a load and a store.
16370
16371 2018-01-02 Andrew Waterman <andrew@sifive.com>
16372
16373 * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
16374 * config/riscv/riscv.md (clear_cache): Use it.
16375
16376 2018-01-02 Artyom Skrobov <tyomitch@gmail.com>
16377
16378 * web.c: Remove out-of-date comment.
16379
16380 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16381
16382 * expr.c (fixup_args_size_notes): Check that any existing
16383 REG_ARGS_SIZE notes are correct, and don't try to re-add them.
16384 (emit_single_push_insn_1): Move stack_pointer_delta adjustment to...
16385 (emit_single_push_insn): ...here.
16386
16387 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16388
16389 * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
16390 (const_vector_encoded_nelts): New function.
16391 (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
16392 (const_vector_int_elt, const_vector_elt): Declare.
16393 * emit-rtl.c (const_vector_int_elt_1): New function.
16394 (const_vector_elt): Likewise.
16395 * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
16396 of CONST_VECTOR_ELT.
16397
16398 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16399
16400 * expr.c: Include rtx-vector-builder.h.
16401 (const_vector_mask_from_tree): Use rtx_vector_builder and operate
16402 directly on the tree encoding.
16403 (const_vector_from_tree): Likewise.
16404 * optabs.c: Include rtx-vector-builder.h.
16405 (expand_vec_perm_var): Use rtx_vector_builder and create a repeating
16406 sequence of "u" values.
16407 * vec-perm-indices.c: Include rtx-vector-builder.h.
16408 (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate
16409 directly on the vec_perm_indices encoding.
16410
16411 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16412
16413 * doc/rtl.texi (const_vector): Describe new encoding scheme.
16414 * Makefile.in (OBJS): Add rtx-vector-builder.o.
16415 * rtx-vector-builder.h: New file.
16416 * rtx-vector-builder.c: Likewise.
16417 * rtl.h (rtx_def::u2): Add a const_vector field.
16418 (CONST_VECTOR_NPATTERNS): New macro.
16419 (CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
16420 (CONST_VECTOR_DUPLICATE_P): Likewise.
16421 (CONST_VECTOR_STEPPED_P): Likewise.
16422 (CONST_VECTOR_ENCODED_ELT): Likewise.
16423 (const_vec_duplicate_p): Check for a duplicated vector encoding.
16424 (unwrap_const_vec_duplicate): Likewise.
16425 (const_vec_series_p): Check for a non-duplicated vector encoding.
16426 Say that the function only returns true for integer vectors.
16427 * emit-rtl.c: Include rtx-vector-builder.h.
16428 (gen_const_vec_duplicate_1): Delete.
16429 (gen_const_vector): Call gen_const_vec_duplicate instead of
16430 gen_const_vec_duplicate_1.
16431 (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
16432 (gen_const_vec_duplicate): Use rtx_vector_builder.
16433 (gen_const_vec_series): Likewise.
16434 (gen_rtx_CONST_VECTOR): Likewise.
16435 * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
16436 (swap_const_vector_halves): Take an rtx pointer rather than rtx.
16437 Build a new vector rather than modifying a CONST_VECTOR in-place.
16438 (handle_special_swappables): Update call accordingly.
16439 * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
16440 (swap_const_vector_halves): Take an rtx pointer rather than rtx.
16441 Build a new vector rather than modifying a CONST_VECTOR in-place.
16442 (handle_special_swappables): Update call accordingly.
16443
16444 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16445
16446 * simplify-rtx.c (simplify_const_binary_operation): Use
16447 CONST_VECTOR_ELT instead of XVECEXP.
16448
16449 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16450
16451 * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of
16452 the selector elements to be different from the data elements
16453 if the selector is a VECTOR_CST.
16454 * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of
16455 ssizetype for the selector.
16456
16457 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16458
16459 * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p
16460 before testing each element individually.
16461 * tree-vect-generic.c (lower_vec_perm): Likewise.
16462
16463 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16464
16465 * selftest.h (selftest::vec_perm_indices_c_tests): Declare.
16466 * selftest-run-tests.c (selftest::run_tests): Call it.
16467 * vector-builder.h (vector_builder::operator ==): New function.
16468 (vector_builder::operator !=): Likewise.
16469 * vec-perm-indices.h (vec_perm_indices::series_p): Declare.
16470 (vec_perm_indices::all_from_input_p): New function.
16471 * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
16472 (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise.
16473 * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder
16474 instead of reading the VECTOR_CST directly. Detect whether both
16475 vector inputs are the same before constructing the vec_perm_indices,
16476 and update the number of inputs argument accordingly. Use the
16477 utility functions added above. Only construct sel2 if we need to.
16478
16479 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16480
16481 * optabs.c (expand_vec_perm_var): Use an explicit encoding for
16482 the broadcast of the low byte.
16483 (expand_mult_highpart): Use an explicit encoding for the permutes.
16484 * optabs-query.c (can_mult_highpart_p): Likewise.
16485 * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
16486 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
16487 (vectorizable_bswap): Likewise.
16488 * tree-vect-data-refs.c (vect_grouped_store_supported): Use an
16489 explicit encoding for the power-of-2 permutes.
16490 (vect_permute_store_chain): Likewise.
16491 (vect_grouped_load_supported): Likewise.
16492 (vect_permute_load_chain): Likewise.
16493
16494 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16495
16496 * vec-perm-indices.h (vec_perm_indices_to_tree): Declare.
16497 * vec-perm-indices.c (vec_perm_indices_to_tree): New function.
16498 * tree-ssa-forwprop.c (simplify_vector_constructor): Use it.
16499 * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
16500 * tree-vect-stmts.c (vectorizable_bswap): Likewise.
16501 (vect_gen_perm_mask_any): Likewise.
16502
16503 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16504
16505 * int-vector-builder.h: New file.
16506 * vec-perm-indices.h: Include int-vector-builder.h.
16507 (vec_perm_indices): Redefine as an int_vector_builder.
16508 (auto_vec_perm_indices): Delete.
16509 (vec_perm_builder): Redefine as a stand-alone class.
16510 (vec_perm_indices::vec_perm_indices): New function.
16511 (vec_perm_indices::clamp): Likewise.
16512 * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h.
16513 (vec_perm_indices::new_vector): New function.
16514 (vec_perm_indices::new_expanded_vector): Update for new
16515 vec_perm_indices class.
16516 (vec_perm_indices::rotate_inputs): New function.
16517 (vec_perm_indices::all_in_range_p): Operate directly on the
16518 encoded form, without computing elided elements.
16519 (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST
16520 encoding. Update for new vec_perm_indices class.
16521 * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for
16522 the given vec_perm_builder.
16523 (expand_vec_perm_var): Update vec_perm_builder constructor.
16524 (expand_mult_highpart): Use vec_perm_builder instead of
16525 auto_vec_perm_indices.
16526 * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and
16527 vec_perm_indices instead of auto_vec_perm_indices. Use a single
16528 or double series encoding as appropriate.
16529 * fold-const.c (fold_ternary_loc): Use vec_perm_builder and
16530 vec_perm_indices instead of auto_vec_perm_indices.
16531 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
16532 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
16533 (vect_permute_store_chain): Likewise.
16534 (vect_grouped_load_supported): Likewise.
16535 (vect_permute_load_chain): Likewise.
16536 (vect_shift_permute_load_chain): Likewise.
16537 * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
16538 (vect_transform_slp_perm_load): Likewise.
16539 (vect_schedule_slp_instance): Likewise.
16540 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
16541 (vectorizable_mask_load_store): Likewise.
16542 (vectorizable_bswap): Likewise.
16543 (vectorizable_store): Likewise.
16544 (vectorizable_load): Likewise.
16545 * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and
16546 vec_perm_indices instead of auto_vec_perm_indices. Use
16547 tree_to_vec_perm_builder to read the vector from a tree.
16548 * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a
16549 vec_perm_builder instead of a vec_perm_indices.
16550 (have_whole_vector_shift): Use vec_perm_builder and
16551 vec_perm_indices instead of auto_vec_perm_indices. Leave the
16552 truncation to calc_vec_perm_mask_for_shift.
16553 (vect_create_epilog_for_reduction): Likewise.
16554 * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change
16555 from auto_vec_perm_indices to vec_perm_indices.
16556 (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm
16557 instead of changing individual elements.
16558 (aarch64_vectorize_vec_perm_const): Use new_vector to install
16559 the vector in d.perm.
16560 * config/arm/arm.c (expand_vec_perm_d::perm): Change
16561 from auto_vec_perm_indices to vec_perm_indices.
16562 (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm
16563 instead of changing individual elements.
16564 (arm_vectorize_vec_perm_const): Use new_vector to install
16565 the vector in d.perm.
16566 * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even):
16567 Update vec_perm_builder constructor.
16568 (rs6000_expand_interleave): Likewise.
16569 * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise.
16570 (rs6000_expand_interleave): Likewise.
16571
16572 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16573
16574 * optabs-query.c (can_vec_perm_var_p): Check whether lowering
16575 to qimode could truncate the indices.
16576 * optabs.c (expand_vec_perm_var): Likewise.
16577
16578 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16579
16580 * Makefile.in (OBJS): Add vec-perm-indices.o.
16581 * vec-perm-indices.h: New file.
16582 * vec-perm-indices.c: Likewise.
16583 * target.h (vec_perm_indices): Replace with a forward class
16584 declaration.
16585 (auto_vec_perm_indices): Move to vec-perm-indices.h.
16586 * optabs.h: Include vec-perm-indices.h.
16587 (expand_vec_perm): Delete.
16588 (selector_fits_mode_p, expand_vec_perm_var): Declare.
16589 (expand_vec_perm_const): Declare.
16590 * target.def (vec_perm_const_ok): Replace with...
16591 (vec_perm_const): ...this new hook.
16592 * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
16593 (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
16594 * doc/tm.texi: Regenerate.
16595 * optabs.def (vec_perm_const): Delete.
16596 * doc/md.texi (vec_perm_const): Likewise.
16597 (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
16598 * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
16599 expand_vec_perm for constant permutation vectors. Assert that
16600 the mode of variable permutation vectors is the integer equivalent
16601 of the mode that is being permuted.
16602 * optabs-query.h (selector_fits_mode_p): Declare.
16603 * optabs-query.c: Include vec-perm-indices.h.
16604 (selector_fits_mode_p): New function.
16605 (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
16606 is defined, instead of checking whether the vec_perm_const_optab
16607 exists. Use targetm.vectorize.vec_perm_const instead of
16608 targetm.vectorize.vec_perm_const_ok. Check whether the indices
16609 fit in the vector mode before using a variable permute.
16610 * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
16611 vec_perm_indices instead of an rtx.
16612 (expand_vec_perm): Replace with...
16613 (expand_vec_perm_const): ...this new function. Take the selector
16614 as a vec_perm_indices rather than an rtx. Also take the mode of
16615 the selector. Update call to shift_amt_for_vec_perm_mask.
16616 Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
16617 Use vec_perm_indices::new_expanded_vector to expand the original
16618 selector into bytes. Check whether the indices fit in the vector
16619 mode before using a variable permute.
16620 (expand_vec_perm_var): Make global.
16621 (expand_mult_highpart): Use expand_vec_perm_const.
16622 * fold-const.c: Includes vec-perm-indices.h.
16623 * tree-ssa-forwprop.c: Likewise.
16624 * tree-vect-data-refs.c: Likewise.
16625 * tree-vect-generic.c: Likewise.
16626 * tree-vect-loop.c: Likewise.
16627 * tree-vect-slp.c: Likewise.
16628 * tree-vect-stmts.c: Likewise.
16629 * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
16630 Delete.
16631 * config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
16632 * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
16633 (aarch64_vectorize_vec_perm_const_ok): Fuse into...
16634 (aarch64_vectorize_vec_perm_const): ...this new function.
16635 (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
16636 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
16637 * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
16638 * config/arm/vec-common.md (vec_perm_const<mode>): Delete.
16639 * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
16640 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
16641 (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
16642 into...
16643 (arm_vectorize_vec_perm_const): ...this new function. Explicitly
16644 check for NEON modes.
16645 * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
16646 * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
16647 * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
16648 (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
16649 into...
16650 (ix86_vectorize_vec_perm_const): ...this new function. Incorporate
16651 the old VEC_PERM_CONST conditions.
16652 * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
16653 * config/ia64/vect.md (vec_perm_const<mode>): Delete.
16654 * config/ia64/ia64.c (ia64_expand_vec_perm_const)
16655 (ia64_vectorize_vec_perm_const_ok): Merge into...
16656 (ia64_vectorize_vec_perm_const): ...this new function.
16657 * config/mips/loongson.md (vec_perm_const<mode>): Delete.
16658 * config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
16659 * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
16660 * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
16661 * config/mips/mips.c (mips_expand_vec_perm_const)
16662 (mips_vectorize_vec_perm_const_ok): Merge into...
16663 (mips_vectorize_vec_perm_const): ...this new function.
16664 * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
16665 * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
16666 * config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
16667 * config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
16668 * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
16669 (rs6000_expand_vec_perm_const): Delete.
16670 * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
16671 Delete.
16672 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
16673 (altivec_expand_vec_perm_const_le): Take each operand individually.
16674 Operate on constant selectors rather than rtxes.
16675 (altivec_expand_vec_perm_const): Likewise. Update call to
16676 altivec_expand_vec_perm_const_le.
16677 (rs6000_expand_vec_perm_const): Delete.
16678 (rs6000_vectorize_vec_perm_const_ok): Delete.
16679 (rs6000_vectorize_vec_perm_const): New function.
16680 (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
16681 an element count and rtx array.
16682 (rs6000_expand_extract_even): Update call accordingly.
16683 (rs6000_expand_interleave): Likewise.
16684 * config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
16685 * config/rs6000/paired.md (vec_perm_constv2sf): Delete.
16686 * config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
16687 * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
16688 (rs6000_expand_vec_perm_const): Delete.
16689 * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
16690 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
16691 (altivec_expand_vec_perm_const_le): Take each operand individually.
16692 Operate on constant selectors rather than rtxes.
16693 (altivec_expand_vec_perm_const): Likewise. Update call to
16694 altivec_expand_vec_perm_const_le.
16695 (rs6000_expand_vec_perm_const): Delete.
16696 (rs6000_vectorize_vec_perm_const_ok): Delete.
16697 (rs6000_vectorize_vec_perm_const): New function. Remove stray
16698 reference to the SPE evmerge intructions.
16699 (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
16700 an element count and rtx array.
16701 (rs6000_expand_extract_even): Update call accordingly.
16702 (rs6000_expand_interleave): Likewise.
16703 * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
16704 * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
16705 new function.
16706 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
16707
16708 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16709
16710 * optabs.c (expand_vec_perm_1): Assert that SEL has an integer
16711 vector mode and that that mode matches the mode of the data
16712 being permuted.
16713 (expand_vec_perm): Split handling of non-CONST_VECTOR selectors
16714 out into expand_vec_perm_var. Do all CONST_VECTOR handling here,
16715 directly using expand_vec_perm_1 when forcing selectors into
16716 registers.
16717 (expand_vec_perm_var): New function, split out from expand_vec_perm.
16718
16719 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16720
16721 * optabs-query.h (can_vec_perm_p): Delete.
16722 (can_vec_perm_var_p, can_vec_perm_const_p): Declare.
16723 * optabs-query.c (can_vec_perm_p): Split into...
16724 (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
16725 (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
16726 particular selector is valid.
16727 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
16728 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
16729 (vect_grouped_load_supported): Likewise.
16730 (vect_shift_permute_load_chain): Likewise.
16731 * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
16732 (vect_transform_slp_perm_load): Likewise.
16733 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
16734 (vectorizable_bswap): Likewise.
16735 (vect_gen_perm_mask_checked): Likewise.
16736 * fold-const.c (fold_ternary_loc): Likewise. Don't take
16737 implementations of variable permutation vectors into account
16738 when deciding which selector to use.
16739 * tree-vect-loop.c (have_whole_vector_shift): Don't check whether
16740 vec_perm_const_optab is supported; instead use can_vec_perm_const_p
16741 with a false third argument.
16742 * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
16743 to test whether the constant selector is valid and can_vec_perm_var_p
16744 to test whether a variable selector is valid.
16745
16746 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16747
16748 * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
16749 * optabs-query.c (can_vec_perm_p): Likewise.
16750 * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
16751 instead of vec_perm_indices.
16752 * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
16753 (vect_gen_perm_mask_checked): Likewise,
16754 * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
16755 (vect_gen_perm_mask_checked): Likewise,
16756
16757 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
16758
16759 * optabs-query.h (qimode_for_vec_perm): Declare.
16760 * optabs-query.c (can_vec_perm_p): Split out qimode search to...
16761 (qimode_for_vec_perm): ...this new function.
16762 * optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
16763
16764 2018-01-02 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
16765
16766 * rtlanal.c (canonicalize_condition): Return 0 if final rtx
16767 does not have a conditional at the top.
16768
16769 2018-01-02 Richard Biener <rguenther@suse.de>
16770
16771 * ipa-inline.c (big_speedup_p): Fix expression.
16772
16773 2018-01-02 Jan Hubicka <hubicka@ucw.cz>
16774
16775 PR target/81616
16776 * config/i386/x86-tune-costs.h: Increase cost of integer load costs
16777 for generic 4->6.
16778
16779 2018-01-02 Jan Hubicka <hubicka@ucw.cz>
16780
16781 PR target/81616
16782 Generic tuning.
16783 * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
16784 cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
16785 and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
16786 cond_taken_branch_cost 3->4.
16787
16788 2018-01-01 Jakub Jelinek <jakub@redhat.com>
16789
16790 PR tree-optimization/83581
16791 * tree-loop-distribution.c (pass_loop_distribution::execute): Return
16792 TODO_cleanup_cfg if any changes have been made.
16793
16794 PR middle-end/83608
16795 * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
16796 convert_modes if target mode has the right side, but different mode
16797 class.
16798
16799 PR middle-end/83609
16800 * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
16801 last argument when extracting from CONCAT. If either from_real or
16802 from_imag is NULL, use expansion through memory. If result is not
16803 a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
16804 the parts directly to inner mode, if even that fails, use expansion
16805 through memory.
16806
16807 PR middle-end/83623
16808 * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
16809 check for bswap in mode rather than HImode and use that in expand_unop
16810 too.
16811 \f
16812 Copyright (C) 2018 Free Software Foundation, Inc.
16813
16814 Copying and distribution of this file, with or without modification,
16815 are permitted in any medium without royalty provided the copyright
16816 notice and this notice are preserved.