1 2019-11-13 Jan Hubicka <hubicka@ucw.cz>
4 * ipa-profile.c (check_argument_count): Do not ICE when descriptors
6 (ipa_profile): Fix reversed test.
8 2019-11-13 Jan Hubicka <hubicka@ucw.cz>
10 * ipa-cp.c (ignore_edge_p): Do not check caller flags.
11 (propagate_constants_topo): Fix typo.
13 2019-11-13 Aldy Hernandez <aldyh@redhat.com>
15 * Makefile.in (OBJS): Add value-range.o.
16 (GTFILES): Add value-range.h.
17 * gengtype.c (open_base_files): Add value-range.h to list of
19 * tree-vrp.c: Move the following value_range related functions:
20 ranges_from_anti_range, value_range, check, equal_p, symbolic_p,
21 constant_p, set_undefined, set_varying, may_contain_p,
22 singleton_p, type, dump, dump_value_range, debug, vrp_val_max,
23 vrp_val_min, vrp_val_is_min, vrp_val_is_max, set, set_nonzero,
24 set_zero, vrp_operand_equal_p, range_has_numeric_bounds_p,
25 value_inside_range, ranges_from_anti_range, union_ranges,
26 intersect_ranges, intersect_helper, union_helper, union_,
27 normalize_addresses, normalize_symbolics, num_pairs, lower_bound,
28 upper_bound, contains_p, invert, intersect...
29 * value-range.cc: ...to here.
30 * tree-vrp.h: Move class value_range, enum_value_range_kind, and
31 associated inline methods from here...
32 * value-range.h: ...to here.
34 2019-11-13 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
36 * config/mips/mips.md (rotr<mode>3): Sanitize the constant argument
37 instead of asserting its value.
39 (2019-11-13 Aldy Hernandez <aldyh@redhat.com>
41 * gimple-fold.c (size_must_be_zero_p): Rewrite use of value_range
42 constructors and set methods so value_range_kind is the last
43 argument and defaults to VR_RANGE.
44 * gimple-ssa-evrp-analyze.c (record_ranges_from_stmt): Same.
45 * ipa-cp.c (propagate_vr_across_jump_function): Same.
46 * ipa-prop.c (ipa_get_value_range): Same.
47 (ipa_compute_jump_functions_for_edge): Same.
48 * range-op.cc (value_range_from_overflowed_bounds): Same.
49 (operator_cast::op1_range): Same.
51 * range.cc (range_nonzero): Same.
52 * tree-ssanames.c (get_range_info): Same.
53 * tree-vrp.c (value_range_equiv::set): Same.
54 (value_range::value_range): Same.
55 (value_range_equiv::value_range_equiv): Same.
56 (value_range_equiv::update): Same.
57 (value_range_equiv::deep_copy): Same.
58 (value_range_equiv::move): Same.
59 (value_range_equiv::set_undefined): Same.
60 (value_range::set): Same.
61 (value_range::set_nonzero): Same.
62 (ranges_from_anti_range): Same.
63 (extract_range_from_plus_minus_expr): Same.
64 (value_range::intersect_helper): Same.
65 (value_range_equiv::intersect): Same.
66 (value_range::union_helper): Same.
67 (value_range_equiv::union_): Same.
68 (value_range::normalize_symbolics): Same.
69 (value_range::invert): Same.
70 (determine_value_range_1): Same.
71 * tree-vrp.h (class value_range): Same.
72 (class value_range_equiv): Same.
73 * vr-values.c (set_value_range_to_nonnegative): Same.
74 (set_value_range_to_truthvalue): Same.
75 (vr_values::update_value_range): Same.
76 (vr_values::extract_range_for_var_from_comparison_expr): Same.
77 (vr_values::extract_range_from_binary_expr): Same.
78 (vr_values::extract_range_from_comparison): Same.
79 (vr_values::extract_range_basic): Same.
80 (vr_values::adjust_range_with_scev): Same.
81 (vr_values::vrp_evaluate_conditional_warnv_with_ops): Same.
82 (vr_values::extract_range_from_phi_node): Same.
84 2019-11-13 Ulrich Drepper <drepper@redhat.com>
86 * tree-dump.c (dequeue_and_dump): Print first tree operand
87 for VIEW_CONVERT_EXPR.
89 2019-11-13 Joseph Myers <joseph@codesourcery.com>
91 * ginclude/float.c [__STDC_VERSION__ > 201710L] (FLT_NORM_MAX,
92 DBL_NORM_MAX, LDBL_NORM_MAX): Define.
93 * real.c (get_max_float): Add norm_max argument.
94 * real.h (get_max_float): Update prototype.
95 * builtins.c (fold_builtin_interclass_mathfn): Update calls to
98 2019-11-13 Martin Liska <mliska@suse.cz>
100 * dbgcnt.c (test_sorted_dbg_counters): New.
101 (dbgcnt_c_tests): Likewise.
102 * selftest-run-tests.c (selftest::run_tests): Likewise.
103 * selftest.h (dbgcnt_c_tests): Likewise.
105 2019-11-13 Jan Hubicka <hubicka@ucw.cz>
106 Martin Jambor <mjambor@suse.cz>
109 * ipa-cp.c (spread_undeadness): Check that IPA_NODE_REF exists.
110 (identify_dead_nodes): Likewise.
112 2019-11-13 Martin Liska <mliska@suse.cz>
114 * ipa-icf.c (sem_function::equals_private): Do not overuse
115 push/pop_cfun functions.
117 2019-11-13 Martin Liska <mliska@suse.cz>
119 * common.opt: Document change of -fdbg-cnt option.
120 * dbgcnt.c (DEBUG_COUNTER): Remove.
121 (dbg_cnt_is_enabled): Remove.
122 (dbg_cnt): Work with new intervals.
123 (dbg_cnt_set_limit_by_index): Set to new
125 (dbg_cnt_set_limit_by_name): Likewise.
126 (dbg_cnt_process_single_pair): Process new format.
127 (dbg_cnt_process_opt): Likewise.
128 (dbg_cnt_list_all_counters): Likewise.
129 * doc/invoke.texi: Document change of -fdbg-cnt option.
132 2019-11-13 Jan Hubicka <hubicka@ucw.cz>
134 * ipa-inline.c (ipa_inline): Check that function is defined before
137 2019-11-13 Andrew Stubbs <ams@codesourcery.com>
138 Julian Brown <julian@codesourcery.com>
140 * config/gcn/gcn.c (gcn_goacc_validate_dims): Ensure
141 flag_worker_partitioning is not set.
142 (TARGET_GOACC_WORKER_PARTITIONING): Remove target hook definition.
143 * config/gcn/gcn.opt (macc-experimental-workers): Default to off.
145 2019-11-13 Andrew Stubbs <ams@codesourcery.com>
147 * config/gcn/gcn-run.c (heap_region): New global variable.
148 (struct hsa_runtime_fn_info): Add hsa_memory_assign_agent_fn.
149 (init_hsa_runtime_functions): Initialize hsa_memory_assign_agent.
150 (get_kernarg_region): Move contents to ....
151 (get_memory_region): .... here.
152 (get_heap_region): New function.
153 (init_device): Initialize the heap_region.
154 (device_malloc): Add region parameter.
155 (struct kernargs): Move heap ....
156 (heap): ... to global scope.
157 (main): Allocate heap separate to kernargs.
159 2019-11-13 Jan Hubicka <hubicka@ucw.cz>
161 * ipa-prop.c (ipa_print_node_jump_functions,
162 ipa_print_node_params): Print info about missing summaries.
164 2019-11-13 Richard Sandiford <richard.sandiford@arm.com>
166 * tree-vect-loop.c (vect_estimate_min_profitable_iters): Include
167 the cost of generating loop masks.
169 2019-11-13 Richard Sandiford <richard.sandiford@arm.com>
171 * tree-vectorizer.h (vect_apply_runtime_profitability_check_p):
173 * tree-vect-loop-manip.c (vect_loop_versioning): Use it.
174 * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
175 (vect_transform_loop): Likewise.
176 (vect_analyze_loop_costing): Don't take the cost of versioning
177 into account for the static profitability threshold if it turns
178 out that no versioning is needed.
180 2019-11-13 Jan Hubicka <hubicka@ucw.cz>
182 * ipa.c (cgraph_build_static_cdtor): Pass optimization_default_node
183 and target_option_default_node to get -fprofile-generate ctors working
186 2019-11-13 Richard Sandiford <richard.sandiford@arm.com>
188 * tree-vectorizer.h (vect_nop_conversion_p): Declare.
189 * tree-vect-stmts.c (vect_nop_conversion_p): New function.
190 (vectorizable_assignment): Don't add a cost for nop conversions.
191 * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
193 * tree-vect-slp.c (vect_bb_slp_scalar_cost): Likewise.
195 2019-11-13 Richard Sandiford <richard.sandiford@arm.com>
197 * tree-vect-stmts.c (vect_model_promotion_demotion_cost): Take the
198 number of ncopies as an additional argument.
199 (vectorizable_conversion): Update call accordingly. Use "modifier"
200 to check whether a conversion is between vectors with the same
203 2019-11-13 Richard Sandiford <richard.sandiford@arm.com>
205 * config/aarch64/aarch64-sve-builtins-functions.h
206 (unary_count::expand): Use aarch64_sve_int_mode instead of
209 2019-11-13 Martin Liska <mliska@suse.cz>
211 * opts.c: Update comment about OPT_LEVELS_2_PLUS_SPEED_ONLY.
213 2019-11-13 Martin Liska <mliska@suse.cz>
215 * tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers):
216 Remove call to finalize_options_struct.
218 2019-11-13 Georg-Johann Lay <avr@gjlay.de>
221 * config/avr/t-avr (avr-mcus): Do not depend on
222 $(srcdir)/config/avr/t-multilib.
224 2019-11-13 Richard Biener <rguenther@suse.de>
226 PR tree-optimization/92473
227 * tree-vect-loop.c (vect_create_epilog_for_reduction): Perform
228 direct optab reduction in the correct type.
230 2019-11-12 Segher Boessenkool <segher@kernel.crashing.org>
232 * config/rs6000/rs6000.md (rs6000_set_fpscr_drn): Use ULL on big
235 2019-11-12 Segher Boessenkool <segher@kernel.crashing.org>
237 * config/rs6000/vsx.md (xscmpexpdp_<code> for CMP_TEST): Handle
238 UNORDERED if !HONOR_NANS (DFmode).
239 (xscmpexpqp_<code>_<mode> for CMP_TEST and IEEE128): Handle UNORDERED
240 if !HONOR_NANS (<MODE>mode).
242 2019-11-12 Jan Hubicka <hubicka@ucw.cz>
244 * ipa-cp.c (ignore_edge_p): Also look for optimize flag.
245 (ipcp_verify_propagated_values): Likewise.
246 (propagate_constants_across_call): Likewise.
247 (propagate_constants_topo): Likewise.
248 (ipcp_propagate_stage): Likewise.
250 2019-11-12 Jan Hubicka <hubicka@ucw.cz>
253 * ipa-profile.c (check_argument_count): Break out from ...;
254 watch for missing summaries.
257 2019-11-12 Martin Sebor <msebor@redhat.com>
259 PR tree-optimization/92412
260 * targhooks.c (default_ref_may_alias_errno): Errono can only alias
263 2019-11-12 Martin Sebor <msebor@redhat.com>
266 * gimple-ssa-sprintf.c (format_result::alias_info): New struct.
267 (directive::argno): New member.
268 (format_result::aliases, format_result::alias_count): New data members.
269 (format_result::append_alias): New member function.
270 (fmtresult::dst_offset): New data member.
271 (pass_sprintf_length::call_info::dst_origin): New data member.
272 (pass_sprintf_length::call_info::dst_field, dst_offset): Same.
273 (char_type_p, array_elt_at_offset, field_at_offset): New functions.
274 (get_origin_and_offset): Same.
275 (format_string): Call it.
276 (format_directive): Call append_alias and set directive argument
278 (maybe_warn_overlap): New function.
279 (pass_sprintf_length::compute_format_length): Call it.
280 (pass_sprintf_length::handle_gimple_call): Initialize new members.
281 * gcc/tree-ssa-strlen.c (): Also enable when -Wrestrict is on.
283 2019-11-12 Ilya Leoshkevich <iii@linux.ibm.com>
285 PR rtl-optimization/92430
286 * cfgcleanup.c (pass_jump_after_combine::execute): Free
287 dominance info at the beginning.
289 2019-11-12 Richard Biener <rguenther@suse.de>
291 PR tree-optimization/92460
292 * tree-vect-stmts.c (vectorizable_simd_clone_call): Unshare
293 expression before gimplifying.
295 2019-11-12 Richard Biener <rguenther@suse.de>
297 PR tree-optimization/92461
298 * tree-vect-loop.c (vect_create_epilog_for_reduction): Update
299 stmt after propagation.
301 2019-11-12 Martin Liska <mliska@suse.cz>
303 * config/i386/i386-options.c (ix86_recompute_optlev_based_flags):
304 Use SET_OPTION_IF_UNSET.
305 (ix86_option_override_internal): Likewise.
306 * opts.c (default_options_optimization): Likewise.
307 (finish_options): Likewise.
308 (enable_fdo_optimizations): Likewise.
309 (common_handle_option): Likewise.
311 2019-11-12 Martin Liska <mliska@suse.cz>
313 * common/common-target.def: Remove option_validate_param and
314 option_default_params.
315 * common/common-targhooks.c (default_option_validate_param):
317 * common/common-targhooks.h (default_option_validate_param):
319 * common/config/aarch64/aarch64-common.c (TARGET_OPTION_DEFAULT_PARAMS):
320 Remove usage of this.
321 (TARGET_OPTION_VALIDATE_PARAM): Likewise.
322 (aarch64_option_validate_param): Likewise.
323 (aarch64_option_default_params): Likewise
324 * common/config/bpf/bpf-common.c (bpf_option_default_params): Likewise.
325 (TARGET_OPTION_DEFAULT_PARAMS): Likewise.
326 * common/config/ia64/ia64-common.c (ia64_option_default_params): Likewise.
327 (TARGET_OPTION_DEFAULT_PARAMS): Likewise.
328 * common/config/powerpcspe/powerpcspe-common.c (rs6000_option_default_params): Likewise.
329 (TARGET_OPTION_DEFAULT_PARAMS): Likewise.
330 * common/config/rs6000/rs6000-common.c (rs6000_option_default_params): Likewise.
331 (TARGET_OPTION_DEFAULT_PARAMS): Likewise.
332 * common/config/sh/sh-common.c (sh_option_default_params): Likewise.
333 (TARGET_OPTION_DEFAULT_PARAMS): Likewise.
334 * config/aarch64/aarch64.c (aarch64_override_options_internal): Validate
336 * doc/tm.texi: Remove option_default_params and option_validate_param.
337 * doc/tm.texi.in: Likewise.
339 2019-11-12 Martin Liska <mliska@suse.cz>
341 * common/common-target.def:
342 Do not mention set_default_param_value
344 * doc/tm.texi: Likewise.
346 2019-11-12 Martin Liska <mliska@suse.cz>
348 * common.opt: Remove param_values.
349 * config/i386/i386-options.c (ix86_valid_target_attribute_p):
350 Remove finalize_options_struct.
351 * gcc.c (driver::decode_argv): Do not call global_init_params
353 (driver::finalize): Do not call params_c_finalize
354 and finalize_options_struct.
355 * opt-suggestions.c (option_proposer::get_completions): Remove
356 special casing of params.
357 (option_proposer::find_param_completions): Remove.
358 (test_completion_partial_match): Update expected output.
359 * opt-suggestions.h: Remove find_param_completions.
360 * opts-common.c (add_misspelling_candidates): Add
361 --param with a space.
362 * opts.c (handle_param): Remove.
363 (init_options_struct):. Remove init_options_struct and
365 (finalize_options_struct): Remove.
366 (common_handle_option): Use SET_OPTION_IF_UNSET.
367 * opts.h (finalize_options_struct): Remove.
368 * toplev.c (general_init): Do not call global_init_params.
369 (toplev::finalize): Do not call params_c_finalize and
370 finalize_options_struct.
372 2019-11-12 Martin Liska <mliska@suse.cz>
374 * Makefile.in: Remove PARAMS_H and params.list
376 * params-enum.h: Remove.
377 * params-list.h: Remove.
378 * params-options.h: Remove.
380 * params.def: Remove.
382 * asan.c: Do not include params.h.
383 * auto-profile.c: Likewise.
384 * bb-reorder.c: Likewise.
385 * builtins.c: Likewise.
386 * cfgcleanup.c: Likewise.
387 * cfgexpand.c: Likewise.
388 * cfgloopanal.c: Likewise.
389 * cgraph.c: Likewise.
390 * combine.c: Likewise.
391 * common/config/aarch64/aarch64-common.c: Likewise.
392 * common/config/gcn/gcn-common.c: Likewise.
393 * common/config/ia64/ia64-common.c: Likewise.
394 * common/config/powerpcspe/powerpcspe-common.c: Likewise.
395 * common/config/rs6000/rs6000-common.c: Likewise.
396 * common/config/sh/sh-common.c: Likewise.
397 * config/aarch64/aarch64.c: Likewise.
398 * config/alpha/alpha.c: Likewise.
399 * config/arm/arm.c: Likewise.
400 * config/avr/avr.c: Likewise.
401 * config/csky/csky.c: Likewise.
402 * config/i386/i386-builtins.c: Likewise.
403 * config/i386/i386-expand.c: Likewise.
404 * config/i386/i386-features.c: Likewise.
405 * config/i386/i386-options.c: Likewise.
406 * config/i386/i386.c: Likewise.
407 * config/ia64/ia64.c: Likewise.
408 * config/rs6000/rs6000-logue.c: Likewise.
409 * config/rs6000/rs6000.c: Likewise.
410 * config/s390/s390.c: Likewise.
411 * config/sparc/sparc.c: Likewise.
412 * config/visium/visium.c: Likewise.
413 * coverage.c: Likewise.
416 * cselib.c: Likewise.
418 * emit-rtl.c: Likewise.
419 * explow.c: Likewise.
421 * fold-const.c: Likewise.
424 * ggc-common.c: Likewise.
425 * ggc-page.c: Likewise.
426 * gimple-loop-interchange.cc: Likewise.
427 * gimple-loop-jam.c: Likewise.
428 * gimple-loop-versioning.cc: Likewise.
429 * gimple-ssa-split-paths.c: Likewise.
430 * gimple-ssa-sprintf.c: Likewise.
431 * gimple-ssa-store-merging.c: Likewise.
432 * gimple-ssa-strength-reduction.c: Likewise.
433 * gimple-ssa-warn-alloca.c: Likewise.
434 * gimple-ssa-warn-restrict.c: Likewise.
435 * graphite-isl-ast-to-gimple.c: Likewise.
436 * graphite-optimize-isl.c: Likewise.
437 * graphite-scop-detection.c: Likewise.
438 * graphite-sese-to-poly.c: Likewise.
439 * graphite.c: Likewise.
440 * haifa-sched.c: Likewise.
441 * hsa-gen.c: Likewise.
443 * ipa-cp.c: Likewise.
444 * ipa-fnsummary.c: Likewise.
445 * ipa-inline-analysis.c: Likewise.
446 * ipa-inline.c: Likewise.
447 * ipa-polymorphic-call.c: Likewise.
448 * ipa-profile.c: Likewise.
449 * ipa-prop.c: Likewise.
450 * ipa-split.c: Likewise.
451 * ipa-sra.c: Likewise.
452 * ira-build.c: Likewise.
453 * ira-conflicts.c: Likewise.
454 * loop-doloop.c: Likewise.
455 * loop-invariant.c: Likewise.
456 * loop-unroll.c: Likewise.
457 * lra-assigns.c: Likewise.
458 * lra-constraints.c: Likewise.
459 * modulo-sched.c: Likewise.
460 * opt-suggestions.c: Likewise.
462 * postreload-gcse.c: Likewise.
463 * predict.c: Likewise.
464 * reload.c: Likewise.
466 * resource.c: Likewise.
467 * sanopt.c: Likewise.
468 * sched-deps.c: Likewise.
469 * sched-ebb.c: Likewise.
470 * sched-rgn.c: Likewise.
471 * sel-sched-ir.c: Likewise.
472 * sel-sched.c: Likewise.
473 * shrink-wrap.c: Likewise.
475 * targhooks.c: Likewise.
476 * toplev.c: Likewise.
477 * tracer.c: Likewise.
478 * trans-mem.c: Likewise.
479 * tree-chrec.c: Likewise.
480 * tree-data-ref.c: Likewise.
481 * tree-if-conv.c: Likewise.
482 * tree-inline.c: Likewise.
483 * tree-loop-distribution.c: Likewise.
484 * tree-parloops.c: Likewise.
485 * tree-predcom.c: Likewise.
486 * tree-profile.c: Likewise.
487 * tree-scalar-evolution.c: Likewise.
488 * tree-sra.c: Likewise.
489 * tree-ssa-ccp.c: Likewise.
490 * tree-ssa-dom.c: Likewise.
491 * tree-ssa-dse.c: Likewise.
492 * tree-ssa-ifcombine.c: Likewise.
493 * tree-ssa-loop-ch.c: Likewise.
494 * tree-ssa-loop-im.c: Likewise.
495 * tree-ssa-loop-ivcanon.c: Likewise.
496 * tree-ssa-loop-ivopts.c: Likewise.
497 * tree-ssa-loop-manip.c: Likewise.
498 * tree-ssa-loop-niter.c: Likewise.
499 * tree-ssa-loop-prefetch.c: Likewise.
500 * tree-ssa-loop-unswitch.c: Likewise.
501 * tree-ssa-math-opts.c: Likewise.
502 * tree-ssa-phiopt.c: Likewise.
503 * tree-ssa-pre.c: Likewise.
504 * tree-ssa-reassoc.c: Likewise.
505 * tree-ssa-sccvn.c: Likewise.
506 * tree-ssa-scopedtables.c: Likewise.
507 * tree-ssa-sink.c: Likewise.
508 * tree-ssa-strlen.c: Likewise.
509 * tree-ssa-structalias.c: Likewise.
510 * tree-ssa-tail-merge.c: Likewise.
511 * tree-ssa-threadbackward.c: Likewise.
512 * tree-ssa-threadedge.c: Likewise.
513 * tree-ssa-uninit.c: Likewise.
514 * tree-switch-conversion.c: Likewise.
515 * tree-vect-data-refs.c: Likewise.
516 * tree-vect-loop.c: Likewise.
517 * tree-vect-slp.c: Likewise.
518 * tree-vrp.c: Likewise.
520 * value-prof.c: Likewise.
521 * var-tracking.c: Likewise.
523 2019-11-12 Martin Liska <mliska@suse.cz>
525 * asan.c (asan_sanitize_stack_p): Replace old parameter syntax
526 with the new one, include opts.h if needed. Use SET_OPTION_IF_UNSET
528 (asan_sanitize_allocas_p): Likewise.
529 (asan_emit_stack_protection): Likewise.
530 (asan_protect_global): Likewise.
531 (instrument_derefs): Likewise.
532 (instrument_builtin_call): Likewise.
533 (asan_expand_mark_ifn): Likewise.
534 * auto-profile.c (auto_profile): Likewise.
535 * bb-reorder.c (copy_bb_p): Likewise.
536 (duplicate_computed_gotos): Likewise.
537 * builtins.c (inline_expand_builtin_string_cmp): Likewise.
538 * cfgcleanup.c (try_crossjump_to_edge): Likewise.
539 (try_crossjump_bb): Likewise.
540 * cfgexpand.c (defer_stack_allocation): Likewise.
541 (stack_protect_classify_type): Likewise.
542 (pass_expand::execute): Likewise.
543 * cfgloopanal.c (expected_loop_iterations_unbounded): Likewise.
544 (estimate_reg_pressure_cost): Likewise.
545 * cgraph.c (cgraph_edge::maybe_hot_p): Likewise.
546 * combine.c (combine_instructions): Likewise.
547 (record_value_for_reg): Likewise.
548 * common/config/aarch64/aarch64-common.c (aarch64_option_validate_param): Likewise.
549 (aarch64_option_default_params): Likewise.
550 * common/config/ia64/ia64-common.c (ia64_option_default_params): Likewise.
551 * common/config/powerpcspe/powerpcspe-common.c (rs6000_option_default_params): Likewise.
552 * common/config/rs6000/rs6000-common.c (rs6000_option_default_params): Likewise.
553 * common/config/sh/sh-common.c (sh_option_default_params): Likewise.
554 * config/aarch64/aarch64.c (aarch64_output_probe_stack_range): Likewise.
555 (aarch64_allocate_and_probe_stack_space): Likewise.
556 (aarch64_expand_epilogue): Likewise.
557 (aarch64_override_options_internal): Likewise.
558 * config/alpha/alpha.c (alpha_option_override): Likewise.
559 * config/arm/arm.c (arm_option_override): Likewise.
560 (arm_valid_target_attribute_p): Likewise.
561 * config/i386/i386-options.c (ix86_option_override_internal): Likewise.
562 * config/i386/i386.c (get_probe_interval): Likewise.
563 (ix86_adjust_stack_and_probe_stack_clash): Likewise.
564 (ix86_max_noce_ifcvt_seq_cost): Likewise.
565 * config/ia64/ia64.c (ia64_adjust_cost): Likewise.
566 * config/rs6000/rs6000-logue.c (get_stack_clash_protection_probe_interval): Likewise.
567 (get_stack_clash_protection_guard_size): Likewise.
568 * config/rs6000/rs6000.c (rs6000_option_override_internal): Likewise.
569 * config/s390/s390.c (allocate_stack_space): Likewise.
570 (s390_emit_prologue): Likewise.
571 (s390_option_override_internal): Likewise.
572 * config/sparc/sparc.c (sparc_option_override): Likewise.
573 * config/visium/visium.c (visium_option_override): Likewise.
574 * coverage.c (get_coverage_counts): Likewise.
575 (coverage_compute_profile_id): Likewise.
576 (coverage_begin_function): Likewise.
577 (coverage_end_function): Likewise.
578 * cse.c (cse_find_path): Likewise.
579 (cse_extended_basic_block): Likewise.
580 (cse_main): Likewise.
581 * cselib.c (cselib_invalidate_mem): Likewise.
582 * dse.c (dse_step1): Likewise.
583 * emit-rtl.c (set_new_first_and_last_insn): Likewise.
584 (get_max_insn_count): Likewise.
585 (make_debug_insn_raw): Likewise.
586 (init_emit): Likewise.
587 * explow.c (compute_stack_clash_protection_loop_data): Likewise.
588 * final.c (compute_alignments): Likewise.
589 * fold-const.c (fold_range_test): Likewise.
590 (fold_truth_andor): Likewise.
591 (tree_single_nonnegative_warnv_p): Likewise.
592 (integer_valued_real_single_p): Likewise.
593 * gcse.c (want_to_gcse_p): Likewise.
594 (prune_insertions_deletions): Likewise.
595 (hoist_code): Likewise.
596 (gcse_or_cprop_is_too_expensive): Likewise.
597 * ggc-common.c: Likewise.
598 * ggc-page.c (ggc_collect): Likewise.
599 * gimple-loop-interchange.cc (MAX_NUM_STMT): Likewise.
600 (MAX_DATAREFS): Likewise.
601 (OUTER_STRIDE_RATIO): Likewise.
602 * gimple-loop-jam.c (tree_loop_unroll_and_jam): Likewise.
603 * gimple-loop-versioning.cc (loop_versioning::max_insns_for_loop): Likewise.
604 * gimple-ssa-split-paths.c (is_feasible_trace): Likewise.
605 * gimple-ssa-store-merging.c (imm_store_chain_info::try_coalesce_bswap): Likewise.
606 (imm_store_chain_info::coalesce_immediate_stores): Likewise.
607 (imm_store_chain_info::output_merged_store): Likewise.
608 (pass_store_merging::process_store): Likewise.
609 * gimple-ssa-strength-reduction.c (find_basis_for_base_expr): Likewise.
610 * graphite-isl-ast-to-gimple.c (class translate_isl_ast_to_gimple): Likewise.
611 (scop_to_isl_ast): Likewise.
612 * graphite-optimize-isl.c (get_schedule_for_node_st): Likewise.
613 (optimize_isl): Likewise.
614 * graphite-scop-detection.c (build_scops): Likewise.
615 * haifa-sched.c (set_modulo_params): Likewise.
616 (rank_for_schedule): Likewise.
617 (model_add_to_worklist): Likewise.
618 (model_promote_insn): Likewise.
619 (model_choose_insn): Likewise.
620 (queue_to_ready): Likewise.
621 (autopref_multipass_dfa_lookahead_guard): Likewise.
622 (schedule_block): Likewise.
623 (sched_init): Likewise.
624 * hsa-gen.c (init_prologue): Likewise.
625 * ifcvt.c (bb_ok_for_noce_convert_multiple_sets): Likewise.
626 (cond_move_process_if_block): Likewise.
627 * ipa-cp.c (ipcp_lattice::add_value): Likewise.
628 (merge_agg_lats_step): Likewise.
629 (devirtualization_time_bonus): Likewise.
630 (hint_time_bonus): Likewise.
631 (incorporate_penalties): Likewise.
632 (good_cloning_opportunity_p): Likewise.
633 (ipcp_propagate_stage): Likewise.
634 * ipa-fnsummary.c (decompose_param_expr): Likewise.
635 (set_switch_stmt_execution_predicate): Likewise.
636 (analyze_function_body): Likewise.
637 (compute_fn_summary): Likewise.
638 * ipa-inline-analysis.c (estimate_growth): Likewise.
639 * ipa-inline.c (caller_growth_limits): Likewise.
640 (inline_insns_single): Likewise.
641 (inline_insns_auto): Likewise.
642 (can_inline_edge_by_limits_p): Likewise.
643 (want_early_inline_function_p): Likewise.
644 (big_speedup_p): Likewise.
645 (want_inline_small_function_p): Likewise.
646 (want_inline_self_recursive_call_p): Likewise.
647 (edge_badness): Likewise.
648 (recursive_inlining): Likewise.
649 (compute_max_insns): Likewise.
650 (early_inliner): Likewise.
651 * ipa-polymorphic-call.c (csftc_abort_walking_p): Likewise.
652 * ipa-profile.c (ipa_profile): Likewise.
653 * ipa-prop.c (determine_known_aggregate_parts): Likewise.
654 (ipa_analyze_node): Likewise.
655 (ipcp_transform_function): Likewise.
656 * ipa-split.c (consider_split): Likewise.
657 * ipa-sra.c (allocate_access): Likewise.
658 (process_scan_results): Likewise.
659 (ipa_sra_summarize_function): Likewise.
660 (pull_accesses_from_callee): Likewise.
661 * ira-build.c (loop_compare_func): Likewise.
662 (mark_loops_for_removal): Likewise.
663 * ira-conflicts.c (build_conflict_bit_table): Likewise.
664 * loop-doloop.c (doloop_optimize): Likewise.
665 * loop-invariant.c (gain_for_invariant): Likewise.
666 (move_loop_invariants): Likewise.
667 * loop-unroll.c (decide_unroll_constant_iterations): Likewise.
668 (decide_unroll_runtime_iterations): Likewise.
669 (decide_unroll_stupid): Likewise.
670 (expand_var_during_unrolling): Likewise.
671 * lra-assigns.c (spill_for): Likewise.
672 * lra-constraints.c (EBB_PROBABILITY_CUTOFF): Likewise.
673 * modulo-sched.c (sms_schedule): Likewise.
674 (DFA_HISTORY): Likewise.
675 * opts.c (default_options_optimization): Likewise.
676 (finish_options): Likewise.
677 (common_handle_option): Likewise.
678 * postreload-gcse.c (eliminate_partially_redundant_load): Likewise.
680 * predict.c (get_hot_bb_threshold): Likewise.
681 (maybe_hot_count_p): Likewise.
682 (probably_never_executed): Likewise.
683 (predictable_edge_p): Likewise.
684 (predict_loops): Likewise.
685 (expr_expected_value_1): Likewise.
686 (tree_predict_by_opcode): Likewise.
687 (handle_missing_profiles): Likewise.
688 * reload.c (find_equiv_reg): Likewise.
689 * reorg.c (redundant_insn): Likewise.
690 * resource.c (mark_target_live_regs): Likewise.
691 (incr_ticks_for_insn): Likewise.
692 * sanopt.c (pass_sanopt::execute): Likewise.
693 * sched-deps.c (sched_analyze_1): Likewise.
694 (sched_analyze_2): Likewise.
695 (sched_analyze_insn): Likewise.
696 (deps_analyze_insn): Likewise.
697 * sched-ebb.c (schedule_ebbs): Likewise.
698 * sched-rgn.c (find_single_block_region): Likewise.
699 (too_large): Likewise.
700 (haifa_find_rgns): Likewise.
701 (extend_rgns): Likewise.
702 (new_ready): Likewise.
703 (schedule_region): Likewise.
704 (sched_rgn_init): Likewise.
705 * sel-sched-ir.c (make_region_from_loop): Likewise.
706 * sel-sched-ir.h (MAX_WS): Likewise.
707 * sel-sched.c (process_pipelined_exprs): Likewise.
708 (sel_setup_region_sched_flags): Likewise.
709 * shrink-wrap.c (try_shrink_wrapping): Likewise.
710 * targhooks.c (default_max_noce_ifcvt_seq_cost): Likewise.
711 * toplev.c (print_version): Likewise.
712 (process_options): Likewise.
713 * tracer.c (tail_duplicate): Likewise.
714 * trans-mem.c (tm_log_add): Likewise.
715 * tree-chrec.c (chrec_fold_plus_1): Likewise.
716 * tree-data-ref.c (split_constant_offset): Likewise.
717 (compute_all_dependences): Likewise.
718 * tree-if-conv.c (MAX_PHI_ARG_NUM): Likewise.
719 * tree-inline.c (remap_gimple_stmt): Likewise.
720 * tree-loop-distribution.c (MAX_DATAREFS_NUM): Likewise.
721 * tree-parloops.c (MIN_PER_THREAD): Likewise.
722 (create_parallel_loop): Likewise.
723 * tree-predcom.c (determine_unroll_factor): Likewise.
724 * tree-scalar-evolution.c (instantiate_scev_r): Likewise.
725 * tree-sra.c (analyze_all_variable_accesses): Likewise.
726 * tree-ssa-ccp.c (fold_builtin_alloca_with_align): Likewise.
727 * tree-ssa-dse.c (setup_live_bytes_from_ref): Likewise.
728 (dse_optimize_redundant_stores): Likewise.
729 (dse_classify_store): Likewise.
730 * tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise.
731 * tree-ssa-loop-ch.c (ch_base::copy_headers): Likewise.
732 * tree-ssa-loop-im.c (LIM_EXPENSIVE): Likewise.
733 * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Likewise.
734 (try_peel_loop): Likewise.
735 (tree_unroll_loops_completely): Likewise.
736 * tree-ssa-loop-ivopts.c (avg_loop_niter): Likewise.
737 (CONSIDER_ALL_CANDIDATES_BOUND): Likewise.
738 (MAX_CONSIDERED_GROUPS): Likewise.
739 (ALWAYS_PRUNE_CAND_SET_BOUND): Likewise.
740 * tree-ssa-loop-manip.c (can_unroll_loop_p): Likewise.
741 * tree-ssa-loop-niter.c (MAX_ITERATIONS_TO_TRACK): Likewise.
742 * tree-ssa-loop-prefetch.c (PREFETCH_BLOCK): Likewise.
743 (L1_CACHE_SIZE_BYTES): Likewise.
744 (L2_CACHE_SIZE_BYTES): Likewise.
745 (should_issue_prefetch_p): Likewise.
746 (schedule_prefetches): Likewise.
747 (determine_unroll_factor): Likewise.
748 (volume_of_references): Likewise.
749 (add_subscript_strides): Likewise.
750 (self_reuse_distance): Likewise.
751 (mem_ref_count_reasonable_p): Likewise.
752 (insn_to_prefetch_ratio_too_small_p): Likewise.
753 (loop_prefetch_arrays): Likewise.
754 (tree_ssa_prefetch_arrays): Likewise.
755 * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Likewise.
756 * tree-ssa-math-opts.c (gimple_expand_builtin_pow): Likewise.
757 (convert_mult_to_fma): Likewise.
758 (math_opts_dom_walker::after_dom_children): Likewise.
759 * tree-ssa-phiopt.c (cond_if_else_store_replacement): Likewise.
760 (hoist_adjacent_loads): Likewise.
761 (gate_hoist_loads): Likewise.
762 * tree-ssa-pre.c (translate_vuse_through_block): Likewise.
763 (compute_partial_antic_aux): Likewise.
764 * tree-ssa-reassoc.c (get_reassociation_width): Likewise.
765 * tree-ssa-sccvn.c (vn_reference_lookup_pieces): Likewise.
766 (vn_reference_lookup): Likewise.
767 (do_rpo_vn): Likewise.
768 * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr): Likewise.
769 * tree-ssa-sink.c (select_best_block): Likewise.
770 * tree-ssa-strlen.c (new_stridx): Likewise.
771 (new_addr_stridx): Likewise.
772 (get_range_strlen_dynamic): Likewise.
773 (class ssa_name_limit_t): Likewise.
774 * tree-ssa-structalias.c (push_fields_onto_fieldstack): Likewise.
775 (create_variable_info_for_1): Likewise.
776 (init_alias_vars): Likewise.
777 * tree-ssa-tail-merge.c (find_clusters_1): Likewise.
778 (tail_merge_optimize): Likewise.
779 * tree-ssa-threadbackward.c (thread_jumps::profitable_jump_thread_path): Likewise.
780 (thread_jumps::fsm_find_control_statement_thread_paths): Likewise.
781 (thread_jumps::find_jump_threads_backwards): Likewise.
782 * tree-ssa-threadedge.c (record_temporary_equivalences_from_stmts_at_dest): Likewise.
783 * tree-ssa-uninit.c (compute_control_dep_chain): Likewise.
784 * tree-switch-conversion.c (switch_conversion::check_range): Likewise.
785 (jump_table_cluster::can_be_handled): Likewise.
786 * tree-switch-conversion.h (jump_table_cluster::case_values_threshold): Likewise.
787 (SWITCH_CONVERSION_BRANCH_RATIO): Likewise.
788 (param_switch_conversion_branch_ratio): Likewise.
789 * tree-vect-data-refs.c (vect_mark_for_runtime_alias_test): Likewise.
790 (vect_enhance_data_refs_alignment): Likewise.
791 (vect_prune_runtime_alias_test_list): Likewise.
792 * tree-vect-loop.c (vect_analyze_loop_costing): Likewise.
793 (vect_get_datarefs_in_loop): Likewise.
794 (vect_analyze_loop): Likewise.
795 * tree-vect-slp.c (vect_slp_bb): Likewise.
796 * tree-vectorizer.h: Likewise.
797 * tree-vrp.c (find_switch_asserts): Likewise.
798 (vrp_prop::check_mem_ref): Likewise.
799 * tree.c (wide_int_to_tree_1): Likewise.
800 (cache_integer_cst): Likewise.
801 * var-tracking.c (EXPR_USE_DEPTH): Likewise.
802 (reverse_op): Likewise.
803 (vt_find_locations): Likewise.
805 2019-11-12 Martin Liska <mliska@suse.cz>
807 * Makefile.in: Include params.opt.
808 * flag-types.h (enum parloops_schedule_type): Add
809 parloops_schedule_type used in params.opt.
810 * params.opt: New file.
812 2019-11-12 Martin Liska <mliska@suse.cz>
814 * common.opt: Remove --param and --param= options.
815 * opt-functions.awk: Mark CL_PARAMS for options
816 that have Param keyword.
817 * opts-common.c (decode_cmdline_options_to_array):
818 Replace --param key=value with --param=key=value.
819 * opts.c (print_filtered_help): Remove special
821 (print_specific_help): Update title for params.
822 (common_handle_option): Do not handle OPT__param.
823 opts.h (SET_OPTION_IF_UNSET): New macro.
824 * doc/options.texi: Document Param keyword.
826 2019-11-12 Maciej W. Rozycki <macro@codesourcery.com>
827 Frederik Harwath <frederik@codesourcery.com>
828 Thomas Schwinge <thomas@codesourcery.com>
831 * gimple.h (gf_mask): Add GF_OMP_TARGET_KIND_OACC_SERIAL
832 enumeration constant.
833 (is_gimple_omp_oacc): Handle GF_OMP_TARGET_KIND_OACC_SERIAL.
834 (is_gimple_omp_offloaded): Likewise.
835 * gimplify.c (omp_region_type): Add ORT_ACC_SERIAL enumeration
836 constant. Adjust the value of ORT_NONE accordingly.
837 (is_gimple_stmt): Handle OACC_SERIAL.
838 (oacc_default_clause): Handle ORT_ACC_SERIAL.
839 (gomp_needs_data_present): Likewise.
840 (gimplify_adjust_omp_clauses): Likewise.
841 (gimplify_omp_workshare): Handle OACC_SERIAL.
842 (gimplify_expr): Likewise.
843 * omp-expand.c (expand_omp_target):
844 Handle GF_OMP_TARGET_KIND_OACC_SERIAL.
845 (build_omp_regions_1, omp_make_gimple_edges): Likewise.
846 * omp-low.c (is_oacc_parallel): Rename function to...
847 (is_oacc_parallel_or_serial): ... this.
848 Handle GF_OMP_TARGET_KIND_OACC_SERIAL.
849 (scan_sharing_clauses): Adjust accordingly.
850 (scan_omp_for): Likewise.
851 (lower_oacc_head_mark): Likewise.
852 (convert_from_firstprivate_int): Likewise.
853 (lower_omp_target): Likewise.
854 (check_omp_nesting_restrictions): Handle
855 GF_OMP_TARGET_KIND_OACC_SERIAL.
856 (lower_oacc_reductions): Likewise.
857 (lower_omp_target): Likewise.
858 * tree.def (OACC_SERIAL): New tree code.
859 * tree-pretty-print.c (dump_generic_node): Handle OACC_SERIAL.
861 * doc/generic.texi (OpenACC): Document OACC_SERIAL.
863 2019-11-12 Jakub Jelinek <jakub@redhat.com>
866 * tree-complex.c (expand_complex_multiplication): If !HONOR_NANS,
867 don't emit UNORDERED_EXPR guarded libcall. Formatting fixes.
869 PR tree-optimization/92452
870 * tree-vrp.c (vrp_prop::check_array_ref): If TRUNC_DIV_EXPR folds
871 into NULL_TREE, set up_bound to NULL_TREE instead of computing
874 2019-11-12 Andre Vieira <andre.simoesdiasvieira@arm.com>
876 * tree-vect-loop.c (vect_transform_loop): Don't overwrite epilogues
879 2019-11-12 Alan Modra <amodra@gmail.com>
881 * config/rs6000/predicates.md (unspec_tls): Allow const0_rtx for got
882 element of unspec vec.
883 * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Support
885 * config/rs6000/rs6000.md (UNSPEC_TLSTLS_PCREL): New unspec.
886 (tls_gd_pcrel, tls_ld_pcrel): New insns.
887 (tls_dtprel, tls_tprel): Set attr prefixed when tls_size is not 16.
888 (tls_got_tprel_pcrel, tls_tls_pcrel): New insns.
890 2019-11-12 Alan Modra <amodra@gmail.com>
892 * config/rs6000/rs6000.opt (mtls-markers): Delete.
893 * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Don't define.
894 (IS_NOMARK_TLSGETADDR): Likewise.
895 * config/rs6000/rs6000-protos.h (rs6000_output_tlsargs): Delete.
896 * config/rs6000/rs6000.c (rs6000_output_tlsargs): Delete.
897 (rs6000_legitimize_tls_address): Remove !TARGET_TLS_MARKERS code.
898 (rs6000_call_template_1): Delete TARGET_TLS_MARKERS test and
899 allow other UNSPECs besides UNSPEC_TLSGD and UNSPEC_TLSLD.
900 (rs6000_indirect_call_template_1): Likewise.
901 (rs6000_pltseq_template): Likewise.
902 (rs6000_opt_vars): Remove "tls-markers" entry.
903 * config/rs6000/rs6000.md (tls_gd<bits>): Replace TARGET_TLS_MARKERS
905 (tls_gd_high<bits>, tls_gd_low<bits>): Likewise.
906 (tls_ld<bits>, tls_ld_high<bits>, tls_ld_low<bits>): Likewise.
907 (pltseq_plt_pcrel<mode>): Likewise.
908 (call_value_local32): Remove IS_NOMARK_TLSGETADDR predicate test.
909 (call_value_local64): Likewise.
910 (call_value_indirect_nonlocal_sysv<mode>): Remove IS_NOMARK_TLSGETADDR
911 output and length attribute sub-expression.
912 (call_value_nonlocal_sysv<mode>),
913 (call_value_nonlocal_sysv_secure<mode>),
914 (call_value_local_aix<mode>, call_value_nonlocal_aix<mode>),
915 (call_value_indirect_aix<mode>, call_value_indirect_elfv2<mode>),
916 (call_value_indirect_pcrel<mode>): Likewise.
917 * doc/install.texi (powerpc-*-*): Require binutils-2.20.
918 * configure.ac (HAVE_AS_TLS_MARKERS): Delete test.
919 * configure: Regenerate.
920 * config.in: Regenerate.
922 2019-11-11 Michael Meissner <meissner@linux.ibm.com>
924 * config/rs6000/predicates.md (prefixed_memory): New predicate.
925 * config/rs6000/rs6000.md (stack_protect_setdi): Deal with either
926 address being a prefixed load/store.
927 (stack_protect_testdi): Deal with either address being a prefixed
930 2019-11-11 Jakub Jelinek <jakub@redhat.com>
933 * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Guard
934 ALTIVEC_BUILTIN_VEC_VCMPGE_P argument swapping with n == 3 check. Use
937 2019-11-11 Richard Sandiford <richard.sandiford@arm.com>
939 PR tree-optimization/92420
940 * tree-vect-stmts.c (get_negative_load_store_type): Move further
942 (get_group_load_store_type): Use it for reversed SLP accesses.
944 2019-11-11 Jan Hubicka <hubcika@ucw.cz>
946 * ipa-prop.c (ipa_propagate_indirect_call_infos): Remove ipcp
948 (ipcp_transformation_t::duplicate): Break out from ...
949 (ipa_node_params_t::duplicate): ... here; add copying of agg
951 * ipa-prop.h (ipcp_transformation): Add constructor and destructor.
952 (ipcp_transformation_t): Add duplicate.
954 2019-11-11 Janne Blomqvist <jb@gcc.gnu.org>
957 * doc/install.texi: Document that the minimum MPFR version is
960 2019-11-11 Claudiu Zissulescu <claziss@gmail.com>
962 * config/arc/arc.md (movsi_ne): Reorder instruction variants and
963 use new register constraint letters.
965 2019-11-11 Claudiu Zissulescu <claziss@gmail.com>
967 * config/arc/arc.c (arc_legitimize_pic_address): Consider UNSPECs
968 as well, if interesting recover the symbol and re-legitimize the
971 2019-11-11 Martin Liska <mliska@suse.cz>
973 * dbgcnt.def (DEBUG_COUNTER): Sort counters
976 2019-11-11 Andre Vieira <andre.simoesdiasvieira@arm.com>
978 * tree-vect-loop-manip.c (vect_do_peeling): Take epilogue gaps into
979 account when checking if there are enough iterations to vectorize
982 2019-11-11 Tobias Burnus <tobias@codesourcery.com>
983 Kwok Cheung Yeung <kcy@codesourcery.com>
985 * langhooks-def.h (LANG_HOOKS_OMP_CHECK_OPTIONAL_ARGUMENT):
986 Renamed from LANG_HOOKS_OMP_IS_OPTIONAL_ARGUMENT; update define.
987 (LANG_HOOKS_DECLS): Rename also here.
988 * langhooks.h (lang_hooks_for_decls): Rename
989 omp_is_optional_argument to omp_check_optional_argument; take
990 additional bool argument.
991 * omp-general.h (omp_check_optional_argument): Likewise.
992 * omp-general.h (omp_check_optional_argument): Likewise.
993 * omp-low.c (lower_omp_target): Update calls; handle absent
994 Fortran optional arguments with USE_DEVICE_ADDR/USE_DEVICE_PTR.
996 2019-11-11 H.J. Lu <hjl.tools@gmail.com>
999 * config/i386/intelmic-mkoffload.c (prepare_target_image): Put
1000 -fPIC and -shared the last to create offload image.
1002 2019-11-11 Thomas Schwinge <thomas@codesourcery.com>
1004 * gimplify.c (gimplify_scan_omp_clauses): Assert 'offset2' instead
1007 * Makefile.in (LANG_CONFIGUREFRAGS): Define.
1008 (config.status): Use/depend on it.
1009 * configure.ac (all_lang_configurefrags): Track, 'AC_SUBST'.
1010 * configure: Regenerate.
1012 2019-11-11 Jiufu Guo <guojiufu@linux.ibm.com>
1014 PR tree-optimization/88760
1015 * gcc/config/rs6000/rs6000.opt (-munroll-only-small-loops): New option.
1016 * gcc/common/config/rs6000/rs6000-common.c
1017 (rs6000_option_optimization_table) [OPT_LEVELS_2_PLUS_SPEED_ONLY]:
1018 Turn on -funroll-loops and -munroll-only-small-loops.
1019 [OPT_LEVELS_ALL]: Turn off -fweb and -frename-registers.
1020 * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
1021 set of PARAM_MAX_UNROLL_TIMES and PARAM_MAX_UNROLLED_INSNS.
1022 Turn off -munroll-only-small-loops for explicit -funroll-loops.
1023 (TARGET_LOOP_UNROLL_ADJUST): Add loop unroll adjust hook.
1024 (rs6000_loop_unroll_adjust): Define it. Use -munroll-only-small-loops.
1026 2019-11-11 Kewen Lin <linkw@gcc.gnu.org>
1028 * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost):
1029 Make scalar_load, vector_load, unaligned_load and
1030 vector_gather_load cost more to conform hardware latency and
1033 2019-11-10 Iain Sandoe <iain@sandoe.co.uk>
1035 * config/darwin.h (MACHO_SYMBOL_FLAG_LINKER_VIS): New.
1036 (MACHO_SYMBOL_LINKER_VIS_P): New.
1038 2019-11-10 Kwok Cheung Yeung <kcy@codesourcery.com>
1040 * lra-spills.c (assign_spill_hard_regs): Do not spill into
1041 registers in eliminable_regset.
1043 2019-11-10 Jan Hubicka <hubicka@ucw.cz>
1045 * ipa-inline.c (compute_uninlined_call_time,
1046 compute_inlined_call_time): Take edge frequency as
1047 parameter rather than computing it by itself.
1048 (big_speedup_p, edge_badness): Manually CSE sreal
1049 frequency calculations.
1051 2019-11-10 Jan Hubicka <hubicka@ucw.cz>
1053 * profile-count.c (profile_count::to_sreal_scale): Short circuit
1054 case where profiles are same.
1056 2019-11-10 Jan Hubicka <hubicka@ucw.cz>
1058 * cgraph.c (cgraph_edge::maybe_hot_p): Do not use sreal_frequency.
1060 2019-11-10 Jan Hubicka <hubicka@ucw.cz>
1062 * ipa-prop.c (ipa_propagate_indirect_call_infos): Remove ipa edge
1063 args summaries of inlined edge unless it holds info about
1064 described reference.
1066 2019-11-10 Segher Boessenkool <segher@kernel.crashing.org>
1068 * config/rs6000/rs6000.md (CC_any): New mode iterator.
1069 (*movcc_internal1): Rename to...
1070 (*movcc_<mode> for CC_any): ... this. Support moves of all CC modes.
1072 2019-11-09 Jan Hubicka <hubicka@ucw.cz>
1074 * cgraph.h (struct cgraph_node): Add ipcp_clone flag.
1075 (cgraph_node::create_virtual_clone): Copy it.
1076 * ipa-cp.c (ipcp_versionable_function_p): Watch for missing
1078 (ignore_edge_p): If caller has ipa-cp disabled, skip the edge, too.
1079 (ipcp_verify_propagated_values): Do not verify nodes where ipcp
1081 (propagate_constants_across_call): If callee is not analyzed, give up.
1082 (propagate_constants_topo): Lower to bottom latties of all callees of
1083 functions with ipa-cp disabled.
1084 (ipcp_propagate_stage): Skip functions with ipa-cp disabled.
1085 (cgraph_edge_brings_value_p): Check for availability first.
1086 (create_specialized_node): Set ipcp_clone.
1087 (ipcp_store_bits_results): Check that info is present.
1088 * ipa-fnsummary.c (evaluate_properties_for_edge): Do not analyze
1090 (ipa_call_context::duplicate_from, ipa_call_context::equal_to): Be
1091 conservative when callee summary is missing.
1092 (remap_edge_summaries): Lookup call summary only when needed.
1093 * ipa-icf.c (sem_function::param_used_p): Be ready for missing summary.
1094 * ipa-prpo.c (ipa_alloc_node_params, ipa_initialize_node_params):
1096 (ipa_analyze_node): Use get_create.
1097 (propagate_controlled_uses): Do not propagate when function is not
1099 (ipa_propagate_indirect_call_infos): Remove summary of inline clone.
1100 (ipa_read_node_info): Use get_create.
1101 * ipa-prop.h (IPA_NODE_REF): Use get.
1102 (IPA_NODE_REF_GET_CREATE): New.
1104 2019-11-09 Jan Hubicka <hubicka@ucw.cz>
1106 * ipa-fnsummary.c (evaluate_properties_for_edge): Call IPA_NODE_REF
1109 2019-11-09 Jan Hubicka <hubicka@ucw.cz>
1111 * tree.c (fld_incomplete_type_of): Clear TYPE_FINAL_P, TYPE_EMPTY_P,
1112 ENUM_IS_OPAQUE and ENUM_IS_SCOPED.
1113 (free_lang_data_in_binfo): Clear TREE_PUBLIC in BINFO
1114 (free_lang_data_in_type): Clear ENUM_IS_OPAQUE and ENUM_IS_SCOPED.
1116 2019-11-09 Jan Hubicka <hubicka@ucw.cz>
1118 * ipa-inline-analysis.c (do_estimate_growth_1): Add support for
1119 capping the growth cumulated.
1120 (offline_size): Break out from ...
1121 (estimate_growth): ... here.
1122 (check_callers): Add N, OFFLINE and MIN_SIZE and KNOWN_EDGE
1124 (growth_likely_positive): Turn to ...
1125 (growth_positive_p): Re-implement.
1126 * ipa-inline.h (growth_likely_positive): Remove.
1127 (growth_positive_p): Declare.
1128 * ipa-inline.c (want_inline_small_function_p): Use
1130 (want_inline_function_to_all_callers_p): Likewise.
1132 2019-11-09 Jan Hubicka <hubicka@ucw.cz>
1134 * ipa-fnsummary.c (ipa_call_context::estimate_size_and_time): Fix
1135 calculation of min_size.
1136 (ipa_update_overall_fn_summary): Likewise.
1138 2019-11-09 Jan Hubicka <hubicka@ucw.cz>
1140 * ipa-fnsummary.c (estimate_edge_size_and_time): Do not call
1141 estimate_edge_devirt_benefit when not computing hints;
1142 do not compute time when not asked for.
1143 (estimate_calls_size_and_time): Pass NULL hints and time when
1144 these are not computed; do not evaluate hint predicates when these are
1146 (ipa_merge_fn_summary_after_inlining): Do not re-evaluate edge
1149 2019-11-09 Jakub Jelinek <jakub@redhat.com>
1151 PR tree-optimization/92401
1152 * gimple-match-head.c (gimple_resimplify1): Call const_unop only
1153 if res_op->code is an expression with code length 1.
1154 * gimple-match-head.c (gimple_resimplify2): Call const_binop only
1155 if res_op->code is an expression with code length 2.
1156 * gimple-match-head.c (gimple_resimplify3): Call fold_ternary only
1157 if res_op->code is an expression with code length 3.
1159 2019-11-09 Iain Sandoe <iain@sandoe.co.uk>
1161 * config/darwin.c (machopic_mcount_stub_name): Validate the
1162 symbol stub name when it is created.
1163 * config/i386/darwin.h (FUNCTION_PROFILER): Remove the symbol
1166 2019-11-09 Jakub Jelinek <jakub@redhat.com>
1168 * symtab.c: Fix comment typos.
1169 * cgraphunit.c: Likewise.
1170 * cgraph.h: Likewise.
1171 * cgraphclones.c: Likewise.
1172 * cgraph.c: Likewise.
1173 * varpool.c: Likewise.
1174 * tree-ssa-strlen.c: Likewise.
1175 * ipa-sra.c: Likewise.
1176 (scan_expr_access, check_all_callers_for_issues): Fix typo
1179 2019-11-08 Iain Sandoe <iain@sandoe.co.uk>
1181 * config/darwin-protos.h: Add include quard.
1183 2019-11-08 Andrew MacLeod <amacleod@redhat.com>
1185 * range-op.h (range_operator::fold_range): Return result in a
1186 reference parameter instead of by value.
1187 (range_operator::wi_fold): Same.
1188 * range-op.cc (range_operator::wi_fold): Return result in a reference
1189 parameter instead of by value.
1190 (range_operator::fold_range): Same.
1191 (value_range_from_overflowed_bounds): Same.
1192 (value_range_with_overflow): Same
1193 (create_possibly_reversed_range): Same.
1194 (operator_equal::fold_range): Same.
1195 (operator_not_equal::fold_range): Same.
1196 (operator_lt::fold_range): Same.
1197 (operator_le::fold_range): Same.
1198 (operator_gt::fold_range): Same.
1199 (operator_ge::fold_range): Same.
1200 (operator_plus::wi_fold): Same.
1201 (operator_plus::op1_range): Change call to fold_range.
1202 (operator_plus::op2_range): Change call to fold_range.
1203 (operator_minus::wi_fold): Return result via reference parameter.
1204 (operator_minus::op1_range): Change call to fold_range.
1205 (operator_minus::op2_range): Change call to fold_range.
1206 (operator_min::wi_fold): Return result via reference parameter.
1207 (operator_max::wi_fold): Same.
1208 (cross_product_operator::wi_cross_product): Same.
1209 (operator_mult::wi_fold): Same.
1210 (operator_div::wi_fold): Same.
1211 (operator_div op_floor_div): Fix whitespace.
1212 (operator_exact_divide::op1_range): Change call to fold_range.
1213 (operator_lshift::fold_range): Return result via reference parameter.
1214 (operator_lshift::wi_fold): Same.
1215 (operator_rshift::fold_range): Same.
1216 (operator_rshift::wi_fold): Same.
1217 (operator_cast::fold_range): Same.
1218 (operator_cast::op1_range): Change calls to fold_range.
1219 (operator_logical_and::fold_range): Return result via reference.
1220 (wi_optimize_and_or): Adjust call to value_range_with_overflow.
1221 (operator_bitwise_and::wi_fold): Return result via reference.
1222 (operator_logical_or::fold_range): Same.
1223 (operator_bitwise_or::wi_fold): Same.
1224 (operator_bitwise_xor::wi_fold): Same.
1225 (operator_trunc_mod::wi_fold): Same.
1226 (operator_logical_not::fold_range): Same.
1227 (operator_bitwise_not::fold_range): Same.
1228 (operator_bitwise_not::op1_range): Change call to fold_range.
1229 (operator_cst::fold_range): Return result via reference.
1230 (operator_identity::fold_range): Same.
1231 (operator_abs::wi_fold): Same.
1232 (operator_absu::wi_fold): Same.
1233 (operator_negate::fold_range): Same.
1234 (operator_negate::op1_range): Change call to fold_range.
1235 (operator_addr_expr::fold_range): Return result via reference.
1236 (operator_addr_expr::op1_range): Change call to fold_range.
1237 (operator_pointer_plus::wi_fold): Return result via reference.
1238 (operator_pointer_min_max::wi_fold): Same.
1239 (operator_pointer_and::wi_fold): Same.
1240 (operator_pointer_or::wi_fold): Same.
1241 (range_op_handler): Change call to fold_range.
1243 * tree-vrp.c (range_fold_binary_symbolics_p): Change call to
1245 (range_fold_unary_symbolics_p): Same.
1246 (range_fold_binary_expr): Same.
1247 (range_fold_unary_expr): Same.
1249 2019-11-08 Richard Sandiford <richard.sandiford@arm.com>
1251 * tree-vect-loop.c (neutral_op_for_slp_reduction): Take the
1252 vector type as an argument rather than reading it from the
1254 (vect_create_epilog_for_reduction): Update accordingly.
1255 (vectorizable_reduction): Likewise.
1256 (vect_transform_cycle_phi): Likewise.
1258 2019-11-08 Segher Boessenkool <segher@kernel.crashing.org>
1260 * config/rs6000/predicates.md (branch_comparison_operator): Allow only
1261 the comparison codes that make sense for the mode used, and only the
1262 codes that can be done with a single branch instruction.
1264 2019-11-08 Andre Vieira <andre.simoesdiasvieira@arm.com>
1266 PR tree-optimization/92351
1267 * tree-vect-data-refs.c (vect_compute_data_ref_alignment): When we are
1268 peeling the main loop for alignment, make sure to set the misalignment
1269 of the epilogue's data references to DR_MISALIGNMENT_UNKNOWN.
1271 2019-11-08 Richard Biener <rguenther@suse.de>
1273 * dbgcnt.def (ivopts_loop): Add.
1274 * tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize): Check
1275 ivopts_loop before optimizing a loop.
1277 2019-11-08 Richard Biener <rguenther@suse.de>
1280 * tree-inline.c (declare_return_variable): Properly handle
1281 type mismatches for the return slot.
1283 2019-11-08 Eric Botcazou <ebotcazou@adacore.com>
1286 * config/sparc/sparc-protos.h (output_load_pcrel_sym): Declare.
1287 * config/sparc/sparc.c (sparc_cannot_force_const_mem): Revert latest
1289 (got_helper_needed): New static variable.
1290 (output_load_pcrel_sym): New function.
1291 (get_pc_thunk_name): Remove after inlining...
1292 (load_got_register): ...here. Rework the initialization of the GOT
1293 register and of the GOT helper.
1294 (save_local_or_in_reg_p): Test the REGNO of the GOT register.
1295 (sparc_file_end): Test got_helper_needed to decide whether the GOT
1296 helper must be emitted. Use output_asm_insn instead of fprintf.
1297 (sparc_init_pic_reg): In PIC mode, always initialize the PIC register
1298 if optimization is enabled.
1299 * config/sparc/sparc.md (load_pcrel_sym<P:mode>): Emit the assembly
1300 by calling output_load_pcrel_sym.
1302 2019-11-08 Richard Sandiford <richard.sandiford@arm.com>
1304 * tree-sra.c (create_access): Delay disqualifying the base
1305 for poly_int values until we know we have a base.
1307 2019-11-08 Andre Vieira <andre.simoesdiasvieira@arm.com>
1309 * tree-vect-loop.c (vect_analyze_loop): Disable epilogue vectorization
1310 for loops with SIMDUID set. Enable epilogue vectorization for loops
1311 with SIMDLEN set after finding a main loop with a VF that matches it.
1313 2019-11-08 Jakub Jelinek <jakub@redhat.com>
1316 * gimple-ssa-store-merging.c (find_constituent_stores): For return
1317 value only, return non-NULL if there is a single non-clobber
1318 constituent store even if there are constituent clobbers and return
1319 one of clobber constituent stores if all constituent stores are
1321 (split_group): Handle clobbers.
1322 (imm_store_chain_info::output_merged_store): When computing
1323 bzero_first, look after all clobbers at the start. Don't count
1324 clobber stmts in orig_num_stmts, except if the first orig store is
1325 a clobber covering the whole area and split_stores cover the whole
1326 area, consider equal number of stmts ok. Punt if split_stores
1327 contains only ->orig stores and their number plus number of original
1328 clobbers is equal to original number of stmts. For ->orig, look past
1329 clobbers in the constituent stores.
1330 (imm_store_chain_info::output_merged_stores): Don't remove clobber
1332 (rhs_valid_for_store_merging_p): Don't return false for clobber stmt
1334 (store_valid_for_store_merging_p): Allow clobber stmts.
1335 (verify_clear_bit_region_be): Fix up a thinko in function comment.
1338 * function.c (assign_parm_setup_block, assign_parm_setup_stack): Don't
1339 copy TYPE_EMPTY_P arguments from data->entry_parm to data->stack_parm
1341 (assign_parms): For TREE_ADDRESSABLE parms with TYPE_EMPTY_P type
1342 force creation of a unique data.stack_parm slot.
1344 2019-11-08 Richard Biener <rguenther@suse.de>
1346 * genmatch.c (expr::gen_transform): Use the resimplify
1347 member function instead of hard-coding the gimple_resimplifyN variant.
1348 (dt_simplify::gen_1): Likewise.
1350 2019-11-08 Richard Sandiford <richard.sandiford@arm.com>
1352 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
1355 2019-11-08 Richard Sandiford <richard.sandiford@arm.com>
1357 * tree-inline.c (declare_return_variable): Check for poly_int_tree_p
1358 instead of INTEGER_CST.
1360 2019-11-08 Richard Biener <rguenther@suse.de>
1362 PR tree-optimization/92324
1363 * tree-vect-loop.c (vect_create_epilog_for_reduction): Use
1364 STMT_VINFO_REDUC_VECTYPE for all computations, inserting
1365 sign-conversions as necessary.
1366 (vectorizable_reduction): Reject conversions in the chain
1367 that are not sign-conversions, base analysis on a non-converting
1368 stmt and its operation sign. Set STMT_VINFO_REDUC_VECTYPE.
1369 * tree-vect-stmts.c (vect_stmt_relevant_p): Don't dump anything
1371 * tree-vectorizer.h (_stmt_vec_info::reduc_vectype): New.
1372 (STMT_VINFO_REDUC_VECTYPE): Likewise.
1374 2019-11-08 Georg-Johann Lay <avr@gjlay.de>
1377 * config/avr/avr.opt (-mdouble=, -mlong-double=):
1378 Fix a missing '-' when displaying these options in the
1381 2019-11-08 Richard Sandiford <richard.sandiford@arm.com>
1383 * config/aarch64/iterators.md (SVE_BH, SVE_BHS): Delete.
1385 2019-11-08 Richard Sandiford <richard.sandiford@arm.com>
1387 * config/aarch64/aarch64-builtins.c
1388 (aarch64_builtin_vectorized_function): Remove bswap handling.
1390 2019-11-08 Richard Sandiford <richard.sandiford@arm.com>
1392 * tree-core.h (tree_type_common::indivisible_p): New member variable.
1393 * tree.h (TYPE_INDIVISIBLE_P): New macro.
1394 * config/aarch64/aarch64-sve-builtins.cc (register_builtin_types):
1395 Treat the vector types as indivisible.
1397 2019-11-08 Richard Sandiford <richard.sandiford@arm.com>
1399 * optabs.def (gather_load_optab, mask_gather_load_optab)
1400 (scatter_store_optab, mask_scatter_store_optab): Turn into
1401 conversion optabs, with the offset mode given explicitly.
1402 * doc/md.texi: Update accordingly.
1403 * config/aarch64/aarch64-sve-builtins-base.cc
1404 (svld1_gather_impl::expand): Likewise.
1405 (svst1_scatter_impl::expand): Likewise.
1406 * internal-fn.c (gather_load_direct, scatter_store_direct): Likewise.
1407 (expand_scatter_store_optab_fn): Likewise.
1408 (direct_gather_load_optab_supported_p): Likewise.
1409 (direct_scatter_store_optab_supported_p): Likewise.
1410 (expand_gather_load_optab_fn): Likewise. Expect the mask argument
1412 (internal_fn_mask_index): Return 4 for IFN_MASK_GATHER_LOAD.
1413 (internal_gather_scatter_fn_supported_p): Replace the offset sign
1414 argument with the offset vector type. Require the two vector
1415 types to have the same number of elements but allow their element
1416 sizes to be different. Treat the optabs as conversion optabs.
1417 * internal-fn.h (internal_gather_scatter_fn_supported_p): Update
1418 prototype accordingly.
1419 * optabs-query.c (supports_at_least_one_mode_p): Replace with...
1420 (supports_vec_convert_optab_p): ...this new function.
1421 (supports_vec_gather_load_p): Update accordingly.
1422 (supports_vec_scatter_store_p): Likewise.
1423 * tree-vectorizer.h (vect_gather_scatter_fn_p): Take a vec_info.
1424 Replace the offset sign and bits parameters with a scalar type tree.
1425 * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Likewise.
1426 Pass back the offset vector type instead of the scalar element type.
1427 Allow the offset to be wider than the memory elements. Search for
1428 an offset type that the target supports, stopping once we've
1429 reached the maximum of the element size and pointer size.
1430 Update call to internal_gather_scatter_fn_supported_p.
1431 (vect_check_gather_scatter): Update calls accordingly.
1432 When testing a new scale before knowing the final offset type,
1433 check whether the scale is supported for any signed or unsigned
1434 offset type. Check whether the target supports the source and
1435 target types of a conversion before deciding whether to look
1436 through the conversion. Record the chosen offset_vectype.
1437 * tree-vect-patterns.c (vect_get_gather_scatter_offset_type): Delete.
1438 (vect_recog_gather_scatter_pattern): Get the scalar offset type
1439 directly from the gs_info's offset_vectype instead. Pass a zero
1440 of the result type to IFN_GATHER_LOAD and IFN_MASK_GATHER_LOAD.
1441 * tree-vect-stmts.c (check_load_store_masking): Update call to
1442 internal_gather_scatter_fn_supported_p, passing the offset vector
1443 type recorded in the gs_info.
1444 (vect_truncate_gather_scatter_offset): Update call to
1445 vect_check_gather_scatter, leaving it to search for a valid
1447 (vect_use_strided_gather_scatters_p): Convert the offset to the
1448 element type of the gs_info's offset_vectype.
1449 (vect_get_gather_scatter_ops): Get the offset vector type directly
1451 (vect_get_strided_load_store_ops): Likewise.
1452 (vectorizable_load): Pass a zero of the result type to IFN_GATHER_LOAD
1453 and IFN_MASK_GATHER_LOAD.
1454 * config/aarch64/aarch64-sve.md (gather_load<mode>): Rename to...
1455 (gather_load<mode><v_int_equiv>): ...this.
1456 (mask_gather_load<mode>): Rename to...
1457 (mask_gather_load<mode><v_int_equiv>): ...this.
1458 (scatter_store<mode>): Rename to...
1459 (scatter_store<mode><v_int_equiv>): ...this.
1460 (mask_scatter_store<mode>): Rename to...
1461 (mask_scatter_store<mode><v_int_equiv>): ...this.
1463 2019-11-08 Kewen Lin <linkw@gcc.gnu.org>
1466 * config/rs6000/predicates.md
1467 (signed_or_equality_comparison_operator): New predicate.
1468 (unsigned_or_equality_comparison_operator): Likewise.
1469 * config/rs6000/rs6000.md (one_cmpl<mode>2): Remove expand.
1470 (one_cmpl<mode>3_internal): Rename to one_cmpl<mode>2.
1471 * config/rs6000/vector.md
1472 (vcond_mask_<mode><mode> for VEC_I and VEC_I): New expand.
1473 (vec_cmp<mode><mode> for VEC_I and VEC_I): Likewise.
1474 (vec_cmpu<mode><mode> for VEC_I and VEC_I): Likewise.
1475 (vcond_mask_<mode><VEC_int> for VEC_F): New expand for float
1476 vector modes and same-size integer vector modes.
1477 (vec_cmp<mode><VEC_int> for VEC_F): Likewise.
1478 (vector_lt<mode> for VEC_F): New expand.
1479 (vector_le<mode> for VEC_F): Likewise.
1480 (vector_ne<mode> for VEC_F): Likewise.
1481 (vector_unge<mode> for VEC_F): Likewise.
1482 (vector_ungt<mode> for VEC_F): Likewise.
1483 (vector_unle<mode> for VEC_F): Likewise.
1484 (vector_unlt<mode> for VEC_F): Likewise.
1485 (vector_uneq<mode>): Expose name.
1486 (vector_ltgt<mode>): Likewise.
1487 (vector_unordered<mode>): Likewise.
1488 (vector_ordered<mode>): Likewise.
1490 2019-11-08 Hongtao Liu <Hongtao.liu@intel.com>
1493 * config/i386/i386-expand.c (ix86_expand_vector_init_concat)
1494 Enhance ix86_expand_vector_init_concat.
1496 2019-11-08 Joseph Myers <joseph@codesourcery.com>
1498 * doc/invoke.texi (-Wold-style-definition): Document () not being
1499 considered an old-style definition for C2x.
1501 2019-11-07 John David Anglin <danglin@gcc.gnu.org>
1503 * config/pa/pa.md (memory_barrier): Revise to use ldcw barriers.
1505 (memory_barrier_coherent, memory_barrier_64, memory_barrier_32): New
1506 insn patterns using ldcw instruction.
1507 (memory_barrier): Remove insn pattern using sync instruction.
1508 * config/pa/pa.opt (coherent-ldcw): New option.
1509 (ordered): New option.
1511 2019-11-07 Segher Boessenkool <segher@kernel.crashing.org>
1513 * config/rs6000/rs6000.c (validate_condition_mode): Don't assert for
1516 2019-11-07 Jakub Jelinek <jakub@redhat.com>
1518 * ipa-utils.c (ipa_merge_profiles): Fix fprintf format string
1519 typo - mistmatch -> mismatch.
1520 * ipa-profile.c (ipa_profile): Likewise.
1521 * ipa-devirt.c (compare_virtual_tables): Fix a comment typo
1522 - mistmatch -> mismatch.
1524 2018-11-07 Segher Boessenkool <segher@kernel.crashing.org>
1526 * simplify-rtx.c (comparison_to_mask): New function.
1527 (mask_to_comparison): New function.
1528 (simplify_logical_relational_operation): New function.
1529 (simplify_binary_operation_1): Call
1530 simplify_logical_relational_operation.
1532 2019-11-07 Peter Bergner <bergner@linux.ibm.com>
1535 * config/rs6000/predicates.md (input_operand): Allow MODE_PARTIAL_INT
1536 modes for integer constants.
1538 2019-11-07 Jan Hubicka <jh@suse.cz>
1541 * ipa-fnsummary.c (analyze_function_body): Use get_create to copy
1544 2019-11-07 Jan Hubicka <jh@suse.cz>
1546 * optc-save-gen.awk: Generate cl_target_option_free
1547 and cl_optimization_option_free.
1548 * opth-en.awk: Declare cl_target_option_free
1549 and cl_optimization_option_free.
1550 * tree.c (free_node): Use it.
1552 2019-11-06 Jan Hubicka <jh@suse.cz>
1554 * lto-streamer-in.c: Include alloc-pool.h.
1555 (freeing_string_slot_hasher): Remove.
1556 (string_slot_allocator): New object allocator.
1557 (file_name_hash_table): Turn to hash_table<string_slot_hasher>.
1558 (file_name_obstack): New obstack.
1559 (canon_file_name): Allocate in obstack and allocator.
1560 (lto_reader_init): Initialize obstack and allocator.
1561 (lto_free_file_name_hash): New function.
1562 * lto-streamer.h (lto_free_file_name_hash): New.
1564 2019-11-07 Feng Xue <fxue@os.amperecomputing.com>
1566 PR tree-optimization/89134
1567 * doc/invoke.texi (min-loop-cond-split-prob): Document new --params.
1568 * params.def: Add min-loop-cond-split-prob.
1569 * tree-ssa-loop-split.c (split_loop): Remove niter parameter, move some
1570 outside checks on loop into the function.
1571 (split_info): New class.
1572 (find_vdef_in_loop, get_control_equiv_head_block): New functions.
1573 (find_control_dep_blocks, vuse_semi_invariant_p): Likewise.
1574 (ssa_semi_invariant_p, loop_iter_phi_semi_invariant_p): Likewise.
1575 (control_dep_semi_invariant_p, stmt_semi_invariant_p_1): Likewise.
1576 (stmt_semi_invariant_p, branch_removable_p): Likewise.
1577 (get_cond_invariant_branch, compute_added_num_insns): Likewise.
1578 (get_cond_branch_to_split_loop, do_split_loop_on_cond): Likewise.
1579 (split_loop_on_cond): Likewise.
1580 (tree_ssa_split_loops): Add loop split on conditional statement.
1582 2019-11-07 Andreas Krebbel <krebbel@linux.ibm.com>
1584 * config/s390/s390.md ("*cstorecc<mode>_z13"): New insn_and_split
1587 2019-11-07 Richard Biener <rguenther@suse.de>
1589 PR tree-optimization/92405
1590 * tree-vect-loop.c (vectorizable_reduction): Appropriately
1591 restrict lane-reducing ops to single stmt chains.
1593 2019-11-07 Martin Jambor <mjambor@suse.cz>
1596 * cif-code.def (MISMATCHED_ARGUMENTS): Removed.
1597 * cgraph.h (gimple_check_call_matching_types): Remove
1598 * cgraph.c (gimple_check_call_args): Likewise.
1599 (gimple_check_call_matching_types): Likewise.
1600 (symbol_table::create_edge): Do not call
1601 gimple_check_call_matching_types.
1602 (cgraph_edge::make_direct): Likewise.
1603 (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
1604 * value-prof.h (check_ic_target): Remove.
1605 * value-prof.c (check_ic_target): Remove.
1606 (gimple_ic_transform): Do nat call check_ic_target.
1607 * auto-profile.c (function_instance::find_icall_target_map): Likewise.
1608 (afdo_indirect_call): Likewise.
1609 * ipa-prop.c (update_indirect_edges_after_inlining): Do not call
1610 gimple_check_call_matching_types.
1611 * ipa-inline.c (early_inliner): Likewise.
1613 2019-11-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1615 * config/arm/arm.md (arm_<simd32_op>): New define_expand.
1616 (arm_<simd32_op><add_clobber_q_name>_insn): New define_insn.
1617 * config/arm/arm_acle.h (__ssat16, __usat16): Define.
1618 * config/arm/arm_acle_builtins.def: Define builtins for the above.
1619 * config/arm/iterators.md (USSAT16): New int_iterator.
1620 (simd32_op): Handle UNSPEC_SSAT16, UNSPEC_USAT16.
1622 * config/arm/predicates.md (ssat16_imm): New predicate.
1623 (usat16_imm): Likewise.
1624 * config/arm/unspecs.md (UNSPEC_SSAT16, UNSPEC_USAT16): Define.
1626 2019-11-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1628 * config/arm/arm.md (arm_<simd32_op><add_clobber_q_name>_insn):
1630 (arm_<simd32_op>): New define_expands.
1631 * config/arm/arm_acle.h (__smlad, __smladx, __smlsd, __smlsdx,
1632 __smuad, __smuadx): Define.
1633 * config/arm/arm_acle_builtins.def: Define builtins for the above.
1634 * config/arm/iterators.md (SIMD32_TERNOP_Q): New int_iterator.
1635 (SIMD32_BINOP_Q): Likewise.
1636 (simd32_op): Handle the above.
1637 * config/arm/unspecs.md: Define unspecs for the above.
1639 2019-11-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1641 * config/arm/aout.h (REGISTER_NAMES): Add apsrge.
1642 * config/arm/arm.md (APSRGE_REGNUM): Define.
1643 (arm_<simd32_op>): New define_insn.
1644 (arm_sel): Likewise.
1645 * config/arm/arm.h (FIXED_REGISTERS): Add entry for apsrge.
1646 (CALL_USED_REGISTERS): Likewise.
1647 (REG_ALLOC_ORDER): Likewise.
1648 (FIRST_PSEUDO_REGISTER): Update value.
1649 (ARM_GE_BITS_READ): Define.
1650 * config/arm/arm.c (arm_conditional_register_usage): Clear
1651 APSRGE_REGNUM from operand_reg_set.
1652 (arm_ge_bits_access): Define.
1653 * config/arm/arm-builtins.c (arm_check_builtin_call): Handle
1655 * config/arm/arm-protos.h (arm_ge_bits_access): Declare prototype.
1656 * config/arm/arm-fixed.md (add<mode>3): Convert to define_expand.
1657 FAIL if ARM_GE_BITS_READ.
1658 (*arm_add<mode>3): New define_insn.
1659 (sub<mode>3): Convert to define_expand. FAIL if ARM_GE_BITS_READ.
1660 (*arm_sub<mode>3): New define_insn.
1661 * config/arm/arm_acle.h (__sel, __sadd8, __ssub8, __uadd8, __usub8,
1662 __sadd16, __sasx, __ssax, __ssub16, __uadd16, __uasx, __usax,
1664 * config/arm/arm_acle_builtins.def: Define builtins for the above.
1665 * config/arm/iterators.md (SIMD32_GE): New int_iterator.
1666 (simd32_op): Handle the above.
1667 * config/arm/unspecs.md (UNSPEC_GE_SET): Define.
1668 (UNSPEC_SEL, UNSPEC_SADD8, UNSPEC_SSUB8, UNSPEC_UADD8, UNSPEC_USUB8,
1669 UNSPEC_SADD16, UNSPEC_SASX, UNSPEC_SSAX, UNSPEC_SSUB16, UNSPEC_UADD16,
1670 UNSPEC_UASX, UNSPEC_USAX, UNSPEC_USUB16): Define.
1672 2019-11-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1674 * config/arm/arm.md (arm_smlabb_setq): New define_insn.
1675 (arm_smlabb): New define_expand.
1676 (*maddhisi4tb): Rename to...
1677 (maddhisi4tb): ... This.
1678 (*maddhisi4tt): Rename to...
1679 (maddhisi4tt): ... This.
1680 (arm_smlatb_setq): New define_insn.
1681 (arm_smlatb): New define_expand.
1682 (arm_smlatt_setq): New define_insn.
1683 (arm_smlatt): New define_expand.
1684 (arm_<smlaw_op><add_clobber_name>_insn): New define_insn.
1685 (arm_<smlaw_op>): New define_expand.
1686 * config/arm/arm_acle.h (__smlabb, __smlatb, __smlabt, __smlatt,
1687 __smlawb, __smlawt): Define.
1688 * config/arm_acle_builtins.def: Define builtins for the above.
1689 * config/arm/iterators.md (SMLAWBT): New int_iterator.
1690 (slaw_op): New int_attribute.
1691 * config/arm/unspecs.md (UNSPEC_SMLAWB, UNSPEC_SMLAWT): Define.
1693 2019-11-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1695 * config/arm/arm.md (arm_<ss_op>): New define_expand.
1696 (arm_<ss_op><add_clobber_q_name>_insn): New define_insn.
1697 * config/arm/arm_acle.h (__qadd, __qsub, __qdbl): Define.
1698 * config/arm/arm_acle_builtins.def: Add builtins for qadd, qsub.
1699 * config/arm/iterators.md (SSPLUSMINUS): New code iterator.
1700 (ss_op): New code_attr.
1702 2019-11-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1704 * config/arm/aout.h (REGISTER_NAMES): Add apsrq.
1705 * config/arm/arm.md (APSRQ_REGNUM): Define.
1706 (add_setq): New define_subst.
1707 (add_clobber_q_name): New define_subst_attr.
1708 (add_clobber_q_pred): Likewise.
1709 (maddhisi4): Change to define_expand. Split into mult and add if
1711 (arm_maddhisi4): New define_insn.
1712 (*maddhisi4tb): Disable for ARM_Q_BIT_READ.
1713 (*maddhisi4tt): Likewise.
1714 (arm_ssat): New define_expand.
1715 (arm_usat): Likewise.
1716 (arm_get_apsr): New define_insn.
1717 (arm_set_apsr): Likewise.
1718 (arm_saturation_occurred): New define_expand.
1719 (arm_set_saturation): Likewise.
1720 (*satsi_<SAT:code>): Rename to...
1721 (satsi_<SAT:code><add_clobber_q_name>): ... This.
1722 (*satsi_<SAT:code>_shift): Disable for ARM_Q_BIT_READ.
1723 * config/arm/arm.h (FIXED_REGISTERS): Mark apsrq as fixed.
1724 (CALL_USED_REGISTERS): Mark apsrq.
1725 (FIRST_PSEUDO_REGISTER): Update value.
1726 (REG_ALLOC_ORDER): Add APSRQ_REGNUM.
1727 (machine_function): Add q_bit_access.
1728 (ARM_Q_BIT_READ): Define.
1729 * config/arm/arm.c (TARGET_CHECK_BUILTIN_CALL): Define.
1730 (arm_conditional_register_usage): Clear APSRQ_REGNUM from
1732 (arm_q_bit_access): Define.
1733 * config/arm/arm-builtins.c: Include stringpool.h.
1734 (arm_sat_binop_imm_qualifiers,
1735 arm_unsigned_sat_binop_unsigned_imm_qualifiers,
1736 arm_sat_occurred_qualifiers, arm_set_sat_qualifiers): Define.
1737 (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS,
1738 UNSIGNED_SAT_BINOP_UNSIGNED_IMM_QUALIFIERS, SAT_OCCURRED_QUALIFIERS,
1739 SET_SAT_QUALIFIERS): Likewise.
1740 (arm_builtins): Define ARM_BUILTIN_SAT_IMM_CHECK.
1741 (arm_init_acle_builtins): Initialize __builtin_sat_imm_check.
1742 Handle 0 argument expander.
1743 (arm_expand_acle_builtin): Handle ARM_BUILTIN_SAT_IMM_CHECK.
1744 (arm_check_builtin_call): Define.
1745 * config/arm/arm.md (ssmulsa3, usmulusa3, usmuluha3,
1746 arm_ssatsihi_shift, arm_usatsihi): Disable when ARM_Q_BIT_READ.
1747 * config/arm/arm-protos.h (arm_check_builtin_call): Declare prototype.
1748 (arm_q_bit_access): Likewise.
1749 * config/arm/arm_acle.h (__ssat, __usat, __ignore_saturation,
1750 __saturation_occurred, __set_saturation_occurred): Define.
1751 * config/arm/arm_acle_builtins.def: Define builtins for ssat, usat,
1752 saturation_occurred, set_saturation_occurred.
1753 * config/arm/unspecs.md (UNSPEC_Q_SET): Define.
1754 (UNSPEC_APSR_READ): Likewise.
1755 (VUNSPEC_APSR_WRITE): Likewise.
1756 * config/arm/arm-fixed.md (ssadd<mode>3): Convert to define_expand.
1757 (*arm_ssadd<mode>3): New define_insn.
1758 (sssub<mode>3): Convert to define_expand.
1759 (*arm_sssub<mode>3): New define_insn.
1760 (ssmulsa3): Convert to define_expand.
1761 (*arm_ssmulsa3): New define_insn.
1762 (usmulusa3): Convert to define_expand.
1763 (*arm_usmulusa3): New define_insn.
1764 (ssmulha3): FAIL if ARM_Q_BIT_READ.
1765 (arm_ssatsihi_shift, arm_usatsihi): Disable for ARM_Q_BIT_READ.
1766 * config/arm/iterators.md (qaddsub_clob_q): New mode attribute.
1768 2019-11-07 Martin Liska <mliska@suse.cz>
1771 * cgraph.c (delete_function_version): Clear global
1772 variable version_info_node if equal to deleted
1775 2019-11-07 Martin Liska <mliska@suse.cz>
1777 * fold-const.c (operand_compare::operand_equal_p): Add comparison
1778 of CONSTRUCTOR_NO_CLEARING.
1779 (operand_compare::hash_operand): Likewise.
1781 2019-11-07 Georg-Johann Lay <avr@gjlay.de>
1783 Support 64-bit double and 64-bit long double configurations.
1786 * config.gcc (tm_defines) [avr]: Set from --with-double=,
1787 --with-long-double=.
1788 * config/avr/t-multilib: Remove.
1789 * config/avr/t-avr: Output of genmultilib.awk is now fully
1790 dynamically generated and no more part of the repo.
1791 (HAVE_DOUBLE_MULTILIB, HAVE_LONG_DOUBLE_MULTILIB): New variables.
1792 Pass them down to...
1793 * config/avr/genmultilib.awk: ...here and handle them.
1794 * config/avr/avr.opt (-mdouble=, avr_double). New option and var.
1795 (-mlong-double=, avr_long_double). New option and var.
1796 * common/config/avr/avr-common.c (opts.h, diagnostic.h): Include.
1797 (TARGET_OPTION_OPTIMIZATION_TABLE) <-mdouble=, -mlong-double=>:
1798 Set default as requested by --with-double=
1799 (TARGET_HANDLE_OPTION): Define to this...
1800 (avr_handle_option): ...new hook worker.
1801 * config/avr/avr.h (DOUBLE_TYPE_SIZE): Define to avr_double.
1802 (LONG_DOUBLE_TYPE_SIZE): Define to avr_long_double.
1803 (avr_double_lib): New proto for spec function.
1804 (EXTRA_SPEC_FUNCTIONS) <double-lib>: Add.
1805 (DRIVER_SELF_SPECS): Call %:double-lib.
1806 * config/avr/avr.c (avr_option_override): Assert
1807 sizeof(long double) >= sizeof(double) for the target.
1808 * config/avr/avr-c.c (avr_cpu_cpp_builtins)
1809 [__HAVE_DOUBLE_MULTILIB__, __HAVE_LONG_DOUBLE_MULTILIB__]
1810 [__HAVE_DOUBLE64__, __HAVE_DOUBLE32__, __DEFAULT_DOUBLE__=]
1811 [__HAVE_LONG_DOUBLE64__, __HAVE_LONG_DOUBLE32__]
1812 [__HAVE_LONG_DOUBLE_IS_DOUBLE__, __DEFAULT_LONG_DOUBLE__=]:
1813 New built-in define depending on --with-double=, --with-long-double=.
1814 * config/avr/driver-avr.c (avr_double_lib): New spec function.
1815 * doc/invoke.tex (AVR Options) <-mdouble=,-mlong-double=>: Doc.
1816 * doc/install.texi (Cross-Compiler-Specific Options)
1817 <--with-double=, --with-long-double=>: Doc.
1819 2019-11-07 Richard Biener <rguenther@suse.de>
1821 * dbgcnt.def (gimple_unroll): New.
1822 * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Check
1823 gimple_unroll debug counter before applying transform.
1824 (try_peel_loop): Likewise.
1826 2019-11-07 Kwok Cheung Yeung <kcy@codesourcery.com>
1828 * ira.c (setup_alloc_regs): Setup no_unit_alloc_regs for
1829 frame pointer in multiple registers.
1830 (ira_setup_eliminable_regset): Setup eliminable_regset,
1831 ira_no_alloc_regs and regs_ever_live for frame pointer in
1834 2019-11-06 Kelvin Nilsen <kelvin@gcc.gnu.org>
1836 * config/rs6000/vsx.md (xxswapd_<mode>): Add support for V2DF and
1839 2019-11-06 Jan Hubicka <jh@suse.cz>
1841 * ggc-common.c (ggc_prune_overhead_list): Do not delete surviving
1843 * mem-stats.h (mem_alloc_description<T>::release_object_overhead):
1844 Do not silently ignore summary corruptions.
1846 2019-11-06 Richard Sandiford <richard.sandiford@arm.com>
1848 * tree-vect-loop.c (vect_analyze_loop): Only try to vectorize
1849 the epilogue if there are peeled iterations for it to handle.
1851 2019-11-06 Claudiu Zissulescu <claziss@synopsys.com>
1853 * config/arc/arc.c (arc_split_ior): Add asserts.
1854 (arc_split_mov_const): Likewise.
1855 (arc_check_ior_const): Do not match known short immediate values.
1856 * config/arc/arc.md (movsi): Don't split predicated instructions
1859 2019-11-06 Claudiu Zissulescu <claziss@synopsys.com>
1861 * config/arc/arc.opt (mea): Update help string.
1862 * doc/invoke.texi(ARC): Update mea option info.
1864 2019-11-06 Claudiu Zissulescu <claziss@synopsys.com>
1866 * config/arc/arc.md (zero_extendqihi2_i): Cleanup pattern.
1867 (zero_extendqisi2_ac): Likewise.
1868 (zero_extendhisi2_i): Likewise.
1869 (extendqihi2_i): Likewise.
1870 (extendqisi2_ac): Likewise.
1871 (extendhisi2_i): Likewise.
1873 2019-11-06 Richard Biener <rguenther@suse.de>
1875 * tree-vect-loop.c (vectorizable_reduction): Remember reduction
1876 PHI. Use STMT_VINFO_REDUC_IDX to skip the reduction operand.
1877 Simplify single_defuse_cycle condition.
1879 2019-11-06 Richard Sandiford <richard.sandiford@arm.com>
1881 * tree-vect-loop.c (vect_analyze_loop_2): When vectorizing an
1882 epilogue loop, make sure that the VF is small enough or that
1883 the epilogue loop can be fully-masked.
1885 2019-11-06 Richard Sandiford <richard.sandiford@arm.com>
1887 * tree-vect-loop.c (vect_analyze_loop): Break out of the main
1888 loop when we've finished, rather than returning directly from
1889 the loop. Use a local variable to track whether we're still
1890 searching for the preferred simdlen. Make vect_epilogues
1891 record whether the next iteration should try to treat the
1892 loop as an epilogue.
1894 2019-11-06 Vineet Gupta <vgupta@synopsys.com>
1896 * config/arc/arc-c.c (arc_cpu_cpp_builtins) : Add
1897 __arc_hard_float__, __ARC_HARD_FLOAT__,
1898 __arc_soft_float__, __ARC_SOFT_FLOAT__
1900 2019-11-06 Andre Vieira <andre.simoesdiasvieira@arm.com>
1902 PR tree-optimization/92317
1903 * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard2): Also
1904 update phi's with constant phi arguments.
1906 2019-11-06 Eric Botcazou <ebotcazou@adacore.com>
1907 Alexandre Oliva <oliva@adacore.com>
1909 * common.opt (-fcallgraph-info[=]): New option.
1910 * doc/invoke.texi (Developer options): Document it.
1911 * opts.c (common_handle_option): Handle it.
1912 * builtins.c (expand_builtin_alloca): Record allocation if
1913 -fcallgraph-info=da.
1914 * calls.c (expand_call): If -fcallgraph-info, record the call.
1915 (emit_library_call_value_1): Likewise.
1916 * flag-types.h (enum callgraph_info_type): New type.
1917 * explow.c: Include stringpool.h.
1918 (set_stack_check_libfunc): Set SET_SYMBOL_REF_DECL on the symbol.
1919 * function.c (allocate_stack_usage_info): New.
1920 (allocate_struct_function): Call it for -fcallgraph-info.
1921 (prepare_function_start): Call it otherwise.
1922 (record_final_call, record_dynamic_alloc): New.
1923 * function.h (struct callinfo_callee): New.
1924 (CALLEE_FROM_CGRAPH_P): New.
1925 (struct callinfo_dalloc): New.
1926 (struct stack_usage): Add callees and dallocs.
1927 (record_final_call, record_dynamic_alloc): Declare.
1928 * gimplify.c (gimplify_decl_expr): Record dynamically-allocated
1929 object if -fcallgraph-info=da.
1930 * optabs-libfuncs.c (build_libfunc_function): Keep SYMBOL_REF_DECL.
1931 * print-tree.h (print_decl_identifier): Declare.
1932 (PRINT_DECL_ORIGIN, PRINT_DECL_NAME, PRINT_DECL_UNIQUE_NAME): New.
1933 * print-tree.c: Include print-tree.h.
1934 (print_decl_identifier): New function.
1935 * toplev.c: Include print-tree.h.
1936 (callgraph_info_file): New global variable.
1937 (callgraph_info_external_printed): Likewise.
1938 (output_stack_usage): Rename to...
1939 (output_stack_usage_1): ... this. Make it static, add cf
1940 parameter. If -fcallgraph-info=su, print stack usage to cf.
1941 If -fstack-usage, use print_decl_identifier for
1943 (INDIRECT_CALL_NAME): New.
1944 (dump_final_node_vcg_start): New.
1945 (dump_final_callee_vcg, dump_final_node_vcg): New.
1946 (output_stack_usage): New.
1947 (lang_dependent_init): Open and start file if
1948 -fcallgraph-info. Allocated callgraph_info_external_printed.
1949 (finalize): If callgraph_info_file is not null, finish it,
1950 close it, and release callgraph_info_external_printed.
1952 2019-11-06 Gergö Barany <gergo@codesourcery.com>
1953 Frederik Harwath <frederik@codesourcery.com>
1954 Thomas Schwinge <thomas@codesourcery.com>
1956 * omp-low.c (struct omp_context): New fields
1957 local_reduction_clauses, outer_reduction_clauses.
1958 (new_omp_context): Initialize these.
1959 (scan_sharing_clauses): Record reduction clauses on OpenACC constructs.
1960 (scan_omp_for): Check reduction clauses for incorrect nesting.
1962 2019-11-06 Jakub Jelinek <jakub@redhat.com>
1965 * gimplify.c (gimplify_asm_expr): Reject VLA in output or input
1966 operands with non-memory constraints.
1968 2019-11-05 Martin Sebor <msebor@redhat.com>
1970 PR tree-optimization/92373
1971 * tree.c (component_ref_size): Only consider initializers of objects
1972 of matching struct types.
1973 Return null for instances of interior zero-length arrays.
1975 2019-11-05 Segher Boessenkool <segher@kernel.crashing.org>
1977 * doc/md.texi (Insn Splitting): Fix combiner documentation.
1979 2019-11-05 Jason Merrill <jason@redhat.com>
1981 PR tree-optimization/91825
1982 * expmed.c: Reduce -Wmaybe-uninitialized to warning.
1984 2019-11-05 Jim Wilson <jimw@sifive.com>
1987 * expr.c (emit_move_complex): Only use BLOCK_OP_NO_LIBCALL when
1988 optimize_insn_for_speed_p is true.
1990 2019-11-05 Martin Sebor <msebor@redhat.com>
1994 * tree-vrp.c (vrp_prop::check_array_ref): Handle VLAs with constant
1996 * tree-ssa-ccp.c (fold_builtin_alloca_with_align): Use a meaninful
1997 name and location for a temporary variable.
1999 2019-11-05 Aldy Hernandez <aldyh@redhat.com>
2001 * tree-vrp.c (value_range::value_range): Fix whitespace.
2002 (defined_ranges_p): Same.
2003 (range_fold_binary_symbolics_p): Same.
2004 (value_range::intersect_helper): Same.
2005 (value_range::union_helper): Same.
2006 * tree-vrp.h (range_fold_binary_expr): Same.
2008 2019-11-04 Martin Sebor <msebor@redhat.com>
2012 * tree-sra.c (get_access_for_expr): Fail for out-of-bounds offsets.
2013 * tree-vrp.c (vrp_prop::check_array_ref): Correct index and text
2014 of message printed in a warning for empty arrays.
2015 (vrp_prop::check_mem_ref): Also handle function parameters and
2018 2019-11-05 Richard Biener <rguenther@suse.de>
2020 PR tree-optimization/92371
2021 * tree-vect-loop.c (vectorizable_reduction): Set STMT_VINFO_REDUC_DEF
2022 on the original stmt of live stmts in the chain.
2023 (vectorizable_live_operation): Look at the original stmt when
2024 checking STMT_VINFO_REDUC_DEF.
2026 2019-11-05 Aldy Hernandez <aldyh@redhat.com>
2028 * gimple-fold.c, gimple-loop-versioning.cc,
2029 gimple-ssa-evrp-analyze.[ch], gimple-ssa-evrp.c,
2030 gimple-ssa-sprintf.c, ipa-cp.c, ipa-prop.c, ipa-prop.h,
2031 range-op.[hc]*, range.[hc]*, selftest.h, tree-ssa-dom.c,
2032 tree-ssa-strlen.c, tree-ssa-threadedge.c, tree-ssanames.[hc],
2033 tree-vrp.[hc], vr-values.[hc]: Global rename of value_range to
2034 value_range_equiv, and value_range_base to value_range.
2036 2019-11-05 Matthew Malcomson <matthew.malcomson@arm.com>
2038 * expr.c (build_personality_function): Fix generated type to
2039 match actual personality functions.
2041 2019-11-05 Matthew Malcomson <matthew.malcomson@arm.com>
2043 * config/aarch64/aarch64.c (aarch64_handle_attr_cpu): Allocate
2044 enough bytes for the NULL character.
2046 2019-11-05 Richard Biener <rguenther@suse.de>
2048 PR tree-optimization/92280
2049 * match.pd (BIT_FIELD_REF of CTOR): Unless the original CTOR
2050 had a single use do not create a new CTOR.
2051 * tree-ssa-forwprop.c (simplify_bitfield_ref): Do not re-fold
2052 BIT_FIELD_REF of a CTOR via GENERIC.
2054 2019-11-05 Andreas Krebbel <krebbel@linux.ibm.com>
2056 * config/s390/s390.c (s390_vector_alignment): Check if the value
2057 fits into uhwi before using it.
2059 2019-11-05 Martin Liska <mliska@suse.cz>
2061 * symbol-summary.h: Use ggc_delete.
2063 2019-11-05 Anton Youdkevitch <anton.youdkevitch@bell-sw.com>
2065 * config/aarch64/aarch64.c (thunderx2t99_vector_cost):
2066 Change vec_perm field to 10.
2068 2019-11-05 Arnaud Charlet <charlet@adacore.com>
2070 * doc/install.texi: Further fix syntax for html generation.
2072 2019-11-05 Martin Liska <mliska@suse.cz>
2074 * symbol-summary.h: Rename allocator to m_allocator and
2077 2019-11-05 Richard Biener <rguenther@suse.de>
2079 PR tree-optimization/92324
2080 * tree-vect-loop.c (check_reduction_path): For MIN/MAX require
2081 all signed or unsigned operations.
2083 2019-11-05 Jan Hubicka <jh@suse.cz>
2085 * hsa-brig.c: Include alloc-pool.h
2086 * hsa-dump.c: Likewise.
2087 * hsa-gen.c: Likewise.
2088 * hse-regalloc.c: Likewise.
2089 * ipa-hsa.c: Likewise.
2090 * ipa-predicate.c: Likewise.
2091 * ipa-reference.c: Likewise.
2092 * ipa-sra.c: Likewise.
2093 * omp-expand.c: Likewise.
2094 * omp-general.c: Likewise.
2095 * omp-low.c: Likewise.
2096 * sumbol-summary.h (function_summary_base): Add allocator.
2097 (function_summary<T *>::function_summary): Update construction.
2098 (fast_function_summary<T *, V>::fast_function_summary): Likewise.
2099 (call_summary_base): Add allcator.
2100 (call_summary<T *>::call_summary): Update construction.
2101 (fast_call_summary<T *, V>::fast_call_summary): Likewise.
2103 2019-11-05 Jakub Jelinek <jakub@redhat.com>
2105 PR tree-optimization/91945
2106 * builtins.c (compute_objsize): For ARRAY_REF, only multiply off
2107 by tpsize if it is both non-NULL and INTEGER_CST, otherwise punt.
2110 2019-11-05 Aldy Hernandez <aldyh@redhat.com>
2112 * range-op.cc (wi_set_zero_nonzero_bits): Remove static qualifier.
2113 * range-op.h (wi_set_zero_nonzero_bits): New prototype.
2114 * tree-vrp.h (vrp_set_zero_nonzero_bits): Remove.
2115 * tree-vrp.c (wide_int_range_set_zero_nonzero_bits): Remove.
2116 (vrp_set_zero_nonzero_bits): Move to...
2117 * vr-values.c (vr_set_zero_nonzero_bits): ...here.
2118 (vr_values::simplify_bit_ops_using_ranges): Rename
2119 vrp_set_zero_nonzero_bits to vr_set_zero_nonzero_bits.
2121 2019-11-05 Martin Liska <mliska@suse.cz>
2124 * fold-const.c (operand_compare::hash_operand): Remove
2125 FIELD_DECL handling.
2127 2019-11-05 Aldy Hernandez <aldyh@redhat.com>
2129 * tree-vrp.h (vrp_bitmap_equal_p): Remove.
2130 * tree-vrp.c (vrp_bitmap_equal_p): Move before use and make
2133 2019-11-05 Aldy Hernandez <aldyh@redhat.com>
2135 * tree-vrp.c (value_range_base::operator==): Use equal_p to
2136 properly handle symbolics.
2137 (range_compatible_p): Remove.
2139 2019-11-04 Kamlesh Kumar <kamleshbhalui@gmail.com>
2141 * common.opt (-fabi-version): Document =14.
2142 * doc/invoke.texi (C++ Dialect Options): Likewise.
2144 2019-11-04 Aldy Hernandez <aldyh@redhat.com>
2146 * tree-vrp.c (value_range_base::set): Do not special case pointers.
2148 2019-11-04 Tobias Burnus <tobias@codesourcery.com>
2150 * config/gcn/gcn.c (gcn_omp_device_kind_arch_isa): New function.
2151 (TARGET_OMP_DEVICE_KIND_ARCH_ISA): Redefine to
2152 gcn_omp_device_kind_arch_isa.
2153 * config/gcn/t-omp-device: New file.
2154 * configure.ac: Support gcn for omp_device_property.
2155 * configure: Regenerate.
2157 2019-11-04 Aldy Hernandez <aldyh@redhat.com>
2159 * tree-vrp.h (vrp_val_min): Remove handle_pointers argument.
2160 (vrp_val_max): Same.
2161 (vrp_val_is_min): Same.
2162 (vrp_val_is_max): Same.
2163 (value_range_base::nonzero_p): Remove last argument to
2165 * tree-vrp.c (vrp_val_min): Remove handle_pointers argument.
2166 (vrp_val_max): Same.
2167 (vrp_val_is_min): Same.
2168 (vrp_val_is_max): Same.
2169 (value_range_base::set_varying): Remove last argument to vrp_val*.
2170 (value_range_base::dump): Same.
2171 (value_range_base::set): Same.
2172 (value_range_base::normalize_symbolics): Same.
2173 (value_range_base::num_pairs): Same.
2174 (value_range_base::lower_bound): Same.
2175 (value_range_base::upper_bound): Same.
2176 (ranges_from_anti_range): Remove handle_pointers argument.
2177 (value_range_base::singleton_p): Remove last argument to
2178 ranges_from_anti_range.
2180 2019-11-04 Jan Hubicka <jh@suse.cz>
2182 * ipa-reference.c (init_function_info): Initialize
2183 info->global.statics_read.
2185 2019-11-04 Aldy Hernandez <aldyh@redhat.com>
2187 * tree-vrp.c (value_range_base::invert): Use constructors to build
2190 2019-11-04 Aldy Hernandez <aldyh@redhat.com>
2192 * tree-vrp.c (range_int_cst_singleton_p): Remove.
2193 * tree-vrp.h (range_int_cst_singleton_p): Remove.
2195 2019-11-04 Aldy Hernandez <aldyh@redhat.com>
2197 * tree-vrp.c (value_range_base::normalize_addresses): Handle
2200 2019-11-04 Aldy Hernandez <aldyh@redhat.com>
2202 * tree-vrp.c (dump_assert_info): New.
2203 (dump_asserts_info): New.
2205 2019-11-04 Jan Hubicka <jh@suse.cz>
2207 * ipa-inline-transform.c: Include ipa-utils.h
2208 (inline_call): Set thunk_expansion flag.
2209 * ipa-utils.h (thunk_expansion): Declare.
2210 * ipa-devirt.c (thunk_expansion): New global var.
2211 (devirt_node_removal_hook): Do not invalidate cache while
2212 doing thunk expansion.
2214 2019-11-04 Tamar Christina <tamar.christina@arm.com>
2216 * tree-vect-slp.c (vectorize_slp_instance_root_stmt): Initialize rstmt.
2218 2019-11-04 Martin Sebor <msebor@redhat.com>
2220 PR tree-optimization/92349
2221 * tree-vrp.c (vrp_prop::check_array_ref): Avoid assuming struct
2222 memebers have constant sizes.
2224 2019-11-04 Andre Vieira <andre.simoesdiasvieira@arm.com>
2226 * tree-vect-loop.c (vect_analyze_loop): Remove orig_loop_vinfo
2228 * tree-vectorizer.h (vect_analyze_loop): Update declaration.
2229 * tree-vectorizer.c (try_vectorize_loop_1): Update calls to
2232 2019-11-04 Joel Hutton <Joel.Hutton@arm.com>
2234 * expr.c (store_constructor): Modify to handle single element vectors.
2235 * tree-vect-slp.c (vect_analyze_slp_instance): Add case for vector
2237 (vect_slp_check_for_constructors): New function.
2238 (vect_slp_analyze_bb_1): Call new function to check for vector
2240 (vectorize_slp_instance_root_stmt): New function.
2241 (vect_schedule_slp): Call new function to vectorize root stmt of vector
2243 * tree-vectorizer.h (SLP_INSTANCE_ROOT_STMT): New field.
2245 2019-11-04 Richard Biener <rguenther@suse.de>
2247 PR tree-optimization/92345
2248 * tree-vect-loop.c (vect_is_simple_reduction): Return whether
2249 we produced a reduction chain.
2250 (vect_analyze_scalar_cycles_1): Do not add reduction chains to
2251 LOOP_VINFO_REDUCTIONS.
2253 2019-11-04 Jan Hubicka <jh@suse.cz>
2255 * cgraphclones.c (cgraph_node::create_version_clone): Do not
2256 duplicate summaries.
2257 * ipa-fnsummary.c (ipa_fn_summary_alloc): Allocate size summary
2259 (ipa_fn_summary_t::duplicate): Use get instead of get_create to
2260 access call summaries.
2261 (dump_ipa_call_summary): Be ready for missing edge summaries.
2262 (analyze_function_body): Use get instead of get_create to access
2264 (estimate_calls_size_and_time): Do not access summaries of
2265 inlined edges; sanity check they are missing.
2266 (ipa_call_context::estimate_size_and_time): Use get instead
2267 of get_create to access node summary.
2268 (inline_update_callee_summaries): Do not update depth of
2270 (ipa_merge_fn_summary_after_inlining): Remove inline edge from
2272 (ipa_merge_fn_summary_after_inlining): Use get instead
2274 * ipa-fnsummary.h (ipa_remove_from_growth_caches): Declare.
2275 * ipa-inline-analyssi.c (edge_growth_cache): Turn to
2277 (initialize_growth_caches): Update.
2278 (do_estimate_edge_time): Remove redundant copy of context.
2279 (ipa_remove_from_growth_caches): New function.
2280 * ipa-inline.c (flatten_function): Update overall summary
2281 only when optimizing.
2282 (inline_to_all_callers): Update overall summary of function
2284 * ipa-inline.h (edge_growth_cache): Turn to fast summary.
2285 * symbol-summary.h (call_summary_base): Set m_initialize_when_cloning
2288 2019-11-04 Richard Biener <rguenther@suse.de>
2290 * system.h: Include malloc.h if INCLUDE_MALLOC_H and HAVE_MALLINFO.
2291 * ggc-common.c: Remove inclusion of malloc.h, define INCLUDE_MALLOC_H.
2293 2019-11-04 David Edelsohn <dje.gcc@gmail.com>
2295 * ggc-common.c: Include system.h before malloc.h.
2297 2019-11-04 Alexandre Oliva <oliva@adacore.com>
2299 * configure.ac: Pass --enable-obsolete=* and
2300 --enable-option-checking=* down to build configure, and fail
2301 if it fails. AC_SUBST HAVE_AUTO_BUILD.
2302 * configure: Rebuild.
2303 * Makefile.in [HAVE_AUTO_BUILD] (auto-build.h): New rule.
2304 [HAVE_AUTO_BUILD] (config.status): Depend on auto-build.h.
2306 2019-11-04 Jozef Lawrynowicz <jozef.l@mittosystems.com>
2308 * config.in: Regenerate.
2309 * config/msp430/msp430.c (msp430_option_override): Emit an error if
2310 -mtiny-printf is used without GCC being configured with
2311 --enable-newlib-nano-formatted-io.
2312 * config/msp430/msp430.h (LINK_SPEC): Pass
2313 "--wrap puts --wrap printf" when -mtiny-printf is used.
2314 * config/msp430/msp430.opt: Document -mtiny-printf.
2315 * configure: Regenerate.
2316 * configure.ac: Enable --enable-newlib-nano-formatted-io flag.
2317 Define HAVE_NEWLIB_NANO_FORMATTED_IO if
2318 --enable-newlib-nano-formatted-io is passed.
2319 * doc/invoke.texi: Document -mtiny-printf.
2321 2019-11-04 Jozef Lawrynowicz <jozef.l@mittosystems.com>
2323 * configure: Regenerate.
2325 2019-11-04 Jozef Lawrynowicz <jozef.l@mittosystems.com>
2327 * config/msp430/driver-msp430.c
2328 (msp430_get_linker_devices_include_path): New spec function.
2329 * config/msp430/msp430-devices.c (msp430_dirname): New function.
2330 (extract_devices_dir_from_exec_prefix): New function.
2331 (extract_devices_dir_from_collect_gcc): New function.
2332 (msp430_check_env_var_for_devices): New function.
2333 (msp430_check_path_for_devices): Use xstrdup instead of ASTRDUP.
2334 (parse_devices_csv): Call msp430_check_env_var_for_devices if
2335 devices.csv was not found using other methods.
2336 * config/msp430/msp430-devices.h (msp430_check_env_var_for_devices):
2338 (msp430_dirname): Likewise.
2339 * config/msp430/msp430.c (msp430_register_pre_includes): New function.
2340 * config/msp430/msp430.h (EXTRA_SPEC_FUNCTIONS): Add
2341 msp430_get_linker_devices_include_path.
2342 (TARGET_EXTRA_PRE_INCLUDES): Define.
2343 * doc/invoke.texi: Document new ways of searching for support files.
2345 2019-11-04 Richard Biener <rguenther@suse.de>
2347 PR tree-optimization/92301
2348 * tree-vect-stmts.c (process_use): Force reduction PHI defs live
2349 as required by epilogue generation
2351 2019-11-04 Martin Liska <mliska@suse.cz>
2354 * fold-const.c (operand_compare::hash_operand): Fix field
2355 hashing of CONSTRUCTOR.
2357 2019-11-04 Martin Liska <mliska@suse.cz>
2359 * ggc.h (ggc_delete): New function.
2360 * ipa-fnsummary.c (ipa_free_fn_summary): Use it.
2361 * ipa-prop.c (ipa_free_all_edge_args): Likewise.
2362 (ipa_free_all_node_params): Likewise.
2363 * ipa-sra.c (ipa_sra_analysis): Likewise.
2365 2019-11-02 Jan Hubicka <hubicka@ucw.cz>
2367 * ipa-fnsummary.c (set_cond_stmt_execution_predicate,
2368 set_switch_stmt_execution_predicate, compute_bb_predicates,
2369 will_be_nonconstant_expr_predicate,
2370 phi_result_unknown_predicate,
2371 analyze_function_body): Pass arround params summary.
2372 (ipa_call_context::duplicate_from): New comment;
2373 only duplicate useful values.
2374 (ipa_call_context::equal_to): Only compare useful values.
2375 (remap_edge_summaries): Pass params_summary.
2376 (remap_hint_predicate): Likewise.
2377 (ipa_merge_fn_summary_after_inlining): Likewise.
2378 (inline_read_section): Initialize params summary used flags.
2379 * ipa-predicate.c (predicate::remap_after_inlining): Pass
2380 around param_summary.
2381 (add_condition): Initialized used params summary flags.
2382 * ipa-predicate.h (inline_param_summary::equals_to): Make const.
2383 (inline_param_summary::useless_p): New predicate.
2384 (remap_after_inlining, add_condition): Update prototype
2385 * ipa-prop.c (ipa_populate_param_decls): Watch overflow in
2387 (ipa_note_param_call): Add parameter POLYMORPHIC; update params
2389 (ipa_analyze_indirect_call_uses): Update use of ipa_note_param_call.
2390 (ipa_analyze_virtual_call_uses): Likewise.
2391 (update_indirect_edges_after_inlining): Update param summaries.
2392 (ipa_print_node_params): Print used flags.
2393 (ipa_read_indirect_edge_info): Update param summareis.
2394 * ipa-prop.h (ipa_param_descriptor): Add
2395 used_by_ipa_predicates, used_by_indirect_call
2396 and used_by_polymorphic_call.
2397 (ipa_set_param_used_by_ipa_predicates,
2398 ipa_set_param_used_by_indirect_call,
2399 ipa_set_param_used_by_polymorphic_call,
2400 ipa_is_param_used_by_ipa_predicates,
2401 ipa_is_param_used_by_indirect_call,
2402 ipa_is_param_used_by_polymorphic_call): New inline functions.
2404 2019-11-02 Jan Hubicka <hubicka@ucw.cz>
2406 * ipa-fnsummary.c (ipa_call_context::duplicate_from): New
2408 (ipa_call_context::release): Add ALL parameter.
2409 (ipa_call_context::equal_to): New member function.
2410 * ipa-fnsummary.h (ipa_call_context): Add empty constructor;
2411 duplicate_form, release, equal_to and exists_p member functoins.
2412 * ipa-inline-analysis.c (node_context_cache_entry): New
2414 (node_context_summary): Likewise.
2415 (node_context_cache, node_context_cache_hit, node_context_cache_miss,
2416 node_context_clear): New static vars.
2417 (initialize_growth_caches): New function.
2418 (free_growth_caches): Also delete node_context_cache; output stats.
2419 (do_estimate_edge_time): Cache contexts.
2420 (reset_node_cache): New function.
2421 * ipa-inline.c (reset_edge_caches): Reset also node cache.
2422 (inline_small_functions): Initialize growth caches.
2423 * ipa-inline.h (reset_node_cache, initialize_growth_caches):
2425 * ipa-predicate.h (inline_param_summary::equal_to): New.
2426 * ipa-prop.c (ipa_agg_jf_item::equal_to): New.
2427 * ipa-prop.h (ipa_agg_jf_item): Declare equal_to member function.
2428 (ipa_agg_jump_function): Implement equal_to member function.
2430 2019-11-02 Jan Hubicka <hubicka@ucw.cz>
2432 * ipa-fnsummary.c (inline_read_section): Set vector size
2435 2019-11-02 Jan Hubicka <hubicka@ucw.cz>
2437 * ipa-fnsummary.c (ipa_call_context): New constructor.
2438 (estimate_node_size_and_time): Turn to ...
2439 (ipa_call_context::estimate_size_and_time): ... this one.
2440 (ipa_call_context::release): New.
2441 * ipa-fnsummary.h (ipa_call_context): New class.
2442 (estimate_node_size_and_time): Remove.
2443 * ipa-inline-analysis.c (do_estimate_edge_time, do_estimate_edge_size,
2444 do_estimate_edge_hints): Update.
2446 2019-11-02 Jan Hubicka <hubicka@ucw.cz>
2448 * config.in: Regenerate.
2449 * configure: Regenerate.
2450 * configure.ac: Check for mallinfo.
2451 * ggc-common.c: Include malloc.h if available;
2453 (report_heap_memory_use): New functoin.
2454 * ggc-page.c (ggc_grow): Do not print "start".
2455 * ggc.h (report_heap_memory_use): Declare.
2456 * pases.c (execute_one_pass): Report memory after IPA passes.
2457 (ipa_read_summaries_1): Likewise.
2458 (ipa_read_optimization_summaries_1): Likewise.
2460 2019-11-02 Jakub Jelinek <jakub@redhat.com>
2462 * gimplify.h (omp_construct_selector_matches): Change return
2463 type to int, add a new SCORES argument.
2464 * gimplify.c (omp_construct_selector_matches): Likewise. If
2465 SCORES is non-NULL, compute scores of each construct.
2466 * omp-general.h (omp_get_context_selector): Declare.
2467 * omp-general.c (omp_maybe_offloaded, omp_context_selector_matches):
2468 Adjust omp_construct_selector_matches callers.
2469 (omp_get_context_selector): New function, moved from c-family/c-omp.c.
2470 (omp_context_compute_score): New function.
2471 (omp_resolve_declare_variant): Compute scores and decide based on
2475 * configure.ac: Don't look for omp-device-properties files from
2476 installed offloading compilers. Instead add tmake_file snippets
2477 for configured offloading targets and use files they generate.
2478 * Makefile.in (install): Don't depend on
2479 install-omp-device-properties.
2480 (install-omp-device-properties): Remove goal.
2481 * config/i386/t-omp-device: New file.
2482 * config/i386/t-intelmic (omp-device-properties): Remove goal.
2483 * config/nvptx/t-omp-device: New file.
2484 * config/nvptx/t-nvptx (omp-device-properties): Remove goal.
2485 * configure: Regenerated.
2487 * omp-general.h (omp_context_selector_set_compare): Declare.
2488 * omp-general.c (omp_construct_simd_compare,
2489 omp_context_selector_props_compare, omp_context_selector_set_compare,
2490 omp_context_selector_compare): New functions.
2491 (omp_resolve_declare_variant): Prune variants that are strict subset
2494 2019-11-01 Martin Sebor <msebor@redhat.com>
2500 * doc/invoke.texi (-Wzero-length-bounds): Document.
2501 * gimple-match-head.c (try_conditional_simplification): Use memcpy
2502 instead of a hand-rolled loop to avoid PR 92323.
2503 * tree-vrp.c (vrp_prop::check_array_ref): Handle trailing arrays
2505 (vrp_prop::check_mem_ref): Handle declared struct objects.
2506 * tree.c (last_field): New function.
2507 (array_at_struct_end_p): Handle MEM_REF.
2508 (get_initializer_for): New helper.
2509 (component_ref_size): Add argument. Rename locals. Call
2510 get_initializer_for instead of fold_ctor_reference. Correct handling
2511 of flexible array members.
2512 * wide-int.h (generic_wide_int <storage>::sign_mask): Assert invariant.
2514 2019-11-01 Kewen Lin <linkw@gcc.gnu.org>
2516 * config/rs6000/rs6000-modes.def (V2SF, V2SI): New modes.
2517 * config/rs6000/vsx.md (UNSPEC_VSX_CVSPSXDS,
2518 UNSPEC_VSX_CVSPUXDS): Remove.
2519 (vsx_xvcvspdp): New define_expand, old define_insn split to...
2520 (vsx_xvcvspdp_be): ... this. New. And...
2521 (vsx_xvcvspdp_le): ... this. New.
2522 (vsx_xvcv<su>xwdp): New define_expand, old define_insn split to...
2523 (vsx_xvcv<su>xwdp_be): ... this. New. And...
2524 (vsx_xvcv<su>xwdp_le): ... this. New.
2525 (vsx_xvcvsp<su>xds): New define_expand, old define_insn split to...
2526 (vsx_xvcvsp<su>xds_be): ... this. New. And...
2527 (vsx_xvcvsp<su>xds_le): ... this. New.
2529 2019-11-01 Kewen Lin <linkw@gcc.gnu.org>
2531 * config/rs6000/vsx.md (UNSPEC_VSX_CVSXWSP, UNSPEC_VSX_CVUXWSP,
2532 UNSPEC_VSX_XVCVSXDDP, UNSPEC_VSX_XVCVUXDDP,
2533 UNSPEC_VSX_XVCVDPSXDS, UNSPEC_VSX_XVCVDPUXDS,
2534 UNSPEC_VSX_XVCVSPSXWS): Remove.
2535 (vsx_xvcv<su>xddp, vsx_xvcvdp<su>xds, vsx_xvcvsp<su>xws,
2536 vsx_xvcv<su>xwsp): Update define_insn RTL patterns.
2538 2019-11-01 Kewen Lin <linkw@gcc.gnu.org>
2540 * config/rs6000/vsx.md (vsx_xvcdpsp): Remove define_insn.
2541 (UNSPEC_VSX_XVCDPSP): Remove.
2542 * config/rs6000/rs6000.c (rs6000_generate_float2_double_code):
2543 Replace gen_vsx_xvcdpsp by gen_vsx_xvcvdpsp.
2545 2019-11-01 Tobias Burnus <tobias@codesourcery.com>
2547 * hooks.c (hook_tree_tree_bool_null): New.
2548 * hooks.h (hook_tree_tree_bool_null): Declare.
2549 * langhooks-def.h (LANG_HOOKS_OMP_ARRAY_DATA): Define.
2550 (LANG_HOOKS_DECLS): Add it.
2551 * langhooks.h (lang_hooks_for_decls): Add omp_array_data.
2552 * omp-low.c (install_var_field): New mode for Fortran descriptor arrays.
2553 (lower_omp_target): Handle Fortran array with descriptor in
2554 OMP_CLAUSE_USE_DEVICE_ADDR/OMP_CLAUSE_USE_DEVICE_PTR.
2556 2019-10-31 Richard Sandiford <richard.sandiford@arm.com>
2558 * config/aarch64/aarch64-sve-builtins.cc (register_builtin_types):
2559 Assert that the type we store in abi_vector_types is its own
2561 (svbool_type_p): Don't apply TYPE_MAIN_VARIANT here.
2563 2019-10-31 Richard Earnshaw <rearnsha@arm.com>
2565 * config/arm/arm.c (arm_legitimize_address): Don't form negative offsets
2566 from a CONST_INT address when TARGET_THUMB2.
2568 2019-10-31 Richard Earnshaw <rearnsha@arm.com>
2570 * config/arm/arm.md (add_not_cin): New insn.
2571 (add_not_shift_cin): Likewise.
2573 2019-10-31 Martin Liska <mliska@suse.cz>
2575 * ipa-icf-gimple.c (func_checker::compare_tree_ssa_label): Remove.
2576 * ipa-icf-gimple.h: Remove declaration from compare_tree_ssa_label
2577 and compare_memory_operand.
2579 2019-10-31 Jakub Jelinek <jakub@redhat.com>
2581 * configure.ac: Compute and substitute omp_device_properties and
2582 omp_device_property_deps.
2583 * Makefile.in (generated_files): Add omp-device-properties.h.
2584 (omp-general.o): Depend on omp-device-properties.h.
2585 (omp_device_properties): New make variable.
2586 (omp-device-properties.h, s-omp-device-properties-h,
2587 install-omp-device-properties): New goals.
2588 (install): Depend on install-omp-device-properties for accelerators.
2589 * target.def (TARGET_OMP_DEVICE_KIND_ARCH_ISA): New target hook.
2590 * target.h (enum omp_device_kind_arch_isa): New enum.
2591 * doc/tm.texi.in: Add placeholder for TARGET_OMP_DEVICE_KIND_ARCH_ISA
2593 * omp-general.c: Include omp-device-properties.h.
2594 (omp_max_simt_vf): Expect OFFLOAD_TARGET_NAMES to be separated by
2595 colon instead of comma.
2596 (omp_offload_device_kind_arch_isa, omp_maybe_offloaded): New
2598 (omp_context_selector_matches): Implement device set arch/isa
2599 selectors, improve device set kind selector handling.
2600 * config/i386/i386-options.h (ix86_omp_device_kind_arch_isa): Declare.
2601 * config/i386/i386.c (TARGET_SIMD_CLONE_ADJUST,
2602 TARGET_SIMD_CLONE_USABLE): Formatting fix.
2603 (TARGET_OMP_DEVICE_KIND_ARCH_ISA): Redefine to
2604 ix86_omp_device_kind_arch_isa.
2605 * config/i386/i386-options.c (struct ix86_target_opts): Move type
2606 definition from ix86_target_string to file scope.
2607 (isa2_opts, isa_opts): Moved arrays from ix86_target_string function
2609 (ix86_omp_device_kind_arch_isa): New function.
2610 (ix86_target_string): Moved struct ix86_target_opts, isa2_opts and
2611 isa_opts definitions to file scope.
2612 * config/i386/t-intelmic (omp-device-properties): New goal.
2613 * config/nvptx/t-nvptx (omp-device-properties): Likewise.
2614 * config/nvptx/nvptx.c (nvptx_omp_device_kind_arch_isa): New function.
2615 (TARGET_OMP_DEVICE_KIND_ARCH_ISA): Redefine to
2616 nvptx_omp_device_kind_arch_isa.
2617 * configure: Regenerate.
2618 * doc/tm.texi: Regenerate.
2621 * tree.h (fndecl_built_in_p): Use fndecl_built_in_p instead of
2622 DECL_BUILT_IN in comment. Remove redundant ()s around return
2624 * tree.c (free_lang_data_in_decl): Check if var is FUNCTION_DECL
2625 before calling fndecl_built_in_p.
2626 * gimple-fold.c (gimple_fold_stmt_to_constant_1): Check if
2627 TREE_OPERAND (fn, 0) is a FUNCTION_DECL before calling
2628 fndecl_built_in_p on it.
2630 2019-10-31 Andre Vieira <andre.simoesdiasvieira@arm.com>
2632 * params.def (PARAM_VECT_EPILOGUES_NOMASK): Enable by default.
2634 2019-10-31 Martin Liska <mliska@suse.cz>
2636 * config/arm/arm.c (arm_get_pcs_model): Remove usage
2637 of cgraph_local_info and use local_info_node instead.
2638 * config/bfin/bfin.c (bfin_load_pic_reg): Likewise.
2639 (bfin_function_ok_for_sibcall): Likewise.
2640 * config/c6x/c6x.c (c6x_function_ok_for_sibcall): Likewise.
2641 (must_reload_pic_reg_p): Likewise.
2643 2019-10-31 Jakub Jelinek <jakub@redhat.com>
2646 * tree.h (type_initializer_zero_p): Remove.
2647 * tree.c (type_initializer_zero_p): Remove.
2649 2019-10-30 Bernd Edlinger <bernd.edlinger@hotmail.de>
2651 * doc/invoke.texi (-Wshadow, -Wshadow=global
2652 -Wshadow=local, -Wshadow=compatible-local): Update documentation.
2654 2019-10-30 Tobias Burnus <tobias@codesourcery.com>
2656 * gimplify.c (gimplify_scan_omp_clauses): Remove FE-generated
2657 GOMP_MAP_TO_PSET and GOMP_MAP_POINTER mapping for 'target update'
2658 and 'target exit data'.
2660 2019-10-30 Martin Jambor <mjambor@suse.cz>
2663 * cgraph.c (cgraph_edge::possibly_call_in_translation_unit_p): Fix
2664 availability comparison.
2666 2019-10-30 Jozef Lawrynowicz <jozef.l@mittosystems.com>
2668 * config/msp430/msp430.c (msp430_expand_helper): Support expansion of
2669 calls to __mspabi_mpy* functions.
2670 * config/msp430/msp430.md (mulhisi3): New define_expand.
2671 (umulhisi3): New define_expand.
2672 (*mulhisi3_inline): Use old mulhisi3 define_insn.
2673 (*umulhisi3_inline): Use old umulhisi3 define_insn.
2675 2019-10-30 Jozef Lawrynowicz <jozef.l@mittosystems.com>
2677 * config/msp430/msp430.c (msp430_check_index_not_high_mem): New.
2678 (msp430_check_plus_not_high_mem): New.
2679 (msp430_op_not_in_high_mem): Use new functions to check if the operand
2680 might be in low memory.
2681 Indicate that a 16-bit absolute address is in lower memory.
2683 2019-10-30 Martin Jambor <mjambor@suse.cz>
2685 * ipa-prop.c (ipa_compute_jump_functions_for_bb): Fix the call to
2686 ultimate_alias_target.
2688 2019-10-30 Richard Biener <rguenther@suse.de>
2690 PR tree-optimization/92275
2691 * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_loops):
2692 Copy all loop-closed PHIs.
2694 2019-10-30 Martin Liska <mliska@suse.cz>
2696 * ipa-icf-gimple.c (func_checker::compare_ssa_name): Use
2697 const_tree as function argument.
2698 (func_checker::compare_decl): Likewise.
2699 (func_checker::operand_equal_p): Likewise.
2700 (func_checker::compare_variable_decl): Likewise.
2701 (func_checker::parse_labels): Likewise.
2702 * ipa-icf-gimple.h: Likewise.
2704 2019-10-30 Martin Liska <mliska@suse.cz>
2706 * ipa-icf-gimple.c (func_checker::compatible_types_p):
2707 Do not compare alias sets. It's handled by operand_equal_p.
2709 2019-10-30 Martin Liska <mliska@suse.cz>
2711 * ipa-icf-gimple.c (func_checker::func_checker): Do not
2712 initialize m_compare_polymorphic.
2713 (func_checker::compare_decl): Do not compare polymorphic types.
2714 * ipa-icf-gimple.h (m_compare_polymorphic): Remove.
2715 * ipa-icf.c (sem_function::equals_private): Do not call
2716 compare_polymorphic_p.
2718 2019-10-30 Martin Liska <mliska@suse.cz>
2720 * ipa-icf-gimple.c (func_checker::compare_ssa_name): Call
2722 (func_checker::compare_memory_operand): Remove.
2723 (func_checker::compare_cst_or_decl): Remove.
2724 (func_checker::operand_equal_valueize): Do not handle
2726 (func_checker::compare_gimple_call): Call compare_operand.
2727 (func_checker::compare_gimple_assign): Likewise.
2728 * ipa-icf-gimple.h: Remove compare_cst_or_decl.
2729 * ipa-icf.c (sem_function::icf_handled_component_p): Remove.
2730 * ipa-icf.h (icf_handled_component_p): Remove.
2732 2019-10-30 Martin Liska <mliska@suse.cz>
2734 * ipa-icf-gimple.c (func_checker::hash_operand): New.
2735 (func_checker::compare_cst_or_decl): Remove handling
2737 (func_checker::compare_operand): Transform to ...
2738 (func_checker::operand_equal_p): ... this.
2739 * ipa-icf-gimple.h (class func_checker): Add
2740 operand_equal_p and hash_operand.
2741 * ipa-icf.c (sem_function::equals_private): Fix
2742 pushing and popping of cfun.
2744 2019-10-30 Martin Liska <mliska@suse.cz>
2746 * fold-const.c (operand_equal_p): Move to ...
2747 (operand_compare::operand_equal_p): ... here.
2748 (operand_compare::verify_hash_value): New.
2749 (add_expr): Move to ...
2750 (operand_compare::hash_operand): ... here.
2751 * fold-const.h (operand_equal_p): Move to the class.
2752 (class operand_compare): New.
2753 * tree.c (add_expr): Remove.
2755 2019-10-30 Martin Liska <mliska@suse.cz>
2757 * fold-const.c (operand_equal_p): Support OBJ_TYPE_REF.
2758 * tree.c (add_expr): Hash parts of OBJ_TYPE_REF.
2760 2019-10-30 Martin Liska <mliska@suse.cz>
2764 * cgraph.c (cgraph_node::get_create): Overwrite node->order
2765 from a first_clone in order to get proper LTO section
2767 (cgraph_node::get_untransformed_body):
2768 Use lto_get_section_data where symtab_node::order
2770 * cgraphclones.c (cgraph_node::find_replacement):
2771 Update also symbol order.
2772 * ipa-fnsummary.c (ipa_fn_summary_read):
2773 Use new function lto_get_summary_section_data.
2774 * ipa-hsa.c (ipa_hsa_read_summary): Likewise.
2775 * ipa-icf.c (sem_item_optimizer::read_summary):
2777 * ipa-prop.c (ipa_prop_read_jump_functions):
2779 (ipcp_read_transformation_summaries): Likewise.
2780 * ipa-sra.c (ipa_sra_read_summary): Likewise.
2781 * lto-cgraph.c (input_node): Add also order_base.
2782 (input_varpool_node): Likewise.
2783 (input_cgraph_1): Assign the order_base.
2784 (input_cgraph_opt_summary): Use new lto_get_summary_section_data.
2785 * lto-opts.c (lto_write_options): Pass new argument.
2786 * lto-section-in.c (lto_get_section_data): Add new argumente order.
2787 (lto_get_summary_section_data): New.
2788 (lto_get_raw_section_data): Add order argument.
2789 (lto_create_simple_input_block): Likewise.
2790 * lto-section-out.c (lto_destroy_simple_output_block):
2792 * lto-streamer-in.c (lto_input_toplevel_asms):
2793 Use lto_get_summary_section_data.
2794 (lto_input_mode_table): Likewise.
2795 * lto-streamer-out.c (produce_asm): Pass symtab_node::order.
2796 (lto_output_toplevel_asms): Pass new argument.
2797 (copy_function_or_variable): Likewise.
2798 (produce_lto_section):Likewise.
2799 (produce_symtab): Likewise.
2800 (lto_write_mode_table): Likewise.
2801 (produce_asm_for_decls): Likewise.
2802 * lto-streamer.c (lto_get_section_name): Concat symbol name
2804 * lto-streamer.h (lto_get_section_data): Add order argument.
2805 (lto_get_summary_section_data): New.
2806 (lto_get_raw_section_data): Add order argument.
2807 (lto_get_section_name): Likewise.
2808 * varpool.c (varpool_node::get_constructor): Pass order argument.
2810 2019-10-30 Jakub Jelinek <jakub@redhat.com>
2812 PR tree-optimization/92262
2813 * tree-ssa-loop-ivopts.c (get_debug_computation_at): Don't unshare
2814 ubase or cbase here.
2815 (remove_unused_ivs): Unshare comp before using it.
2817 2019-10-30 Jan Hubicka <hubicka@ucw.cz>
2819 * ipa-prop.c (update_jump_functions_after_inlining):
2820 Watch for missing summaries.
2822 2019-10-30 Richard Biener <rguenther@suse.de>
2824 PR tree-optimization/65930
2825 * tree-vect-loop.c (vect_is_simple_reduction): For reduction
2826 chains also allow a leading and trailing conversion.
2827 * tree-vect-slp.c (vect_get_and_check_slp_defs): Handle
2828 intermediate reduction chains.
2829 (vect_analyze_slp_instance): Likewise. Build a SLP
2830 node for a trailing conversion manually.
2832 2019-10-30 Martin Liska <mliska@suse.cz>
2834 * cgraph.c (cgraph_node::local_info): Transform to ...
2835 (cgraph_node::local_info_node): ... this.
2836 (cgraph_node::dump): Remove cgraph_local_info and
2837 put its fields directly into cgraph_node.
2838 (cgraph_node::get_availability): Likewise.
2839 (cgraph_node::make_local): Likewise.
2840 (cgraph_node::verify_node): Likewise.
2841 * cgraph.h (struct GTY): Likewise.
2842 * cgraphclones.c (set_new_clone_decl_and_node_flags): Likewise.
2843 (duplicate_thunk_for_node): Likewise.
2844 (cgraph_node::create_clone): Likewise.
2845 (cgraph_node::create_virtual_clone): Likewise.
2846 (cgraph_node::create_version_clone): Likewise.
2847 * cgraphunit.c (cgraph_node::reset): Likewise.
2848 (cgraph_node::finalize_function): Likewise.
2849 (cgraph_node::add_new_function): Likewise.
2850 (analyze_functions): Likewise.
2851 * combine.c (setup_incoming_promotions): Likewise.
2852 * config/i386/i386.c (ix86_function_regparm): Likewise.
2853 (ix86_function_sseregparm): Likewise.
2854 (init_cumulative_args): Likewise.
2855 * ipa-cp.c (determine_versionability): Likewise.
2856 (count_callers): Likewise.
2857 (set_single_call_flag): Likewise.
2858 (initialize_node_lattices): Likewise.
2859 (estimate_local_effects): Likewise.
2860 (create_specialized_node): Likewise.
2861 (identify_dead_nodes): Likewise.
2862 * ipa-fnsummary.c (compute_fn_summary): Likewise.
2863 (ipa_fn_summary_generate): Likewise.
2864 * ipa-hsa.c (check_warn_node_versionable): Likewise.
2865 (process_hsa_functions): Likewise.
2866 * ipa-icf.c (set_local): Likewise.
2867 * ipa-inline-analysis.c (initialize_inline_failed): Likewise.
2868 * ipa-inline.c (speculation_useful_p): Likewise.
2869 * ipa-profile.c (ipa_propagate_frequency): Likewise.
2870 (ipa_profile): Likewise.
2871 * ipa-split.c (split_function): Likewise.
2872 (execute_split_functions): Likewise.
2873 * ipa-sra.c (ipa_sra_preliminary_function_checks): Likewise.
2874 (ipa_sra_ipa_function_checks): Likewise.
2875 * ipa-visibility.c (function_and_variable_visibility): Likewise.
2876 * ipa.c (symbol_table::remove_unreachable_nodes): Likewise.
2877 * lto-cgraph.c (lto_output_node): Likewise.
2878 (input_overwrite_node): Likewise.
2879 * multiple_target.c (expand_target_clones): Likewise.
2880 * omp-simd-clone.c (simd_clone_create): Likewise.
2881 * trans-mem.c (expand_call_tm): Likewise.
2882 (ipa_tm_mayenterirr_function): Likewise.
2883 (ipa_tm_diagnose_tm_safe): Likewise.
2884 (ipa_tm_diagnose_transaction): Likewise.
2885 (ipa_tm_create_version): Likewise.
2886 (ipa_tm_transform_calls_redirect): Likewise.
2887 (ipa_tm_execute): Likewise.
2888 * tree-inline.c (expand_call_inline): Likewise.
2890 2019-10-29 Martin Liska <mliska@suse.cz>
2892 * symbol-summary.h (function_summary): Pass memory location
2893 to underlaying hash_map (or vec).
2894 (V>::fast_function_summary): Likewise.
2896 2019-10-29 Martin Liska <mliska@suse.cz>
2898 * ggc.h (ggc_alloc_no_dtor): New function.
2899 * ipa-fnsummary.c (ipa_free_fn_summary): Call
2900 destructor and ggc_free.
2901 (ipa_free_size_summary): Call delete instead
2903 * ipa-fnsummary.h: Use new function ggc_alloc_no_dtor.
2904 * ipa-prop.c (ipa_check_create_edge_args): Likewise.
2905 (ipa_free_all_edge_args): Call destructor and ggc_free.
2906 (ipa_free_all_node_params): Likewise.
2907 (ipcp_free_transformation_sum): Likewise.
2908 * ipa-prop.h (ipa_check_create_node_params):
2909 Call new ggc_alloc_no_dtor.
2910 * ipa-sra.c (ipa_sra_generate_summary): Likewise.
2911 (ipa_sra_analysis): Call destructor and ggc_free.
2912 Replace release with delete operator.
2913 * symbol-summary.h (release): Remove ..
2914 (V>::~fast_function_summary): and move logic here.
2915 Likewise for other classes.
2917 2019-10-29 Richard Biener <rguenther@suse.de>
2919 PR tree-optimization/92260
2920 * tree-vect-slp.c (vect_get_constant_vectors): Special-case
2923 2019-10-29 Andre Vieira <andre.simoesdiasvieira@arm.com>
2925 PR tree-optimization/88915
2926 * tree-ssa-loop-niter.h (simplify_replace_tree): Change declaration.
2927 * tree-ssa-loop-niter.c (simplify_replace_tree): Add context parameter
2928 and make the valueize function pointer also take a void pointer.
2929 * tree-ssa-sccvn.c (vn_valueize_wrapper): New function to wrap
2930 around vn_valueize, to call it without a context.
2931 (process_bb): Use vn_valueize_wrapper instead of vn_valueize.
2932 * tree-vect-loop.c (_loop_vec_info): Initialize epilogue_vinfos.
2933 (~_loop_vec_info): Release epilogue_vinfos.
2934 (vect_analyze_loop_costing): Use knowledge of main VF to estimate
2935 number of iterations of epilogue.
2936 (vect_analyze_loop_2): Adapt to analyse main loop for all supported
2937 vector sizes when vect-epilogues-nomask=1. Also keep track of lowest
2938 versioning threshold needed for main loop.
2939 (vect_analyze_loop): Likewise.
2940 (find_in_mapping): New helper function.
2941 (update_epilogue_loop_vinfo): New function.
2942 (vect_transform_loop): When vectorizing epilogues re-use analysis done
2943 on main loop and call update_epilogue_loop_vinfo to update it.
2944 * tree-vect-loop-manip.c (vect_update_inits_of_drs): No longer insert
2945 stmts on loop preheader edge.
2946 (vect_do_peeling): Enable skip-vectors when doing loop versioning if
2947 we decided to vectorize epilogues. Update epilogues NITERS and
2948 construct ADVANCE to update epilogues data references where needed.
2949 * tree-vectorizer.h (_loop_vec_info): Add epilogue_vinfos.
2950 (vect_do_peeling, vect_update_inits_of_drs,
2951 determine_peel_for_niter, vect_analyze_loop): Add or update
2953 * tree-vectorizer.c (try_vectorize_loop_1): Make sure to use already
2954 created loop_vec_info's for epilogues when available. Otherwise analyse
2955 epilogue separately.
2957 2019-10-29 Richard Biener <rguenther@suse.de>
2959 * doc/tree-ssa.texi (Immediate Uses): Fix FOR_EACH_IMM_USE_STMT
2962 2019-10-29 Richard Sandiford <richard.sandiford@arm.com>
2964 * tree-vect-stmts.c (vectorizable_condition): Get the reduction
2965 index for the COND_EXPR from stmt_info rather than reduc_info.
2967 2019-10-29 Richard Biener <rguenther@suse.de>
2969 PR tree-optimization/65930
2970 * tree-vect-loop.c (check_reduction_path): Relax single-use
2971 check allowing out-of-loop uses.
2972 (vect_is_simple_reduction): SLP reduction chains cannot have
2973 intermediate stmts used outside of the loop.
2974 (vect_create_epilog_for_reduction): The adjustment might need
2976 (vectorizable_reduction): Annotate live stmts of the reduction
2977 chain with STMT_VINFO_REDUC_DEF.
2978 * tree-vect-stms.c (process_use): Remove no longer true asserts.
2980 2019-10-29 Richard Sandiford <richard.sandiford@arm.com>
2982 * calls.c (pass_by_reference): Leave the target to decide whether
2983 POLY_INT_CST-sized arguments should be passed by value or reference,
2984 rather than forcing them to be passed by reference.
2985 (must_pass_in_stack_var_size): Likewise.
2986 * config/aarch64/aarch64.md (LAST_SAVED_REGNUM): Redefine from
2987 V31_REGNUM to P15_REGNUM.
2988 * config/aarch64/aarch64-protos.h (aarch64_init_cumulative_args):
2989 Take an extra "silent_p" parameter, defaulting to false.
2990 (aarch64_sve::svbool_type_p): Declare.
2991 (aarch64_sve::nvectors_if_data_type): Likewise.
2992 * config/aarch64/aarch64.h (NUM_PR_ARG_REGS): New macro.
2993 (aarch64_frame::reg_offset): Turn into poly_int64s.
2994 (aarch64_frame::save_regs_size): Likewise.
2995 (aarch64_frame::below_hard_fp_saved_regs_size): New field.
2996 (aarch64_frame::sve_callee_adjust): Likewise.
2997 (aarch64_frame::spare_reg_reg): Likewise.
2998 (ARM_PCS_SVE): New arm_pcs value.
2999 (CUMULATIVE_ARGS::aapcs_nprn): New field.
3000 (CUMULATIVE_ARGS::aapcs_nextnprn): Likewise.
3001 (CUMULATIVE_ARGS::silent_p): Likewise.
3002 (BITS_PER_SVE_PRED): New macro.
3003 * config/aarch64/aarch64.c (handle_aarch64_vector_pcs_attribute): New
3004 function. Reject aarch64_vector_pcs attributes on SVE functions.
3005 (aarch64_attribute_table): Use the above handler.
3006 (aarch64_sve_abi): New function.
3007 (aarch64_sve_argument_p): Likewise.
3008 (aarch64_returns_value_in_sve_regs_p): Likewise.
3009 (aarch64_takes_arguments_in_sve_regs_p): Likewise.
3010 (aarch64_fntype_abi): Check for SVE functions and return the SVE PCS
3011 descriptor for them.
3012 (aarch64_simd_decl_p): Delete.
3013 (aarch64_emit_cfi_for_reg_p): New function.
3014 (aarch64_reg_save_mode): Remove the fndecl argument and instead use
3015 crtl->abi to choose the mode for FP registers. Handle the SVE PCS.
3016 (aarch64_hard_regno_call_part_clobbered): Do not treat FP registers
3017 as partly clobbered for the SVE PCS.
3018 (aarch64_function_ok_for_sibcall): Check whether the two functions
3019 use the same ABI, rather than checking specifically for whether
3020 they're aarch64_vector_pcs functions.
3021 (aarch64_pass_by_reference): Raise an error for attempts to pass
3022 SVE arguments when SVE is disabled. Pass SVE arguments by reference
3023 if there are not enough free registers left, or if the argument is
3025 (aarch64_function_value): Handle SVE predicates, vectors and tuples.
3026 (aarch64_return_in_memory): Do not return SVE predicates, vectors and
3028 (aarch64_layout_arg): Take a function_arg_info rather than
3029 individual properties. Handle SVE predicates, vectors and tuples.
3030 Raise an error if they are passed to unprototyped functions.
3031 (aarch64_function_arg): If the silent_p flag is set, suppress the
3032 usual error about using float registers without TARGET_FLOAT.
3033 (aarch64_init_cumulative_args): Take a silent_p parameter and store
3034 it in the cumulative_args structure. Initialize aapcs_nprn and
3035 aapcs_nextnprn. If the silent_p flag is set, suppress the usual
3036 error about using float registers without TARGET_FLOAT.
3037 If the silent_p flag is not set, also raise an error about
3038 using SVE functions when SVE is disabled.
3039 (aarch64_function_arg_advance): Update the call to aarch64_layout_arg,
3040 and call it for SVE functions too. Update aapcs_nprn similarly
3041 to the other register counts.
3042 (aarch64_layout_frame): If a big-endian function needs to save
3043 and restore Z8-Z15, search for a spare predicate that it can use.
3044 Store SVE predicates at the bottom of the register save area,
3045 followed by SVE vectors, then followed by the normal slots.
3046 Keep pointing the hard frame pointer at the base of the normal slots,
3047 above the SVE vectors. Update the various frame creation and
3048 tear-down strategies for the new layout, initializing the new
3049 sve_callee_adjust field. Add an additional layout for frames
3050 whose saved registers are all SVE registers.
3051 (aarch64_register_saved_on_entry): Cope with poly_int64 reg_offsets.
3052 (aarch64_return_address_signing_enabled): Likewise.
3053 (aarch64_push_regs, aarch64_pop_regs): Update calls to
3054 aarch64_reg_save_mode.
3055 (aarch64_adjust_sve_callee_save_base): New function.
3056 (aarch64_add_cfa_expression): Move earlier in file. Take the
3057 saved register as an rtx rather than a register number and use
3058 its mode for the MEM slot.
3059 (aarch64_save_callee_saves): Remove the mode argument and instead
3060 use aarch64_reg_save_mode to get the mode of each save slot.
3061 Add a hard_fp_valid_p parameter. Cope with poly_int64 register
3062 offsets. Allow GP offsets to be saved at a VL-based offset from
3063 the stack, handling this case using the frame pointer if available
3064 or a temporary register otherwise. Use ST1D to save Z8-Z15 for
3065 big-endian SVE functions; use normal moves for other SVE saves.
3066 Only mark the save as frame-related if aarch64_emit_cfi_for_reg_p
3067 returns true. Add explicit CFA notes when not storing via the
3068 stack pointer. Do not try to pair SVE saves.
3069 (aarch64_restore_callee_saves): Cope with poly_int64 register
3070 offsets. Use LD1D to restore Z8-Z15 for big-endian SVE functions;
3071 use normal moves for other SVE restores. Only add CFA restore notes
3072 if aarch64_emit_cfi_for_reg_p returns true. Do not try to pair
3074 (aarch64_get_separate_components): Always keep the first SVE save
3075 in the prologue if we need to use it as a stack probe. Don't allow
3076 Z8-Z15 saves and loads to be shrink-wrapped for big-endian targets.
3077 Likewise the spare predicate register that they need. Update the
3078 offset calculation to account for the SVE save area. Use the
3079 appropriate range check for SVE LDR and STR instructions.
3080 (aarch64_components_for_bb): Cope with poly_int64 reg_offsets.
3081 (aarch64_process_components): Likewise. Update the offset
3082 calculation to account for the SVE save area. Only mark the
3083 save as frame-related if aarch64_emit_cfi_for_reg_p returns true.
3084 Do not try to pair SVE saves.
3085 (aarch64_allocate_and_probe_stack_space): Cope with poly_int64
3086 reg_offsets. When handling the final allocation, expect the
3087 first SVE register save to be part of the initial allocation
3088 and for it to act as a probe at SP. Account for the SVE callee
3089 save area in the dump information.
3090 (aarch64_expand_prologue): Update the frame diagram. Fold the
3091 SVE callee allocation into the initial allocation if stack clash
3092 protection is enabled. Use new variables to track the offset
3093 of the frame chain (and hard frame pointer) from the current
3094 stack pointer, and likewise the offset of the bottom of the
3095 register save area. Update calls to aarch64_save_callee_saves
3096 and aarch64_add_cfa_expression. Apply sve_callee_adjust before
3097 saving the FP&SIMD registers. Save the predicate registers.
3098 (aarch64_expand_epilogue): Take below_hard_fp_saved_regs_size
3099 into account when setting the stack pointer from the frame pointer,
3100 and when deciding whether we can inherit the initial adjustment
3101 amount from the prologue. Restore the predicate registers after
3102 the vector registers, then apply sve_callee_adjust, then restore
3103 the general registers.
3104 (aarch64_secondary_reload): Don't use secondary SVE reloads
3106 (aapcs_vfp_sub_candidate): Assert that the type is not an SVE type.
3107 (aarch64_short_vector_p): Return false for SVE types.
3108 (aarch64_vfp_is_call_or_return_candidate): Initialize *is_ha
3109 at the start of the function. Return false for SVE types.
3110 (aarch64_asm_output_variant_pcs): Output .variant_pcs for SVE
3112 (TARGET_STRICT_ARGUMENT_NAMING): Redefine to request strict naming.
3113 * config/aarch64/aarch64-sve.md (*aarch64_sve_mov<mode>_le): Extend
3114 to big-endian targets for bytewise moves.
3115 (*aarch64_sve_mov<mode>_be): Exclude the bytewise case.
3117 2019-10-29 Richard Sandiford <richard.sandiford@arm.com>
3118 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
3119 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
3121 * config.gcc (aarch64*-*-*): Add arm_sve.h to extra_headers.
3122 Add aarch64-sve-builtins.o, aarch64-sve-builtins-shapes.o and
3123 aarch64-sve-builtins-base.o to extra_objs. Add
3124 aarch64-sve-builtins.h and aarch64-sve-builtins.cc to target_gtfiles.
3125 * config/aarch64/t-aarch64 (aarch64-sve-builtins.o): New rule.
3126 (aarch64-sve-builtins-shapes.o): Likewise.
3127 (aarch64-sve-builtins-base.o): New rules.
3128 * config/aarch64/aarch64-c.c (aarch64_pragma_aarch64): New function.
3129 (aarch64_resolve_overloaded_builtin): Likewise.
3130 (aarch64_check_builtin_call): Likewise.
3131 (aarch64_register_pragmas): Install aarch64_resolve_overloaded_builtin
3132 and aarch64_check_builtin_call in targetm. Register the GCC aarch64
3134 * config/aarch64/aarch64-protos.h (AARCH64_FOR_SVPRFOP): New macro.
3135 (aarch64_svprfop): New enum.
3136 (AARCH64_BUILTIN_SVE): New aarch64_builtin_class enum value.
3137 (aarch64_sve_int_mode, aarch64_sve_data_mode): Declare.
3138 (aarch64_fold_sve_cnt_pat, aarch64_output_sve_prefetch): Likewise.
3139 (aarch64_output_sve_cnt_pat_immediate): Likewise.
3140 (aarch64_output_sve_ptrues, aarch64_sve_ptrue_svpattern_p): Likewise.
3141 (aarch64_sve_sqadd_sqsub_immediate_p, aarch64_sve_ldff1_operand_p)
3142 (aarch64_sve_ldnf1_operand_p, aarch64_sve_prefetch_operand_p)
3143 (aarch64_ptrue_all_mode, aarch64_convert_sve_data_to_pred): Likewise.
3144 (aarch64_expand_sve_dupq, aarch64_replace_reg_mode): Likewise.
3145 (aarch64_sve::init_builtins, aarch64_sve::handle_arm_sve_h): Likewise.
3146 (aarch64_sve::builtin_decl, aarch64_sve::builtin_type_p): Likewise.
3147 (aarch64_sve::mangle_builtin_type): Likewise.
3148 (aarch64_sve::resolve_overloaded_builtin): Likewise.
3149 (aarch64_sve::check_builtin_call, aarch64_sve::gimple_fold_builtin)
3150 (aarch64_sve::expand_builtin): Likewise.
3151 * config/aarch64/aarch64.c (aarch64_sve_data_mode): Make public.
3152 (aarch64_sve_int_mode): Likewise.
3153 (aarch64_ptrue_all_mode): New function.
3154 (aarch64_convert_sve_data_to_pred): Make public.
3155 (svprfop_token): New function.
3156 (aarch64_output_sve_prefetch): Likewise.
3157 (aarch64_fold_sve_cnt_pat): Likewise.
3158 (aarch64_output_sve_cnt_pat_immediate): Likewise.
3159 (aarch64_sve_move_pred_via_while): Use gen_while with UNSPEC_WHILE_LO
3160 instead of gen_while_ult.
3161 (aarch64_replace_reg_mode): Make public.
3162 (aarch64_init_builtins): Call aarch64_sve::init_builtins.
3163 (aarch64_fold_builtin): Handle AARCH64_BUILTIN_SVE.
3164 (aarch64_gimple_fold_builtin, aarch64_expand_builtin): Likewise.
3165 (aarch64_builtin_decl, aarch64_builtin_reciprocal): Likewise.
3166 (aarch64_mangle_type): Call aarch64_sve::mangle_type.
3167 (aarch64_sve_sqadd_sqsub_immediate_p): New function.
3168 (aarch64_sve_ptrue_svpattern_p): Likewise.
3169 (aarch64_sve_pred_valid_immediate): Check
3170 aarch64_sve_ptrue_svpattern_p.
3171 (aarch64_sve_ldff1_operand_p, aarch64_sve_ldnf1_operand_p)
3172 (aarch64_sve_prefetch_operand_p, aarch64_output_sve_ptrues): New
3174 * config/aarch64/aarch64.md (UNSPEC_LDNT1_SVE, UNSPEC_STNT1_SVE)
3175 (UNSPEC_LDFF1_GATHER, UNSPEC_PTRUE, UNSPEC_WHILE_LE, UNSPEC_WHILE_LS)
3176 (UNSPEC_WHILE_LT, UNSPEC_CLASTA, UNSPEC_UPDATE_FFR)
3177 (UNSPEC_UPDATE_FFRT, UNSPEC_RDFFR, UNSPEC_WRFFR)
3178 (UNSPEC_SVE_LANE_SELECT, UNSPEC_SVE_CNT_PAT, UNSPEC_SVE_PREFETCH)
3179 (UNSPEC_SVE_PREFETCH_GATHER, UNSPEC_SVE_COMPACT, UNSPEC_SVE_SPLICE):
3181 * config/aarch64/iterators.md (SI_ONLY, DI_ONLY, VNx8HI_ONLY)
3182 (VNx2DI_ONLY, SVE_PARTIAL, VNx8_NARROW, VNx8_WIDE, VNx4_NARROW)
3183 (VNx4_WIDE, VNx2_NARROW, VNx2_WIDE, PRED_HSD): New mode iterators.
3184 (UNSPEC_ADR, UNSPEC_BRKA, UNSPEC_BRKB, UNSPEC_BRKN, UNSPEC_BRKPA)
3185 (UNSPEC_BRKPB, UNSPEC_PFIRST, UNSPEC_PNEXT, UNSPEC_CNTP, UNSPEC_SADDV)
3186 (UNSPEC_UADDV, UNSPEC_FMLA, UNSPEC_FMLS, UNSPEC_FEXPA, UNSPEC_FTMAD)
3187 (UNSPEC_FTSMUL, UNSPEC_FTSSEL, UNSPEC_COND_CMPEQ_WIDE): New unspecs.
3188 (UNSPEC_COND_CMPGE_WIDE, UNSPEC_COND_CMPGT_WIDE): Likewise.
3189 (UNSPEC_COND_CMPHI_WIDE, UNSPEC_COND_CMPHS_WIDE): Likewise.
3190 (UNSPEC_COND_CMPLE_WIDE, UNSPEC_COND_CMPLO_WIDE): Likewise.
3191 (UNSPEC_COND_CMPLS_WIDE, UNSPEC_COND_CMPLT_WIDE): Likewise.
3192 (UNSPEC_COND_CMPNE_WIDE, UNSPEC_COND_FCADD90, UNSPEC_COND_FCADD270)
3193 (UNSPEC_COND_FCMLA, UNSPEC_COND_FCMLA90, UNSPEC_COND_FCMLA180)
3194 (UNSPEC_COND_FCMLA270, UNSPEC_COND_FMAX, UNSPEC_COND_FMIN): Likewise.
3195 (UNSPEC_COND_FMULX, UNSPEC_COND_FRECPX, UNSPEC_COND_FSCALE): Likewise.
3196 (UNSPEC_LASTA, UNSPEC_ASHIFT_WIDE, UNSPEC_ASHIFTRT_WIDE): Likewise.
3197 (UNSPEC_LSHIFTRT_WIDE, UNSPEC_LDFF1, UNSPEC_LDNF1): Likewise.
3198 (Vesize): Handle partial vector modes.
3199 (self_mask, narrower_mask, sve_lane_con, sve_lane_pair_con): New
3201 (UBINQOPS, ANY_PLUS, SAT_PLUS, ANY_MINUS, SAT_MINUS): New code
3203 (s, paired_extend, inc_dec): New code attributes.
3204 (SVE_INT_ADDV, CLAST, LAST): New int iterators.
3205 (SVE_INT_UNARY): Add UNSPEC_RBIT.
3206 (SVE_FP_UNARY, SVE_FP_UNARY_INT): New int iterators.
3207 (SVE_FP_BINARY, SVE_FP_BINARY_INT): Likewise.
3208 (SVE_COND_FP_UNARY): Add UNSPEC_COND_FRECPX.
3209 (SVE_COND_FP_BINARY): Add UNSPEC_COND_FMAX, UNSPEC_COND_FMIN and
3211 (SVE_COND_FP_BINARY_INT, SVE_COND_FP_ADD): New int iterators.
3212 (SVE_COND_FP_SUB, SVE_COND_FP_MUL): Likewise.
3213 (SVE_COND_FP_BINARY_I1): Add UNSPEC_COND_FMAX and UNSPEC_COND_FMIN.
3214 (SVE_COND_FP_BINARY_REG): Add UNSPEC_COND_FMULX.
3215 (SVE_COND_FCADD, SVE_COND_FP_MAXMIN, SVE_COND_FCMLA)
3216 (SVE_COND_INT_CMP_WIDE, SVE_FP_TERNARY_LANE, SVE_CFP_TERNARY_LANE)
3217 (SVE_WHILE, SVE_SHIFT_WIDE, SVE_LDFF1_LDNF1, SVE_BRK_UNARY)
3218 (SVE_BRK_BINARY, SVE_PITER): New int iterators.
3219 (optab): Handle UNSPEC_SADDV, UNSPEC_UADDV, UNSPEC_FRECPE,
3220 UNSPEC_FRECPS, UNSPEC_RSQRTE, UNSPEC_RSQRTS, UNSPEC_RBIT,
3221 UNSPEC_SMUL_HIGHPART, UNSPEC_UMUL_HIGHPART, UNSPEC_FMLA, UNSPEC_FMLS,
3222 UNSPEC_FCMLA, UNSPEC_FCMLA90, UNSPEC_FCMLA180, UNSPEC_FCMLA270,
3223 UNSPEC_FEXPA, UNSPEC_FTSMUL, UNSPEC_FTSSEL, UNSPEC_COND_FCADD90,
3224 UNSPEC_COND_FCADD270, UNSPEC_COND_FCMLA, UNSPEC_COND_FCMLA90,
3225 UNSPEC_COND_FCMLA180, UNSPEC_COND_FCMLA270, UNSPEC_COND_FMAX,
3226 UNSPEC_COND_FMIN, UNSPEC_COND_FMULX, UNSPEC_COND_FRECPX and
3228 (maxmin_uns): Handle UNSPEC_COND_FMAX and UNSPEC_COND_FMIN.
3229 (binqops_op, binqops_op_rev, last_op): New int attributes.
3230 (su): Handle UNSPEC_SADDV and UNSPEC_UADDV.
3231 (fn, ab): New int attributes.
3232 (cmp_op): Handle UNSPEC_COND_CMP*_WIDE and UNSPEC_WHILE_*.
3233 (while_optab_cmp, brk_op, sve_pred_op): New int attributes.
3234 (sve_int_op): Handle UNSPEC_SMUL_HIGHPART, UNSPEC_UMUL_HIGHPART,
3235 UNSPEC_ASHIFT_WIDE, UNSPEC_ASHIFTRT_WIDE, UNSPEC_LSHIFTRT_WIDE and
3237 (sve_fp_op): Handle UNSPEC_FRECPE, UNSPEC_FRECPS, UNSPEC_RSQRTE,
3238 UNSPEC_RSQRTS, UNSPEC_FMLA, UNSPEC_FMLS, UNSPEC_FEXPA, UNSPEC_FTSMUL,
3239 UNSPEC_FTSSEL, UNSPEC_COND_FMAX, UNSPEC_COND_FMIN, UNSPEC_COND_FMULX,
3240 UNSPEC_COND_FRECPX and UNSPEC_COND_FSCALE.
3241 (sve_fp_op_rev): Handle UNSPEC_COND_FMAX, UNSPEC_COND_FMIN and
3243 (rot): Handle UNSPEC_COND_FCADD* and UNSPEC_COND_FCMLA*.
3244 (brk_reg_con, brk_reg_opno): New int attributes.
3245 (sve_pred_fp_rhs1_operand, sve_pred_fp_rhs2_operand): Handle
3246 UNSPEC_COND_FMAX, UNSPEC_COND_FMIN and UNSPEC_COND_FMULX.
3247 (sve_pred_fp_rhs2_immediate): Handle UNSPEC_COND_FMAX and
3249 (max_elem_bits): New int attribute.
3250 (min_elem_bits): Handle UNSPEC_RBIT.
3251 * config/aarch64/predicates.md (subreg_lowpart_operator): Handle
3252 TRUNCATE as well as SUBREG.
3253 (ascending_int_parallel, aarch64_simd_reg_or_minus_one)
3254 (aarch64_sve_ldff1_operand, aarch64_sve_ldnf1_operand)
3255 (aarch64_sve_prefetch_operand, aarch64_sve_ptrue_svpattern_immediate)
3256 (aarch64_sve_qadd_immediate, aarch64_sve_qsub_immediate)
3257 (aarch64_sve_gather_immediate_b, aarch64_sve_gather_immediate_h)
3258 (aarch64_sve_gather_immediate_w, aarch64_sve_gather_immediate_d)
3259 (aarch64_sve_sqadd_operand, aarch64_sve_gather_offset_b)
3260 (aarch64_sve_gather_offset_h, aarch64_sve_gather_offset_w)
3261 (aarch64_sve_gather_offset_d, aarch64_gather_scale_operand_b)
3262 (aarch64_gather_scale_operand_h): New predicates.
3263 * config/aarch64/constraints.md (UPb, UPd, UPh, UPw, Utf, Utn, vgb)
3264 (vgd, vgh, vgw, vsQ, vsS): New constraints.
3265 * config/aarch64/aarch64-sve.md: Add a note on the FFR handling.
3266 (*aarch64_sve_reinterpret<mode>): Allow any source register
3267 instead of requiring an exact match.
3268 (*aarch64_sve_ptruevnx16bi_cc, *aarch64_sve_ptrue<mode>_cc)
3269 (*aarch64_sve_ptruevnx16bi_ptest, *aarch64_sve_ptrue<mode>_ptest)
3270 (aarch64_wrffr, aarch64_update_ffr_for_load, aarch64_copy_ffr_to_ffrt)
3271 (aarch64_rdffr, aarch64_rdffr_z, *aarch64_rdffr_z_ptest)
3272 (*aarch64_rdffr_ptest, *aarch64_rdffr_z_cc, *aarch64_rdffr_cc)
3273 (aarch64_update_ffrt): New patterns.
3274 (@aarch64_load_<ANY_EXTEND:optab><VNx8_WIDE:mode><VNx8_NARROW:mode>)
3275 (@aarch64_load_<ANY_EXTEND:optab><VNx4_WIDE:mode><VNx4_NARROW:mode>)
3276 (@aarch64_load_<ANY_EXTEND:optab><VNx2_WIDE:mode><VNx2_NARROW:mode>)
3277 (@aarch64_ld<fn>f1<mode>): New patterns.
3278 (@aarch64_ld<fn>f1_<ANY_EXTEND:optab><VNx8_WIDE:mode><VNx8_NARROW:mode>)
3279 (@aarch64_ld<fn>f1_<ANY_EXTEND:optab><VNx4_WIDE:mode><VNx4_NARROW:mode>)
3280 (@aarch64_ld<fn>f1_<ANY_EXTEND:optab><VNx2_WIDE:mode><VNx2_NARROW:mode>)
3281 (@aarch64_ldnt1<mode>): New patterns.
3282 (gather_load<mode>): Use aarch64_sve_gather_offset_<Vesize> for
3283 the scalar part of the address.
3284 (mask_gather_load<SVE_S:mode>): Use aarch64_sve_gather_offset_w for the
3285 scalar part of the addresse and add an alternative for handling
3287 (mask_gather_load<SVE_D:mode>): Likewise aarch64_sve_gather_offset_d.
3288 (*mask_gather_load<mode>_sxtw, *mask_gather_load<mode>_uxtw)
3289 (@aarch64_gather_load_<ANY_EXTEND:optab><VNx4_WIDE:mode><VNx4_NARROW:mode>)
3290 (@aarch64_gather_load_<ANY_EXTEND:optab><VNx2_WIDE:mode><VNx2_NARROW:mode>)
3291 (*aarch64_gather_load_<ANY_EXTEND:optab><VNx2_WIDE:mode><VNx2_NARROW:mode>_sxtw)
3292 (*aarch64_gather_load_<ANY_EXTEND:optab><VNx2_WIDE:mode><VNx2_NARROW:mode>_uxtw)
3293 (@aarch64_ldff1_gather<SVE_S:mode>, @aarch64_ldff1_gather<SVE_D:mode>)
3294 (*aarch64_ldff1_gather<mode>_sxtw, *aarch64_ldff1_gather<mode>_uxtw)
3295 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode><VNx4_NARROW:mode>)
3296 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode><VNx2_NARROW:mode>)
3297 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode><VNx2_NARROW:mode>_sxtw)
3298 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode><VNx2_NARROW:mode>_uxtw)
3299 (@aarch64_sve_prefetch<mode>): New patterns.
3300 (@aarch64_sve_gather_prefetch<SVE_I:mode><VNx4SI_ONLY:mode>)
3301 (@aarch64_sve_gather_prefetch<SVE_I:mode><VNx2DI_ONLY:mode>)
3302 (*aarch64_sve_gather_prefetch<SVE_I:mode><VNx2DI_ONLY:mode>_sxtw)
3303 (*aarch64_sve_gather_prefetch<SVE_I:mode><VNx2DI_ONLY:mode>_uxtw)
3304 (@aarch64_store_trunc<VNx8_NARROW:mode><VNx8_WIDE:mode>)
3305 (@aarch64_store_trunc<VNx4_NARROW:mode><VNx4_WIDE:mode>)
3306 (@aarch64_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>)
3307 (@aarch64_stnt1<mode>): New patterns.
3308 (scatter_store<mode>): Use aarch64_sve_gather_offset_<Vesize> for
3309 the scalar part of the address.
3310 (mask_scatter_store<SVE_S:mode>): Use aarch64_sve_gather_offset_w for
3311 the scalar part of the addresse and add an alternative for handling
3313 (mask_scatter_store<SVE_D:mode>): Likewise aarch64_sve_gather_offset_d.
3314 (*mask_scatter_store<mode>_sxtw, *mask_scatter_store<mode>_uxtw)
3315 (@aarch64_scatter_store_trunc<VNx4_NARROW:mode><VNx4_WIDE:mode>)
3316 (@aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>)
3317 (*aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>_sxtw)
3318 (*aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>_uxtw):
3320 (vec_duplicate<mode>): Use QI as the mode of the input operand.
3321 (extract_last_<mode>): Generalize to...
3322 (@extract_<LAST:last_op>_<mode>): ...this.
3323 (*<SVE_INT_UNARY:optab><mode>2): Rename to...
3324 (@aarch64_pred_<SVE_INT_UNARY:optab><mode>): ...this.
3325 (@cond_<SVE_INT_UNARY:optab><mode>): New expander.
3326 (@aarch64_pred_sxt<SVE_HSDI:mode><SVE_PARTIAL:mode>): New pattern.
3327 (@aarch64_cond_sxt<SVE_HSDI:mode><SVE_PARTIAL:mode>): Likewise.
3328 (@aarch64_pred_cnot<mode>, @cond_cnot<mode>): New expanders.
3329 (@aarch64_sve_<SVE_FP_UNARY_INT:optab><mode>): New pattern.
3330 (@aarch64_sve_<SVE_FP_UNARY:optab><mode>): Likewise.
3331 (*<SVE_COND_FP_UNARY:optab><mode>2): Rename to...
3332 (@aarch64_pred_<SVE_COND_FP_UNARY:optab><mode>): ...this.
3333 (@cond_<SVE_COND_FP_UNARY:optab><mode>): New expander.
3334 (*<SVE_INT_BINARY_IMM:optab><mode>3): Rename to...
3335 (@aarch64_pred_<SVE_INT_BINARY_IMM:optab><mode>): ...this.
3336 (@aarch64_adr<mode>, *aarch64_adr_sxtw): New patterns.
3337 (*aarch64_adr_uxtw_unspec): Likewise.
3338 (*aarch64_adr_uxtw): Rename to...
3339 (*aarch64_adr_uxtw_and): ...this.
3340 (@aarch64_adr<mode>_shift): New expander.
3341 (*aarch64_adr_shift_sxtw): New pattern.
3342 (aarch64_<su>abd<mode>_3): Rename to...
3343 (@aarch64_pred_<su>abd<mode>): ...this.
3344 (<su>abd<mode>_3): Update accordingly.
3345 (@aarch64_cond_<su>abd<mode>): New expander.
3346 (@aarch64_<SBINQOPS:su_optab><optab><mode>): New pattern.
3347 (@aarch64_<UBINQOPS:su_optab><optab><mode>): Likewise.
3348 (*<su>mul<mode>3_highpart): Rename to...
3349 (@aarch64_pred_<optab><mode>): ...this.
3350 (@cond_<MUL_HIGHPART:optab><mode>): New expander.
3351 (*cond_<MUL_HIGHPART:optab><mode>_2): New pattern.
3352 (*cond_<MUL_HIGHPART:optab><mode>_z): Likewise.
3353 (*<SVE_INT_BINARY_SD:optab><mode>3): Rename to...
3354 (@aarch64_pred_<SVE_INT_BINARY_SD:optab><mode>): ...this.
3355 (cond_<SVE_INT_BINARY_SD:optab><mode>): Add a "@" marker.
3356 (@aarch64_bic<mode>, @cond_bic<mode>): New expanders.
3357 (*v<ASHIFT:optab><mode>3): Rename to...
3358 (@aarch64_pred_<ASHIFT:optab><mode>): ...this.
3359 (@aarch64_sve_<SVE_SHIFT_WIDE:sve_int_op><mode>): New pattern.
3360 (@cond_<SVE_SHIFT_WIDE:sve_int_op><mode>): New expander.
3361 (*cond_<SVE_SHIFT_WIDE:sve_int_op><mode>_m): New pattern.
3362 (*cond_<SVE_SHIFT_WIDE:sve_int_op><mode>_z): Likewise.
3363 (@cond_asrd<mode>): New expander.
3364 (*cond_asrd<mode>_2, *cond_asrd<mode>_z): New patterns.
3365 (sdiv_pow2<mode>3): Expand to *cond_asrd<mode>_2.
3366 (*sdiv_pow2<mode>3): Delete.
3367 (@cond_<SVE_COND_FP_BINARY_INT:optab><mode>): New expander.
3368 (*cond_<SVE_COND_FP_BINARY_INT:optab><mode>_2): New pattern.
3369 (*cond_<SVE_COND_FP_BINARY_INT:optab><mode>_any): Likewise.
3370 (@aarch64_sve_<SVE_FP_BINARY:optab><mode>): New pattern.
3371 (@aarch64_sve_<SVE_FP_BINARY_INT:optab><mode>): Likewise.
3372 (*<SVE_COND_FP_BINARY_REG:optab><mode>3): Rename to...
3373 (@aarch64_pred_<SVE_COND_FP_BINARY_REG:optab><mode>): ...this.
3374 (@aarch64_pred_<SVE_COND_FP_BINARY_INT:optab><mode>): New pattern.
3375 (cond_<SVE_COND_FP_BINARY:optab><mode>): Add a "@" marker.
3376 (*add<SVE_F:mode>3): Rename to...
3377 (@aarch64_pred_add<SVE_F:mode>): ...this and add alternatives
3379 (@aarch64_pred_<SVE_COND_FCADD:optab><mode>): New pattern.
3380 (@cond_<SVE_COND_FCADD:optab><mode>): New expander.
3381 (*cond_<SVE_COND_FCADD:optab><mode>_2): New pattern.
3382 (*cond_<SVE_COND_FCADD:optab><mode>_any): Likewise.
3383 (*sub<SVE_F:mode>3): Rename to...
3384 (@aarch64_pred_sub<SVE_F:mode>): ...this and add alternatives
3386 (@aarch64_pred_abd<SVE_F:mode>): New expander.
3387 (*fabd<SVE_F:mode>3): Rename to...
3388 (*aarch64_pred_abd<SVE_F:mode>): ...this.
3389 (@aarch64_cond_abd<SVE_F:mode>): New expander.
3390 (*mul<SVE_F:mode>3): Rename to...
3391 (@aarch64_pred_<SVE_F:optab><mode>): ...this and add alternatives
3393 (@aarch64_mul_lane_<SVE_F:mode>): New pattern.
3394 (*<SVE_COND_FP_MAXMIN_PUBLIC:optab><mode>3): Rename and generalize
3396 (@aarch64_pred_<SVE_COND_FP_MAXMIN:optab><mode>): ...this.
3397 (*<LOGICAL:optab><PRED_ALL:mode>3_ptest): New pattern.
3398 (*<nlogical><PRED_ALL:mode>3): Rename to...
3399 (aarch64_pred_<nlogical><PRED_ALL:mode>_z): ...this.
3400 (*<nlogical><PRED_ALL:mode>3_cc): New pattern.
3401 (*<nlogical><PRED_ALL:mode>3_ptest): Likewise.
3402 (*<logical_nn><PRED_ALL:mode>3): Rename to...
3403 (aarch64_pred_<logical_nn><mode>_z): ...this.
3404 (*<logical_nn><PRED_ALL:mode>3_cc): New pattern.
3405 (*<logical_nn><PRED_ALL:mode>3_ptest): Likewise.
3406 (*fma<SVE_I:mode>4): Rename to...
3407 (@aarch64_pred_fma<SVE_I:mode>): ...this.
3408 (*fnma<SVE_I:mode>4): Rename to...
3409 (@aarch64_pred_fnma<SVE_I:mode>): ...this.
3410 (@aarch64_<sur>dot_prod_lane<vsi2qi>): New pattern.
3411 (*<SVE_FP_TERNARY:optab><mode>4): Rename to...
3412 (@aarch64_pred_<SVE_FP_TERNARY:optab><mode>): ...this.
3413 (cond_<SVE_FP_TERNARY:optab><mode>): Add a "@" marker.
3414 (@aarch64_<SVE_FP_TERNARY_LANE:optab>_lane_<mode>): New pattern.
3415 (@aarch64_pred_<SVE_COND_FCMLA:optab><mode>): Likewise.
3416 (@cond_<SVE_COND_FCMLA:optab><mode>): New expander.
3417 (*cond_<SVE_COND_FCMLA:optab><mode>_4): New pattern.
3418 (*cond_<SVE_COND_FCMLA:optab><mode>_any): Likewise.
3419 (@aarch64_<FCMLA:optab>_lane_<mode>): Likewise.
3420 (@aarch64_sve_tmad<mode>): Likewise.
3421 (vcond_mask_<SVE_ALL:mode><vpred>): Add a "@" marker.
3422 (*aarch64_sel_dup<mode>): Rename to...
3423 (@aarch64_sel_dup<mode>): ...this.
3424 (@aarch64_pred_cmp<cmp_op><SVE_I:mode>_wide): New pattern.
3425 (*aarch64_pred_cmp<cmp_op><SVE_I:mode>_wide_cc): Likewise.
3426 (*aarch64_pred_cmp<cmp_op><SVE_I:mode>_wide_ptest): Likewise.
3427 (@while_ult<GPI:mode><PRED_ALL:mode>): Generalize to...
3428 (@while_<while_optab_cmp><GPI:mode><PRED_ALL:mode>): ...this.
3429 (*while_ult<GPI:mode><PRED_ALL:mode>_cc): Generalize to.
3430 (*while_<while_optab_cmp><GPI:mode><PRED_ALL:mode>_cc): ...this.
3431 (*while_<while_optab_cmp><GPI:mode><PRED_ALL:mode>_ptest): New pattern.
3432 (*fcm<cmp_op><mode>): Rename to...
3433 (@aarch64_pred_fcm<cmp_op><mode>): ...this. Make operand order
3434 match @aarch64_pred_cmp<cmp_op><SVE_I:mode>.
3435 (*fcmuo<mode>): Rename to...
3436 (@aarch64_pred_fcmuo<mode>): ...this. Make operand order
3437 match @aarch64_pred_cmp<cmp_op><SVE_I:mode>.
3438 (@aarch64_pred_fac<cmp_op><mode>): New expander.
3439 (@vcond_mask_<PRED_ALL:mode><mode>): New pattern.
3440 (fold_extract_last_<mode>): Generalize to...
3441 (@fold_extract_<last_op>_<mode>): ...this.
3442 (@aarch64_fold_extract_vector_<last_op>_<mode>): New pattern.
3443 (*reduc_plus_scal_<SVE_I:mode>): Replace with...
3444 (@aarch64_pred_reduc_<optab>_<mode>): ...this pattern, making the
3445 DImode result explicit.
3446 (reduc_plus_scal_<mode>): Update accordingly.
3447 (*reduc_<optab>_scal_<SVE_I:mode>): Rename to...
3448 (@aarch64_pred_reduc_<optab>_<SVE_I:mode>): ...this.
3449 (*reduc_<optab>_scal_<SVE_F:mode>): Rename to...
3450 (@aarch64_pred_reduc_<optab>_<SVE_F:mode>): ...this.
3451 (*aarch64_sve_tbl<mode>): Rename to...
3452 (@aarch64_sve_tbl<mode>): ...this.
3453 (@aarch64_sve_compact<mode>): New pattern.
3454 (*aarch64_sve_dup_lane<mode>): Rename to...
3455 (@aarch64_sve_dup_lane<mode>): ...this.
3456 (@aarch64_sve_dupq_lane<mode>): New pattern.
3457 (@aarch64_sve_splice<mode>): Likewise.
3458 (aarch64_sve_<perm_insn><mode>): Rename to...
3459 (@aarch64_sve_<perm_insn><mode>): ...this.
3460 (*aarch64_sve_ext<mode>): Rename to...
3461 (@aarch64_sve_ext<mode>): ...this.
3462 (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): Add a "@" marker.
3463 (*aarch64_sve_<optab>_nontrunc<SVE_F:mode><SVE_HSDI:mode>): Rename
3465 (@aarch64_sve_<optab>_nontrunc<SVE_F:mode><SVE_HSDI:mode>): ...this.
3466 (*aarch64_sve_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>):
3468 (@aarch64_sve_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>):
3470 (@cond_<optab>_nontrunc<SVE_F:mode><SVE_HSDI:mode>): New expander.
3471 (@cond_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>): Likewise.
3472 (*cond_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>): New pattern.
3473 (*aarch64_sve_<optab>_nonextend<SVE_HSDI:mode><SVE_F:mode>): Rename
3475 (@aarch64_sve_<optab>_nonextend<SVE_HSDI:mode><SVE_F:mode>): ...this.
3476 (aarch64_sve_<optab>_extend<VNx4SI_ONLY:mode><VNx2DF_ONLY:mode>): Add
3478 (@cond_<optab>_nonextend<SVE_HSDI:mode><SVE_F:mode>): New expander.
3479 (@cond_<optab>_extend<VNx4SI_ONLY:mode><VNx2DF_ONLY:mode>): Likewise.
3480 (*cond_<optab>_extend<VNx4SI_ONLY:mode><VNx2DF_ONLY:mode>): New
3482 (*aarch64_sve_<optab>_trunc<SVE_SDF:mode><SVE_HSF:mode>): Rename to...
3483 (@aarch64_sve_<optab>_trunc<SVE_SDF:mode><SVE_HSF:mode>): ...this.
3484 (@cond_<optab>_trunc<SVE_SDF:mode><SVE_HSF:mode>): New expander.
3485 (*cond_<optab>_trunc<SVE_SDF:mode><SVE_HSF:mode>): New pattern.
3486 (aarch64_sve_<optab>_nontrunc<SVE_HSF:mode><SVE_SDF:mode>): Add a
3488 (@cond_<optab>_nontrunc<SVE_HSF:mode><SVE_SDF:mode>): New expander.
3489 (*cond_<optab>_nontrunc<SVE_HSF:mode><SVE_SDF:mode>): New pattern.
3490 (aarch64_sve_punpk<perm_hilo>_<mode>): Add a "@" marker.
3491 (@aarch64_brk<SVE_BRK_UNARY:brk_op>): New pattern.
3492 (*aarch64_brk<SVE_BRK_UNARY:brk_op>_cc): Likewise.
3493 (*aarch64_brk<SVE_BRK_UNARY:brk_op>_ptest): Likewise.
3494 (@aarch64_brk<SVE_BRK_BINARY:brk_op>): Likewise.
3495 (*aarch64_brk<SVE_BRK_BINARY:brk_op>_cc): Likewise.
3496 (*aarch64_brk<SVE_BRK_BINARY:brk_op>_ptest): Likewise.
3497 (@aarch64_sve_<SVE_PITER:sve_pred_op><mode>): Likewise.
3498 (*aarch64_sve_<SVE_PITER:sve_pred_op><mode>_cc): Likewise.
3499 (*aarch64_sve_<SVE_PITER:sve_pred_op><mode>_ptest): Likewise.
3500 (aarch64_sve_cnt_pat): Likewise.
3501 (@aarch64_sve_<ANY_PLUS:inc_dec><DI_ONLY:mode>_pat): Likewise.
3502 (*aarch64_sve_incsi_pat): Likewise.
3503 (@aarch64_sve_<SAT_PLUS:inc_dec><SI_ONLY:mode>_pat): Likewise.
3504 (@aarch64_sve_<ANY_PLUS:inc_dec><VNx2DI_ONLY:mode>_pat): Likewise.
3505 (@aarch64_sve_<ANY_PLUS:inc_dec><VNx4SI_ONLY:mode>_pat): Likewise.
3506 (@aarch64_sve_<ANY_PLUS:inc_dec><VNx8HI_ONLY:mode>_pat): New expander.
3507 (*aarch64_sve_<ANY_PLUS:inc_dec><VNx8HI_ONLY:mode>_pat): New pattern.
3508 (@aarch64_sve_<ANY_MINUS:inc_dec><DI_ONLY:mode>_pat): Likewise.
3509 (*aarch64_sve_decsi_pat): Likewise.
3510 (@aarch64_sve_<SAT_MINUS:inc_dec><SI_ONLY:mode>_pat): Likewise.
3511 (@aarch64_sve_<ANY_MINUS:inc_dec><VNx2DI_ONLY:mode>_pat): Likewise.
3512 (@aarch64_sve_<ANY_MINUS:inc_dec><VNx4SI_ONLY:mode>_pat): Likewise.
3513 (@aarch64_sve_<ANY_MINUS:inc_dec><VNx8HI_ONLY:mode>_pat): New expander.
3514 (*aarch64_sve_<ANY_MINUS:inc_dec><VNx8HI_ONLY:mode>_pat): New pattern.
3515 (@aarch64_pred_cntp<mode>): Likewise.
3516 (@aarch64_sve_<ANY_PLUS:inc_dec><DI_ONLY:mode><PRED_ALL:mode>_cntp):
3518 (*aarch64_sve_<ANY_PLUS:inc_dec><DI_ONLY:mode><PRED_ALL:mode>_cntp)
3519 (*aarch64_incsi<PRED_ALL:mode>_cntp): New patterns.
3520 (@aarch64_sve_<SAT_PLUS:inc_dec><SI_ONLY:mode><PRED_ALL:mode>_cntp):
3522 (*aarch64_sve_<SAT_PLUS:inc_dec><SI_ONLY:mode><PRED_ALL:mode>_cntp):
3524 (@aarch64_sve_<ANY_PLUS:inc_dec><VNx2DI_ONLY:mode>_cntp): New expander.
3525 (*aarch64_sve_<ANY_PLUS:inc_dec><VNx2DI_ONLY:mode>_cntp): New pattern.
3526 (@aarch64_sve_<ANY_PLUS:inc_dec><VNx4SI_ONLY:mode>_cntp): New expander.
3527 (*aarch64_sve_<ANY_PLUS:inc_dec><VNx4SI_ONLY:mode>_cntp): New pattern.
3528 (@aarch64_sve_<ANY_PLUS:inc_dec><VNx8HI_ONLY:mode>_cntp): New expander.
3529 (*aarch64_sve_<ANY_PLUS:inc_dec><VNx8HI_ONLY:mode>_cntp): New pattern.
3530 (@aarch64_sve_<ANY_MINUS:inc_dec><DI_ONLY:mode><PRED_ALL:mode>_cntp):
3532 (*aarch64_sve_<ANY_MINUS:inc_dec><DI_ONLY:mode><PRED_ALL:mode>_cntp)
3533 (*aarch64_incsi<PRED_ALL:mode>_cntp): New patterns.
3534 (@aarch64_sve_<SAT_MINUS:inc_dec><SI_ONLY:mode><PRED_ALL:mode>_cntp):
3536 (*aarch64_sve_<SAT_MINUS:inc_dec><SI_ONLY:mode><PRED_ALL:mode>_cntp):
3538 (@aarch64_sve_<ANY_MINUS:inc_dec><VNx2DI_ONLY:mode>_cntp): New
3540 (*aarch64_sve_<ANY_MINUS:inc_dec><VNx2DI_ONLY:mode>_cntp): New pattern.
3541 (@aarch64_sve_<ANY_MINUS:inc_dec><VNx4SI_ONLY:mode>_cntp): New
3543 (*aarch64_sve_<ANY_MINUS:inc_dec><VNx4SI_ONLY:mode>_cntp): New pattern.
3544 (@aarch64_sve_<ANY_MINUS:inc_dec><VNx8HI_ONLY:mode>_cntp): New
3546 (*aarch64_sve_<ANY_MINUS:inc_dec><VNx8HI_ONLY:mode>_cntp): New pattern.
3547 * config/aarch64/arm_sve.h: New file.
3548 * config/aarch64/aarch64-sve-builtins.h: Likewise.
3549 * config/aarch64/aarch64-sve-builtins.cc: Likewise.
3550 * config/aarch64/aarch64-sve-builtins.def: Likewise.
3551 * config/aarch64/aarch64-sve-builtins-base.h: Likewise.
3552 * config/aarch64/aarch64-sve-builtins-base.cc: Likewise.
3553 * config/aarch64/aarch64-sve-builtins-base.def: Likewise.
3554 * config/aarch64/aarch64-sve-builtins-functions.h: Likewise.
3555 * config/aarch64/aarch64-sve-builtins-shapes.h: Likewise.
3556 * config/aarch64/aarch64-sve-builtins-shapes.cc: Likewise.
3558 2019-10-29 Richard Sandiford <richard.sandiford@arm.com>
3560 * config/aarch64/aarch64-sve.md (@aarch64_sve_rev<PRED_ALL:mode>):
3562 * config/aarch64/aarch64.c (aarch64_evpc_rev_global): Handle all
3565 2019-10-29 Richard Sandiford <richard.sandiford@arm.com>
3567 * config/aarch64/aarch64.md (FFR_REGNUM, FFRT_REGNUM): New constants.
3568 * config/aarch64/aarch64.h (FIRST_PSEUDO_REGISTER): Bump to
3570 (FFR_REGS, PR_AND_FFR_REGS): New register classes.
3571 (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Add entries for them.
3572 * config/aarch64/aarch64.c (pr_or_ffr_regnum_p): New function.
3573 (aarch64_hard_regno_nregs): Handle the new register classes.
3574 (aarch64_hard_regno_mode_ok): Likewise.
3575 (aarch64_regno_regclass): Likewise.
3576 (aarch64_class_max_nregs): Likewise.
3577 (aarch64_register_move_cost): Likewise.
3578 (aarch64_conditional_register_usage): Don't treat FFR and FFRT
3579 as general register_operands.
3581 2019-10-29 Martin Liska <mliska@suse.cz>
3583 * ggc-common.c: One can't subtract unsigned types
3584 in compare function.
3586 2019-10-29 Martin Liska <mliska@suse.cz>
3588 * cgraphunit.c (symbol_table::compile): Pass
3589 title as dump_memory_report argument.
3590 * toplev.c (dump_memory_report): New argument.
3591 (finalize): Pass new argument.
3592 * toplev.h (dump_memory_report): Add argument.
3594 2019-10-29 Martin Liska <mliska@suse.cz>
3596 * ggc-common.c: Move Leak to the first column.
3598 2019-10-29 Martin Liska <mliska@suse.cz>
3600 * cgraphunit.c (symbol_table::compile): Remove argument
3601 for dump_memory_report.
3602 * ggc-common.c (dump_ggc_loc_statistics): Likewise.
3603 (compare_final): Remove in order to make report
3605 * ggc.h (dump_ggc_loc_statistics): Remove argument.
3606 * mem-stats.h (mem_alloc_description::get_list):
3608 (mem_alloc_description::dump): Likewise here.
3609 * toplev.c (dump_memory_report): Remove final
3611 (finalize): Likewise.
3612 * toplev.h (dump_memory_report): Remove argument.
3614 2019-10-29 Richard Sandiford <richard.sandiford@arm.com>
3616 * config/aarch64/aarch64.c (aarch64_sve_cmp_immediate_p)
3617 (aarch64_simd_shift_imm_p): Accept scalars as well as vectors.
3618 * config/aarch64/predicates.md (aarch64_sve_cmp_vsc_immediate)
3619 (aarch64_sve_cmp_vsd_immediate): Accept "const_int", but don't
3622 2019-10-29 Richard Sandiford <richard.sandiford@arm.com>
3624 * coretypes.h (string_int_pair): New typedef.
3625 * langhooks-def.h (LANG_HOOKS_SIMULATE_ENUM_DECL): Define.
3626 (LANG_HOOKS_FOR_TYPES_INITIALIZER): Include it.
3627 * langhooks.h (lang_hooks_for_types::simulate_enum_decl): New hook.
3629 2019-10-29 Richard Sandiford <richard.sandiford@arm.com>
3631 * langhooks.h (lang_hooks::simulate_builtin_function_decl): New hook.
3632 (simulate_builtin_function_decl): Declare.
3633 * langhooks-def.h (LANG_HOOKS_SIMULATE_BUILTIN_FUNCTION_DECL): Define.
3634 (LANG_HOOKS_INITIALIZER): Include it.
3635 * langhooks.c (add_builtin_function_common): Rename to...
3636 (build_builtin_function): ...this. Add a location parameter and use
3637 it instead of BUILTINS_LOCATION. Remove the hook parameter and return
3639 (add_builtin_function): Update accordingly, passing the returned
3640 decl to the lang hook.
3641 (add_builtin_function_ext_scope): Likewise
3642 (simulate_builtin_function_decl): New function.
3644 2019-10-29 Jakub Jelinek <jakub@redhat.com>
3646 * doc/install.texi (--enable-offload-targets): Fix up a typo in the
3647 example, use actual names of supported offload targets.
3650 * config/i386/sse.md (iptr): Revert 2019-10-27 change.
3652 2019-10-28 Martin Sebor <msebor@redhat.com>
3654 * tree-ssa-strlen.c (get_addr_stridx): Add argument and use it.
3655 (handle_store): Pass argument to get_addr_stridx.
3657 2019-10-28 Martin Sebor <msebor@redhat.com>
3659 PR tree-optimization/92226
3660 * tree-ssa-strlen.c (compare_nonzero_chars): Return -1 also when
3661 the offset is in the open range outlined by SI's length.
3663 2019-10-28 Martin Sebor <msebor@redhat.com>
3666 * doc/cpp.texi (__has_builtin): Document.
3667 * doc/extend.texi (__builtin_frob_return_addr): Correct spelling.
3669 2019-10-28 Mihailo Stojanovic <mistojanovic@wavecomp.com>
3672 * config/mips/mips.md (<u>mulditi3): Generate patterns for high
3673 doubleword and low doubleword result of multiplication on
3676 * config/mips/mips.c (DIRECT_BUILTIN_PURE): New macro. Add a
3677 pure qualifier to the built-in.
3678 (MSA_BUILTIN_PURE): New macro. Add a pure qualifier to the MSA
3680 (struct mips_builtin_description): Add is_pure flag.
3681 (mips_init_builtins): Mark built-in as pure if the flag in the
3682 corresponding mips_builtin_description struct is set.
3684 * config/mips/mips-msa.md (msa_insert_<msaftm_f>): Add an
3685 alternative which covers the floating-point input value. Also
3686 forbid the split of insert.d pattern for floating-point values.
3688 2019-10-28 Andrew Burgess <andrew.burgess@embecosm.com>
3690 * config.gcc: Add riscv-sr.o to extra_objs for riscv.
3691 * config/riscv/riscv-sr.c: New file.
3692 * config/riscv/riscv.c (riscv_reorg): New function.
3693 (TARGET_MACHINE_DEPENDENT_REORG): Define.
3694 * config/riscv/riscv.h (SIBCALL_REG_P): Define.
3695 (riscv_remove_unneeded_save_restore_calls): Declare.
3696 * config/riscv/t-riscv (riscv-sr.o): New build rule.
3698 2019-10-28 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
3700 PR tree-optimization/92163
3701 * tree-ssa-dse.c (delete_dead_or_redundant_assignment): New param
3702 need_eh_cleanup with default value NULL. Gate on need_eh_cleanup
3703 before calling bitmap_set_bit.
3704 (dse_optimize_redundant_stores): Pass global need_eh_cleanup to
3705 delete_dead_or_redundant_assignment.
3706 (dse_dom_walker::dse_optimize_stmt): Likewise.
3707 * tree-ssa-dse.h (delete_dead_or_redundant_assignment): Adjust prototype.
3709 2019-10-28 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
3712 * tree-vect-stmts.c (vectorizable_condition): Support
3713 EXTRACT_LAST_REDUCTION with fully-masked loops.
3715 2019-10-28 Richard Biener <rguenther@suse.de>
3717 PR tree-optimization/92252
3718 * tree-vect-slp.c (vect_get_and_check_slp_defs): Adjust
3719 STMT_VINFO_REDUC_IDX when swapping operands.
3721 2019-10-28 Richard Biener <rguenther@suse.de>
3723 PR tree-optimization/92241
3724 * tree-vect-loop.c (vect_fixup_scalar_cycles_with_patterns): When
3725 we failed to update the reduction index do not use the pattern
3726 stmts for the reduction chain.
3727 (vectorizable_reduction): When the reduction chain is corrupt,
3729 * tree-vect-patterns.c (vect_mark_pattern_stmts): Stop when we
3730 fail to update the reduction chain.
3732 2019-10-28 Richard Biener <rguenther@suse.de>
3734 * tree-vect-loop.c (vect_create_epilog_for_reduction): Use
3735 STMT_VINFO_REDUC_IDX from the actual stmt.
3736 (vect_transform_reduction): Likewise.
3737 (vectorizable_reduction): Compute the reduction chain length,
3738 do not recompute the reduction operand index. Remove no longer
3739 necessary restriction for condition reduction chains.
3741 2019-10-28 Uroš Bizjak <ubizjak@gmail.com>
3744 * config/i386/sse.md (REDUC_SSE_SMINMAX_MODE): Use TARGET_SSE4_2
3745 condition for V2DImode.
3747 2019-10-28 Uroš Bizjak <ubizjak@gmail.com>
3749 * config/i386/sse.md (sse_cvtss2si<rex64namesuffix>_2):
3750 Remove %k operand modifier.
3751 (*vec_extractv2df_1_sse): Remove %q operand modifier.
3753 2019-10-28 Ilya Leoshkevich <iii@linux.ibm.com>
3755 PR rtl-optimization/92007
3756 * cfgcleanup.c (thread_jump): Add an assertion that we don't
3757 call it after reload if hot/cold partitioning has been done.
3758 (class pass_postreload_jump): Rename to
3759 pass_jump_after_combine.
3760 (make_pass_postreload_jump): Rename to
3761 make_pass_jump_after_combine.
3762 * passes.def(pass_postreload_jump): Move before reload, rename
3763 to pass_jump_after_combine.
3764 * tree-pass.h (make_pass_postreload_jump): Rename to
3765 make_pass_jump_after_combine.
3767 2019-10-25 Jan Hubicka <hubicka@ucw.cz>
3770 * ipa-fnsummary.c (ipa_merge_fn_summary_after_inlining): Check
3771 for missing EDGE_REF
3772 * ipa-prop.c (update_jump_functions_after_inlining): Likewise.
3774 2019-10-25 Jiufu Guo <guojiufu@linux.ibm.com>
3776 PR tree-optimization/88760
3777 * config/rs6000/rs6000-common.c (rs6000_option_optimization_table):
3778 Enable -funroll-loops for -O2 and above.
3779 * config/rs6000/rs6000.c (rs6000_option_override_internal): Set
3780 PARAM_MAX_UNROLL_TIMES to 2 and PARAM_MAX_UNROLLED_INSNS to 20, and
3781 do not turn on web and rngreg implicitly, if the unroller is not
3784 2019-10-27 Jan Hubicka <hubicka@ucw.cz>
3786 * ipa-prop.c (ipa_propagate_indirect_call_infos): Do not remove
3789 2019-10-27 Eric Botcazou <ebotcazou@adacore.com>
3791 * cgraph.c (cgraph_node::rtl_info): Fix cut&pasto in comment.
3792 * cgraph.h (cgraph_node::rtl_info): Likewise.
3794 2019-10-27 Jan Hubicka <hubicka@ucw.cz>
3796 * ipa-cp.c (propagate_constants_across_call): If args are not available
3797 just drop everything to varying.
3798 (find_aggregate_values_for_callers_subset): Watch for missing
3800 (find_more_scalar_values_for_callers_subs): Likewise.
3801 * ipa-prop.c (ipa_compute_jump_functions_for_edge,
3802 update_jump_functions_after_inlining, propagate_controlled_uses):
3803 Watch for missing summaries.
3804 (ipa_propagate_indirect_call_infos): Remove summary after propagation
3806 (ipa_write_node_info): Watch for missing summaries.
3807 (ipa_read_edge_info): Create new ref.
3808 (ipa_edge_args_sum_t): Add remove.
3809 (IPA_EDGE_REF_GET_CREATE): New macro.
3810 * ipa-fnsummary.c (evaluate_properties_for_edge): Watch for missing
3812 (remap_edge_change_prob): Likewise.
3814 2019-10-27 Jan Hubicka <hubicka@ucw.cz>
3816 * ipa-inline-transform.c (inline_call): update function summaries
3817 after expanidng thunk.
3819 2019-10-27 Jan Hubicka <hubicka@ucw.cz>
3821 * ipa-icf.c (sem_function::merge): Update function summaries.
3822 * ipa-prop.h (ipa_get_param): Do not sanity check for WPA.
3824 2019-10-27 Hongtao Liu <hongtao.liu@intel.com>
3826 * config/i386/sse.md (*<sse>_vm<plusminus_insn><mode>3,
3827 <sse>_vm<multdiv_mnemonic><mode>3): Remove <iptr> since
3828 operand already has scalar mode.
3829 (iptr): Remove SF/DF.
3831 2019-10-26 Segher Boessenkool <segher@kernel.crashing.org>
3834 * config/rs6000/rs6000-logue.c (rs6000_emit_allocate_stack): Don't add
3835 an immediate to r0; use r11 instead. Save and restore r11 to r0 around
3838 2019-10-26 Hongtao Liu <hongtao.liu@intel.com>
3840 * config/i386/sse.md
3841 (<sse>_vm<plusminus_insn><mode>3<mask_scalar_name><round_scalar_name>,
3842 <sse>_vm<multdiv_mnemonic><mode>3<mask_scalar_name><round_scalar_name>,
3843 <sse>_vmsqrt<mode>2<mask_scalar_name><round_scalar_name>,
3844 <sse>_vm<code><mode>3<mask_scalar_name><round_saeonly_scalar_name>,
3845 <sse>_vmmaskcmp<mode>3):
3846 Change predicates from vector_operand to nonimmediate_operand,
3847 constraints xBm to xm, since scalar operations don't need
3848 memory address alignment.
3849 (avx512f_vmcmp<mode>3<round_saeonly_name>,
3850 avx512f_vmcmp<mode>3_mask<round_saeonly_name>): Replace
3851 round_saeonly_nimm_predicate with
3852 round_saeonly_nimm_scalar_predicate.
3853 (fmai_vmfmadd_<mode><round_name>, fmai_vmfmsub_<mode><round_name>,
3854 fmai_vmfnmadd_<mode><round_name>,fmai_vmfnmsub_<mode><round_name>,
3855 *fmai_fmadd_<mode>, *fmai_fmsub_<mode>,
3856 *fmai_fnmadd_<mode><round_name>, *fmai_fnmsub_<mode><round_name>,
3857 avx512f_vmfmadd_<mode>_mask3<round_name>,
3858 avx512f_vmfmadd_<mode>_maskz_1<round_name>,
3859 *avx512f_vmfmsub_<mode>_mask<round_name>,
3860 avx512f_vmfmsub_<mode>_mask3<round_name>,
3861 *avx512f_vmfmsub_<mode>_maskz_1<round_name>,
3862 *avx512f_vmfnmadd_<mode>_mask<round_name>,
3863 *avx512f_vmfnmadd_<mode>_mask3<round_name>,
3864 *avx512f_vmfnmadd_<mode>_maskz_1<round_name>,
3865 *avx512f_vmfnmsub_<mode>_mask<round_name>,
3866 *avx512f_vmfnmsub_<mode>_mask3<round_name>,
3867 *avx512f_vmfnmsub_<mode>_maskz_1<round_name>,
3868 cvtusi2<ssescalarmodesuffix>32<round_name>,
3869 cvtusi2<ssescalarmodesuffix>64<round_name>, ): Replace
3870 round_nimm_predicate with round_nimm_scalr_predicate.
3871 (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
3872 avx512f_sfixupimm<mode>_mask<round_saeonly_name>,
3873 avx512er_vmrcp28<mode><round_saeonly_name>,
3874 avx512er_vmrsqrt28<mode><round_saeonly_name>,
3875 ): Replace round_saeonly_nimm_predicate with
3876 round_saeonly_nimm_scalar_predicate.
3877 (avx512dq_vmfpclass<mode><mask_scalar_merge_name>): Replace
3878 vector_operand with nonimmediate_operand.
3879 * config/i386/subst.md (round_scalar_nimm_predicate,
3880 round_saeonly_scalar_nimm_predicate): Replace
3881 vector_operand with nonimmediate_operand.
3883 2019-10-26 Hongtao Liu <hongtao.liu@intel.com>
3886 * config/i386/i386.md (*rcpsf2_sse): Add
3887 avx_partial_xmm_update, prefer m constraint for TARGET_AVX.
3888 (*rsqrtsf2_sse): Ditto.
3889 (*sqrt<mode>2_sse): Ditto.
3890 (sse4_1_round<mode>2): separate constraint vm, add
3891 avx_partail_xmm_update, prefer m constraint for TARGET_AVX.
3892 * config/i386/sse.md (*sse_vmrcpv4sf2"): New define_insn used
3894 (*<sse>_vmsqrt<mode>2<mask_scalar_name><round_scalar_name>*):
3896 (*sse_vmrsqrtv4sf2): Ditto.
3897 (*avx512f_rndscale<mode><round_saeonly_name>): Ditto.
3898 (*sse4_1_round<ssescalarmodesuffix>): Ditto.
3899 (sse4_1_round<ssescalarmodesuffix>): Add m constraint and
3900 <iptr> pointer size modifier since vround support memory operand.
3902 2019-10-18 Georg-Johann Lay <avr@gjlay.de>
3905 * config/avr/gen-avr-mmcu-specs.c (str_prefix_p): Remove unused
3908 2019-10-25 Cesar Philippidis <cesar@codesourcery.com>
3909 Tobias Burnus <tobias@codesourcery.com>
3911 * gimplify.c (oacc_default_clause): Privatize fortran common blocks.
3912 (omp_notice_variable): Defer the expansion of DECL_VALUE_EXPR for
3915 2019-10-25 Richard Biener <rguenther@suse.de>
3917 PR tree-optimization/92222
3918 * tree-vect-slp.c (_slp_oprnd_info::first_pattern): Remove.
3919 (_slp_oprnd_info::second_pattern): Likewise.
3920 (_slp_oprnd_info::any_pattern): New.
3921 (vect_create_oprnd_info): Adjust.
3922 (vect_get_and_check_slp_defs): Compute whether any stmt is
3924 (vect_build_slp_tree_2): Avoid building up a node from scalars
3925 if any of the operand defs, not just the first, is in a pattern.
3927 2019-10-25 Richard Biener <rguenther@suse.de>
3929 * tree-vect-slp.c (vect_get_and_check_slp_defs): Only fail
3930 swapping if we actually have to modify the IL on a shared stmt.
3931 (vect_build_slp_tree_2): Never fail swapping on shared stmts
3932 because we no longer modify the IL.
3934 2019-10-25 Martin Liska <mliska@suse.cz>
3936 * tree.c (dump_tree_statistics): Use sorted index 'j' and not 'i'.
3938 2019-10-25 Richard Sandiford <richard.sandiford@arm.com>
3940 * tree-vect-loop.c (vectorizable_reduction): Restrict the
3941 LOOP_VINFO_CAN_FULLY_MASK_P handling to cases that will be
3942 handled by vect_transform_reduction. Allow fully-masked loops
3943 to be used with reduction chains.
3944 * tree-vect-stmts.c (vectorizable_operation): Handle reduction
3945 operations in fully-masked loops.
3946 (vectorizable_condition): Reject EXTRACT_LAST_REDUCTION
3947 operations in fully-masked loops.
3949 2019-10-25 Richard Biener <rguenther@suse.de>
3951 * tree-vect-loop.c (vectorizable_reduction): Verify
3952 STMT_VINFO_REDUC_IDX on the to be vectorized stmts is set up
3954 * tree-vect-patterns.c (vect_mark_pattern_stmts): Transfer
3955 STMT_VINFO_REDUC_IDX from the original stmts to the pattern
3958 2019-10-24 Jakub Jelinek <jakub@redhat.com>
3960 * gimplify.h (omp_construct_selector_matches): Declare.
3961 * gimplify.c (struct gimplify_omp_ctx): Add code member.
3962 (gimplify_call_expr): Call omp_resolve_declare_variant and remap
3963 called function if needed for flag_openmp.
3964 (gimplify_scan_omp_clauses): Set ctx->code.
3965 (omp_construct_selector_matches): New function.
3966 * omp-general.h (omp_constructor_traits_to_codes,
3967 omp_context_selector_matches, omp_resolve_declare_variant): Declare.
3968 * omp-general.c (omp_constructor_traits_to_codes,
3969 omp_context_selector_matches, omp_resolve_declare_variant): New
3972 * config/arc/arc.c (hwloop_optimize): Add missing space in string
3974 * config/rx/rx.c (rx_print_operand): Likewise.
3975 * tree-vect-data-refs.c (vect_analyze_data_refs): Likewise.
3976 * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
3977 * ipa-sra.c (create_parameter_descriptors, process_scan_results):
3979 * genemit.c (emit_c_code): Likewise.
3980 * plugin.c (try_init_one_plugin): Likewise. Formatting fix.
3982 2019-10-24 Jan Hubicka <hubicka@ucw.cz>
3984 * symbols-summary.h (fast_function_summary<T *, V>::release,
3985 fast_call_summary<T *, V>::release): Free m_vector.
3987 2019-10-24 Jan Hubicka <hubicka@ucw.cz>
3989 * cgraphunit.c (symbol_table::process_new_functions): Call
3990 ipa_free_size_summary.
3991 * ipa-cp.c (ipcp_cloning_candidate_p): Update.
3992 (devirtualization_time_bonus): Update.
3993 (ipcp_propagate_stage): Update.
3994 * ipa-fnsummary.c (ipa_size_summaries): New.
3995 (ipa_fn_summary_alloc): Alloc size summary.
3996 (dump_ipa_call_summary): Update.
3997 (ipa_dump_fn_summary): Update.
3998 (analyze_function_body): Update.
3999 (compute_fn_summary): Likewise.
4000 (ipa_get_stack_frame_offset): New function.
4001 (inline_update_callee_summaries): Do not update frame offsets.
4002 (ipa_merge_fn_summary_after_inlining): Update frame offsets here;
4003 remove call and function summary.
4004 (ipa_update_overall_fn_summary): Update.
4005 (inline_read_section): Update.
4006 (ipa_fn_summary_write): Update.
4007 (ipa_free_fn_summary): Do not remove summaries.
4008 (ipa_free_size_summary): New.
4009 (release summary pass): Also run at WPA.
4010 * ipa-fnsummary.h (ipa_size_summary): Declare.
4011 (ipa_fn_summary): Remove size, self_size, stack_frame_offset,
4012 estimated_self_stack_size.
4013 (ipa_size_summary_t): New type.
4014 (ipa_size_summaries): Declare.
4015 (ipa_free_size_summary): Declare.
4016 (ipa_get_stack_frame_offset): Declare.
4017 * ipa-icf.c (sem_function::merge): Update.
4018 * ipa-inline-analysis.c (estimate_size_after_inlining): Update.
4019 (estimate_growth): Update.
4020 (growth_likely_positive): Update.
4021 (clone_inlined_nodes): Update.
4022 (inline_call): Update.
4023 * ipa-inline.c (caller_growth_limits): Update.
4024 (edge_badness): Update.
4025 (recursive_inlining): Update.
4026 (inline_small_functions): Update.
4027 (inline_to_all_callers_1): Update.
4028 * ipa-prop.h (ipa_edge_args_sum_t): Update comment.
4030 2019-10-24 Segher Boessenkool <segher@kernel.crashing.org>
4032 * config/rs6000/altivec.md (altivec_vavgu<VI_char>): Rename to...
4033 (uavg<mode>3_ceil): ... This.
4034 (altivec_vavgs<VI_char>): Rename to...
4035 (avg<mode>3_ceil): ... This.
4036 * config/rs6000/rs6000-builtin.def (VAVGUB, VAVGSB, VAVGUH, VAVGSH,
4037 VAVGUW, VAVGSW): Adjust.
4039 2019-10-24 Nathan Sidwell <nathan@acm.org>
4041 * dumpfile.c (dump_begin): Reorder decls to use RAII.
4043 2019-10-24 Martin Liska <mliska@suse.cz>
4045 * symbol-summary.h (gt_pch_nx): Mark all functions
4046 with gcc_unreachable as we do not expect to be called.
4048 2019-10-24 Richard Biener <rguenther@suse.de>
4050 * tree-vect-slp.c (vect_get_and_check_slp_defs): For reduction
4051 chains try harder with operand swapping and instead of
4052 putting a shifted chain into the reduction operands put
4053 a repetition of the final reduction op there as if we'd
4054 reassociate the expression.
4056 2019-10-24 Jan Hubicka <hubicka@ucw.cz>
4058 * ipa-reference.c (ipa_reference_optimization_summary_d): Rename
4059 statics_not_read and statics_not_written to statics_read and
4060 statics_written respectively.
4061 (no_module_statics): New static var.
4062 (ipa_reference_get_not_read_global): Rename to ...
4063 (ipa_reference_get_read_global): ... this.
4064 (ipa_reference_get_not_written_global): Rename to ...
4065 (ipa_reference_get_written_global): ... this.
4066 (dump_static_vars_set_to_file): Dump no_module_statics.
4067 (copy_static_var_set): Add for propagation parameter.
4068 (ipa_init): Initialize no_module_statics.
4069 (ipa_ref_opt_summary_t::duplicate): Update.
4070 (ipa_ref_opt_summary_t::remove): Update.
4071 (propagate): Update.
4072 (write_node_summary_p): Look correctly for bitmap differences.
4073 (ipa_reference_write_optimization_summary): Update.
4074 (ipa_reference_read_optimization_summary): Update.
4076 (ipa_reference_get_not_read_global): Rename to ...
4077 (ipa_reference_get_read_global): ... this.
4078 (ipa_reference_get_not_written_global): Rename to ...
4079 (ipa_reference_get_written_global): ... this.
4080 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Update.
4081 (call_may_clobber_ref_p_1): Update.
4083 2019-10-24 Jozef Lawrynowicz <jozef.l@mittosystems.com>
4085 * config/msp430/msp430.c (msp430_hard_regno_nregs_has_padding): Remove
4087 (msp430_hard_regno_nregs_with_padding): Remove.
4089 2019-10-24 Jozef Lawrynowicz <jozef.l@mittosystems.com>
4091 * config/msp430/constraints.md: Allow post_inc for "Ya" constraint.
4092 * config/msp430/msp430.md (430x_shift_left): Use RLAM when the constant
4093 shift amount is between 1 and 4.
4094 (430x_arithmetic_shift_right): Use RRAM when the constant shift amount
4097 2019-10-24 Richard Biener <rguenther@suse.de>
4099 PR tree-optimization/92205
4100 * tree-vect-loop.c (vectorizable_reduction): Restrict
4101 search for alternate vectype_in to lane-reducing patterns
4104 2019-10-24 Richard Biener <rguenther@suse.de>
4106 PR tree-optimization/92203
4107 * treee-ssa-sccvn.c (eliminate_dom_walker::eliminate_stmt):
4108 Skip eliminating conversion stmts inserted by insertion.
4110 2019-10-24 Ilya Leoshkevich <iii@linux.ibm.com>
4112 * config/s390/s390.c (s390_get_thread_pointer): Use
4113 gen_get_thread_pointer.
4114 (s390_expand_split_stack_prologue): Likewise.
4115 * config/s390/s390.md (UNSPEC_GET_TP): New UNSPEC.
4116 (*get_tp_31): New 31-bit splitter for UNSPEC_GET_TP.
4117 (*get_tp_64): New 64-bit splitter for UNSPEC_GET_TP.
4118 (get_thread_pointer<mode>): Use UNSPEC_GET_TP, use
4121 2019-10-24 Richard Biener <rguenther@suse.de>
4123 * tree-vect-slp.c (vect_analyze_slp): When reduction group
4124 SLP discovery fails try to handle the reduction as part
4125 of SLP reduction discovery.
4127 2019-10-23 Michael Meissner <meissner@linux.ibm.com>
4129 * config/rs6000/rs6000-protos.h (rs6000_adjust_insn_length): New
4131 * config/rs6000/rs6000.c (rs6000_insn_cost): Use num_insns insn
4132 attribute if it exists, rather than the insn size. If we use the
4133 insn size, adjust the size to remove the extra size that prefixed
4135 (rs6000_adjust_insn_length): New function.
4136 * config/rs6000/rs6000.h (ADJUST_INSN_LENGTH): New target hook to
4137 update the instruction sized if prefixed instructions are used.
4138 * config/rs6000/rs6000.md (prefixed_length attribute): Delete.
4139 (non_prefixed_length attribute): Delete.
4140 (num_insns attribute): New insn attribute to return the number of
4142 (max_prefixed_insns attribute): New insn attribute to return the
4143 maximum number of prefixed instructions in an insn.
4144 (length attribute): Do not adjust for prefix instructions here,
4145 punt to ADJUST_INSN_LENGTH.
4146 (mov<mode>_64bit): Set max_prefixed_insns and num_insns.
4147 (movtd_64bit_nodm): Set max_prefixed_insns and num_insns.
4148 (mov<mode>_ppc64): Set max_prefixed_insns and num_insns.
4149 * config/rs6000/vsx.md: (vsx_mov<mode>_64bit): Set
4150 max_prefixed_insns and num_insns.
4152 * config/rs6000/rs6000.md (mov<mode>_64bit_dm): Reformat.
4153 (movtd_64bit_nodm): Reformat.
4154 (mov<mode>_32bit): Reformat.
4155 (mov<mode>_softfloat): Reformat.
4156 (FMOVE128_GPR splitter): Reformat.
4157 (DIFD splitter): Reformat.
4158 (TI2 splitter): Reformat.
4159 * config/rs6000/predicates.md (lwa_operand): If the bottom two
4160 bits of the offset for the memory address are non-zero, use PLWA
4161 if prefixed instructions are available.
4163 2019-10-23 Jan Hubicka <hubicka@ucw.cz>
4165 * lto-streamer-out.c (cmp_symbol_files): Watch for overflow.
4167 2019-10-23 Jan Hubicka <hubicka@ucw.cz>
4169 * ipa-reference.c (varpool_removal_hook, ipa_reference_c_finalize): Fix
4172 2019-10-23 Jan Hubicka <hubicka@ucw.cz>
4174 * lto-streamer-out.c (output_constructor): Push CTORS_OUT timevar.
4175 (cmp_symbol_files): New.
4176 (lto_output): Copy sections in file order.
4177 * lto-streamer.h (lto_file_decl_data): Add field order.
4179 2019-10-23 Jan Hubicka <hubicka@ucw.cz>
4181 * ipa-reference.h (ipa_reference_var_uid): Move offline.
4182 * ipa-reference.c (reference_vars_map_t): new type.
4183 (ipa_reference_vars_map, ipa_reference_vars_uids): New static vars.
4184 (ipa_reference_var_uid): Implement.
4185 (varpool_node_hooks): New static var.
4186 (varpool_removal_hook): New function.
4187 (is_improper): Do not check bitmap for id==-1
4188 (get_static_name): Update.
4189 (ipa_init): Initialize new datastructures.
4190 (analyze_function): Do not recompute ids.
4191 (propagate): Free reference_vars_to_consider.
4192 (stream_out_bitmap): Update.
4193 (ipa_reference_read_optimization_summary): Update.
4195 2019-10-23 qing zhao <qing.zhao@oracle.com>
4197 PR gcov-profile/91971
4198 * coverage.c (coverage_init): Mangle the full path of filename when
4199 filename is a absolute path.
4201 2019-10-23 Jozef Lawrynowicz <jozef.l@mittosystems.com>
4203 * config/msp430/msp430-protos.h (msp430_has_hwmult): New.
4204 * config/msp430/msp430.c (msp430_no_hwmult): Remove.
4205 (msp430_has_hwmult): New.
4206 (msp430_output_labelref):
4207 s/msp430_hwmult_type != MSP430_HWMULT_NONE/msp430_has_hwmult ()/
4208 * config/msp430/msp430.md (mulhisi3): Likewise.
4209 (umulhisi3): Likewise.
4210 (mulsidi3): Likewise.
4211 (umulsidi3): Likewise.
4213 2019-10-23 Jan Hubicka <hubicka@ucw.cz>
4216 * params.def (inline-heuristics-hint-percent): Set to 600.
4218 2019-10-23 Richard Biener <rguenther@suse.de>
4220 PR tree-optimization/65930
4221 * tree-vect-loop.c (check_reduction_path): Allow conversions
4222 that only change the sign.
4223 (vectorizable_reduction): Relax latch def stmts we handle further.
4225 2019-10-23 Jakub Jelinek <jakub@redhat.com>
4228 * tree-ssa-loop-ivopts.c (get_debug_computation_at): New function.
4229 (remove_unused_ivs): Use it instead of get_computation_at. When
4230 choosing best candidate, only consider candidates where
4231 get_debug_computation_at actually returns non-NULL.
4233 2019-10-23 Eric Botcazou <ebotcazou@adacore.com>
4235 PR tree-optimization/92131
4236 * tree-vrp.c (extract_range_from_plus_minus_expr): If the resulting
4237 range would be symbolic, drop to varying for any explicit overflow
4238 in the constant part or if neither range is a singleton.
4240 2019-10-23 Martin Liska <mliska@suse.cz>
4243 * fibonacci_heap.h (fibonacci_node::fibonacci_node):
4246 2019-10-23 Richard Sandiford <richard.sandiford@arm.com>
4248 * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Use
4249 int_mode_for_mode rather than mode_for_int_vector for scalars.
4251 2019-10-23 Richard Biener <rguenther@suse.de>
4253 PR tree-optimization/92179
4254 * tree-vect-stmts.c (vectorizable_shift): For shift args
4255 that are all the same remove type restriction in the SLP case.
4256 Adjust SLP code to handle converting of the shift arg to
4257 only apply in case the modes are different.
4259 2019-10-23 Martin Liska <mliska@suse.cz>
4262 * ipa-inline.c (recursive_inlining): Do not print
4263 when curr->count is not initialized.
4265 2019-10-23 Richard Biener <rguenther@suse.de>
4267 * tree-vect-slp.c (vect_build_slp_tree_2): Do not build
4268 op from scalars in case there's a constant operand in its
4271 2019-10-23 Iain Sandoe <iain@sandoe.co.uk>
4273 * config/rs6000/darwin.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Guard
4274 against out of range max skip or log values.
4276 2019-10-22 Giuliano Belinassi <giuliano.belinassi@usp.br>
4278 * cgraph.c (dump_graphviz): Change name to dump_name
4280 2019-10-22 Richard Earnshaw <rearnsha@arm.com>
4282 * config/arm/arm.md (rsbsi_carryin_reg): New pattern.
4283 * config/arm/arm.c (arm_rtx_costs_internal, case MINUS): Handle
4284 subtraction from a carry operation.
4286 2019-10-22 Richard Earnshaw <rearnsha@arm.com>
4288 * config/arm/predicates.md (arm_borrow_operation): Handle CC_ADCmode.
4290 2019-10-22 Richard Biener <rguenther@suse.de>
4292 PR tree-optimization/92173
4293 * tree-vect-loop.c (vectorizable_reduction): If
4294 vect_transform_reduction cannot handle code-generation try without
4295 the single-def-use-cycle optimization. Pass optab_vector to
4296 optab_for_tree_code to get vector shifts as that's what we'd
4299 2019-10-22 Michael Matz <matz@suse.de>
4302 * gimple-loop-jam.c (any_access_function_variant_p): New function.
4303 (adjust_unroll_factor): Use it to constrain safety, new parameter.
4304 (tree_loop_unroll_and_jam): Adjust call and profitable unroll factor.
4306 2019-10-22 Richard Biener <rguenther@suse.de>
4308 PR tree-optimization/92173
4309 * tree-vect-loop.c (vectorizable_reduction): If
4310 vect_transform_reduction cannot handle code-generation try without
4311 the single-def-use-cycle optimization. Pass optab_vector to
4312 optab_for_tree_code to get vector shifts as that's what we'd
4315 2019-10-22 Martin Liska <mliska@suse.cz>
4317 * diagnostic-format-json.cc (json_from_expanded_location):
4318 Use json::integer_number.
4319 * gcov.c (output_intermediate_json_line): Use new
4320 json::integer_number.
4321 (output_json_intermediate_file): Likewise.
4322 * json.cc (number::print): Move to ...
4323 (float_number::print): ... this.
4324 (integer_number::print): New.
4325 (test_writing_numbers): Move to ...
4326 (test_writing_float_numbers): ... this.
4327 (test_writing_integer_numbers): New.
4328 (json_cc_tests): Register test_writing_integer_numbers.
4329 * json.h (class value): Add forward declaration
4330 for float_number and integer_number.
4331 (enum kind): Add JSON_INTEGER and JSON_FLOAT.
4332 (class number): Move to ...
4333 (class float_number): ... this.
4334 (class integer_number): New.
4335 * optinfo-emit-json.cc (optrecord_json_writer::impl_location_to_json):
4336 Use json::integer_number.
4337 (optrecord_json_writer::location_to_json): Likewise.
4338 (optrecord_json_writer::profile_count_to_json): Likewise.
4339 (optrecord_json_writer::pass_to_json): Likewise.
4341 2019-10-22 Richard Sandiford <richard.sandiford@arm.com>
4343 * tree-vect-slp.c (vect_slp_bb_region): Check whether
4344 autodetected_vector_size rather than vector_size is zero.
4345 * tree-vect-loop.c (vect_analyze_loop): Likewise.
4346 Set autodetected_vector_size immediately after calling
4347 vect_analyze_loop_2. Check for a fatal error before advancing
4350 2019-10-21 Jason Merrill <jason@redhat.com>
4352 * lock-and-run.sh: Check for process existence rather than timeout.
4354 2019-10-21 Jozef Lawrynowicz <jozef.l@mittosystems.com>
4356 * expr.c (expand_expr_real_2): Don't widen constant op1 when expanding
4357 widening multiplication.
4359 2019-10-21 Richard Earnshaw <rearnsha@arm.com>
4361 * config/arm/iterators.md (t2_binop0): Fix typo in comment.
4362 * config/arm/arm.md (addsi3_carryin_shift): Simplify selection of the
4364 (subsi3_carryin_shift): Separate into register and constant controlled
4365 alternatives. Use shift_amount_operand for operand 4. Set shift
4366 attribute and simplify type attribute.
4367 (subsi3_carryin_shift_alt): Likewise.
4368 (rsbsi3_carryin_shift): Likewise.
4369 (rsbsi3_carryin_shift_alt): Likewise.
4370 (andsi_not_shiftsi_si): Enable for TARGET_32BIT. Separate constant
4371 and register controlled shifts into distinct alternatives.
4372 (andsi_not_shiftsi_si_scc_no_reuse): Likewise.
4373 (andsi_not_shiftsi_si_scc): Likewise.
4374 (arm_cmpsi_negshiftsi_si): Likewise.
4375 (not_shiftsi): Remove redundant M constraint from alternative 1.
4376 (not_shiftsi_compare0): Likewise.
4377 (arm_cmpsi_insn): Remove redundant alternative 2.
4378 (cmpsi_shift_swp): Likewise.
4379 (sub_shiftsi): Likewise.
4380 (sub_shiftsi_compare0_scratch): Likewise.
4381 * config/arm/thumb2.md (thumb_andsi_not_shiftsi_si): Delete pattern.
4382 (thumb2_cmpsi_neg_shiftsi): Likewise.
4384 2019-10-21 Richard Biener <rguenther@suse.de>
4386 PR tree-optimization/92162
4387 * tree-vect-loop.c (vect_create_epilog_for_reduction): Lookup
4388 STMT_VINFO_REDUC_IDX in reduc_info.
4389 * tree-vect-stmts.c (vectorizable_condition): Likewise.
4391 2019-10-21 Richard Biener <rguenther@suse.de>
4393 * tree-vectorizer.h (_slp_tree::ops): New member.
4394 (SLP_TREE_SCALAR_OPS): New.
4395 (vect_get_slp_defs): Adjust prototype.
4396 * tree-vect-slp.c (vect_free_slp_tree): Release
4397 SLP_TREE_SCALAR_OPS.
4398 (vect_create_new_slp_node): Initialize it. New overload for
4399 initializing by an operands array.
4400 (_slp_oprnd_info::ops): New member.
4401 (vect_create_oprnd_info): Initialize it.
4402 (vect_free_oprnd_info): Release it.
4403 (vect_get_and_check_slp_defs): Populate the operands array.
4404 Do not swap operands in the IL when not necessary.
4405 (vect_build_slp_tree_2): Build SLP nodes for invariant operands.
4406 Record SLP_TREE_SCALAR_OPS for all invariant nodes. Also
4407 swap operands in the operands array. Do not swap operands in
4409 (vect_slp_rearrange_stmts): Re-arrange SLP_TREE_SCALAR_OPS as well.
4410 (vect_gather_slp_loads): Fix.
4411 (vect_detect_hybrid_slp_stmts): Likewise.
4412 (vect_slp_analyze_node_operations_1): Search for a internal
4413 def child for computing reduction SLP_TREE_NUMBER_OF_VEC_STMTS.
4414 (vect_slp_analyze_node_operations): Skip ops-only stmts for
4415 the def-type push/pop dance.
4416 (vect_get_constant_vectors): Compute number_of_vectors here.
4417 Use SLP_TREE_SCALAR_OPS and simplify greatly.
4418 (vect_get_slp_vect_defs): Use gimple_get_lhs also for PHIs.
4419 (vect_get_slp_defs): Simplify greatly.
4420 * tree-vect-loop.c (vectorize_fold_left_reduction): Simplify.
4421 (vect_transform_reduction): Likewise.
4422 * tree-vect-stmts.c (vect_get_vec_defs): Simplify.
4423 (vectorizable_call): Likewise.
4424 (vectorizable_operation): Likewise.
4425 (vectorizable_load): Likewise.
4426 (vectorizable_condition): Likewise.
4427 (vectorizable_comparison): Likewise.
4429 2019-10-21 Richard Biener <rguenther@suse.de>
4431 PR tree-optimization/92161
4432 * tree-vect-loop.c (vect_analyze_loop_2): Reset stmts def-type
4435 2019-10-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4437 * config/aarch64/aarch64.md (UNSPEC_RNDR, UNSPEC_RNDRRS): Define.
4438 (aarch64_rndr): New define_insn.
4439 (aarch64_rndrrs): Likewise.
4440 * config/aarch64/aarch64.h (AARCH64_ISA_RNG): Define.
4441 (TARGET_RNG): Likewise.
4442 * config/aarch64/aarch64.c (aarch64_expand_builtin): Use IGNORE
4444 * config/aarch64/aarch64-protos.h (aarch64_general_expand_builtin):
4445 Add fourth argument in prototype.
4446 * config/aarch64/aarch64-builtins.c (enum aarch64_builtins):
4447 Add AARCH64_BUILTIN_RNG_RNDR, AARCH64_BUILTIN_RNG_RNDRRS.
4448 (aarch64_init_rng_builtins): Define.
4449 (aarch64_general_init_builtins): Call aarch64_init_rng_builtins.
4450 (aarch64_expand_rng_builtin): Define.
4451 (aarch64_general_expand_builtin): Use IGNORE argument, handle
4453 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Define
4454 __ARM_FEATURE_RNG when TARGET_RNG.
4455 * config/aarch64/arm_acle.h (__rndr, __rndrrs): Define.
4457 2019-10-21 Andre Vieira <andre.simoesdiasvieira@arm.com>
4459 * tree-vect-stmts (ensure_base_align): Only change alignment if new
4460 alignment is more restrictive.
4462 2019-10-21 Richard Sandiford <richard.sandiford@arm.com>
4464 * tree-vectorizer.h (vec_info::vector_size): New member variable.
4465 (vect_update_max_nunits): Update comment.
4466 (current_vector_size): Delete.
4467 * tree-vect-stmts.c (current_vector_size): Likewise.
4468 (get_vectype_for_scalar_type): Use vec_info::vector_size instead
4469 of current_vector_size.
4470 (get_mask_type_for_scalar_type): Likewise.
4471 * tree-vectorizer.c (try_vectorize_loop_1): Likewise.
4472 * tree-vect-loop.c (vect_update_vf_for_slp): Likewise.
4473 (vect_analyze_loop, vect_halve_mask_nunits): Likewise.
4474 (vect_double_mask_nunits, vect_transform_loop): Likewise.
4475 * tree-vect-slp.c (can_duplicate_and_interleave_p): Likewise.
4476 (vect_make_slp_decision, vect_slp_bb_region): Likewise.
4478 2019-10-21 Richard Sandiford <richard.sandiford@arm.com>
4480 * tree-vectorizer.h (vect_double_mask_nunits): Take a vec_info.
4481 * tree-vect-loop.c (vect_double_mask_nunits): Likewise.
4482 * tree-vect-stmts.c (supportable_narrowing_operation): Update call
4485 2019-10-21 Richard Sandiford <richard.sandiford@arm.com>
4487 * tree-vectorizer.h (vect_halve_mask_nunits): Take a vec_info.
4488 * tree-vect-loop.c (vect_halve_mask_nunits): Likewise.
4489 * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks): Update
4491 * tree-vect-stmts.c (supportable_widening_operation): Likewise.
4493 2019-10-21 Richard Sandiford <richard.sandiford@arm.com>
4495 * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks): Take
4497 (vect_set_loop_condition_masked): Update call accordingly.
4499 2019-10-21 Richard Sandiford <richard.sandiford@arm.com>
4501 * tree-vectorizer.h (supportable_narrowing_operation): Take a vec_info.
4502 * tree-vect-stmts.c (supportable_narrowing_operation): Likewise.
4503 (simple_integer_narrowing): Update call accordingly.
4504 (vectorizable_conversion): Likewise.
4506 2019-10-21 Richard Sandiford <richard.sandiford@arm.com>
4508 * tree-vect-stmts.c (simple_integer_narrowing): Take a vec_info.
4509 (vectorizable_call): Update call accordingly.
4511 2019-10-21 Richard Sandiford <richard.sandiford@arm.com>
4513 * tree-vectorizer.h (can_duplicate_and_interleave_p): Take a vec_info.
4514 * tree-vect-slp.c (can_duplicate_and_interleave_p): Likewise.
4515 (duplicate_and_interleave): Update call accordingly.
4516 * tree-vect-loop.c (vectorizable_reduction): Likewise.
4518 2019-10-21 Richard Sandiford <richard.sandiford@arm.com>
4520 * tree-vectorizer.h (duplicate_and_interleave): Take a vec_info.
4521 * tree-vect-slp.c (duplicate_and_interleave): Likewise.
4522 (vect_get_constant_vectors): Update call accordingly.
4523 * tree-vect-loop.c (get_initial_defs_for_reduction): Likewise.
4525 2019-10-21 Richard Sandiford <richard.sandiford@arm.com>
4527 * tree-vectorizer.h (get_vectype_for_scalar_type): Take a vec_info.
4528 * tree-vect-stmts.c (get_vectype_for_scalar_type): Likewise.
4529 (vect_prologue_cost_for_slp_op): Update call accordingly.
4530 (vect_get_vec_def_for_operand, vect_get_gather_scatter_ops)
4531 (vect_get_strided_load_store_ops, vectorizable_simd_clone_call)
4532 (vect_supportable_shift, vect_is_simple_cond, vectorizable_comparison)
4533 (get_mask_type_for_scalar_type): Likewise.
4534 (vect_get_vector_types_for_stmt): Likewise.
4535 * tree-vect-data-refs.c (vect_analyze_data_refs): Likewise.
4536 * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
4537 (get_initial_def_for_reduction, build_vect_cond_expr): Likewise.
4538 * tree-vect-patterns.c (vect_supportable_direct_optab_p): Likewise.
4539 (vect_split_statement, vect_convert_input): Likewise.
4540 (vect_recog_widen_op_pattern, vect_recog_pow_pattern): Likewise.
4541 (vect_recog_over_widening_pattern, vect_recog_mulhs_pattern): Likewise.
4542 (vect_recog_average_pattern, vect_recog_cast_forwprop_pattern)
4543 (vect_recog_rotate_pattern, vect_recog_vector_vector_shift_pattern)
4544 (vect_synth_mult_by_constant, vect_recog_mult_pattern): Likewise.
4545 (vect_recog_divmod_pattern, vect_recog_mixed_size_cond_pattern)
4546 (check_bool_pattern, adjust_bool_pattern_cast, adjust_bool_pattern)
4547 (search_type_for_mask_1, vect_recog_bool_pattern): Likewise.
4548 (vect_recog_mask_conversion_pattern): Likewise.
4549 (vect_add_conversion_to_pattern): Likewise.
4550 (vect_recog_gather_scatter_pattern): Likewise.
4551 * tree-vect-slp.c (vect_build_slp_tree_2): Likewise.
4552 (vect_analyze_slp_instance, vect_get_constant_vectors): Likewise.
4554 2019-10-21 Richard Sandiford <richard.sandiford@arm.com>
4556 * tree-vectorizer.h (get_mask_type_for_scalar_type): Take a vec_info.
4557 * tree-vect-stmts.c (get_mask_type_for_scalar_type): Likewise.
4558 (vect_check_load_store_mask): Update call accordingly.
4559 (vect_get_mask_type_for_stmt): Likewise.
4560 * tree-vect-patterns.c (check_bool_pattern): Likewise.
4561 (search_type_for_mask_1, vect_recog_mask_conversion_pattern): Likewise.
4562 (vect_convert_mask_for_vectype): Likewise.
4564 2019-10-21 Richard Sandiford <richard.sandiford@arm.com>
4566 * tree-vect-patterns.c (vect_supportable_direct_optab_p): Take
4568 (vect_recog_dot_prod_pattern): Update call accordingly.
4569 (vect_recog_sad_pattern, vect_recog_pow_pattern): Likewise.
4570 (vect_recog_widen_sum_pattern): Likewise.
4572 2019-10-21 Richard Sandiford <richard.sandiford@arm.com>
4574 * tree-vectorizer.h (vect_supportable_shift): Take a vec_info.
4575 * tree-vect-stmts.c (vect_supportable_shift): Likewise.
4576 * tree-vect-patterns.c (vect_synth_mult_by_constant): Update call
4579 2019-10-21 Richard Sandiford <richard.sandiford@arm.com>
4581 * tree-vectorizer.c (get_vec_alignment_for_array_type): Use
4582 get_vectype_for_scalar_type_and_size instead of
4583 get_vectype_for_scalar_type.
4585 2019-10-20 Bernd Edlinger <bernd.edlinger@hotmail.de>
4587 * common.opt (-fcommon): Fix description.
4589 2019-10-20 Jakub Jelinek <jakub@redhat.com>
4591 * config/i386/i386-protos.h (ix86_pre_reload_split): Declare.
4592 * config/i386/i386.c (ix86_pre_reload_split): New function.
4593 * config/i386/i386.md (*fix_trunc<mode>_i387_1, *add<mode>3_eq,
4594 *add<mode>3_ne, *add<mode>3_eq_0, *add<mode>3_ne_0, *add<mode>3_eq,
4595 *add<mode>3_ne, *add<mode>3_eq_1, *add<mode>3_eq_0, *add<mode>3_ne_0,
4596 *anddi3_doubleword, *andndi3_doubleword, *<code>di3_doubleword,
4597 *one_cmpldi2_doubleword, *ashl<dwi>3_doubleword_mask,
4598 *ashl<dwi>3_doubleword_mask_1, *ashl<mode>3_mask, *ashl<mode>3_mask_1,
4599 *<shift_insn><mode>3_mask, *<shift_insn><mode>3_mask_1,
4600 *<shift_insn><dwi>3_doubleword_mask,
4601 *<shift_insn><dwi>3_doubleword_mask_1, *<rotate_insn><mode>3_mask,
4602 *<rotate_insn><mode>3_mask_1, *<btsc><mode>_mask, *<btsc><mode>_mask_1,
4603 *btr<mode>_mask, *btr<mode>_mask_1, *jcc_bt<mode>, *jcc_bt<mode>_1,
4604 *jcc_bt<mode>_mask, *popcounthi2_1, frndintxf2_<rounding>,
4605 *fist<mode>2_<rounding>_1, *<code><mode>3_1, *<code>di3_doubleword):
4606 Use ix86_pre_reload_split instead of can_create_pseudo_p in condition.
4607 * config/i386/sse.md (*sse4_1_<code>v8qiv8hi2<mask_name>_2,
4608 *avx2_<code>v8qiv8si2<mask_name>_2,
4609 *sse4_1_<code>v4qiv4si2<mask_name>_2,
4610 *sse4_1_<code>v4hiv4si2<mask_name>_2,
4611 *avx512f_<code>v8qiv8di2<mask_name>_2,
4612 *avx2_<code>v4qiv4di2<mask_name>_2, *avx2_<code>v4hiv4di2<mask_name>_2,
4613 *sse4_1_<code>v2hiv2di2<mask_name>_2,
4614 *sse4_1_<code>v2siv2di2<mask_name>_2, sse4_2_pcmpestr,
4615 sse4_2_pcmpistr): Likewise.
4617 2019-10-20 Gerald Pfeifer <gerald@pfeifer.com>
4619 * doc/install.texi (Configuration, --enable-objc-gc): hboehm.info
4620 now defaults to https.
4622 2019-10-20 Jan Hubicka <hubicka@ucw.cz>
4624 * tree-ssa-alias.c (nonoverlapping_refs_since_match_p): Do not
4625 skip non-zero array accesses.
4627 2019-10-20 Richard Sandiford <richard.sandiford@arm.com>
4629 * tree-vect-slp.c (vect_slp_analyze_bb_1): Take a bb_vec_info
4630 and return a boolean success value. Move the allocation and
4631 initialization of the bb_vec_info to...
4632 (vect_slp_bb_region): ...here. Update call accordingly.
4633 (vect_slp_bb): Apply PARAM_SLP_MAX_INSNS_IN_BB here rather
4634 than in vect_slp_analyze_bb_1.
4636 2019-10-20 Richard Sandiford <richard.sandiford@arm.com>
4638 * tree-vect-slp.c (vect_slp_analyze_bb_1): Call save_datarefs
4639 when processing the given datarefs for the first time and
4640 check_datarefs subsequently.
4641 (vect_slp_bb_region): New function, split out of...
4642 (vect_slp_bb): ...here. Don't recompute the region bounds and
4643 dataref sets when retrying with a different vector size.
4645 2019-10-19 Jakub Jelinek <jakub@redhat.com>
4646 Uroš Bizjak <ubizjak@gmail.com>
4649 * config/i386/predicates.md (int_nonimmediate_operand): New special
4651 * config/i386/i386.md (*add<mode>3_eq, *add<mode>3_ne,
4652 *add<mode>3_eq_0, *add<mode>3_ne_0, *sub<mode>3_eq, *sub<mode>3_ne,
4653 *sub<mode>3_eq_1, *sub<mode>3_eq_0, *sub<mode>3_ne_0): New
4654 define_insn_and_split patterns.
4656 2019-10-19 Iain Sandoe <iain@sandoe.co.uk>
4658 * config/rs6000/rs6000.md: Delete out--of-date comment about
4659 special-casing integer loads.
4661 2019-10-19 JeanHeyd Meneide <phdofthehouse@gmail.com>
4663 * escaped_string.h (escaped_string): New header.
4664 * tree.c (escaped_string): Remove escaped_string class.
4666 2019-10-18 Martin Sebor <msebor@redhat.com>
4668 PR tree-optimization/92157
4669 * tree-ssa-strlen.c (handle_builtin_string_cmp): Be prepared for
4670 compute_string_length to return a negative result.
4672 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4674 * config/arm/arm.md (negv<SIDI:mode>3): New expansion rule.
4675 (negvsi3, negvdi3): Delete.
4676 (negdi2_compare): Delete.
4678 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4680 * config/arm/arm.md (subvdi4): Decompose calculation into 32-bit
4682 (subdi3_compare1): Delete pattern.
4683 (subvsi3_borrow): New insn pattern.
4684 (subvsi3_borrow_imm): Likewise.
4686 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4688 * config/arm/arm.md (subv<mode>4): Delete.
4689 (subvdi4): New expander pattern.
4690 (subvsi4): Likewise. Handle some immediate values.
4691 (subvsi3_intmin): New insn pattern.
4692 (subvsi3): Likewise.
4693 (subvsi3_imm1): Likewise.
4694 * config/arm/arm.c (select_cc_mode): Also allow minus for CC_V
4697 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4699 * config/arm/arm.md (usubvdi4): Allow registers or integers for
4700 incoming operands. Early split the calculation into SImode
4702 (usubvsi3_borrow): New insn pattern.
4703 (usubvsi3_borrow_imm): Likewise.
4705 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4707 * config/arm/arm.md (usubv<mode>4): Delete expansion.
4708 (usubvsi4): New pattern. Allow some immediate values for inputs.
4709 (usubvdi4): New pattern.
4711 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4713 * config/arm/arm.c (arm_select_cc_mode): Allow either the first
4714 or second operand of the PLUS inside a DImode equality test to be
4715 sign-extend when selecting CC_Vmode.
4716 * config/arm/arm.md (addvdi4): Early-split the operation into SImode
4718 (addsi3_cin_vout_reg, addsi3_cin_vout_imm, addsi3_cin_vout_0): New
4720 (addsi3_cin_vout_reg_insn, addsi3_cin_vout_imm_insn): New patterns.
4721 (addsi3_cin_vout_0): Likewise.
4722 (adddi3_compareV): Delete.
4724 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4726 * config/arm/arm.md (addsi3_compareV_reg_nosum): New insn.
4727 (addsi3_compareV_imm_nosum): New insn. Also add peephole2 patterns
4728 to transform this back into the summation version when that leads
4731 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4733 * config/arm/arm.md (addv<mode>4): Delete.
4734 (addvsi4): New pattern. Handle immediate values that the architecture
4736 (addvdi4): New pattern.
4737 (addsi3_compareV): Rename to ...
4738 (addsi3_compareV_reg): ... this. Add constraints for thumb2 variants
4739 and use COMPARE rather than NE.
4740 (addsi3_compareV_imm): New pattern.
4741 * config/arm/arm.c (arm_select_cc_mode): Return CC_Vmode for
4742 a signed-overflow check.
4744 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4746 * config/arm/arm-modes.def (CC_ADC): New CC mode.
4747 * config/arm/arm.c (arm_select_cc_mode): Detect selection of
4749 (maybe_get_arm_condition_code): Handle CC_ADCmode.
4750 * config/arm/arm.md (uaddvdi4): Early expansion of unsigned addition
4752 (addsi3_cin_cout_reg, addsi3_cin_cout_imm, addsi3_cin_cout_0): New
4754 (addsi3_cin_cout_reg_insn, addsi3_cin_cout_0_insn): New insn patterns
4755 (addsi3_cin_cout_imm_insn): Likewise.
4756 (adddi3_compareC): Delete insn.
4757 * config/arm/predicates.md (arm_carry_operation): Handle CC_ADCmode.
4759 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4761 * config/arm/arm.md (adddi3): Call gen_addsi3_compare_op1.
4762 * (uaddv<mode>4): Delete expansion pattern.
4763 (uaddvsi4): New pattern.
4764 (uaddvdi4): Likewise.
4765 (addsi3_compareC): Delete pattern, change callers to use
4767 (addsi3_compare_op1): No-longer anonymous. Clean up constraints to
4768 reduce the number of alternatives and re-work type attribute handling.
4769 (addsi3_compare_op2): Clean up constraints to reduce the number of
4770 alternatives and re-work type attribute handling.
4771 (compare_addsi2_op0): Likewise.
4772 (compare_addsi2_op1): Likewise.
4774 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4776 * config/arm/arm-modes.def (CC_NCV, CC_CZ): Delete CC modes.
4777 * config/arm/arm.c (arm_select_cc_mode): Remove old selection code
4778 for DImode operands.
4779 (arm_gen_dicompare_reg): Remove unreachable expansion code.
4780 (maybe_get_arm_condition_code): Remove support for CC_CZmode and
4782 * config/arm/arm.md (arm_cmpdi_insn): Delete.
4783 (arm_cmpdi_unsigned): Delete.
4785 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4787 * config/arm/arm.c (arm_const_double_prefer_rsbs_rsc): New function.
4788 (arm_canonicalize_comparison): For GT/LE/GTU/GEU, use the constant
4789 unchanged only if that will be cheaper.
4790 (arm_select_cc_mode): Recognize a swapped comparison that will
4791 be regenerated using RSBS or RSCS. Relax restriction on selecting
4793 (arm_gen_dicompare_reg): Handle LE/GT/LEU/GEU comparisons against
4795 (arm_gen_compare_reg): Handle compare (CONST, X) when the mode
4797 (maybe_get_arm_condition_code): CC_RSBmode now returns the same codes
4799 * config/arm/arm.md (rsb_imm_compare_scratch): New pattern.
4800 (rscsi3_<CC_EXTEND>out_scratch): New pattern.
4802 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4804 * config/arm/arm-modes.def (CC_NV, CC_B): New CC modes.
4805 * config/arm/arm.c (arm_select_cc_mode): Recognize constructs that
4807 (arm_gen_dicompare_reg): New code to early expand the sub-operations
4808 of EQ, NE, LT, GE, LTU and GEU.
4809 * config/arm/iterators.md (CC_EXTEND): New code attribute.
4810 * config/arm/predicates.md (arm_adcimm_operand): New predicate..
4811 * config/arm/arm.md (cmpsi3_carryin_<CC_EXTEND>out): New pattern.
4812 (cmpsi3_imm_carryin_<CC_EXTEND>out): Likewise.
4813 (cmpsi3_0_carryin_<CC_EXTEND>out): Likewise.
4815 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4817 * config/arm/arm.md (cbranchdi4): Accept reg_or_int_operand for
4819 (cstoredi4): Similarly, but for operand 3.
4820 * config/arm/arm.c (arm_canoncialize_comparison): Allow
4821 canonicalization of unsigned compares with a constant on Arm.
4822 Prefer using const+1 and adjusting the comparison over swapping the
4823 operands whenever the original constant was not valid.
4824 (arm_gen_dicompare_reg): If Y is not a valid operand, force it to a
4826 (arm_validize_comparison): Do not force invalid DImode operands to
4829 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4831 * config/arm/arm.c (arm_select_cc_mode): For DImode equality tests
4832 return CC_Zmode if comparing against a constant where one word is
4834 (arm_gen_compare_reg): Split DImode handling to ...
4835 (arm_gen_dicompare_reg): ... here. Handle equality comparisons
4836 against simple constants.
4837 * config/arm/arm.md (arm_cmpdi_zero): Delete pattern.
4839 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4841 * config/arm/arm.md (subsi3_carryin_shift_alt): New pattern.
4842 (rsbsi3_carryin_shift_alt): Likewise.
4844 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4846 * config/arm/arm.md (negscc_borrow): New pattern.
4847 (mov_negscc): Don't split if the insn would match negscc_borrow.
4848 * config/arm/thumb2.md (thumb2_mov_negscc): Likewise.
4849 (thumb2_mov_negscc_strict_it): Likewise.
4851 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4853 * config/arm/arm.c (arm_insn_cost): New function.
4854 (TARGET_INSN_COST): Override default definition.
4856 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4858 * config/arm/arm.c (arm_rtx_costs_internal, case MINUS): Handle
4861 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4863 * config/arm/arm.c (strip_carry_operation): New function.
4864 (arm_rtx_costs_internal, case PLUS): Handle addtion with carry-in
4867 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4869 * config/arm/predicates.md (arm_carry_operation): New special
4871 * config/arm/iterators.md (LTUGEU): Delete iterator.
4872 (cnb): Delete code attribute.
4873 (optab): Delete ltu and geu elements.
4874 * config/arm/arm.md (addsi3_carryin): Renamed from
4875 addsi3_carryin_<optab>. Remove iterator and use arm_carry_operand.
4876 (add0si3_carryin): Similarly, but from add0si3_carryin_<optab>.
4877 (addsi3_carryin_alt2): Similarly, but from addsi3_carryin_alt2_<optab>.
4878 (addsi3_carryin_clobercc): Similarly.
4879 (addsi3_carryin_shift): Similarly. Do not allow register shifts in
4882 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4884 * config/arm/arm.md (arm_subdi3): Delete insn.
4885 (zextendsidi_negsi, negdi_extendsidi): Delete insn_and_split.
4887 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4889 * config/arm/arm-modes.def (CC_RSB): New CC mode.
4890 * config/arm/predicates.md (arm_borrow_operation): Handle CC_RSBmode.
4891 * config/arm/arm.c (arm_select_cc_mode): Detect when we should
4893 (maybe_get_arm_condition_code): Handle CC_RSBmode.
4894 * config/arm/arm.md (subsi3_carryin): Make this pattern available to
4896 (subdi3): Rewrite to early-expand the sub-operations.
4897 (rsb_im_compare): New pattern.
4899 (negdi2_insn): Delete.
4900 (arm_negsi2): Correct type attribute to alu_imm.
4901 (negsi2_0compare): New insn pattern.
4902 (negsi2_carryin): New insn pattern.
4904 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4906 * config/arm/arm.md (addsi3_carryin_alt2): Use arm_not_operand for
4909 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4911 * config/arm/arm.md (addsi3_carryin_shift_<optab>): Reorder operands
4912 to match canonical form.
4914 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4916 * config/arm/arm.md (zero_extend<mode>di2): Convert to define_expand.
4917 (extend<mode>di2): Likewise.
4919 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4921 * config/arm/arm-protos.h (arm_decompose_di_binop): New prototype.
4922 * config/arm/arm.c (arm_decompose_di_binop): New function.
4923 * config/arm/arm.md (adddi3): Also accept any const_int for op2.
4924 If not generating Thumb-1 code, decompose the operation into 32-bit
4926 * add0si_carryin_<optab>: New pattern.
4928 2019-10-18 Richard Earnshaw <rearnsha@arm.com>
4930 * arm.md (adddi3): Only accept register operands.
4931 (arm_adddi3): Convert to simple insn with no split. Do not accept
4933 (adddi_sesidi_di): Delete patern.
4934 (adddi_zesidi_di): Likewise.
4935 (uaddv<mode>4): Use LTU as condition for branch.
4936 (adddi3_compareV): Convert to simple insn with no split.
4937 (addsi3_compareV_upper): Delete pattern.
4938 (adddi3_compareC): Convert to simple insn with no split. Correct
4939 flags setting expression.
4940 (addsi3_compareC_upper): Delete pattern.
4941 (addsi3_compareC): Correct flags setting expression.
4942 (subdi3_compare1): Convert to simple insn with no split.
4943 (subsi3_carryin_compare): Delete pattern.
4944 (arm_subdi3): Convert to simple insn with no split.
4945 (subdi_zesidi): Delete pattern.
4946 (subdi_di_sesidi): Delete pattern.
4947 (subdi_zesidi_di): Delete pattern.
4948 (subdi_sesidi_di): Delete pattern.
4949 (subdi_zesidi_zesidi): Delete pattern.
4950 (negvdi3): Use s_register_operand.
4951 (negdi2_compare): Convert to simple insn with no split.
4952 (negdi2_insn): Likewise.
4953 (negsi2_carryin_compare): Delete pattern.
4954 (negdi_zero_extendsidi): Delete pattern.
4955 (arm_cmpdi_insn): Convert to simple insn with no split.
4956 (negdi2): Don't call gen_negdi2_neon.
4957 * config/arm/neon.md (adddi3_neon): Delete pattern.
4958 (subdi3_neon): Delete pattern.
4959 (negdi2_neon): Delete pattern.
4960 (splits for negdi2_neon): Delete splits.
4962 2019-10-18 Jakub Jelinek <jakub@redhat.com>
4965 * ggc-page.c (release_pages): Read g->alloc_size before free rather
4968 2019-10-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
4970 * config/arm/t-multilib: Add rule to regenerate mutlilib header file
4971 with any change to t-multilib, t-aprofile and t-rmprofile. Also add
4972 new multilib variants and new mappings.
4974 2019-10-18 Georg-Johann Lay <avr@gjlay.de>
4977 * config/avr/avr.c (avr_out_lpm): Do not shortcut-return.
4979 2019-10-18 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
4980 Richard Sandiford <richard.sandiford@arm.com>
4983 * tree-vectorizer.h (scalar_cond_masked_key): New struct,
4984 and define hashmap traits for it.
4985 (loop_vec_info::scalar_cond_masked_set): New member.
4986 (vect_record_loop_mask): Adjust prototype.
4987 * tree-vectorizer.c (scalar_cond_masked_key::get_cond_ops_from_tree):
4989 * tree-vect-loop.c (vectorizable_reduction): Pass NULL as last arg to
4990 vect_record_loop_mask.
4991 (vectorizable_live_operation): Likewise.
4992 (vect_record_loop_mask): New param scalar_mask. Add entry
4993 cond, loop_mask to scalar_cond_masked_set if scalar_mask is non NULL.
4994 * tree-vect-stmts.c (check_load_store_masking): New param scalar_mask.
4995 Pass it as last arg to vect_record_loop_mask.
4996 (vectorizable_call): Pass scalar_mask as last arg to
4997 vect_record_loop_mask.
4998 (vectorizable_store): Likewise.
4999 (vectorizable_load): Likewise.
5000 (vectorizable_condition): Check if another part of vectorized code
5001 applies loop_mask to condition or to it's inverse, and if yes,
5002 apply loop_mask to result of vector comparison.
5004 2019-10-17 John David Anglin <danglin@gcc.gnu.org>
5006 * config/pa/pa.c (pa_output_indirect_call): Fix typos in last change.
5008 2019-10-18 Jakub Jelinek <jakub@redhat.com>
5010 PR tree-optimization/92056
5011 * tree-ssa-strlen.c (determine_min_objsize): Call init_object_sizes
5012 before calling compute_builtin_object_size.
5014 2019-10-17 Iain Sandoe <iain@sandoe.co.uk>
5017 * config/rs6000/darwin.md (movdi_low, movsi_low_st): Delete.
5018 (movdi_low_st): Delete.
5019 * config/rs6000/rs6000.c
5020 (darwin_rs6000_legitimate_lo_sum_const_p): New.
5021 (mem_operand_gpr): Validate Mach-O LO_SUM cases separately.
5022 * config/rs6000/rs6000.md (movsi_low): Delete.
5024 2019-10-17 Jason Merrill <jason@redhat.com>
5026 * gimplify.h (get_initialized_tmp_var): Add default argument to
5028 * gimplify.c (gimplify_self_mod_expr, gimplify_omp_atomic): Remove
5029 NULL post_p argument.
5030 * targhooks (std_gimplify_va_arg_expr): Likewise.
5032 2019-10-17 Richard Biener <rguenther@suse.de>
5034 * tree-vectorizer.h (_stmt_vec_info::cond_reduc_code): Remove.
5035 (STMT_VINFO_VEC_COND_REDUC_CODE): Likewise.
5036 * tree-vectorizer.c (vec_info::new_stmt_vec_info): Do not
5037 initialize STMT_VINFO_VEC_COND_REDUC_CODE.
5038 * tree-vect-loop.c (vect_is_simple_reduction): Set
5039 STMT_VINFO_REDUC_CODE.
5040 (vectorizable_reduction): Remove dead and redundant code, use
5041 STMT_VINFO_REDUC_CODE instead of STMT_VINFO_VEC_COND_REDUC_CODE.
5043 2019-10-17 Georg-Johann Lay <avr@gjlay.de>
5045 Fix breakage introduced by r276985.
5047 * config/avr/avr.c (avr_option_override): Remove set of
5048 PARAM_ALLOW_STORE_DATA_RACES.
5049 * common/config/avr/avr-common.c (avr_option_optimization_table)
5050 [OPT_LEVELS_ALL]: Turn on -fallow-store-data-races.
5052 2019-10-17 H.J. Lu <hongjiu.lu@intel.com>
5054 * config/i386/i386.h (processor_costs): Add clear_ratio.
5055 (CLEAR_RATIO): Remove MIN and use ix86_cost->clear_ratio.
5056 * config/i386/x86-tune-costs.h: Set clear_ratio to the minimum
5057 of 6 and move_ratio in all cost models.
5059 2019-10-17 Richard Biener <rguenther@suse.de>
5061 * tree-vect-loop.c (check_reduction_path): Compute reduction
5063 (vect_is_simple_reduction): Remove special-case of single-stmt
5064 reduction path detection.
5066 2019-10-17 Richard Earnshaw <rearnsha@arm.com>
5068 * config/arm/arm-cpus.in (marvel-pj4): Add +fp to the architecture.
5070 2019-10-17 Yuliang Wang <yuliang.wang@arm.com>
5072 * config/aarch64/aarch64-sve2.md (aarch64_sve2_eor3<mode>)
5073 (aarch64_sve2_nor<mode>, aarch64_sve2_nand<mode>)
5074 (aarch64_sve2_bsl<mode>, aarch64_sve2_nbsl<mode>)
5075 (aarch64_sve2_bsl1n<mode>, aarch64_sve2_bsl2n<mode>):
5076 New combine patterns.
5077 * config/aarch64/iterators.md (BSL_DUP): New int iterator for the
5079 (bsl_1st, bsl_2nd, bsl_dup, bsl_mov): Attributes for the above.
5081 2019-10-17 Aldy Hernandez <aldyh@redhat.com>
5083 * tree-vrp.c (value_range_base::dump): Display +INF for both
5084 pointers and integers when appropriate.
5086 2019-10-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
5088 * tree-vect-loop.c (vect_analyze_loop_2): Use same condition to decide
5089 when to use versioning threshold.
5091 2019-10-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
5093 * tree-vect-loop.c (determine_peel_for_niter): New function contained
5094 outlined code from ...
5095 (vect_analyze_loop_2): ... here.
5097 2019-10-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
5099 * tree-vect-loop.c (vect_transform_loop): Move code from here...
5100 * tree-vect-loop-manip.c (vect_loop_versioning): ... to here.
5101 * tree-vectorizer.h (vect_loop_versioning): Remove unused parameters.
5103 2019-10-17 Richard Biener <rguenther@suse.de>
5105 * tree-vect-loop.c (needs_fold_left_reduction_p): Export.
5106 (vect_is_simple_reduction): Move all validity checks ...
5107 (vectorizable_reduction): ... here. Compute whether we
5108 need a fold-left reduction here.
5109 * tree-vect-patterns.c (vect_reassociating_reduction_p): Merge
5110 both overloads, check needs_fold_left_reduction_p directly.
5111 * tree-vectorizer.h (needs_fold_left_reduction_p): Declare.
5113 2019-10-17 Richard Biener <rguenther@suse.de>
5115 * tree-ssa-pre.c (create_component_ref_by_pieces_1): Fix
5116 TARGET_MEM_REF creation.
5118 2019-10-17 Richard Biener <rguenther@suse.de>
5120 PR tree-optimization/92129
5121 * tree-vect-loop.c (vectorizable_reduction): Also fail
5122 on GIMPLE_SINGLE_RHS.
5124 2019-10-17 Jakub Jelinek <jakub@redhat.com>
5126 PR tree-optimization/92056
5127 * tree-object-size.c (cond_expr_object_size): Return early if then_
5128 processing resulted in unknown size.
5130 PR tree-optimization/92115
5131 * tree-ssa-ifcombine.c (ifcombine_ifandif): Force condition into
5132 temporary if it could trap.
5134 2019-10-17 Richard Biener <rguenther@suse.de>
5137 * dwarf2out.c (gen_formal_parameter_die): Also try to match
5138 context_die against a DW_TAG_GNU_formal_parameter_pack parent.
5140 2019-10-16 Jakub Jelinek <jakub@redhat.com>
5142 * tree-ssa-strlen.c (maybe_invalidate): Use
5143 HOST_WIDE_INT_PRINT_UNSIGNED instead of "%zu".
5145 2019-10-16 Andrew Burgess <andrew.burgess@embecosm.com>
5146 Jim Wilson <jimw@sifive.com>
5148 * config/riscv/riscv.h (REG_CLASS_CONTENTS): Add argument passing
5149 regs to SIBCALL_REGS.
5150 * config/riscv/riscv.c (riscv_regno_to_class): Change argument
5151 passing regs to SIBCALL_REGS.
5153 2019-10-16 Martin Sebor <msebor@redhat.com>
5155 PR tree-optimization/83821
5156 * tree-ssa-strlen.c (maybe_invalidate): Add argument. Consider
5157 the length of a string when available.
5158 (handle_builtin_memset) Add argument.
5159 (handle_store, strlen_check_and_optimize_call): Same.
5160 (check_and_optimize_stmt): Same. Pass it to callees.
5162 2019-10-16 Martin Sebor <msebor@redhat.com>
5164 PR tree-optimization/91996
5165 * tree-ssa-strlen.c (maybe_warn_pointless_strcmp): Improve location
5167 (compare_nonzero_chars): Add an overload.
5168 (count_nonzero_bytes): Add an argument. Call overload above.
5169 Handle non-constant lengths in some range.
5170 (handle_store): Add an argument.
5171 (check_and_optimize_stmt): Pass an argument to handle_store.
5173 2019-10-16 Richard Earnshaw <rearnsha@arm.com>
5175 * config/arm/arm.c (neon_valid_immediate): Clear bytes before use.
5177 2019-10-16 Mihailo Stojanovic <mistojanovic@wavecomp.com>
5179 * config/mips/mips.c (mips_expand_builtin_insn): Force the
5180 operands which correspond to the same input-output register to
5181 have the same pseudo assigned to them.
5183 2019-10-16 Ilya Leoshkevich <iii@linux.ibm.com>
5185 * cfgrtl.c (find_partition_fixes): Remove bbs_in_cold_partition.
5187 2019-10-16 Wilco Dijkstra <wdijkstr@arm.com>
5189 * config/aarch64/aarch64.c (aarch64_classify_symbol):
5190 Apply reasonable limit to symbol offsets.
5192 2019-10-16 Richard Biener <rguenther@suse.de>
5194 * tree-vect-loop.c (vect_valid_reduction_input_p): Remove.
5195 (vect_is_simple_reduction): Delay checking to
5196 vectorizable_reduction and relax the checking.
5197 (vectorizable_reduction): Check we have a simple use. Check
5198 for bogus condition reductions.
5199 * tree-vect-stmts.c (vect_transform_stmt): Make sure we
5200 are looking at the last stmt in a pattern sequence when
5201 filling in backedge PHI values.
5203 2019-10-16 Peter Bergner <bergner@linux.ibm.com>
5204 Jiufu Guo <guojiufu@linux.ibm.com>
5207 * config/rs6000/rs6000.c (rs6000_can_inline_p): Prohibit inlining if
5208 the callee explicitly disables some isa_flags the caller is using.
5210 2019-10-16 Richard Sandiford <richard.sandiford@arm.com>
5212 * function-abi.cc (expr_callee_abi): Assert for POINTER_TYPE_P.
5214 2019-10-16 Richard Sandiford <richard.sandiford@arm.com>
5216 * genmodes.c (mode_data::order): New field.
5217 (blank_mode): Update accordingly.
5218 (VECTOR_MODES_WITH_PREFIX): Add an order parameter.
5219 (make_vector_modes): Likewise.
5220 (VECTOR_MODES): Update use accordingly.
5221 (cmp_modes): Sort by the new order field ahead of sorting by size.
5222 * config/aarch64/aarch64-modes.def (VNx2QI, VN2xHI, VNx2SI)
5223 (VNx4QI, VNx4HI, VNx8QI): New partial vector modes.
5224 * config/aarch64/aarch64.c (VEC_PARTIAL): New flag value.
5225 (aarch64_classify_vector_mode): Handle the new partial modes.
5226 (aarch64_vl_bytes): New function.
5227 (aarch64_hard_regno_nregs): Use it instead of BYTES_PER_SVE_VECTOR
5228 when counting the number of registers in an SVE mode.
5229 (aarch64_class_max_nregs): Likewise.
5230 (aarch64_hard_regno_mode_ok): Don't allow partial vectors
5232 (aarch64_classify_address): Treat partial vectors analogously
5234 (aarch64_print_address_internal): Consolidate the printing of
5235 MUL VL addresses, using aarch64_vl_bytes as the number of
5236 bytes represented by "VL".
5237 (aarch64_vector_mode_supported_p): Reject partial vector modes.
5239 2019-10-16 Richard Sandiford <richard.sandiford@arm.com>
5241 * config/aarch64/aarch64.c (aarch64_layout_frame): Use is_constant
5242 rather than known_lt when choosing frame layouts.
5244 2019-10-16 Richard Sandiford <richard.sandiford@arm.com>
5246 * config/aarch64/aarch64.c (aarch64_layout_frame): Assert
5247 that all the adjustments add up to the full frame size.
5248 Use crtl->outgoing_args_size directly as the final adjustment
5251 2019-10-16 Richard Sandiford <richard.sandiford@arm.com>
5253 * config/aarch64/aarch64.c (aarch64_layout_frame): Use a local
5254 "frame" reference instead of always referring directly to
5255 "cfun->machine->frame".
5257 2019-10-16 Richard Biener <rguenther@suse.de>
5259 PR tree-optimization/92119
5260 * tree-vect-patterns.c (vect_recog_rotate_pattern): Guard
5261 against missing bswap lhs.
5263 2019-10-16 Richard Sandiford <richard.sandiford@arm.com>
5266 * poly-int.h (constant_lower_bound_with_limit): New function.
5267 (constant_upper_bound_with_limit): Likewise.
5268 * doc/poly-int.texi: Document them.
5269 * tree-vrp.c (value_range_base::set): Convert POLY_INT_CST bounds
5270 into the worst-case INTEGER_CST bounds.
5272 2019-10-16 Feng Xue <fxue@os.amperecomputing.com>
5275 * doc/invoke.texi (ipa-max-param-expr-ops): Document new option.
5276 * params.def (PARAM_IPA_MAX_PARAM_EXPR_OPS): New.
5277 * ipa-predicat.h (struct expr_eval_op): New struct.
5278 (expr_eval_ops): New typedef.
5279 (struct condition): Add type and param_ops fields, remove size field.
5280 (add_condition): Replace size parameter with type parameter, add
5281 param_ops parameter.
5282 * ipa-predicat.c (expr_eval_ops_equal_p): New function.
5283 (predicate::add_clause): Add comparisons on type and param_ops.
5284 (dump_condition): Add debug dump for param_ops.
5285 (remap_after_inlining): Adjust call arguments to add_condition.
5286 (add_condition): Replace size parameter with type parameter, add
5287 param_ops parameter. Unshare constant value used in conditions.
5288 * ipa-fnsummary.c (evaluate_conditions_for_known_args): Fold
5289 parameter expressions using param_ops.
5290 (decompose_param_expr): New function.
5291 (set_cond_stmt_execution_predicate): Use call to decompose_param_expr
5292 to replace call to unmodified_parm_or_parm_agg_item.
5293 (set_switch_stmt_execution_predicate): Likewise.
5294 (will_be_nonconstant_expr_predicate): Likewise. Replace usage of size
5296 (inline_read_section): Read param_ops from summary stream.
5297 (ipa_fn_summary_write): Write param_ops to summary stream.
5299 2019-10-15 Segher Boessenkool <segher@kernel.crashing.org>
5301 PR rtl-optimization/92107
5302 * genattrtab.c (write_attr_value) <do_operator>: Parenthesize the
5305 2019-10-15 Iain Sandoe <iain@sandoe.co.uk>
5307 * config/darwin.c: Update description of fix and continue.
5309 2019-10-15 Iain Sandoe <iain@sandoe.co.uk>
5311 * config/darwin.c (darwin_binds_local_p): Update to call
5312 default_binds_local_p_3 () directly. amend comments.
5314 2019-10-15 Richard Biener <rguenther@suse.de>
5316 * lto-streamer-out.c (lto_variably_modified_type_p): New.
5317 (tree_is_indexable): Use it.
5318 * tree-streamer-out.c (pack_ts_type_common_value_fields):
5319 Stream variably_modified_type_p as TYPE_LANG_FLAG_0.
5320 * tree-streamer-in.c (unpack_ts_type_common_value_fields): Likewise.
5322 2019-10-15 Jozef Lawrynowicz <jozef.l@mittosystems.com>
5324 * config/msp430/msp430.md (zero_extendqipsi2): New.
5325 (zero_extendqisi2): Optimize case where src register and base dst
5326 register are the same.
5327 (zero_extendhipsi2): Don't use 430X insn for rYs->r case.
5328 (zero_extendpsisi2): Optimize r->m case.
5329 Add unnamed insn patterns to catch insns combine searches for when
5330 optimizing pointer manipulation.
5332 2019-10-15 Jozef Lawrynowicz <jozef.l@mittosystems.com>
5334 * config/msp430/msp430.md: Group zero_extend* insns together.
5336 2019-10-15 Jozef Lawrynowicz <jozef.l@mittosystems.com>
5338 * config/msp430/constraints.md: Allow post_inc operand for "Ya"
5340 * config/msp430/msp430.c (msp430_legitimate_address_p): Handle
5342 (msp430_subreg): Likewise.
5343 (msp430_split_addsi): Likewise.
5344 (msp430_print_operand_addr): Likewise.
5345 * config/msp430/msp430.h (HAVE_POST_INCREMENT): Define.
5346 (USE_STORE_POST_INCREMENT): Define.
5347 * config/msp430/msp430.md: Use the msp430_general_dst_operand or
5348 msp430_general_dst_nonv_operand predicates for the lvalues of insns.
5349 * config/msp430/predicates.md (msp430_nonpostinc_operand): New.
5350 (msp430_general_dst_operand): New.
5351 (msp430_general_dst_nonv_operand): New.
5352 (msp430_nonsubreg_operand): Remove.
5353 (msp430_nonsubreg_dst_operand): New.
5354 (msp430_nonsubreg_or_imm_operand): Allow reg or mem operands in place
5355 of defunct msp430_nonsubreg_operand.
5356 (msp430_nonsubregnonpostinc_or_imm_operand): New.
5358 2019-10-15 Richard Biener <rguenther@suse.de>
5360 PR tree-optimization/91929
5361 * tree-ssa-pre.c (pre_expr_d::loc): New member.
5362 (get_or_alloc_expr_for_name): Initialize it.
5363 (get_or_alloc_expr_for_constant): Likewise.
5364 (phi_translate_1): Copy it.
5365 (create_expression_by_pieces): Use the original location
5366 of the expression for the inserted stmt.
5367 (compute_avail): Record the location of the stmt for the
5368 expressions created.
5370 2019-10-15 Richard Sandiford <richard.sandiford@arm.com>
5372 * tree-ssa-strlen.c (count_nonzero_bytes): Check tree_fits_uhwi_p
5373 before using tree_to_uhwi.
5375 2019-10-15 Ilya Leoshkevich <iii@linux.ibm.com>
5377 * config/s390/s390.md: Run %a0:DI splitters only after reload.
5379 2019-10-15 Richard Biener <rguenther@suse.de>
5381 PR tree-optimization/92094
5382 * tree-vect-loop.c (vectorizable_reduction): For nested cycles
5383 do not adjust the reduction definition def type.
5384 * tree-vect-stmts.c (vect_transform_stmt): Verify the scalar stmt
5385 defines the latch argument of the PHI.
5387 2019-10-15 Hongyu Wang <hongtao.wang@intel.com>
5390 * config/i386/avx512fintrin.h (_mm_mask_roundscale_ss,
5391 _mm_maskz_roundscale_ss, _mm_maskz_roundscale_round_ss,
5392 _mm_maskz_roundscale_round_ss, _mm_mask_roundscale_sd,
5393 _mm_maskz_roundscale_sd, _mm_mask_roundscale_round_sd,
5394 _mm_maskz_roundscale_round_sd): New intrinsics.
5395 (_mm_roundscale_ss, _mm_roundscale_round_ss): Use
5396 __builtin_ia32_rndscales?_mask_round builtins instead of
5397 __builtin_ia32_rndscales?_round.
5398 * config/i386/i386-builtin.def (__builtin_ia32_rndscaless_round,
5399 __builtin_ia32_rndscalesd_round): Remove.
5400 (__builtin_ia32_rndscaless_mask_round,
5401 __builtin_ia32_rndscalesd_mask_round): New intrinsics.
5402 * config/i386/sse.md
5403 (avx512f_rndscale<mode><round_saeonly_name>): Renamed to ...
5404 (avx512f_rndscale<mode><mask_scalar_name><round_saeonly_scalar_name>):
5405 ... this, adjust and add subst atrributes to make it maskable.
5407 2019-10-15 Richard Biener <rguenther@suse.de>
5410 * common.opt (fallow-store-data-races): New.
5411 * params.def (PARAM_ALLOW_STORE_DATA_RACES): Remove.
5412 * params.h (ALLOW_STORE_DATA_RACES): Likewise.
5413 * doc/invoke.texi (fallow-store-data-races): Document.
5414 (--param allow-store-data-races): Remove docs.
5415 * opts.c (default_options_table): Enable -fallow-store-data-races
5417 (default_options_optimization): Do not enable --param
5418 allow-store-data-races at -Ofast.
5419 * tree-if-conv.c (ifcvt_memrefs_wont_trap): Use flag_store_data_races
5420 instead of PARAM_ALLOW_STORE_DATA_RACES.
5421 * tree-ssa-loop-im.c (execute_sm): Likewise.
5423 2019-10-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
5425 PR tree-optimization/92085
5426 * tree-if-conv.c (ifcvt_local_dce): Call gsi_next in else clause,
5427 instead of calling it unconditionally after
5428 delete_dead_or_redundant_assignment and fix indentation.
5430 2019-10-15 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
5432 * config/arm/vfp.md (fma<SDF:mode>4): Enable DF only when
5434 (*fmsub<SDF:mode>4): Likewise.
5435 *fnmsub<SDF:mode>4): Likewise.
5436 (*fnmadd<SDF:mode>4): Likewise.
5438 2019-10-14 Joel Hutton <Joel.Hutton@arm.com>
5440 * doc/tree-ssa.texi: Update renamed macro name.
5442 2019-10-14 Mihailo Stojanovic <mistojanovic@wavecomp.com>
5444 * config/mips/mips.c (mips_cannot_force_const_mem): Reject
5447 2019-10-14 Iain Sandoe <iain@sandoe.co.uk>
5449 * config/darwin.c: Use unsigned ints for the picbase label
5450 counters, initialise the vars explicitly.
5451 (update_pic_label_number_if_needed): Move a variable declaration
5452 to where it's needed.
5453 (machopic_output_function_base_name): Use a more strict checking
5454 assert, and and unsigned int for the picbase label counter.
5455 (machopic_get_function_picbase): Likewise.
5457 2019-10-14 Richard Biener <rguenther@suse.de>
5460 * dse.c (scan_insn): Use param max_active_local_stores.
5461 (dse_step1): Get PARAM_MAX_DSE_ACTIVE_LOCAL_STORES and adjust
5462 based on optimization level.
5463 * loop-invariant.c (move_loop_invariants): Adjust
5464 LOOP_INVARIANT_MAX_BBS_IN_LOOP based on optimization level.
5465 * opts.c (default_options_optimization): Do not adjust
5466 PARAM_MAX_DSE_ACTIVE_LOCAL_STORES and
5467 LOOP_INVARIANT_MAX_BBS_IN_LOOP here.
5469 2019-10-14 Wilco Dijkstra <wdijkstr@arm.com>
5471 * config/arm/arm.c (arm_legitimize_address): Remove Thumb-2 bailout.
5473 2019-10-14 Wilco Dijkstra <wdijkstr@arm.com>
5475 * config/arm/arm.c (arm_option_override): Don't override sched
5478 2019-10-14 Richard Biener <rguenther@suse.de>
5480 PR tree-optimization/92069
5481 * tree-vect-loop.c (vect_analyze_scalar_cycles_1): For nested
5482 cycles do not set vect_nested_cycle on the latch definition.
5484 2019-10-14 Richard Sandiford <richard.sandiford@arm.com>
5486 * function-abi.h (expr_callee_abi): Declare.
5487 * function-abi.cc (expr_callee_abi): New function.
5489 2019-10-14 Aldy Hernandez <aldyh@redhat.com>
5491 * tree-vrp.c (value_range_base::set): Normalize unsigned ~[0,0]
5493 * tree-vrp.h (value_range_base::nonzero_p): Adjust for unsigned
5494 non-zero being represented as [1,MAX].
5496 2019-10-14 Xiong Hu Luo <luoxhu@linux.ibm.com>
5498 * tree-sra.c (dump_access): Add missing braces.
5500 2019-10-13 Iain Sandoe <iain@sandoe.co.uk>
5502 * config/darwin.c (machopic_indirection_name): Rework the
5503 function to emit linker-visible symbols only for indirections
5504 in the data section. Clean up the code and update comments.
5506 2019-10-13 Iain Sandoe <iain@sandoe.co.uk>
5508 * config/darwin.c (machopic_indirect_data_reference): Remove
5511 2019-10-13 Nathan Sidwell <nathan@acm.org>
5513 * gengtype-lex.l (CXX_KEYWORD): Add 'mutable'.
5515 2019-10-13 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
5517 * doc/sourcebuild.texi (Test Directives, Add Options): Remove
5520 2019-10-12 Jan Hubicka <hubicka@ucw.cz>
5522 * lto-streamer-out.c (collect_block_tree_leafs): Renumber statements
5523 so non-virutal are before virutals.
5524 (output_function): Avoid body modifications.
5526 2019-10-12 John David Anglin <danglin@gcc.gnu.org>
5528 * config/pa/pa.c (pa_output_call): Load descriptor address to register
5529 %r22. Load function address before global pointer.
5530 (pa_attr_length_indirect_call): Adjust length of inline versions of
5532 (pa_output_indirect_call): Remove fast inline version of $$dyncall
5533 before normal cases. Update inline $$dyncall sequences to preserve
5534 function descriptor address in register %r22.
5535 (TRAMPOLINE_CODE_SIZE): Adjust.
5536 (pa_asm_trampoline_template): Revise 32-bit trampoline. Don't assume
5537 register %r22 contains trampoline address.
5538 (pa_trampoline_init): Adjust offsets.
5539 (pa_trampoline_adjust_address): Likewise.
5540 * config/pa/pa.h (TRAMPOLINE_SIZE): Adjust 32-bit size.
5542 2019-10-12 Iain Sandoe <iain@sandoe.co.uk>
5545 * config/darwin.c (machopic_indirection): New field to flag
5546 non-lazy-symbol-pointers in the data section.
5547 (machopic_indirection_name): Compute if an indirection should
5548 appear in the data section.
5549 (machopic_output_data_section_indirection): New callback split
5550 from machopic_output_indirection.
5551 (machopic_output_stub_indirection): Likewise.
5552 (machopic_output_indirection): Retain the code for non-lazy
5553 symbol pointers in their regular section.
5554 (machopic_finish): Use the new callbacks to order the indirection
5557 2019-10-12 Iain Sandoe <iain@sandoe.co.uk>
5559 * config/darwin-protos.h (machopic_finish): Delete.
5560 * config/darwin.c (machopic_finish): Make static.
5562 2019-10-12 Iain Sandoe <iain@sandoe.co.uk>
5564 * config/darwin.c (darwin_file_end): Only emit empty CTOR/DTOR
5565 sections when building kernel extension code.
5567 2019-10-12 Palmer Dabbelt <palmer@sifive.com>
5569 * doc/extend.texi (Alternate Keywords): Change "-std=c11" to "a
5572 2019-10-12 John David Anglin <danglin@gcc.gnu.org>
5574 * config/pa/pa.c (pa_option_override): Remove trailing comma
5577 2019-10-12 Jakub Jelinek <jakub@redhat.com>
5580 * tree-eh.c (operation_could_trap_helper_p) <case COND_EXPR>
5581 <case VEC_COND_EXPR>: Return false with *handled = false.
5582 (tree_could_trap_p): For {,VEC_}COND_EXPR return false instead of
5583 recursing on the first operand.
5584 * fold-const.c (simple_operand_p_2): Use generic_expr_could_trap_p
5585 instead of tree_could_trap_p.
5586 * tree-ssa-sccvn.c (vn_nary_may_trap): Formatting fixes.
5588 2019-10-11 Jim Wilson <jimw@sifive.com>
5590 PR rtl-optimization/91860
5591 * combine.c (subst): If new_rtx is a constant, also check for
5592 SIGN_EXTEND when deciding whether to call simplify_unary_operation.
5594 2019-10-11 Richard Sandiford <richard.sandiford@arm.com>
5596 * expr.c (store_expr): Use rtx_to_poly_int64 rather than
5597 INTVAL when calling store_bit_field.
5599 2019-10-11 Wilco Dijkstra <wdijkstr@arm.com>
5601 * config/arm/arm.h (HONOR_REG_ALLOC_ORDER): Set when optimizing for
5604 2019-10-11 Bernd Edlinger <bernd.edlinger@hotmail.de>
5606 * tree-vect-loop.c (vect_analyze_loop_operations): Adjust call to
5607 vectorizable_live_operation.
5608 (vectorizable_live_operation): Adjust parameters.
5609 * tree-vect-stmts.c (vect_init_vector,
5610 vect_gen_widened_results_half): Fix typo in function comment.
5611 (can_vectorize_live_stmts): Adjust function comment.
5612 Adjust parameters. Adjust call to vectorizable_live_operation.
5613 (vect_analyze_stmt): Adjust call to can_vectorize_live_stmts.
5614 (vect_transform_stmt): Adjust function comment. Adjust call to
5615 can_vectorize_live_stmts.
5616 * tree-vectorizer.h (vectorizable_live_operation): Adjust parameters.
5618 2019-10-11 Richard Biener <rguenther@suse.de>
5620 PR tree-optimization/90883
5621 PR tree-optimization/91091
5622 * tree-ssa-sccvn.c (vn_reference_lookup_3): Use correct
5623 alias-sets both for recording VN table entries and continuing
5624 walking after translating through copies. Handle same-sized
5625 reads from SSA names by returning the plain SSA name.
5626 (eliminate_dom_walker::eliminate_stmt): Properly handle
5627 non-size precision stores in redundant store elimination.
5629 2019-10-11 Jan Hubicka <hubicka@ucw.cz>
5631 * ggc-page.c (release_pages): Output statistics when !quiet_flag.
5632 (ggc_collect): Dump later to not interfere with release_page dump.
5633 (ggc_trim): New function.
5634 * ggc-none.c (ggc_trim): New.
5635 * ggc.h (ggc_trim): Declare.
5637 2019-10-11 Richard Biener <rguenther@suse.de>
5639 PR tree-optimization/92066
5640 PR tree-optimization/92046
5641 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
5642 Fix bogus cost model check.
5644 2019-10-11 Tobias Burnus <tobias@codesourcery.com>
5646 * langhooks-def.h (LANG_HOOKS_OMP_IS_ALLOCATABLE_OR_PTR): Define.
5647 (LANG_HOOKS_DECLS): Add it.
5648 * langhooks.h (lang_hooks_for_decls): Add omp_is_allocatable_or_ptr;
5649 update comment for omp_is_optional_argument.
5650 * omp-general.c (omp_is_allocatable_or_ptr): New.
5651 * omp-general.h (omp_is_allocatable_or_ptr): Declare.
5652 * omp-low.c (scan_sharing_clauses, lower_omp_target): Handle
5653 Fortran's optional arguments and allocatable/pointer scalars
5654 with use_device_addr.
5656 2019-10-11 Ilya Leoshkevich <iii@linux.ibm.com>
5659 * config/s390/2827.md: Add new opcodes.
5660 * config/s390/2964.md: Likewise.
5661 * config/s390/3906.md: Likewise.
5662 * config/s390/8561.md: Likewise.
5663 * config/s390/s390-builtins.def (s390_vfchesb): Use
5664 the new vec_cmpgev4sf_quiet_nocc.
5665 (s390_vfchedb): Use the new vec_cmpgev2df_quiet_nocc.
5666 (s390_vfchsb): Use the new vec_cmpgtv4sf_quiet_nocc.
5667 (s390_vfchdb): Use the new vec_cmpgtv2df_quiet_nocc.
5668 (vec_cmplev4sf): Use the new vec_cmplev4sf_quiet_nocc.
5669 (vec_cmplev2df): Use the new vec_cmplev2df_quiet_nocc.
5670 (vec_cmpltv4sf): Use the new vec_cmpltv4sf_quiet_nocc.
5671 (vec_cmpltv2df): Use the new vec_cmpltv2df_quiet_nocc.
5672 * config/s390/s390-modes.def (CCSFPS): New mode.
5673 * config/s390/s390.c (s390_match_ccmode_set): Support CCSFPS.
5674 (s390_select_ccmode): Return CCSFPS for LT, LE, GT, GE and LTGT.
5675 (s390_branch_condition_mask): Reuse CCS for CCSFPS.
5676 (s390_expand_vec_compare): Use non-signaling patterns where
5678 (s390_reverse_condition): Support CCSFPS.
5679 * config/s390/s390.md (*cmp<mode>_ccsfps): New pattern.
5680 * config/s390/vector.md: (VFCMP_HW_OP): Remove.
5681 (asm_fcmp_op): Likewise.
5682 (*smaxv2df3_vx): Use pattern for quiet comparison.
5683 (*sminv2df3_vx): Likewise.
5684 (*vec_cmp<VFCMP_HW_OP:code><mode>_nocc): Remove.
5685 (*vec_cmpeq<mode>_quiet_nocc): New pattern.
5686 (vec_cmpgt<mode>_quiet_nocc): Likewise.
5687 (vec_cmplt<mode>_quiet_nocc): New expander.
5688 (vec_cmpge<mode>_quiet_nocc): New pattern.
5689 (vec_cmple<mode>_quiet_nocc): New expander.
5690 (*vec_cmpeq<mode>_signaling_nocc): New pattern.
5691 (*vec_cmpgt<mode>_signaling_nocc): Likewise.
5692 (*vec_cmpgt<mode>_signaling_finite_nocc): Likewise.
5693 (*vec_cmpge<mode>_signaling_nocc): Likewise.
5694 (*vec_cmpge<mode>_signaling_finite_nocc): Likewise.
5695 (vec_cmpungt<mode>): New expander.
5696 (vec_cmpunge<mode>): Likewise.
5697 (vec_cmpuneq<mode>): Use quiet patterns.
5698 (vec_cmpltgt<mode>): Allow only on z14+.
5699 (vec_cmpordered<mode>): Use quiet patterns.
5700 (vec_cmpunordered<mode>): Likewise.
5701 (VEC_CMP_EXPAND): Add ungt and unge.
5703 2019-10-11 Jan Hubicka <hubicka@ucw.cz>
5705 * gimple-streamer-out.c (output_gimple_stmt): Add explicit function
5707 * lto-streamer-out.c: Include tree-dfa.h.
5708 (output_cfg): Do not use cfun.
5709 (lto_prepare_function_for_streaming): New.
5710 (output_function): Do not push cfun; do not initialize loop optimizer.
5711 * lto-streamer.h (lto_prepare_function_for_streaming): Declare.
5712 * passes.c (ipa_write_summaries): Use it.
5713 (ipa_write_optimization_summaries): Do not modify bodies.
5714 * tree-dfa.c (renumber_gimple_stmt_uids): Add function parameter.
5715 * tree.dfa.h (renumber_gimple_stmt_uids): Update prototype.
5716 * tree-ssa-dse.c (pass_dse::execute): Update use of
5717 renumber_gimple_stmt_uids.
5718 * tree-ssa-math-opts.c (pass_optimize_widening_mul::execute): Likewise.
5720 2019-10-11 Kewen Lin <linkw@gcc.gnu.org>
5722 * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Lower
5723 vec_promote_demote cost to 1 for non-Power7 VSX architectures.
5725 2019-10-10 Joseph Myers <joseph@codesourcery.com>
5727 * ginclude/float.h [!__DEC32_MANT_DIG__]: Do not define DFP
5729 [__STDC_WANT_IEC_60559_DFP_EXT__ || __STDC_VERSION__ > 201710L]:
5730 Also define DFP macros for these conditions.
5731 [!__STDC_WANT_DEC_FP__] (DEC32_SUBNORMAL_MIN, DEC64_SUBNORMAL_MIN,
5732 DEC128_SUBNORMAL_MIN): Do not define.
5733 [__STDC_WANT_IEC_60559_DFP_EXT__ || __STDC_VERSION__ > 201710L]
5734 (DEC32_TRUE_MIN, DEC64_TRUE_MIN, DEC128_TRUE_MIN): New macros.
5736 2019-10-10 Xiong Hu Luo <luoxhu@linux.ibm.com>
5737 Sandra Loosemore <sandra@codesourcery.com>
5740 * doc/lto.texi (IPA): Reference to the IPA passes.
5741 * doc/passes.texi (Pass manager): Add node IPA passes and
5742 description for each IPA pass.
5744 2019-10-10 Jan Hubicka <hubicka@ucw.cz>
5746 * ipa-reference.c: Do not include splay-tree.h
5747 (reference_vars_to_consider): Turn to hash map.
5748 (get_static_name, ipa_init, analyze_function, propagate,
5749 stream_out_bitmap, ipa_reference_write_optimization_summary,
5750 ipa_reference_write_optimization_summary): Update.
5752 2019-10-10 Jan Hubicka <hubicka@ucw.cz>
5754 * ipa-reference.c (propagate): Fix releasing of IPA summaries.
5756 2019-10-10 Iain Sandoe <iain@sandoe.co.uk>
5758 * config/darwin.c: Lookup Objective C metadata and force indirection
5761 2019-10-10 Michael Meissner <meissner@linux.ibm.com>
5763 * config/rs6000/rs6000.c (quad_address_p): Add check for prefixed
5765 (mem_operand_gpr): Add check for prefixed addresses.
5766 (mem_operand_ds_form): Add check for prefixed addresses.
5767 (rs6000_legitimate_offset_address_p): If we support prefixed
5768 addresses, check for a 34-bit offset instead of 16-bit.
5769 (rs6000_legitimate_address_p): Add check for prefixed addresses.
5770 Do not allow load/store with update if the address is prefixed.
5771 (rs6000_mode_dependent_address): If we support prefixed
5772 addresses, check for a 34-bit offset instead of 16-bit.
5774 2019-10-10 Ilya Leoshkevich <iii@linux.ibm.com>
5777 * config/s390/vector.md (vcond_comparison_operator): New
5779 (vcond<V_HW:mode><V_HW2:mode>): Use vcond_comparison_operator.
5781 2019-10-10 David Malcolm <dmalcolm@redhat.com>
5784 * Makefile.in (CFLAGS-opts.o): Pass in DOCUMENTATION_ROOT_URL via
5786 * configure.ac (--with-documentation-root-url): New option.
5787 * configure: Regenerate.
5788 * diagnostic-format-json.cc (json_end_diagnostic): If there is an
5789 option URL, add it as a new string field of the diagnostic option.
5790 * diagnostic.c (diagnostic_initialize): Initialize get_option_url.
5791 (print_option_information): If get_option_url is non-NULL, call
5792 it, and if the result is non-NULL, potentially emit an escape
5793 sequence to markup the option text with the resulting URL.
5794 * diagnostic.h (diagnostic_context::get_option_url): New callback.
5795 * doc/invoke.texi (-fdiagnostics-format=): Add "option_url" to
5796 example of JSON output.
5797 * opts-diagnostic.h (get_option_url): New decl.
5798 * opts.c (get_option_url): New function.
5799 * toplev.c (general_init): Initialize the get_option_url callback.
5801 2019-10-10 David Malcolm <dmalcolm@redhat.com>
5804 * common.opt (fdiagnostics-urls=): New option.
5805 (diagnostic-url.h): Add SourceInclude.
5806 (diagnostic_url_rule): New enum.
5807 * diagnostic-color.c: Include "diagnostic-url.h".
5808 (diagnostic_urls_enabled_p): New function.
5809 * diagnostic-url.h: New file.
5810 * diagnostic.c: Include "diagnostic-url.h".
5811 (diagnostic_urls_init): New function.
5812 * diagnostic.h (diagnostic_urls_init): New decl.
5813 * doc/invoke.texi (Diagnostic Message Formatting Options): Add
5814 -fdiagnostics-urls to the list.
5815 (-fdiagnostics-urls): New option.
5816 * gcc.c (driver_handle_option): Handle OPT_fdiagnostics_urls_.
5817 (driver::global_initializations): Call diagnostic_urls_init.
5818 * opts-global.c (init_options_once): Likewise.
5819 * opts.c (common_handle_option): Handle OPT_fdiagnostics_urls_.
5820 * pretty-print.c (pretty_printer::pretty_printer): Initialize
5822 (pp_begin_url): New function.
5823 (pp_end_url): New function.
5824 (selftest::test_urls): New selftest.
5825 (selftest::pretty_print_c_tests): Call it.
5826 * pretty-print.h (pretty_printer::show_urls): New field.
5827 (pp_begin_url): New decl.
5828 (pp_end_url): New decl.
5830 2019-10-10 Uroš Bizjak <ubizjak@gmail.com>
5833 * config/alpha/alpha.c (alpha_handle_trap_shadows): Skip DEBUG_INSN.
5835 2019-10-10 Oleg Endo <olegendo@gcc.gnu.org>
5838 * config/sh/sh.h (TARGET_FPU_SH4_300): New macro.
5839 * config/sh/sh.c (sh_option_override): Enable fsca and fsrra insns
5840 also for TARGET_FPU_SH4_300.
5841 (sh_emit_mode_set): Check for TARGET_FPU_SH4_300 instead of
5843 * config/sh/sh.md (toggle_pr): Add TARGET_FPU_SH4_300 condition.
5844 (negsf2): Expand to either negsf2_fpscr or negsf2_no_fpscr.
5845 (*negsf2_i): Split into ...
5846 (negsf2_fpscr, negsf2_no_fpscr): ... these new patterns.
5847 (abssf2): Expand to either abssf2_fpsc or abssf2_no_fpsc.
5848 (**abssf2_i): Split into ...
5849 (abssf2_fpscr, abssf2_no_fpscr): ... these new patterns.
5850 (negdf2): Expand to either negdf2_fpscr or negdf2_no_fpscr.
5851 (*negdf2_i): Split into ...
5852 (negdf2_fpscr, negdf2_no_fpscr): ... these new patterns.
5853 (absdf2): Expand to either absdf2_fpscr or absdf2_no_fpsc.
5854 (**abssf2_i): Split into ...
5855 (absdf2_fpscr, absdf2_no_fpscr): ... these new patterns.
5857 2019-10-10 Richard Biener <rguenther@suse.de>
5860 * opts.c (finish_options): Do not influence global --params
5861 from options that are adjustable per function.
5862 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
5863 Apply --param adjustment based on active cost-model.
5864 * tree-ssa-phiopt.c (cond_if_else_store_replacement): Disable
5865 further store-sinking when vectorization or if-conversion
5868 2019-10-10 Jan Hubicka <hubicka@ucw.cz>
5871 * cgraph.c (symbol_table_test::symbol_table_test): Use ggc_alloc
5872 rather than ggc_alloc_cleared to alloc symbol table.
5873 * toplev.c (general_init): Likewise.
5874 * cgraph.h (symbol_table): Explicitly construct every field.
5876 2019-10-10 Andreas Krebbel <krebbel@linux.ibm.com>
5878 * common/config/s390/s390-common.c (PF_ARCH13): Rename to...
5880 * config.gcc: Add z15 as option for --with-arch and --with-tune
5882 * config/s390/s390-c.c (s390_resolve_overloaded_builtin): Add
5883 error reporting for unsupported builtins.
5884 * config/s390/s390-opts.h (enum processor_type): Rename
5885 PROCESSOR_8561_ARCH13 to PROCESSOR_8561_Z15.
5886 * config/s390/8561.md: Rename arch13 to z15 throughout the file.
5887 * config/s390/driver-native.c (s390_host_detect_local_cpu):
5889 * config/s390/s390-builtins.def: Likewise.
5890 * config/s390/s390.c (processor_table): Add z15 as option and keep arch13 as alternative.
5891 (s390_expand_builtin): Add missing check for unsupported builtins.
5892 (s390_canonicalize_comparison): Rename TARGET_ARCH13 to TARGET_Z15.
5893 (s390_rtx_costs): Likewise.
5894 (s390_get_sched_attrmask): Rename arch13 to z15.
5895 (s390_get_unit_mask): Likewise.
5896 (s390_is_fpd): Likewise.
5897 (s390_is_fxd): Likewise.
5898 * config/s390/s390.h (enum processor_flags): Likewise.
5899 * config/s390/s390.md: Likewise.
5900 * config/s390/vector.md: Likewise.
5901 * config/s390/vx-builtins.md: Likewise.
5902 * config/s390/s390.opt: Add z15 to processor_type value.
5904 2019-10-10 Andreas Krebbel <krebbel@linux.ibm.com>
5907 * config/s390/s390-protos.h (s390_output_split_stack_data): Add
5909 * config/s390/s390.md (UNSPECV_SPLIT_STACK_DATA): Remove.
5910 ("split_stack_data", "split_stack_call")
5911 ("split_stack_call_<mode>", "split_stack_cond_call")
5912 ("split_stack_cond_call_<mode>"): Remove.
5913 ("@split_stack_call<mode>", "@split_stack_cond_call<mode>"): New
5915 * config/s390/s390.c (s390_output_split_stack_data): New function.
5916 (s390_expand_split_stack_prologue): Use the merged expander.
5918 2019-10-09 Martin Sebor <msebor@redhat.com>
5920 PR tree-optimization/90879
5921 * builtins.c (check_access): Avoid using maxbound when null.
5922 * calls.c (maybe_warn_nonstring_arg): Adjust to get_range_strlen change.
5923 * doc/invoke.texi (-Wstring-compare): Document new warning option.
5924 * gimple-fold.c (get_range_strlen_tree): Make setting maxbound
5926 (get_range_strlen): Overwrite initial maxbound when non-null.
5927 * gimple-ssa-sprintf.c (get_string_length): Adjust to get_range_strlen
5929 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Same.
5930 (used_only_for_zero_equality): New function.
5931 (handle_builtin_memcmp): Call it.
5932 (determine_min_objsize): Return an integer instead of tree.
5933 (get_len_or_size, strxcmp_eqz_result): New functions.
5934 (maybe_warn_pointless_strcmp): New function.
5935 (handle_builtin_string_cmp): Call it. Fold zero-equality of strcmp
5936 between a longer string and a smaller array.
5937 (get_range_strlen_dynamic): Overwrite initial maxbound when non-null.
5939 2019-10-09 Iain Sandoe <iain@sandoe.co.uk>
5941 * config/darwin.c (darwin_override_options): Make the check for
5942 Objective-C ABI version more specific for 64bit code.
5944 2019-10-09 Iain Sandoe <iain@sandoe.co.uk>
5946 * config/darwin.c (machopic_indirect_data_reference): Set flag to
5947 indicate that the new symbol is an indirection.
5948 (machopic_indirect_call_target): Likewise.
5949 * config/darwin.h (MACHO_SYMBOL_FLAG_INDIRECTION): New.
5950 (MACHO_SYMBOL_INDIRECTION_P): New.
5951 (MACHO_SYMBOL_FLAG_STATIC): Adjust bit number.
5953 2019-10-08 Jason Merrill <jason@redhat.com>
5955 * doc/invoke.texi: Document -fconcepts-ts.
5957 2019-10-09 Richard Biener <rguenther@suse.de>
5959 * tree-vect-loop.c (vect_is_simple_reduction): Simplify and
5960 allow stmts other than GIMPLE_ASSIGN in nested cycles.
5962 2019-10-08 Richard Biener <rguenther@suse.de>
5964 * tree-vectorizer.h (_stmt_vec_info::reduc_vectype_in): New.
5965 (_stmt_vec_info::force_single_cycle): Likewise.
5966 (STMT_VINFO_FORCE_SINGLE_CYCLE): New.
5967 (STMT_VINFO_REDUC_VECTYPE_IN): Likewise.
5968 * tree-vect-loop.c (vectorizable_reduction): Set
5969 STMT_VINFO_REDUC_VECTYPE_IN and STMT_VINFO_FORCE_SINGLE_CYCLE.
5970 (vect_transform_reduction): Use them to remove redundant code.
5971 (vect_transform_cycle_phi): Likewise.
5973 2019-10-08 Dmitrij Pochepko <dmitrij.pochepko@bell-sw.com>
5975 PR tree-optimization/90836
5976 * match.pd (popcount): New pattern.
5978 2019-10-08 Martin Sebor <msebor@redhat.com>
5982 * tree-ssa-strlen.c (count_nonzero_bytes): Avoid recursing for MEM_REF
5983 again once nbytes has been set. Set the access size when not yet set.
5985 2019-10-08 Iain Sandoe <iain@sandoe.co.uk>
5987 * config/darwin.c (machopic_select_section): Remove dead code for
5988 old Objective-C section selection method, replace with unreachable.
5990 2019-10-08 Iain Sandoe <iain@sandoe.co.uk>
5992 * config/darwin.c (machopic_indirect_data_reference): Check for
5993 required indirections before making direct access to defined
5995 (machopic_output_indirection): Place the indirected pointes for
5996 required indirections into the non-lazy symbol pointers section.
5997 (darwin_encode_section_info):
5998 * config/darwin.h (MACHO_SYMBOL_FLAG_MUST_INDIRECT): New.
5999 (MACHO_SYMBOL_MUST_INDIRECT_P): New.
6001 2019-10-08 Uroš Bizjak <ubizjak@gmail.com>
6004 * config/i386/i386.c (x86_avx_u128_mode_needed): Use SSE_REG
6005 instead of ALL_SSE_REG to check if function call preserves some
6006 256-bit SSE registers.
6008 2019-10-08 Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
6010 * config.gcc: Move -L usage from LINK_OS_EXTRA_SPEC32 and
6011 LINK_OS_EXTRA_SPEC64 to MD_STARTFILE_PREFIX and
6012 MD_STARTFILE_PREFIX_1 when using --with-advance-toolchain.
6014 2019-10-08 Richard Biener <rguenther@suse.de>
6016 * tree-vectorizer.h (_stmt_vec_info::v_reduc_type): Remove.
6017 (_stmt_vec_info::is_reduc_info): Add.
6018 (STMT_VINFO_VEC_REDUCTION_TYPE): Remove.
6019 (vectorizable_condition): Remove.
6020 (vectorizable_shift): Likewise.
6021 (vectorizable_reduction): Adjust.
6022 (info_for_reduction): New.
6023 * tree-vect-loop.c (vect_force_simple_reduction): Fold into...
6024 (vect_analyze_scalar_cycles_1): ... here.
6025 (vect_analyze_loop_operations): Adjust.
6026 (needs_fold_left_reduction_p): Simplify for single caller.
6027 (vect_is_simple_reduction): Likewise. Remove stmt restriction
6028 for nested cycles not part of double reductions.
6029 (vect_model_reduction_cost): Pass in the reduction type.
6030 (info_for_reduction): New function.
6031 (vect_create_epilog_for_reduction): Use it, access reduction
6032 meta off the stmt info it returns. Use STMT_VINFO_REDUC_TYPE
6033 instead of STMT_VINFO_VEC_REDUCTION_TYPE.
6034 (vectorize_fold_left_reduction): Remove pointless assert.
6035 (vectorizable_reduction): Analyze the full reduction when
6036 visiting the outermost PHI. Simplify. Use STMT_VINFO_REDUC_TYPE
6037 instead of STMT_VINFO_VEC_REDUCTION_TYPE. Direct reduction
6038 stmt code-generation to vectorizable_* in most cases. Verify
6039 code-generation only for cases handled by
6040 vect_transform_reductuon.
6041 (vect_transform_reduction): Use info_for_reduction to get at
6042 reduction meta. Simplify.
6043 (vect_transform_cycle_phi): Likewise.
6044 (vectorizable_live_operation): Likewise.
6045 * tree-vect-patterns.c (vect_reassociating_reduction_p): Look
6046 at the PHI node for STMT_VINFO_REDUC_TYPE.
6047 * tree-vect-slp.c (vect_schedule_slp_instance): Remove no
6048 longer necessary code.
6049 * tree-vect-stmts.c (vectorizable_shift): Make static again.
6050 (vectorizable_condition): Likewise. Get at reduction related
6051 info via info_for_reduction.
6052 (vect_analyze_stmt): Adjust.
6053 (vect_transform_stmt): Likewise.
6054 * tree-vectorizer.c (vec_info::new_stmt_vec_info): Initialize
6055 STMT_VINFO_REDUC_TYPE instead of STMT_VINFO_VEC_REDUCTION_TYPE.
6057 2019-10-08 Joseph Myers <joseph@codesourcery.com>
6059 * doc/invoke.texi (-ffp-int-builtin-inexact): Document
6060 -fno-fp-int-builtin-inexact default for C2X.
6062 2019-10-07 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
6063 Richard Biener <rguenther@suse.de>
6065 PR tree-optimization/91532
6066 * tree-if-conv.c: Include tree-ssa-dse.h.
6067 (ifcvt_local_dce): Change param from bb to loop,
6068 and call dse_classify_store.
6069 (tree_if_conversion): Pass loop instead of loop->header as arg
6071 * tree-ssa-dse.c: Include tree-ssa-dse.h.
6072 (delete_dead_or_redundant_assignment): Remove static qualifier from
6073 declaration, and add prototype in tree-ssa-dse.h.
6074 (dse_store_status): Move to tree-ssa-dse.h.
6075 (dse_classify_store): Remove static qualifier and add new tree param
6076 stop_at_vuse, and add prototype in tree-ssa-dse.h.
6077 * tree-ssa-dse.h: New header.
6079 2019-10-07 Iain Sandoe <iain@sandoe.co.uk>
6081 * config/darwin.c (machopic_output_indirection): Don't put
6082 hidden symbol indirections into the .data section, use the
6083 non-lazy symbol pointers section as normal.
6084 (darwin_encode_section_info): Record if a symbol is hidden.
6085 * config/darwin.h (MACHO_SYMBOL_FLAG_HIDDEN_VIS): New.
6086 (MACHO_SYMBOL_HIDDEN_VIS_P): New.
6088 2019-10-07 Iain Sandoe <iain@sandoe.co.uk>
6090 * config/darwin.c (machopic_symbol_defined_p): Use symbol flag
6091 predicates instead of accessing bits directly.
6092 (machopic_indirect_call_target): Likewise.
6093 (machopic_output_indirection): Likewise.
6094 (darwin_encode_section_info): Improve description. Use renamed
6095 symbol flags. Use predicate macros for variables and functions.
6097 Rename MACHO_SYMBOL_VARIABLE to MACHO_SYMBOL_FLAG_VARIABLE.
6098 Rename MACHO_SYMBOL_DEFINED to MACHO_SYMBOL_FLAG_DEFINED.
6099 Rename MACHO_SYMBOL_STATIC to MACHO_SYMBOL_FLAG_STATIC.
6100 (MACHO_SYMBOL_VARIABLE_P): New.
6101 (MACHO_SYMBOL_DEFINED_P):New.
6102 (MACHO_SYMBOL_STATIC_P): New.
6103 * config/i386/darwin.h (MACHO_SYMBOL_FLAG_VARIABLE): Delete.
6104 (SYMBOL_FLAG_SUBT_DEP): New.
6105 * config/rs6000/darwin.h (SYMBOL_FLAG_SUBT_DEP): New.
6107 2019-10-07 Jozef Lawrynowicz <jozef.l@mittosystems.com>
6109 * config/msp430/msp430.c (msp430_file_end): s/msp_/msp430_/
6110 (msp430_expand_epilogue): Likewise.
6111 * config/msp430/predicates.md: Likewise.
6112 * config/msp430/msp430.md: Likewise.
6113 Replace blocks of 8 spaces with tabs.
6115 2019-10-07 Jozef Lawrynowicz <jozef.l@mittosystems.com>
6117 * config/msp430/msp430-protos.h (msp430_split_addsi): New prototype.
6118 * config/msp430/msp430.c (msp430_split_addsi): New.
6119 * config/msp430/msp430.md: Call msp430_split_addsi () instead of using
6120 a block of C code for splitting addsi.
6122 2019-10-07 Uroš Bizjak <ubizjak@gmail.com>
6124 * config/i386/i386-expand.c (ix86_expand_floorceildf_32,
6125 ix86_expand_rounddf_32): Reorder functions.
6126 * config/i386/i386-protos.h: Update.
6128 2019-10-07 Jozef Lawrynowicz <jozef.l@mittosystems.com>
6130 * config.in: Regenerate.
6131 * config/msp430/constraints.md: Fix docstring for "Ys" constraint.
6132 Add new "Yx" constraint.
6133 * config/msp430/driver-msp430.c (msp430_propagate_region_opt): New spec
6135 * config/msp430/msp430-protos.h (msp430_op_not_in_high_mem): New
6137 * config/msp430/msp430.c (msp430_option_override): Allow the lower
6138 code/data region to be selected in the small memory model.
6139 (msp430_section_attr): Don't warn if the "section" and "lower"
6140 attributes are used together.
6141 (msp430_handle_generic_attribute): Likewise.
6142 (msp430_var_in_low_mem): New function.
6143 (TARGET_ENCODE_SECTION_INFO): Define.
6144 (msp430_encode_section_info): New function.
6145 (gen_prefix): Return early in the small memory model.
6146 Require TARGET_USE_LOWER_REGION_PREFIX to be set before adding the
6147 ".lower" prefix if -m{code,data}-region=lower have been passed.
6148 (msp430_output_aligned_decl_common): Emit common symbols when
6149 -mdata-region=lower is passed unless TARGET_USE_LOWER_REGION_PREFIX is
6151 (TARGET_ASM_FILE_END): Define.
6152 (msp430_file_end): New function.
6153 (msp430_do_not_relax_short_jumps): Allow relaxation when
6154 function will be in the lower region.
6155 (msp430_op_not_in_high_mem): New function.
6156 (msp430_print_operand): Check "msp430_op_not_in_high_mem" for
6157 the 'X' operand selector.
6158 Clarify comment for 'x' operand selector.
6159 * config/msp430/msp430.h (LINK_SPEC): Propagate
6160 -m{code,data}-region to the linker via spec function
6161 msp430_propagate_region_opt.
6162 (msp430_propagate_region_opt): New prototype.
6163 (EXTRA_SPEC_FUNCTIONS): Add msp430_propagate_region_opt.
6164 (SYMBOL_FLAG_LOW_MEM): Define.
6165 * config/msp430/msp430.md (addsipsi3): Add missing "%X" operand
6167 (zero_extendqihi2): Fix operand number used by "%X" selector.
6168 (zero_extendqisi2): Likewise.
6169 (zero_extendhisi2): Likewise.
6170 (movqi): Use "Yx" constraint in place of "%X" operand selector.
6175 (addhi3_cy): Likewise.
6176 (addchi4_cy): Likewise.
6180 (bic<mode>3): Likewise.
6181 (and<mode>3): Likewise.
6182 (ior<mode>3): Likewise.
6183 (xor<mode>3): Likewise.
6184 (slli_1): Add missing "%X" operand selector.
6192 (cbranchqi4_real): Use "Yx" constraint in place of "%X" operand
6194 (cbranchhi4_real): Likewise.
6195 (cbranchqi4_reversed): Likewise.
6196 (cbranchhi4_reversed): Likewise.
6197 (*bitbranch<mode>4): Likewise.
6198 (*bitbranch<mode>4_z): Remove unnecessary "%x" operand selector.
6199 * config/msp430/msp430.opt (mcode-region=): Set default to
6200 MSP430_REGION_LOWER. Improve docstring.
6201 (mdata-region=): Likewise.
6202 (muse-lower-region-prefix): New option.
6203 * config/msp430/t-msp430 (MULTILIB_OPTIONS): Add
6204 mdata-region=none multilib.
6205 (MULTILIB_MATCHES): Set mdata-region={upper,either} to match
6206 mdata-region=none multilib.
6207 MULTILIB_EXCEPTIONS: Remove.
6208 MULTILIB_REQUIRED: Define.
6209 * configure: Regenerate.
6210 * configure.ac: Define HAVE_AS_GNU_ATTRIBUTE and
6211 HAVE_AS_MSPABI_ATTRIBUTE if GAS version >= 2.33.50.
6212 * doc/extend.texi: Clarify comment for {upper,lower,either}
6213 function attributes.
6214 Add separate description for "lower" variable attribute.
6216 2019-10-07 Ilya Leoshkevich <iii@linux.ibm.com>
6219 * optabs-tree.c (vcond_icode_p): New function.
6220 (vcond_eq_icode_p): Likewise.
6221 (expand_vec_cond_expr_p): Use vcond_icode_p and
6223 * optabs.c (can_vcond_compare_p): New function.
6224 * optabs.h (can_vcond_compare_p): Likewise.
6226 2019-10-07 Ilya Leoshkevich <iii@linux.ibm.com>
6229 * gimple-expr.c (gimple_cond_get_ops_from_tree): Assert that the
6230 caller passes a non-trapping condition.
6231 (is_gimple_condexpr): Allow trapping conditions.
6232 (is_gimple_condexpr_1): New helper function.
6233 (is_gimple_condexpr_for_cond): New function, acts like old
6235 * gimple-expr.h (is_gimple_condexpr_for_cond): New function.
6236 * gimple.c (gimple_could_trap_p_1): Handle COND_EXPR and
6237 VEC_COND_EXPR. Fix an issue with statements like i = (fp < 1.).
6238 * gimplify.c (gimplify_cond_expr): Use
6239 is_gimple_condexpr_for_cond.
6240 (gimplify_expr): Allow is_gimple_condexpr_for_cond.
6241 * tree-eh.c (operation_could_trap_p): Assert on COND_EXPR and
6243 (tree_could_trap_p): Handle COND_EXPR and VEC_COND_EXPR.
6244 * tree-ssa-forwprop.c (forward_propagate_into_gimple_cond): Use
6245 is_gimple_condexpr_for_cond, remove pointless tmp check
6246 (forward_propagate_into_cond): Remove pointless tmp check.
6248 2019-10-07 Vladislav Ivanishin <vlad@ispras.ru>
6250 * gimple-iterator.h (gsi_next_nonvirtual_phi): Change the semantics to
6251 match that of other gsi_next_* functions. Adjust the comment.
6252 (gsi_start_nonvirtual_phis): New function.
6253 * ipa-icf.c (sem_function::compare_phi_node): Update uses of
6254 gsi_next_nonvirtual_phi accordingly. (No functional change.)
6256 2019-10-07 Vladislav Ivanishin <vlad@ispras.ru>
6258 * doc/invoke.texi (-Wuninitialized): Don't mention the clobbered by
6259 setjmp situation here. Fix a verb's ending: "the exact variables or
6260 elements for which there are warnings depends" -> "... depend".
6262 2019-10-07 Aldy Hernandez <aldyh@redhat.com>
6264 * ipa-prop.c (ipa_vr::nonzero_p): Add TYPE_UNSIGNED check.
6266 2019-10-07 Aldy Hernandez <aldyh@redhat.com>
6268 * ipa-prop.c (ipa_vr::nonzero_p): New.
6269 (ipcp_update_vr): Use nonzero_p instead of open-coding check for
6271 * ipa-prop.h (class ipa_vr): Add nonzero_p.
6272 * tree-vrp.c (range_has_numeric_bounds_p): New.
6273 (range_int_cst_p): Use range_has_numeric_bounds_p.
6274 (get_range_op_handler): New.
6275 (supported_types_p): New.
6276 (defined_ranges_p): New.
6277 (drop_undefines_to_varying): New.
6278 (range_fold_binary_symbolics_p): New.
6279 (range_fold_unary_symbolics_p): New.
6280 (range_fold_unary_expr): Extract out into above functions.
6281 (range_fold_binary_expr): Same.
6282 (value_range_base::normalize_addresses): New.
6283 (value_range_base::normalize_symbolics): Normalize addresses.
6284 * tree-vrp.h (class value_range_base): Add normalize_addresses.
6286 2019-10-07 Aldy Hernandez <aldyh@redhat.com>
6288 * tree-vrp.c (value_range_base::singleton_p): Use
6289 value_range_base::num_pairs instead of vrp_val_is* to check
6290 if a range has one sub-range.
6292 2019-10-07 Richard Sandiford <richard.sandiford@arm.com>
6294 * ira-lives.c (check_and_make_def_conflict): Handle cases in which
6295 DEF is not a true earlyclobber but is tied to a specific input
6296 operand, and so is effectively earlyclobber wrt inputs that have
6298 (make_early_clobber_and_input_conflicts): Pass this case to the above.
6300 2019-10-07 Richard Sandiford <richard.sandiford@arm.com>
6302 * machmode.h (opt_mode): Mark constructors with CONSTEXPR.
6303 (pod_mode): Mark operators likewise.
6304 (scalar_int_mode): Mark non-default constructors and
6305 operators with CONSTEXPR.
6306 (scalar_float_mode, scalar_mode, complex_mode): Likewise.
6307 (fixed_size_mode): Likewise.
6309 2019-10-07 Richard Sandiford <richard.sandiford@arm.com>
6312 * config/i386/sse.md (avx_vzeroupper): Turn into a define_expand
6313 and wrap the unspec_volatile in a parallel.
6314 (*avx_vzeroupper): New define_insn. Use a match_parallel around
6315 the unspec_volatile.
6316 * config/i386/predicates.md (vzeroupper_pattern): Expect the
6317 unspec_volatile to be wrapped in a parallel.
6318 * config/i386/i386-features.c (ix86_add_reg_usage_to_vzeroupper)
6319 (ix86_add_reg_usage_to_vzerouppers): New functions.
6320 (rest_of_handle_insert_vzeroupper): Use them to add register
6321 usage information to the vzeroupper instructions.
6323 2019-10-07 Richard Biener <rguenther@suse.de>
6325 PR tree-optimization/91975
6326 * tree-ssa-loop-ivcanon.c (constant_after_peeling): Consistently
6329 2019-10-06 Richard Sandiford <richard.sandiford@arm.com>
6331 * var-tracking.c (dataflow_set_clear_at_call): Hoist temporary
6332 function result outside of EXECUTE_IF_SET_IN_HARD_REG_SET.
6334 2019-10-06 Iain Sandoe <iain@sandoe.co.uk>
6336 * config/darwin.c (darwin_override_options): Adjust objective-c
6337 ABI version error messages to avoid punctuation and contracted
6340 2019-10-05 Jan Hubicka <hubicka@ucw.cz>
6342 * ipa-inline.c: Fix type; compute size rather than self_size
6343 for size of caller function.
6345 2019-10-05 Iain Sandoe <iain@sandoe.co.uk>
6348 * config/darwin.c (darwin_rodata_section): Add relocation flag,
6349 choose const_data section for constants with relocations.
6350 (machopic_select_section): Pass relocation flag to
6351 darwin_rodata_section ().
6353 2019-10-05 Jakub Jelinek <jakub@redhat.com>
6355 PR tree-optimization/91734
6356 * generic-match-head.c: Include fold-const-call.h.
6357 * match.pd (sqrt(x) cmp c): Check the boundary value and
6358 in case inexact computation of c*c affects comparison of the boundary,
6359 turn LT_EXPR into LE_EXPR, GE_EXPR into GT_EXPR, LE_EXPR into LT_EXPR
6360 or GT_EXPR into GE_EXPR. Punt for sqrt comparisons against NaN and
6361 for -frounding-math. For c2, try the next smaller or larger floating
6362 point constant depending on comparison code and if it has the same
6363 sqrt as c2, use it instead of c2.
6365 2019-10-04 Martin Sebor <msebor@redhat.com>
6368 * tree-ssa-strlen.c (count_nonzero_bytes): Handle assignments with
6369 MEM_REF right operand. Avoid failing for MEM_REF assignments from
6370 uninitialized objects.
6372 2019-10-04 Martin Sebor <msebor@redhat.com>
6374 * builtins.c (compute_objsize): Add an argument.
6375 * tree-object-size.c (addr_object_size): Same.
6376 (compute_builtin_object_size): Same.
6377 * tree-object-size.h (compute_builtin_object): Same.
6379 2019-10-04 Jan Hubicka <hubicka@ucw.cz>
6381 * ipa-inline.c (inline_insns_single, inline_insns_auto): Fix typo.
6383 2019-10-04 Rafael Tsuha <rafael.tsuha@usp.br>
6385 * match.pd (sinh (x) / cosh (x)): New simplification rule.
6387 2019-10-04 Martin Jambor <mjambor@suse.cz>
6389 * tree-ssa-forwprop.c (simplify_builtin_call): Set gimple call
6390 fntype when switching to calling memcpy instead of memset.
6392 2019-10-04 Bernd Edlinger <bernd.edlinger@hotmail.de>
6394 * hash-table.h (hash_table::empty_slow): Don't assign
6395 size_t values to int variables.
6397 2019-10-04 Bernd Edlinger <bernd.edlinger@hotmail.de>
6399 * expr.c (convert_mode_scalar): Remove shadowing local var.
6400 (emit_block_move): Rename local vars.
6401 (block_move_libcall_safe_for_call_parm): Remove shadowing local var.
6402 (emit_push_insn): Rename local vars.
6403 (expand_assignment): Fix wrong mode in assign_stack_temp. Remove
6404 shadowing local vars.
6405 (store_constructor): Remove shadowing local vars. Rename local var.
6406 (store_field, expand_cond_expr_using_cmove,
6407 expand_expr_real_2): Remove shadowing local vars.
6408 (expand_expr_real_1,
6409 do_store_flag): Remove shadowing local vars. Rename local vars.
6411 2019-10-04 Bernd Edlinger <bernd.edlinger@hotmail.de>
6413 * cgraph.h (FOR_EACH_ALIAS): Avoid shadowing the loop variable.
6415 2019-10-04 Bernd Edlinger <bernd.edlinger@hotmail.de>
6417 * genmatch.c (commutate): Rename local var.
6418 (lower_cond): Reuse local var.
6419 (dt_node::gen, dt_node::gen_kids, dt_node::gen_kids_1,
6420 dt_operand::gen, dt_operand::gen_gimple_expr,
6421 dt_simplify::gen): Add a param. Rename generated vars.
6422 (decision_tree::insert_operand,
6423 (capture_info::walk_match, capture_info::walk_result,
6424 capture_info::walk_c_expr): Rename local vars.
6425 (expr::gen_transform): Rename generated vars.
6426 Use snprintf. Rename local vars.
6427 (capture::gen_transform, dt_operand::get_name,
6428 dt_operand::gen_opname): Rename generated vars.
6429 (write_predicate): Adjust call to gen_kids.
6430 (parser::get_internal_capture_id): Rename generated vars.
6431 (parser::parse_expr): Rename local vars.
6432 (parser::parse_if): Remove local var.
6433 (parser::parse_pattern, add_operator): Rename local vars.
6435 2019-10-04 Joseph Myers <joseph@codesourcery.com>
6437 * builtins.def (DEF_C2X_BUILTIN): New macro.
6438 (exp10, exp10f, exp10l, fabsd32, fabsd64, fabsd128, nand32)
6439 (nand64, nand128, roundeven, roundevenf, roundevenl, strdup)
6440 (strndup): Use DEF_C2X_BUILTIN.
6441 * coretypes.h (enum function_class): Add function_c2x_misc.
6443 2019-10-04 Maya Rashish <coypu@sdf.org>
6445 * ira-color.c (update_costs_from_allocno): Call
6446 ira_init_register_move_cost_if_necessary.
6448 2019-10-04 Jeff Law <law@redhat.com>
6450 * config/h8300/h8300.md (cpymemsi): Disable.
6451 (movmd, movmd_internal_<mode>, movstr, movsd):
6452 (movstr, movsd, stpcpy_internal_<mode>: Likewise.
6453 (movmd splitter, movsd splitter): Likewise.
6455 * range-op.cc (range_tests): Avoid two tests when ints and
6456 shorts are the same size.
6458 2019-10-04 Richard Biener <rguenther@suse.de>
6461 * tree.c (find_decls_types_r): Do not remove LABEL_DECLs from
6464 2019-10-04 Richard Biener <rguenther@suse.de>
6466 PR tree-optimization/91982
6467 * tree-vect-loop.c (vectorizable_live_operation): Also guard
6468 against EXTRACT_LAST_REDUCTION.
6469 * tree-vect-stmts.c (vect_transform_stmt): Likewise.
6471 2019-10-04 Aldy Hernandez <aldyh@redhat.com>
6473 * range-op.o (value_range_from_overflowed_bounds): Rename from
6474 adjust_overflow_bound.
6475 (value_range_with_overflow): Rename from
6476 create_range_with_overflow.
6477 (create_possibly_reversed_range): Adjusted for above renames.
6478 (operator_*::wi_fold): Same.
6479 (cross_product_operator::wi_cross_productor): Same.
6481 2019-10-04 Bernd Edlinger <bernd.edlinger@hotmail.de>
6483 * doc/invoke.texi (-Wshadow=global, -Wshadow=local,
6484 -Wshadow=compatible-local): Fix description.
6485 Add an example where -Wshadow=compatible-local does not
6488 2019-10-03 John David Anglin <danglin@gcc.gnu.org>
6490 * config/pa/pa.h (MAX_PCREL17F_OFFSET): Adjust.
6492 * config/pa/pa.c (pa_output_call): Remove 64-bit sibcall sequence.
6493 (pa_attr_length_call): Adjust length for 64-bit plabel sequence.
6495 2019-10-03 Aaron Sawdey <acsawdey@linux.ibm.com>
6497 * expr.c (emit_block_move_hints): Slightly cleaner fix to
6498 can_move_by_pieces issue.
6500 2019-10-03 Iain Sandoe <iain@sandoe.co.uk>
6503 * config/darwin-driver.c (maybe_get_sysroot_from_sdkroot): New.
6504 (darwin_driver_init): Use the sysroot provided by SDKROOT when that
6505 is available and the user has not set one on the command line.
6507 2019-10-03 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
6510 * config/mips/mips.c (mips_split_move): Use reg_overlap_mentioned_p
6511 instead of REGNO equality check on addr.reg.
6513 2019-10-03 Jan Hubicka <hubicka@ucw.cz>
6515 * params.def (PARAM_INLINE_HEURISTICS_HINT_PERCENT,
6516 PARAM_INLINE_HEURISTICS_HINT_PERCENT_O2): New.
6517 * doc/invoke.texi (inline-heuristics-hint-percent,
6518 inline-heuristics-hint-percent-O2): Document.
6519 * tree-inline.c (inline_insns_single, inline_insns_auto): Add new
6521 (can_inline_edge_by_limits_p): Use it.
6523 2019-10-03 Richard Sandiford <richard.sandiford@arm.com>
6525 * config/arm/arm.c (arm_print_value): Use real_to_decimal
6526 to print CONST_DOUBLEs.
6528 2019-10-03 Andrea Corallo <andrea.corallo@arm.com>
6530 * ipa-cp.c (ipa_cp_c_finalize): Release ipcp_transformation_sum.
6531 * ipa-prop.c (ipcp_free_transformation_sum): New function.
6532 * ipa-prop.h (ipcp_free_transformation_sum): Add declaration.
6534 2019-10-03 Aldy Hernandez <aldyh@redhat.com>
6536 * Makefile.in (OBJS): Add range.o and range-op.o.
6537 Remove wide-int-range.o.
6538 * function-tests.c (test_ranges): New.
6539 (function_tests_c_tests): Call test_ranges.
6540 * ipa-cp.c (ipa_vr_operation_and_type_effects): Call
6541 range_fold_unary_expr instead of extract_range_from_unary_expr.
6542 * ipa-prop.c (ipa_compute_jump_functions_for_edge): Same.
6543 * range-op.cc: New file.
6544 * range-op.h: New file.
6545 * range.cc: New file.
6546 * range.h: New file.
6547 * selftest.h (range_tests): New prototype.
6548 * ssa.h: Include range.h.
6549 * tree-vrp.c (value_range_base::value_range_base): New
6551 (value_range_base::singleton_p): Do not call
6552 ranges_from_anti_range until sure we will need to.
6553 (value_range_base::type): Rename gcc_assert to
6554 gcc_checking_assert.
6555 (vrp_val_is_max): New argument.
6556 (vrp_val_is_min): Same.
6557 (wide_int_range_set_zero_nonzero_bits): Move from
6559 (extract_range_into_wide_ints): Remove.
6560 (extract_range_from_multiplicative_op): Remove.
6561 (extract_range_from_pointer_plus_expr): Abstract POINTER_PLUS code
6562 from extract_range_from_binary_expr.
6563 (extract_range_from_plus_minus_expr): Abstract PLUS/MINUS code
6564 from extract_range_from_binary_expr.
6565 (extract_range_from_binary_expr): Remove.
6566 (normalize_for_range_ops): New.
6567 (range_fold_binary_expr): New.
6568 (range_fold_unary_expr): New.
6569 (value_range_base::num_pairs): New.
6570 (value_range_base::lower_bound): New.
6571 (value_range_base::upper_bound): New.
6572 (value_range_base::upper_bound): New.
6573 (value_range_base::contains_p): New.
6574 (value_range_base::invert): New.
6575 (value_range_base::union_): New.
6576 (value_range_base::intersect): New.
6577 (range_compatible_p): New.
6578 (value_range_base::operator==): New.
6579 (determine_value_range_1): Call range_fold_*expr instead of
6580 extract_range_from_*expr.
6581 * tree-vrp.h (class value_range_base): Add new constructors.
6582 Add methods for union_, intersect, operator==, contains_p,
6583 num_pairs, lower_bound, upper_bound, invert.
6584 (vrp_val_is_min): Add handle_pointers argument.
6585 (vrp_val_is_max): Same.
6586 (extract_range_from_unary_expr): Remove.
6587 (extract_range_from_binary_expr): Remove.
6588 (range_fold_unary_expr): New.
6589 (range_fold_binary_expr): New.
6590 * vr-values.c (vr_values::extract_range_from_binary_expr): Call
6591 range_fold_binary_expr instead of extract_range_from_binary_expr.
6592 (vr_values::extract_range_basic): Same.
6593 (vr_values::extract_range_from_unary_expr): Call
6594 range_fold_unary_expr instead of extract_range_from_unary_expr.
6595 * wide-int-range.cc: Remove.
6596 * wide-int-range.h: Remove.
6598 2019-10-02 Michael Meissner <meissner@linux.ibm.com>
6600 * config/rs6000/rs6000.c (mem_operand_gpr): Use
6601 SIGNED_16BIT_OFFSET_EXTRA_P macro.
6602 (mem_operand_ds_form): Use SIGNED_16BIT_OFFSET_EXTRA_P macro.
6603 (rs6000_mode_dependent_address): Use SIGNED_16BIT_OFFSET_EXTRA_P
6606 2019-10-02 Joseph Myers <joseph@codesourcery.com>
6608 * ginclude/stdint-gcc.h [__STDC_WANT_IEC_60559_BFP_EXT__]: Change
6609 condition on WIDTH macros to [__STDC_WANT_IEC_60559_BFP_EXT__ ||
6610 (__STDC_VERSION__ && __STDC_VERSION__ > 201710L)].
6611 * glimits.h: Likewise.
6613 2019-10-03 Jakub Jelinek <jakub@redhat.com>
6615 PR rtl-optimization/91976
6616 * expr.c (emit_block_move_hints): Don't call can_move_by_pieces if
6617 size is not CONST_INT_P, set pieces_ok to false in that case. Simplify
6618 CONST_INT_P (size) && pieces_ok to pieces_ok. Formatting fix.
6620 2019-10-02 Martin Sebor <msebor@redhat.com>
6622 PR tree-optimization/80936
6623 * builtins.def (bcmp, bcopy, bzero): Declare nonnull.
6625 2019-10-02 Richard Sandiford <richard.sandiford@arm.com>
6627 * cgraph.c (cgraph_node::rtl_info): Use SET_HARD_REG_SET
6628 instead of reg_class_contents[ALL_REGS].
6630 2019-09-30 Jason Merrill <jason@redhat.com>
6632 Add some hash_map_safe_* functions like vec_safe_*.
6633 * hash-map.h (default_hash_map_size): New variable.
6634 (create_ggc): Use it as default argument.
6635 (hash_map_maybe_create, hash_map_safe_get)
6636 (hash_map_safe_get_or_insert, hash_map_safe_put): New fns.
6638 2019-10-02 Jan Hubicka <hubicka@ucw.cz>
6640 * cif-code.def (MAX_INLINE_INSNS_SINGLE_O2_LIMIT,
6641 MAX_INLINE_INSNS_AUTO_O2_LIMIT): New.
6642 * ipa-inline.c (inline_insns_single, inline_insns_auto): New functions.
6643 (can_inline_edge_by_limits_p): Use it.
6644 (big_speedup_p): Use PARAM_INLINE_MIN_SPEEDUP_O2.
6645 (want_inline_small_function_p): Use O2 bounds.
6646 (edge_badness): LIkewise.
6647 * opts.c (default_options): Add OPT_finline_functions.
6648 * params.def (PARAM_INLINE_MIN_SPEEDUP_O2,
6649 PARAM_MAX_INLINE_INSNS_SINGLE_O2, PARAM_MAX_INLINE_INSNS_AUTO_O2):
6651 * doc/invoke.texi (-finline-functions): Update documentation.
6652 (max-inline-insns-single-O2, max-inline-insns-auto-O2,
6653 inline-min-speedup-O2): Document.
6654 (early-inlining-insns-O2): Simplify docs.
6656 2019-10-02 Alexander Monakov <amonakov@ispras.ru>
6658 PR rtl-optimization/87047
6659 * ifcvt.c (average_cost): New static function. Use it...
6660 (noce_process_if_block): ... here.
6662 2019-10-02 Aaron Sawdey <acsawdey@linux.ibm.com>
6664 * config/rs6000/rs6000-protos.h (expand_block_move): Change prototype.
6665 * config/rs6000/rs6000-string.c (expand_block_move): Add
6667 * config/rs6000/rs6000.md (movmemsi): Add new pattern.
6668 (cpymemsi): Add might_overlap parm to expand_block_move() call.
6670 2019-10-02 Aaron Sawdey <acsawdey@linux.ibm.com>
6672 * builtins.c (expand_builtin_memory_copy_args): Add might_overlap parm.
6673 (expand_builtin_memcpy): Use might_overlap parm.
6674 (expand_builtin_mempcpy_args): Use might_overlap parm.
6675 (expand_builtin_memmove): Call expand_builtin_memory_copy_args.
6676 (expand_builtin_memory_copy_args): Add might_overlap parm.
6677 * expr.c (emit_block_move_via_cpymem): Rename to
6678 emit_block_move_via_pattern, add might_overlap parm, use cpymem
6679 or movmem optab as appropriate.
6680 (emit_block_move_hints): Add might_overlap parm, do the right
6681 thing for might_overlap==true.
6682 * expr.h (emit_block_move_hints): Update prototype.
6684 2019-10-02 Eric Botcazou <ebotcazou@adacore.com>
6686 * tree-eh.h (unsplit_eh_edges): Declare.
6687 * tree-eh.c (maybe_remove_unreachable_handlers): Detect more cases.
6688 (unsplit_eh_edges): New function wrapping unsplit_all_eh.
6689 * gimple-ssa-store-merging.c: Include cfganal.h cfgcleanup.h except.h.
6690 (struct store_immediate_info): Add lp_nr field.
6691 (store_immediate_info::store_immediate_info): Add NR2 parameter and
6692 initialize lp_nr with it.
6693 (struct merged_store_group): Add lp_nr and only_constants fields.
6694 (merged_store_group::merged_store_group): Initialize them.
6695 (merged_store_group::can_be_merged_into): Deal with them.
6696 (pass_store_merging): Rename terminate_and_release_chain into
6697 terminate_and_process_chain.
6698 (pass_store_merging::terminate_and_process_all_chains): Adjust to above
6699 renaming and remove useless assertions.
6700 (pass_store_merging::terminate_all_aliasing_chains): Small tweak.
6701 (stmts_may_clobber_ref_p): Be prepared for different basic blocks.
6702 (imm_store_chain_info::coalesce_immediate_stores): Use only_constants
6703 instead of always recomputing it and compare lp_nr.
6704 (imm_store_chain_info::output_merged_store): If the group is in an
6705 active EH region, register new stores if they can throw. Moreover,
6706 if the insertion has created new basic blocks, adjust the PHI nodes
6707 of the post landing pad.
6708 (imm_store_chain_info::output_merged_stores): If the original stores
6709 are in an active EH region, deregister them.
6710 (lhs_valid_for_store_merging_p): Prettify.
6711 (adjust_bit_pos): New function extracted from...
6712 (mem_valid_for_store_merging): ...here. Use it for the base address
6713 and also for the offset if it is the addition of a constant.
6714 (lp_nr_for_store): New function.
6715 (pass_store_merging::process_store): Change return type to bool.
6716 Call lp_nr_for_store to initialize the store info. Propagate the
6717 return status of various called functions to the return value.
6718 (store_valid_for_store_merging_p): New predicate.
6719 (enum basic_block_status): New enumeration.
6720 (get_status_for_store_merging): New function.
6721 (pass_store_merging::execute): If the function can throw and catch
6722 non-call exceptions, unsplit the EH edges on entry and clean up the
6723 CFG on exit if something changed. Call get_status_for_store_merging
6724 for every basic block and keep the chains open across basic blocks
6725 when possible. Terminate and process open chains at the end, if any.
6727 2019-10-02 Richard Sandiford <richard.sandiford@arm.com>
6729 * reginfo.c (globalize_reg): Fix shadowed variable in
6732 2019-10-02 Martin Jambor <mjambor@suse.cz>
6734 * cgraph.c (symbol_table::create_edge): New parameter cloning_p,
6735 do not compute some stuff when set.
6736 (cgraph_node::create_edge): Likewise.
6737 (cgraph_node::create_indirect_edge): Renamed last parameter to
6738 coning_p and flipped its meaning, don't even calculate
6739 inline_failed when set.
6740 * cgraph.h (cgraph_node::create_edge): Add new parameter.
6741 (symbol_table::::create_edge): Likewise.
6742 (cgraph_node::create_indirect_edge): Rename last parameter, flip
6744 * cgraphclones.c (cgraph_edge::clone): Pass true cloning_p to all
6745 call graph edge creating functions.
6747 2019-10-01 Jan Hubicka <hubicka@ucw.cz>
6750 * ipa-devirt.c (warn_types_mismatch): Fix conditional on anonymous
6753 2019-10-02 Shahab Vahedi <shahab@synopsys.com>
6755 * config/arc/arc.h (ASM_SPEC): Pass -mcode-density.
6757 2019-10-02 Richard Biener <rguenther@suse.de>
6759 * tree-vectorizer.h (vect_transform_reduction): Declare.
6760 * tree-vect-stmts.c (vect_transform_stmt): Use it.
6761 * tree-vect-loop.c (vectorizable_reduction): Split out reduction
6762 stmt transform to ...
6763 (vect_transform_reduction): ... this.
6765 2019-10-02 Tobias Burnus <tobias@codesourcery.com>
6767 * omp-low.c (lower_omp_target): Dereference optional argument
6768 to work with the right pointer.
6770 2019-10-02 Kwok Cheung Yeung <kcy@codesourcery.com>
6772 * langhooks-def.h (LANG_HOOKS_OMP_IS_OPTIONAL_ARGUMENT): Default to
6774 (LANG_HOOKS_DECLS): Add LANG_HOOKS_OMP_IS_OPTIONAL_ARGUMENT.
6775 * langhooks.h (omp_is_optional_argument): New hook.
6776 * omp-general.c (omp_is_optional_argument): New.
6777 * omp-general.h (omp_is_optional_argument): New declaration.
6778 * omp-low.c (lower_omp_target): Create temporary for received value
6779 and take the address for new_var if the original variable was a
6780 DECL_BY_REFERENCE. Use size of referenced object when a
6781 pass-by-reference optional argument used as argument to firstprivate.
6783 2019-10-02 Jakub Jelinek <jakub@redhat.com>
6785 PR tree-optimization/91940
6786 * tree-vect-patterns.c: Include tree-vector-builder.h and
6788 (vect_recog_rotate_pattern): Also handle __builtin_bswap16, either by
6789 unpromoting the argument back to uint16_t, or by converting into a
6790 rotate, or into shifts plus ior.
6792 2019-10-02 Richard Biener <rguenther@suse.de>
6794 * tree-vectorizer.h (stmt_vec_info_type::cycle_phi_info_type):
6796 (vect_transform_cycle_phi): Declare.
6797 * tree-vect-stmts.c (vect_transform_stmt): Call
6798 vect_transform_cycle_phi.
6799 * tree-vect-loop.c (vectorizable_reduction): Split out
6800 PHI transformation stage to ...
6801 (vect_transform_cycle_phi): ... here.
6803 2019-10-02 Richard Sandiford <richard.sandiford@arm.com>
6806 * lra-lives.c (make_hard_regno_dead): Don't record conflicts for
6807 eliminable registers.
6808 (make_hard_regno_live): Likewise, and don't make them live.
6810 2019-10-01 David Malcolm <dmalcolm@redhat.com>
6812 * diagnostic-show-locus.c (layout::print_gap_in_line_numbering):
6813 Call pp_emit_prefix.
6814 (layout::print_source_line): Likewise.
6815 (layout::start_annotation_line): Likewise.
6816 (diagnostic_show_locus): Remove call to temporarily clear the
6818 (selftest::test_one_liner_fixit_remove): Add test coverage for the
6819 interaction of pp_set_prefix with rulers and fix-it hints.
6820 * diagnostic.c (default_diagnostic_finalizer): Temporarily clear
6821 prefix when calling diagnostic_show_locus, rather than destroying
6823 (print_parseable_fixits): Temporarily clear prefix.
6824 * pretty-print.c (pp_format): Save and restore line_length, rather
6825 than assuming it is zero.
6826 (pp_output_formatted_text): Remove assertion that line_length is
6829 2019-10-01 Jan Hubicka <hubicka@ucw.cz>
6831 * tree-ssa-alias.c (nonoverlapping_component_refs_since_match_p):
6833 (nonoverlapping_refs_since_match_p): ... this; handle also
6835 (alias_stats): Update stats.
6836 (dump_alias_stats): Likewise.
6837 (cheap_array_ref_low_bound): New function.
6838 (aliasing_matching_component_refs_p): Add partial_overlap
6840 pass it to nonoverlapping_refs_since_match_p.
6841 (aliasing_component_refs_walk): Update call of
6842 aliasing_matching_component_refs_p
6843 (nonoverlapping_array_refs_p): New function.
6844 (decl_refs_may_alias_p, indirect_ref_may_alias_decl_p,
6845 indirect_refs_may_alias_p): Update calls of
6846 nonoverlapping_refs_since_match_p.
6848 2019-10-01 Maya Rashish <coypu@sdf.org>
6851 * ira-color.c (allocno_copy_cost_saving): Call
6852 ira_init_register_move_cost_if_necessary.
6854 2019-10-01 Maciej W. Rozycki <macro@wdc.com>
6856 * Makefile.in (gnat_install_lib): New variable.
6857 * configure.ac: Substitute it.
6858 * configure: Regenerate.
6860 2019-10-01 Jan Hubicka <hubicka@ucw.cz>
6863 * ipa-devirt.c (warn_types_mismatch): Do not ICE when anonymous type
6864 is matched with non-C++ type
6866 2019-10-01 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
6868 * tree-if-conv.c (tree_if_conversion): Move call to ifcvt_local_dce
6871 2019-10-01 Jan Hubicka <hubicka@ucw.cz>
6873 * doc/invoke.texi (early-inlining-insns-O2): Document.
6874 (early-inlining-insns): Update.
6875 * params.def (early-inlining-insns-O2): New bound.
6876 (early-inlining-insns): Update docs.
6877 * ipa-inline.c (want_early_inline_function_p): Use new bound.
6879 2019-10-01 Oleg Endo <olegendo@gcc.gnu.org>
6882 * config/sh/sh.c (sh_extending_set_of_reg::use_as_extended_reg): Use
6883 sh_check_add_incdec_notes to preserve REG_INC notes when replacing
6884 a memory access insn.
6886 2019-10-01 Bill Schmidt <wschmidt@linux.ibm.com>
6888 * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Don't swap
6891 2019-10-01 Ilya Leoshkevich <iii@linux.ibm.com>
6894 * config/s390/s390.c (s390_expand_vec_compare): Use
6895 gen_vec_cmpordered and gen_vec_cmpunordered.
6896 * config/s390/vector.md (vec_cmpuneq, vec_cmpltgt, vec_ordered,
6897 vec_unordered): Delete.
6898 (vec_ordered<mode>): Rename to vec_cmpordered<mode>.
6899 (vec_unordered<mode>): Rename to vec_cmpunordered<mode>.
6900 (VEC_CMP_EXPAND): New iterator for the generic dispatcher.
6901 (vec_cmp<code>): Generic dispatcher.
6903 2019-10-01 Ilya Leoshkevich <iii@linux.ibm.com>
6906 * config/s390/vector.md (V_HW): Add V1TI in order to make
6907 vcond$a$b generate vcondv1tiv1tf.
6909 2019-10-01 Richard Sandiford <richard.sandiford@arm.com>
6911 PR rtl-optimization/91948
6912 * ira-build.c (ira_create_allocno): Initialize
6913 ALLOCNO_CROSSED_CALLS_ABIS.
6914 * ira-color.c (allocno_reload_assign): Pass hard_regno rather
6915 than regno to ira_need_caller_save_p.
6917 2019-10-01 Alexandre Oliva <oliva@adacore.com>
6919 * config/i386/i386-options.c
6920 (ix86_recompute_optlev_based_flags): New, moved out of...
6921 (ix86_option_override_internal): ... this. Call it.
6922 (ix86_override_options_after_change): Call it here too.
6925 * dwarf2out.c (override_type_for_decl_p): New.
6926 (gen_variable_die): Use it.
6928 2019-10-01 Richard Biener <rguenther@suse.de>
6930 * tree-vect-loop.c (vectorizable_reduction): Move variables
6931 to where they are used.
6933 2019-10-01 Segher Boessenkool <segher@kernel.crashing.org>
6935 * regrename.c (hide_operands): Use pc_rtx instead of cc0_rtx.
6936 (build_def_use): Use PC instead of CC0 in a comment.
6938 2019-10-01 Richard Sandiford <richard.sandiford@arm.com>
6940 * rtl.def (CLOBBER_HIGH): Delete.
6941 * doc/rtl.texi (clobber_high): Remove documentation.
6942 * rtl.h (SET_DEST): Remove CLOBBER_HIGH from the list of codes.
6943 (reg_is_clobbered_by_clobber_high): Delete.
6944 (gen_hard_reg_clobber_high): Likewise.
6945 * alias.c (record_set): Remove CLOBBER_HIGH handling.
6946 * cfgexpand.c (expand_gimple_stmt): Likewise.
6947 * combine-stack-adj.c (single_set_for_csa): Likewise.
6948 * combine.c (find_single_use_1, set_nonzero_bits_and_sign_copies)
6949 (can_combine_p, is_parallel_of_n_reg_sets, try_combine)
6950 (record_dead_and_set_regs_1, reg_dead_at_p_1): Likewise.
6951 * cse.c (invalidate_reg): Remove clobber_high parameter.
6952 (invalidate): Update call accordingly.
6953 (canonicalize_insn): Remove CLOBBER_HIGH handling.
6954 (invalidate_from_clobbers, invalidate_from_sets_and_clobbers)
6955 (count_reg_usage, insn_live_p): Likewise.
6956 * cselib.h (cselib_invalidate_rtx): Remove sett argument.
6957 * cselib.c (cselib_invalidate_regno, cselib_invalidate_rtx): Likewise.
6958 (cselib_invalidate_rtx_note_stores): Update call accordingly.
6959 (cselib_expand_value_rtx_1): Remove CLOBBER_HIGH handling.
6960 (cselib_invalidate_regno, cselib_process_insn): Likewise.
6961 * dce.c (deletable_insn_p, mark_nonreg_stores_1): Likewise.
6962 (mark_nonreg_stores_2): Likewise.
6963 * df-scan.c (df_find_hard_reg_defs, df_uses_record): Likewise.
6964 (df_get_call_refs): Likewise.
6965 * dwarf2out.c (mem_loc_descriptor): Likewise.
6966 * emit-rtl.c (verify_rtx_sharing): Likewise.
6967 (copy_insn_1, copy_rtx_if_shared_1): Likewise.
6968 (hard_reg_clobbers_high, gen_hard_reg_clobber_high): Delete.
6969 * genconfig.c (walk_insn_part): Remove CLOBBER_HIGH handling.
6970 * genemit.c (gen_exp, gen_insn): Likewise.
6971 * genrecog.c (validate_pattern, remove_clobbers): Likewise.
6972 * haifa-sched.c (haifa_classify_rtx): Likewise.
6973 * ira-build.c (create_insn_allocnos): Likewise.
6974 * ira-costs.c (scan_one_insn): Likewise.
6975 * ira.c (equiv_init_movable_p, memref_referenced_p): Likewise.
6976 (rtx_moveable_p, interesting_dest_for_shprep): Likewise.
6977 * jump.c (mark_jump_label_1): Likewise.
6978 * lra-int.h (lra_insn_reg::clobber_high): Delete.
6979 * lra-eliminations.c (lra_eliminate_regs_1): Remove CLOBBER_HIGH
6981 (mark_not_eliminable): Likewise.
6982 * lra-lives.c (process_bb_lives): Likewise.
6983 * lra.c (new_insn_reg): Remove clobber_high parameter.
6984 (collect_non_operand_hard_regs): Likewise. Update call to new
6985 insn_reg. Remove CLOBBER_HIGH handling.
6986 (lra_set_insn_recog_data): Remove CLOBBER_HIGH handling. Update call
6987 to collect_non_operand_hard_regs.
6988 (add_regs_to_insn_regno_info): Remove CLOBBER_HIGH handling.
6989 Update call to new_insn_reg.
6990 (lra_update_insn_regno_info): Remove CLOBBER_HIGH handling.
6991 * postreload.c (reload_cse_simplify, reload_combine_note_use)
6992 (move2add_note_store): Likewise.
6993 * print-rtl.c (print_pattern): Likewise.
6994 * recog.c (store_data_bypass_p_1, store_data_bypass_p): Likewise.
6995 (if_test_bypass_p): Likewise.
6996 * regcprop.c (kill_clobbered_value, kill_set_value): Likewise.
6997 * reginfo.c (reg_scan_mark_refs): Likewise.
6998 * reload1.c (maybe_fix_stack_asms, eliminate_regs_1): Likewise.
6999 (elimination_effects, mark_not_eliminable, scan_paradoxical_subregs)
7000 (forget_old_reloads_1): Likewise.
7001 * reorg.c (find_end_label, try_merge_delay_insns, redundant_insn)
7002 (own_thread_p, fill_simple_delay_slots, fill_slots_from_thread)
7003 (dbr_schedule): Likewise.
7004 * resource.c (update_live_status, mark_referenced_resources)
7005 (mark_set_resources): Likewise.
7006 * rtl.c (copy_rtx): Likewise.
7007 * rtlanal.c (reg_referenced_p, set_of_1, single_set_2, noop_move_p)
7008 (note_pattern_stores): Likewise.
7009 (reg_is_clobbered_by_clobber_high): Delete.
7010 * sched-deps.c (sched_analyze_reg, sched_analyze_insn): Remove
7011 CLOBBER_HIGH handling.
7013 2019-10-01 Richard Sandiford <richard.sandiford@arm.com>
7016 * config/aarch64/aarch64.h (ARM_PCS_TLSDESC): New arm_pcs.
7017 * config/aarch64/aarch64-protos.h (aarch64_tlsdesc_abi_id): Declare.
7018 * config/aarch64/aarch64.c (aarch64_hard_regno_call_part_clobbered):
7019 Handle ARM_PCS_TLSDESC.
7020 (aarch64_tlsdesc_abi_id): New function.
7021 * config/aarch64/aarch64.md (tlsdesc_small_sve_<mode>): Use a call
7022 rtx instead of a list of clobbers and clobber_highs.
7023 (tlsdesc_small_<mode>): Update accordingly.
7025 2019-10-01 Richard Sandiford <richard.sandiford@arm.com>
7027 * config/aarch64/aarch64-protos.h (aarch64_expand_call): Take an
7028 extra callee_abi argument.
7029 * config/aarch64/aarch64.c (aarch64_expand_call): Likewise.
7030 Insert a CALLEE_ABI unspec into the call pattern as the second
7031 element in the PARALLEL.
7032 (aarch64_simd_call_p): Delete.
7033 (aarch64_insn_callee_abi): Get the arm_pcs of the callee from
7034 the new CALLEE_ABI element of the PARALLEL.
7035 (aarch64_init_cumulative_args): Get the arm_pcs of the callee
7036 from the function type, if given.
7037 (aarch64_function_arg_advance): Handle ARM_PCS_SIMD.
7038 (aarch64_function_arg): Likewise. Return the arm_pcs of the callee
7039 when passed the function_arg_info end marker.
7040 (aarch64_output_mi_thunk): Pass the arm_pcs of the callee as the
7041 final argument of gen_sibcall.
7042 * config/aarch64/aarch64.md (UNSPEC_CALLEE_ABI): New unspec.
7043 (call): Make operand 2 a const_int_operand and pass it to expand_call.
7044 Wrap it in an UNSPEC_CALLEE_ABI unspec for the dummy define_expand
7046 (call_value): Likewise operand 3.
7047 (sibcall): Likewise operand 2. Place the unspec before rather than
7049 (sibcall_value): Likewise operand 3.
7050 (*call_insn, *call_value_insn): Include an UNSPEC_CALLEE_ABI.
7051 (tlsgd_small_<mode>, *tlsgd_small_<mode>): Likewise.
7052 (*sibcall_insn, *sibcall_value_insn): Likewise. Remove empty
7054 (untyped_call): Pass const0_rtx as the callee ABI to gen_call.
7056 2019-10-01 Richard Sandiford <richard.sandiford@arm.com>
7058 * regs.h (HARD_REGNO_CALLER_SAVE_MODE): Update call to
7059 choose_hard_reg_mode.
7060 * config/sparc/sparc.h (HARD_REGNO_CALLER_SAVE_MODE): Likewise.
7062 2019-10-01 Segher Boessenkool <segher@kernel.crashing.org>
7064 * doc/md.texi (vec_pack_trunc_@var{m}): Fix typo.
7065 (vec_pack_sfix_trunc_@var{m}, vec_pack_ufix_trunc_@var{m}): Ditto.
7066 (vec_packs_float_@var{m}, vec_packu_float_@var{m}): Ditto.
7068 2019-09-30 David Malcolm <dmalcolm@redhat.com>
7070 * diagnostic-show-locus.c (line_label::line_label): Initialize
7072 (line_label::comparator): Reverse the sort order by m_state_idx,
7073 so that when the list is walked backwards the labels appear in
7074 order of insertion into the rich_location.
7075 (line_label::m_has_vbar): New field.
7076 (layout::print_any_labels): When dealing with multiple labels at
7077 the same line and column, only print vertical bars for the one
7078 with the highest label_line.
7079 (selftest::test_one_liner_labels): Update test for multiple labels
7080 to expect the labels to be in the order of insertion into the
7081 rich_location. Add a test for many such labels, where the column
7082 numbers are out-of-order relative to the insertion order.
7084 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7086 * config/i386/i386.h (ix86_frame::expensive_p): New field.
7087 (ix86_frame::expensive_count): Likewise.
7088 * config/i386/i386.c (ix86_compute_frame_layout): Make the choice
7089 of use_fast_prologue_epilogue robust against incidental changes
7092 2019-09-30 Ilya Leoshkevich <iii@linux.ibm.com>
7095 * config/s390/vector.md (vec_unordered<mode>): Call
7096 gen_vec_ordered<mode>.
7098 2019-09-30 Yuliang Wang <yuliang.wang@arm.com>
7100 * config/aarch64/aarch64-sve.md (sdiv_pow2<mode>3):
7101 New pattern for ASRD.
7102 * config/aarch64/iterators.md (UNSPEC_ASRD): New unspec.
7103 * internal-fn.def (IFN_DIV_POW2): New internal function.
7104 * optabs.def (sdiv_pow2_optab): New optab.
7105 * tree-vect-patterns.c (vect_recog_divmod_pattern):
7106 Modify pattern to support new operation.
7107 * doc/md.texi (sdiv_pow2$var{m3}): Documentation for the above.
7108 * doc/sourcebuild.texi (vect_sdiv_pow2_si):
7109 Document new target selector.
7111 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7113 * config/aarch64/aarch64.c (aarch64_layout_frame): Use crtl->abi
7114 to test whether we're compiling a vector PCS function and to test
7115 whether the function needs to save a particular register.
7116 Remove the vector PCS handling of df_set_regs_ever_live.
7117 (aarch64_components_for_bb): Use crtl->abi to test whether
7118 the function needs to save a particular register.
7119 (aarch64_process_components): Use crtl->abi to test whether
7120 we're compiling a vector PCS function.
7121 (aarch64_expand_prologue, aarch64_expand_epilogue): Likewise.
7122 (aarch64_epilogue_uses): Remove handling of vector PCS functions.
7124 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7126 * config/aarch64/aarch64-protos.h (aarch64_use_simple_return_insn_p):
7128 * config/aarch64/aarch64.c (aarch64_components_for_bb): Check
7129 whether the block calls a function that clobbers more registers
7130 than the current function is allowed to.
7131 (aarch64_use_simple_return_insn_p): Delete.
7132 * config/aarch64/aarch64.md (simple_return): Remove condition.
7134 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7136 * function-abi.h (function_abi_aggregator): New class.
7137 * function-abi.cc (function_abi_aggregator::caller_save_regs): New
7139 * ira.c (update_equiv_regs_prescan): New function. Call
7140 set_paradoxical_subreg here rather than...
7141 (update_equiv_regs): ...here.
7142 (ira): Call update_equiv_regs_prescan.
7144 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7146 * hard-reg-set.h (regs_invalidated_by_call): Only define if
7148 (call_used_or_fixed_regs): Likewise.
7149 (call_used_or_fixed_reg_p): Likewise.
7150 * reginfo.c (regs_invalidated_by_call): New macro.
7152 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7154 * shrink-wrap.c: Include function-abi.h.
7155 (requires_stack_frame_p): Use crtl->abi to test whether the
7156 current function can use a register without saving it first.
7158 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7160 * sel-sched-ir.h (_def::crosses_call): Replace with...
7161 (_def::crossed_call_abis): ..this new field.
7162 (def_list_add): Take a mask of ABIs instead of a crosses_call
7164 * sel-sched-ir.c (def_list_add): Likewise. Update initialization
7165 of _def accordingly.
7166 * sel-sched.c: Include function-abi.h.
7167 (hard_regs_data::regs_for_call_clobbered): Delete.
7168 (reg_rename::crosses_call): Replace with...
7169 (reg_rename::crossed_call_abis): ...this new field.
7170 (fur_static_params::crosses_call): Replace with...
7171 (fur_static_params::crossed_call_abis): ...this new field.
7172 (init_regs_for_mode): Don't initialize sel_hrd.regs_for_call_clobbered.
7173 (init_hard_regs_data): Use crtl->abi to test which registers the
7174 current function would need to save before it uses them.
7175 (mark_unavailable_hard_regs): Update handling of call-clobbered
7176 registers, using call_clobbers_in_region to find out which registers
7177 might be call-clobbered (but without taking -fipa-ra into account
7178 for now). Remove separate handling of partially call-clobbered
7180 (verify_target_availability): Use crossed_call_abis instead of
7182 (get_spec_check_type_for_insn, find_used_regs): Likewise.
7183 (fur_orig_expr_found, fur_on_enter, fur_orig_expr_not_found): Likewise.
7185 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7187 * sched-deps.c (deps_analyze_insn): Use the ABI of the target
7188 function to test whether a register is fully or partly clobbered.
7190 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7192 * rtlanal.c: Include function-abi.h.
7193 (reg_set_p): Use insn_callee_abi to get the ABI of the called
7194 function and clobbers_reg_p to test whether the register
7196 (find_all_hard_reg_sets): When implicit is true, use insn_callee_abi
7197 to get the ABI of the called function and full_reg_clobbers to
7198 get the set of fully call-clobbered registers. Warn about the
7199 pitfalls of using this mode.
7201 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7203 * reload.c: Include function-abi.h.
7204 (find_equiv_reg): Use clobbers_reg_p to test whether either
7205 of the equivalent registers is clobbered by a call.
7206 * reload1.c: Include function-abi.h.
7207 (reg_reloaded_call_part_clobbered): Delete.
7208 (reload): Use crtl->abi to test which registers would need
7209 saving in the prologue before use.
7210 (find_reg): Likewise.
7211 (emit_reload_insns): Remove code for reg_reloaded_call_part_clobbered.
7212 (reload_as_needed): Likewise. Use full_and_partial_reg_clobbers
7213 instead of call_used_or_fixed_regs | reg_reloaded_call_part_clobbered.
7215 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7217 * regrename.h (du_head::call_clobber_mask): New field.
7218 (du_head::need_caller_save_reg): Replace with...
7219 (du_head::call_abis): ...this new field.
7220 * regrename.c: Include function-abi.h.
7221 (call_clobbered_in_chain_p): New function.
7222 (check_new_reg_p): Use crtl->abi when deciding whether a register
7223 is free for use after RA. Use call_clobbered_in_chain_p to test
7224 whether a candidate register would be clobbered by a call.
7225 (find_rename_reg): Don't add call-clobber conflicts here.
7226 (rename_chains): Check call_abis instead of need_caller_save_reg.
7227 (merge_chains): Update for changes to du_head.
7228 (build_def_use): Use insn_callee_abi to get the ABI of the call insn
7229 target. Record the ABI identifier in call_abis and the set of
7230 fully or partially clobbered registers in call_clobber_mask.
7231 Add fully-clobbered registers to hard_conflicts here rather
7232 than in find_rename_reg.
7233 * config/aarch64/cortex-a57-fma-steering.c: Include function-abi.h.
7234 (rename_single_chain): Check call_abis instead of need_caller_save_reg.
7235 * config/aarch64/falkor-tag-collision-avoidance.c: Include
7237 * config/c6x/c6x.c: Likewise.
7239 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7241 * regcprop.c (copyprop_hardreg_forward_1): Use the recorded
7242 mode of the register when deciding whether it is no longer
7243 available after a call.
7245 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7247 * recog.c: Include function-abi.h.
7248 (peep2_find_free_register): Use crtl->abi when deciding whether
7249 a register is free for use after RA.
7251 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7253 * postreload-gcse.c: Include regs.h and function-abi.h.
7254 (record_opr_changes): Use insn_callee_abi to get the ABI of the
7255 call insn target. Conservatively assume that partially-clobbered
7256 registers are altered.
7258 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7260 * postreload.c (reload_combine_recognize_pattern): Use crtl->abi
7261 when deciding whether a register is free for use after RA.
7262 (reload_combine): Remove unnecessary use of fixed_reg_set.
7263 (reload_cse_move2add): Use insn_callee_abi to get the ABI of the
7264 call insn target. Use reg_mode when testing whether a register
7265 is no longer available.
7267 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7269 * target.def (return_call_with_max_clobbers): Delete.
7270 * doc/tm.texi.in (TARGET_RETURN_CALL_WITH_MAX_CLOBBERS): Delete.
7271 * doc/tm.texi: Regenerate.
7272 * config/aarch64/aarch64.c (aarch64_return_call_with_max_clobbers)
7273 (TARGET_RETURN_CALL_WITH_MAX_CLOBBERS): Delete.
7274 * lra-int.h (lra_reg::actual_call_used_reg_set): Delete.
7275 (lra_reg::call_insn): Delete.
7276 * lra.c: Include function-abi.h.
7277 (initialize_lra_reg_info_element): Don't initialize the fields above.
7278 (lra): Use crtl->abi to test whether the current function needs to
7279 save a register in the prologue. Remove special pre-inheritance
7280 lra_create_live_ranges pass for flag_ipa_ra.
7281 * lra-assigns.c: Include function-abi.h
7282 (find_hard_regno_for_1): Use crtl->abi to test whether the current
7283 function needs to save a register in the prologue.
7284 (lra_assign): Assert that registers aren't allocated to a
7285 conflicting register, rather than checking only for overlaps
7286 with call_used_or_fixed_regs. Do this even for flag_ipa_ra,
7287 and for registers that are not live across a call.
7288 * lra-constraints.c (last_call_for_abi): New variable.
7289 (full_and_partial_call_clobbers): Likewise.
7290 (setup_next_usage_insn): Remove the register from
7291 full_and_partial_call_clobbers.
7292 (need_for_call_save_p): Use call_clobbered_in_region_p to test
7293 whether the register needs a caller save.
7294 (need_for_split_p): Use full_and_partial_reg_clobbers instead
7295 of call_used_or_fixed_regs.
7296 (inherit_in_ebb): Initialize and maintain last_call_for_abi and
7297 full_and_partial_call_clobbers.
7298 * lra-lives.c (check_pseudos_live_through_calls): Replace
7299 last_call_used_reg_set and call_insn arguments with an abi argument.
7300 Remove handling of lra_reg::call_insn. Use function_abi::mode_clobbers
7301 as the set of conflicting registers.
7302 (calls_have_same_clobbers_p): Delete.
7303 (process_bb_lives): Track the ABI of the last call instead of an
7304 insn/HARD_REG_SET pair. Update calls to
7305 check_pseudos_live_through_calls. Use eh_edge_abi to calculate
7306 the set of registers that could be clobbered by an EH edge.
7307 Include partially-clobbered as well as fully-clobbered registers.
7308 (lra_create_live_ranges_1): Don't initialize lra_reg::call_insn.
7309 * lra-remat.c: Include function-abi.h.
7310 (call_used_regs_arr_len, call_used_regs_arr): Delete.
7311 (set_bb_regs): Use insn_callee_abi to get the set of call-clobbered
7312 registers and bitmap_view to combine them into dead_regs.
7313 (call_used_input_regno_present_p): Take a function_abi argument
7314 and use it to test whether a register is call-clobbered.
7315 (calculate_gen_cands): Use insn_callee_abi to get the ABI of the
7316 call insn target. Update tje call to call_used_input_regno_present_p.
7317 (do_remat): Likewise.
7318 (lra_remat): Remove the initialization of call_used_regs_arr_len
7319 and call_used_regs_arr.
7321 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7323 * loop-iv.c: Include regs.h and function-abi.h.
7324 (simplify_using_initial_values): Use insn_callee_abi to get the
7325 ABI of the call insn target. Conservatively assume that
7326 partially-clobbered registers are altered.
7328 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7330 * function-abi.h (call_clobbers_in_region): Declare.
7331 (call_clobbered_in_region_p): New function.
7332 * function-abi.cc (call_clobbers_in_region): Likewise.
7333 * ira-int.h: Include function-abi.h.
7334 (ira_allocno::crossed_calls_abis): New field.
7335 (ALLOCNO_CROSSED_CALLS_ABIS): New macro.
7336 (ira_need_caller_save_regs): New function.
7337 (ira_need_caller_save_p): Likewise.
7338 * ira.c (setup_reg_renumber): Use ira_need_caller_save_p instead
7339 of call_used_or_fixed_regs.
7340 (do_reload): Use crtl->abi to test whether the current function
7341 needs to save a register in the prologue. Count registers that
7342 need to be saved rather than registers that don't.
7343 * ira-build.c (create_cap_allocno): Copy ALLOCNO_CROSSED_CALLS_ABIS.
7344 Remove unnecessary | from ALLOCNO_CROSSED_CALLS_CLOBBERED_REGS.
7345 (propagate_allocno_info): Merge ALLOCNO_CROSSED_CALLS_ABIS too.
7346 (propagate_some_info_from_allocno): Likewise.
7347 (copy_info_to_removed_store_destinations): Likewise.
7348 (ira_flattening): Say that ALLOCNO_CROSSED_CALLS_ABIS and
7349 ALLOCNO_CROSSED_CALLS_CLOBBERED_REGS are handled conservatively.
7350 (ira_build): Use ira_need_caller_save_regs instead of
7351 call_used_or_fixed_regs.
7352 * ira-color.c (calculate_saved_nregs): Use crtl->abi to test
7353 whether the current function would need to save a register
7355 (calculate_spill_cost): Likewise.
7356 (allocno_reload_assign): Use ira_need_caller_save_regs and
7357 ira_need_caller_save_p instead of call_used_or_fixed_regs.
7358 * ira-conflicts.c (ira_build_conflicts): Use
7359 ira_need_caller_save_regs rather than call_used_or_fixed_regs
7360 as the set of call-clobbered registers. Remove the
7361 call_used_or_fixed_regs mask from the calculation of
7362 temp_hard_reg_set and mask its use instead. Remove special
7363 handling of partially-clobbered registers.
7364 * ira-costs.c (ira_tune_allocno_costs): Use ira_need_caller_save_p.
7365 * ira-lives.c (process_bb_node_lives): Use mode_clobbers to
7366 calculate the set of conflicting registers for calls that
7367 can throw. Record the ABIs of calls in ALLOCNO_CROSSED_CALLS_ABIS.
7368 Use full_and_partial_reg_clobbers rather than full_reg_clobbers
7369 for the calculation of ALLOCNO_CROSSED_CALLS_CLOBBERED_REGS.
7370 Use eh_edge_abi to calculate the set of registers that could
7371 be clobbered by an EH edge. Include partially-clobbered as
7372 well as fully-clobbered registers.
7374 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7376 * haifa-sched.c: Include function-abi.h.
7377 (alloc_global_sched_pressure_data): Use crtl->abi to check whether
7378 the function would need to save a register before using it.
7380 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7382 * gcse.c: Include function-abi.h.
7383 (compute_hash_table_work): Use insn_callee_abi to get the ABI of
7384 the call insn target. Invalidate partially call-clobbered
7385 registers as well as fully call-clobbered ones.
7387 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7389 * function.c (aggregate_value_p): Work out which ABI the
7390 function is using before testing which registers are at least
7391 partly preserved by a call.
7393 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7395 * early-remat.c: Include regs.h and function-abi.h.
7396 (early_remat::maybe_add_candidate): Don't check for call-clobbered
7398 (early_remat::restrict_remat_for_unavail_regs): New function.
7399 (early_remat::restrict_remat_for_call): Likewise.
7400 (early_remat::process_block): Before calling emit_remat_insns
7401 for a previous call in the block, invalidate any candidates
7402 that would clobber call-preserved registers.
7403 (early_remat::emit_remat_insns_for_block): Likewise for the
7404 final call in a block. Do the same thing for live-in registers
7405 when calling emit_remat_insns at the head of a block.
7407 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7409 * df-scan.c (df_get_entry_block_def_set): Use crtl->abi to test
7410 whether the current function needs to save at least part of a
7411 register before using it.
7412 (df_get_exit_block_use_set): Likewise for epilogue restores.
7414 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7416 * df-problems.c: Include regs.h and function-abi.h.
7417 (df_rd_problem_data): Rename sparse_invalidated_by_call to
7418 sparse_invalidated_by_eh and dense_invalidated_by_call to
7419 dense_invalidated_by_eh.
7420 (df_print_bb_index): Update accordingly.
7421 (df_rd_alloc, df_rd_start_dump, df_rd_confluence_n): Likewise.
7422 (df_lr_confluence_n): Use eh_edge_abi to get the set of registers
7423 that are clobbered by an EH edge. Clobber partially-clobbered
7424 registers as well as fully-clobbered ones.
7425 (df_md_confluence_n): Likewise.
7426 (df_rd_local_compute): Likewise. Update for changes to
7428 * df-scan.c (df_scan_start_dump): Use eh_edge_abi to get the set
7429 of registers that are clobbered by an EH edge. Includde partially-
7430 clobbered registers as well as fully-clobbered ones.
7432 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7434 * cselib.c (cselib_process_insn): If we know what mode a
7435 register was set in, check whether it is clobbered in that
7436 mode by a call. Only fall back to reg_raw_mode if that fails.
7438 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7440 * cse.c: Include regs.h and function-abi.h.
7441 (invalidate_for_call): Take the call insn as an argument.
7442 Use insn_callee_abi to get the ABI of the call and invalidate
7443 partially clobbered registers as well as fully clobbered ones.
7444 (cse_insn): Update call accordingly.
7446 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7448 * combine.c: Include function-abi.h.
7449 (record_dead_and_set_regs): Use insn_callee_abi to get the ABI
7450 of the target of call insns. Invalidate partially-clobbered
7451 registers as well as fully-clobbered ones.
7453 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7455 * cfgloopanal.c: Include regs.h and function-abi.h.
7456 (init_set_costs): Use default_function_abi to test whether
7457 a general register is call-clobbered.
7459 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7461 * cfgcleanup.c (old_insns_match_p): Compare the ABIs of calls
7462 instead of the call-clobbered sets.
7464 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7466 * caller-save.c (setup_save_areas): Remove redundant |s of
7468 (save_call_clobbered_regs): Likewise. Use the call ABI rather
7469 than call_used_or_fixed_regs to decide whether a REG_RETURNED
7472 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7474 * rtl.h (predefined_function_abi): Declare.
7475 (choose_hard_reg_mode): Take a pointer to a predefined_function_abi
7476 instead of a boolean call_save flag.
7477 * config/gcn/gcn.c (gcn_hard_regno_caller_save_mode): Update call
7479 * config/i386/i386.h (HARD_REGNO_CALLER_SAVE_MODE): Likewise.
7480 * config/ia64/ia64.h (HARD_REGNO_CALLER_SAVE_MODE): Likewise.
7481 * config/mips/mips.c (mips_hard_regno_caller_save_mode): Likewise.
7482 * config/msp430/msp430.h (HARD_REGNO_CALLER_SAVE_MODE): Likewise.
7483 * config/rs6000/rs6000.h (HARD_REGNO_CALLER_SAVE_MODE): Likewise.
7484 * config/sh/sh.c (sh_hard_regno_caller_save_mode): Likewise.
7485 * reginfo.c (init_reg_modes_target): Likewise.
7486 (choose_hard_reg_mode): Take a pointer to a predefined_function_abi
7487 instead of a boolean call_save flag.
7488 * targhooks.c: Include function-abi.h.
7489 (default_dwarf_frame_reg_mode): Update call to choose_hard_reg_mode,
7490 using eh_edge_abi to choose the mode.
7492 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7494 * target.def (hard_regno_call_part_clobbered): Take an ABI
7495 identifier instead of an rtx_insn.
7496 * doc/tm.texi: Regenerate.
7497 * hooks.h (hook_bool_insn_uint_mode_false): Delete.
7498 (hook_bool_uint_uint_mode_false): New function.
7499 * hooks.c (hook_bool_insn_uint_mode_false): Delete.
7500 (hook_bool_uint_uint_mode_false): New function.
7501 * config/aarch64/aarch64.c (aarch64_hard_regno_call_part_clobbered):
7502 Take an ABI identifier instead of an rtx_insn.
7503 * config/avr/avr.c (avr_hard_regno_call_part_clobbered): Likewise.
7504 * config/i386/i386.c (ix86_hard_regno_call_part_clobbered): Likewise.
7505 * config/mips/mips.c (mips_hard_regno_call_part_clobbered): Likewise.
7506 * config/pru/pru.c (pru_hard_regno_call_part_clobbered): Likewise.
7507 * config/rs6000/rs6000.c (rs6000_hard_regno_call_part_clobbered):
7509 * config/s390/s390.c (s390_hard_regno_call_part_clobbered): Likewise.
7510 * cselib.c: Include function-abi.h.
7511 (cselib_process_insn): Update call to
7512 targetm.hard_regno_call_part_clobbered, using insn_callee_abi
7513 to get the appropriate ABI identifier.
7514 * function-abi.cc (predefined_function_abi::initialize): Update call
7515 to targetm.hard_regno_call_part_clobbered.
7516 * ira-conflicts.c (ira_build_conflicts): Likewise.
7517 * ira-costs.c (ira_tune_allocno_costs): Likewise.
7518 * lra-constraints.c: Include function-abi.h.
7519 (need_for_call_save_p): Update call to
7520 targetm.hard_regno_call_part_clobbered, using insn_callee_abi
7521 to get the appropriate ABI identifier.
7522 * lra-lives.c (check_pseudos_live_through_calls): Likewise.
7523 * regcprop.c (copyprop_hardreg_forward_1): Update call
7524 to targetm.hard_regno_call_part_clobbered.
7525 * reginfo.c (choose_hard_reg_mode): Likewise.
7526 * regrename.c (check_new_reg_p): Likewise.
7527 * reload.c (find_equiv_reg): Likewise.
7528 * reload1.c (emit_reload_insns): Likewise.
7529 * sched-deps.c: Include function-abi.h.
7530 (deps_analyze_insn): Update call to
7531 targetm.hard_regno_call_part_clobbered, using insn_callee_abi
7532 to get the appropriate ABI identifier.
7533 * sel-sched.c (init_regs_for_mode, mark_unavailable_hard_regs): Update
7534 call to targetm.hard_regno_call_part_clobbered.
7535 * targhooks.c (default_dwarf_frame_reg_mode): Likewise.
7537 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7539 * config/i386/i386.c: Include function-abi.h.
7540 (ix86_avx_u128_mode_needed): Treat function calls as AVX_U128_ANY
7541 if they preserve some 256-bit or 512-bit SSE registers.
7543 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7545 * target.def (insn_callee_abi): New hook.
7546 (remove_extra_call_preserved_regs): Delete.
7547 * doc/tm.texi.in (TARGET_INSN_CALLEE_ABI): New macro.
7548 (TARGET_REMOVE_EXTRA_CALL_PRESERVED_REGS): Delete.
7549 * doc/tm.texi: Regenerate.
7550 * targhooks.h (default_remove_extra_call_preserved_regs): Delete.
7551 * targhooks.c (default_remove_extra_call_preserved_regs): Delete.
7552 * config/aarch64/aarch64.c (aarch64_simd_call_p): Constify the
7554 (aarch64_remove_extra_call_preserved_regs): Delete.
7555 (aarch64_insn_callee_abi): New function.
7556 (TARGET_REMOVE_EXTRA_CALL_PRESERVED_REGS): Delete.
7557 (TARGET_INSN_CALLEE_ABI): New macro.
7558 * rtl.h (get_call_fndecl): Declare.
7559 (cgraph_rtl_info): Fix formatting. Tweak comment for
7560 function_used_regs. Remove function_used_regs_valid.
7561 * rtlanal.c (get_call_fndecl): Moved from final.c
7562 * function-abi.h (insn_callee_abi): Declare.
7563 (target_function_abi_info): Mention insn_callee_abi.
7564 * function-abi.cc (fndecl_abi): Handle flag_ipa_ra in a similar
7565 way to get_call_reg_set_usage did.
7566 (insn_callee_abi): New function.
7567 * regs.h (get_call_reg_set_usage): Delete.
7568 * final.c: Include function-abi.h.
7569 (collect_fn_hard_reg_usage): Add fixed and stack registers to
7570 function_used_regs before the main loop rather than afterwards.
7571 Use insn_callee_abi instead of get_call_reg_set_usage. Exit early
7572 if function_used_regs ends up not being useful.
7573 (get_call_fndecl): Move to rtlanal.c
7574 (get_call_cgraph_rtl_info, get_call_reg_set_usage): Delete.
7575 * caller-save.c: Include function-abi.h.
7576 (setup_save_areas, save_call_clobbered_regs): Use insn_callee_abi
7577 instead of get_call_reg_set_usage.
7578 * cfgcleanup.c: Include function-abi.h.
7579 (old_insns_match_p): Use insn_callee_abi instead of
7580 get_call_reg_set_usage.
7581 * cgraph.h (cgraph_node::rtl_info): Take a const_tree instead of
7583 * cgraph.c (cgraph_node::rtl_info): Likewise. Initialize
7585 * df-scan.c: Include function-abi.h.
7586 (df_get_call_refs): Use insn_callee_abi instead of
7587 get_call_reg_set_usage.
7588 * ira-lives.c: Include function-abi.h.
7589 (process_bb_node_lives): Use insn_callee_abi instead of
7590 get_call_reg_set_usage.
7591 * lra-lives.c: Include function-abi.h.
7592 (process_bb_lives): Use insn_callee_abi instead of
7593 get_call_reg_set_usage.
7594 * postreload.c: Include function-abi.h.
7595 (reload_combine): Use insn_callee_abi instead of
7596 get_call_reg_set_usage.
7597 * regcprop.c: Include function-abi.h.
7598 (copyprop_hardreg_forward_1): Use insn_callee_abi instead of
7599 get_call_reg_set_usage.
7600 * resource.c: Include function-abi.h.
7601 (mark_set_resources, mark_target_live_regs): Use insn_callee_abi
7602 instead of get_call_reg_set_usage.
7603 * var-tracking.c: Include function-abi.h.
7604 (dataflow_set_clear_at_call): Use insn_callee_abi instead of
7605 get_call_reg_set_usage.
7607 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7609 * target.def (fntype_abi): New target hook.
7610 * doc/tm.texi.in (TARGET_FNTYPE_ABI): Likewise.
7611 * doc/tm.texi: Regenerate.
7612 * target.h (predefined_function_abi): Declare.
7613 * function-abi.cc (fntype_abi): Call targetm.calls.fntype_abi,
7615 * config/aarch64/aarch64.h (ARM_PCS_SIMD): New arm_pcs value.
7616 * config/aarch64/aarch64.c: Include function-abi.h.
7617 (aarch64_simd_abi, aarch64_fntype_abi): New functions.
7618 (TARGET_FNTYPE_ABI): Define.
7620 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7622 * Makefile.in (OBJS): Add function-abi.o.
7623 (GTFILES): Add function-abi.h.
7624 * function-abi.cc: New file.
7625 * function-abi.h: Likewise.
7626 * emit-rtl.h (rtl_data::abi): New field.
7627 * function.c: Include function-abi.h.
7628 (prepare_function_start): Initialize crtl->abi.
7629 * read-rtl-function.c: Include regs.h and function-abi.h.
7630 (read_rtl_function_body): Initialize crtl->abi.
7631 (read_rtl_function_body_from_file_range): Likewise.
7632 * reginfo.c: Include function-abi.h.
7633 (init_reg_sets_1): Initialize default_function_abi.
7634 (globalize_reg): Call add_full_reg_clobber for each predefined ABI
7635 when making a register global.
7636 * target-globals.h (this_target_function_abi_info): Declare.
7637 (target_globals::function_abi_info): New field.
7638 (restore_target_globals): Copy it.
7639 * target-globals.c: Include function-abi.h.
7640 (default_target_globals): Initialize the function_abi_info field.
7641 (target_globals): Allocate it.
7642 (save_target_globals): Free it.
7644 2019-09-30 Nick Clifton <nickc@redhat.com>
7647 * config/frv/frv.c (frv_register_move_cost): Add break statements
7648 to avoid falling through to the wrong cases. Tidy code.
7650 2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
7652 * config/aarch64/aarch64.c (aarch64_hard_regno_call_part_clobbered):
7653 For multi-registers modes, test how big each register part is.
7655 2019-09-30 Nick Clifton <nickc@redhat.com>
7658 * config/iq2000/iq2000.c (iq2000_select_section): Delete.
7659 (TARGET_ASM_SELECT_SECTION): Remove definition.
7660 (TARGET_HAVE_SWITCHABLE_BSS_SECTIONS): Allow definition.
7662 2019-09-30 Ilya Leoshkevich <iii@linux.ibm.com>
7664 * emit-rtl.c (init_raw_REG): New function.
7665 (gen_raw_REG): Use init_raw_REG.
7666 * gengenrtl.c (gendef): Emit init_* functions and alloca_*
7668 * rtl.c (rtx_alloc_stat_v): Use rtx_init.
7669 * rtl.h (rtx_init): New function.
7670 (rtx_alloca): New function.
7671 (init_raw_REG): New function.
7672 (alloca_raw_REG): New macro.
7674 2019-09-30 Michael Meissner <meissner@linux.ibm.com>
7676 * config/rs6000/predicates.md (pcrel_address): Delete predicate.
7677 (pcrel_local_address): Replace pcrel_address predicate, use the
7678 new function address_to_insn_form.
7679 (pcrel_external_address): Replace with new implementation using
7680 address_to_insn_form..
7681 (prefixed_mem_operand): Delete predicate which is now unused.
7682 (pcrel_external_mem_operand): Delete predicate which is now
7684 * config/rs6000/rs6000-protos.h (enum insn_form): New
7686 (enum non_prefixed_form): New enumeration.
7687 (address_to_insn_form): New declaration.
7688 (prefixed_load_p): New declaration.
7689 (prefixed_store_p): New declaration.
7690 (prefixed_paddi_p): New declaration.
7691 (rs6000_asm_output_opcode): New declaration.
7692 (rs6000_final_prescan_insn): Move declaration and update calling
7694 (address_is_prefixed): New helper inline function.
7695 * config/rs6000/rs6000.c(print_operand_address): Check for either
7696 PC-relative local symbols or PC-relative external symbols.
7697 (rs6000_emit_move): Support loading PC-relative addresses.
7698 (mode_supports_prefixed_address_p): Delete, no longer used.
7699 (rs6000_prefixed_address_mode_p): Delete, no longer used.
7700 (address_to_insn_form): New function to decode an address format.
7701 (reg_to_non_prefixed): New function to identify what the
7702 non-prefixed memory instruction format is for a register.
7703 (prefixed_load_p): New function to identify prefixed loads.
7704 (prefixed_store_p): New function to identify prefixed stores.
7705 (prefixed_paddi_p): New function to identify prefixed load
7707 (next_insn_prefixed_p): New static state variable.
7708 (rs6000_final_prescan_insn): New function to determine if an insn
7709 uses a prefixed instruction.
7710 (rs6000_asm_output_opcode): New function to emit 'p' in front of a
7711 prefixed instruction.
7712 * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): New target hook.
7713 (ASM_OUTPUT_OPCODE): New target hook.
7714 * config/rs6000/rs6000.md (prefixed): New insn attribute for
7715 prefixed instructions.
7716 (prefixed_length): New insn attribute for the size of prefixed
7718 (non_prefixed_length): New insn attribute for the size of
7719 non-prefixed instructions.
7720 (pcrel_local_addr): New insn to load up a local PC-relative
7722 (pcrel_extern_addr): New insn to load up an external PC-relative
7724 (mov<mode>_64bit_dm): Split the alternatives for loading 0.0 to a
7725 GPR and loading a 128-bit floating point type to a GPR.
7727 2019-09-30 Richard Biener <rguenther@suse.de>
7729 * gimple.c (gimple_get_lhs): For PHIs return the result.
7730 * tree-vectorizer.h (vectorizable_live_operation): Also get the
7731 SLP instance as argument.
7732 * tree-vect-loop.c (vect_analyze_loop_operations): Also handle
7733 double-reduction PHIs with vectorizable_lc_phi.
7734 (vect_analyze_loop_operations): Adjust.
7735 (vect_create_epilog_for_reduction): Remove all code not dealing
7736 with reduction LC PHI or epilogue generation.
7737 (vectorizable_live_operation): Call vect_create_epilog_for_reduction
7738 for live stmts of reductions.
7739 * tree-vect-stmts.c (vectorizable_condition): When !for_reduction
7740 do not handle defs that are not vect_internal_def.
7741 (can_vectorize_live_stmts): Adjust.
7742 (vect_analyze_stmt): When the vectorized stmt defined a value
7743 used on backedges adjust the backedge uses of vectorized PHIs.
7745 2019-09-30 Martin Jambor <mjambor@suse.cz>
7748 * tree-inline.c (force_value_to_type): New function.
7749 (setup_one_parameter): Use force_value_to_type to convert type.
7750 * tree-inline.c (force_value_to_type): Declare.
7751 * ipa-param-manipulation.c (ipa_param_adjustments::modify_call): Deal
7752 with register type mismatches.
7754 2019-09-30 Andreas Tobler <andreast@gcc.gnu.org>
7756 * config.gcc: Use the secure-plt on FreeBSD 13 and upwards for
7758 Define TARGET_FREEBSD32_SECURE_PLT for 64-bit PowerPC.
7759 * config/rs6000/t-freebsd64: Make use of the above define and build
7760 the 32-bit libraries with secure-plt.
7762 2019-09-30 Jakub Jelinek <jakub@redhat.com>
7765 * config/i386/i386-expand.c (ix86_expand_adjust_ufix_to_sfix_si): Use
7766 gen_int_mode instead of GEN_INT.
7768 2019-09-29 Iain Sandoe <iain@sandoe.co.uk>
7770 * config/darwin.c (gen_macho_low): Amend to include the mode
7772 (machopic_indirect_data_reference): Amend gen_macho_low call
7773 to include mode argument
7774 * config/rs6000/rs6000.c (emit_move): Likewise. Amend a comment.
7775 * config/rs6000/darwin.md (@macho_low_<mode>): New, replaces
7776 the macho_high expander and two define_insn entries.
7778 2019-09-29 Jakub Jelinek <jakub@redhat.com>
7781 * optc-save-gen.awk: Fix up printing string option differences.
7783 2019-09-29 Kewen Lin <linkw@gcc.gnu.org>
7785 * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Lower
7786 vec_perm cost to 1 for non-Power7 VSX architectures.
7788 2019-09-29 Kewen Lin <linkw@gcc.gnu.org>
7790 * config/rs6000/vsx.md (vec_pack[su]_float_v2di): New define_expand.
7791 (vec_unpack_[su]fix_trunc_hi_v4sf): Likewise.
7792 (vec_unpack_[su]fix_trunc_lo_v4sf): Likewise.
7794 2019-09-28 Iain Sandoe <iain@sandoe.co.uk>
7796 * config/darwin.c (gen_macho_high): Amend to include the mode
7798 (machopic_indirect_data_reference): Amend gen_macho_high call
7799 to include mode argument.
7800 (machopic_legitimize_pic_address): Likewise.
7801 * config/rs6000/rs6000.c (rs6000_legitimize_address):
7802 * config/rs6000/darwin.md (@macho_high_<mode>): New, replaces
7803 the macho_high expander and two define_insn entries.
7805 2019-09-28 Oleg Endo <olegendo@gcc.gnu.org>
7808 * config/sh/sh.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define.
7810 2019-09-28 Oleg Endo <olegendo@gcc.gnu.org>
7813 * config/sh/sh.c (parse_validate_atomic_model_option): Use
7814 std::string::compare instead of std::string::find.
7816 2019-09-27 Maciej W. Rozycki <macro@wdc.com>
7818 * configure: Regenerate.
7820 2019-09-27 Jakub Jelinek <jakub@redhat.com>
7823 * gimplify.c (omp_default_clause): Predetermine DECL_IN_CONSTANT_POOL
7824 variables as shared.
7826 2019-09-27 Iain Sandoe <iain@sandoe.co.uk>
7828 * config/rs6000/darwin.md (@macho_correct_pic_<mode>): New,
7829 replaces the expander and two define_insn entries.
7830 (@reload_macho_picbase_<mode>): Update gen_macho_correct_pic
7832 * config/rs6000/rs6000.md (builtin_setjmp_receiver): Likewise.
7834 2019-09-27 David Malcolm <dmalcolm@redhat.com>
7836 * fibonacci_heap.h (fibonacci_heap::empty): Make const.
7837 (fibonacci_heap::nodes): Likewise.
7838 (fibonacci_heap::min_key): Likewise.
7839 (fibonacci_heap::min): Likewise.
7841 2019-09-27 David Malcolm <dmalcolm@redhat.com>
7843 * cgraph.c (cgraph_node::get_fun): Make const.
7844 * cgraph.h (cgraph_node::get_fun): Likewise.
7846 2019-09-27 Jakub Jelinek <jakub@redhat.com>
7849 * config/arm/arm.md (<US>mlal): Remove SE wrappers around operands
7852 2019-09-27 Richard Biener <rguenther@suse.de>
7854 * tree-vectorizer.h (_stmt_vec_info::reduc_fn): New.
7855 (STMT_VINFO_REDUC_FN): Likewise.
7856 * tree-vectorizer.c (vec_info::new_stmt_vec_info): Initialize
7857 STMT_VINFO_REDUC_FN.
7858 * tree-vect-loop.c (vect_is_simple_reduction): Fix STMT_VINFO_REDUC_IDX
7859 for condition reductions.
7860 (vect_create_epilog_for_reduction): Compute all required state
7861 from the stmt to be vectorized.
7862 (vectorizable_reduction): Simplify vect_create_epilog_for_reduction
7863 invocation and remove then dead code. For single def-use chains
7864 record only a single vector stmt.
7866 2019-09-27 Richard Sandiford <richard.sandiford@arm.com>
7868 * config/aarch64/aarch64-protos.h (aarch64_builtin_class): New enum.
7869 (AARCH64_BUILTIN_SHIFT, AARCH64_BUILTIN_CLASS): New constants.
7870 (aarch64_gimple_fold_builtin, aarch64_mangle_builtin_type)
7871 (aarch64_fold_builtin, aarch64_init_builtins, aarch64_expand_builtin):
7872 (aarch64_builtin_decl, aarch64_builtin_rsqrt): Delete.
7873 (aarch64_general_mangle_builtin_type, aarch64_general_init_builtins):
7874 (aarch64_general_fold_builtin, aarch64_general_gimple_fold_builtin):
7875 (aarch64_general_expand_builtin, aarch64_general_builtin_decl):
7876 (aarch64_general_builtin_rsqrt): Declare.
7877 * config/aarch64/aarch64-builtins.c (aarch64_general_add_builtin):
7879 (aarch64_mangle_builtin_type): Rename to...
7880 (aarch64_general_mangle_builtin_type): ...this.
7881 (aarch64_init_fcmla_laneq_builtins, aarch64_init_simd_builtins)
7882 (aarch64_init_crc32_builtins, aarch64_init_builtin_rsqrt)
7883 (aarch64_init_pauth_hint_builtins, aarch64_init_tme_builtins): Use
7884 aarch64_general_add_builtin instead of add_builtin_function.
7885 (aarch64_init_builtins): Rename to...
7886 (aarch64_general_init_builtins): ...this. Use
7887 aarch64_general_add_builtin instead of add_builtin_function.
7888 (aarch64_builtin_decl): Rename to...
7889 (aarch64_general_builtin_decl): ...this and remove the unused
7891 (aarch64_expand_builtin): Rename to...
7892 (aarch64_general_expand_builtin): ...this and remove the unused
7894 (aarch64_builtin_rsqrt): Rename to...
7895 (aarch64_general_builtin_rsqrt): ...this.
7896 (aarch64_fold_builtin): Rename to...
7897 (aarch64_general_fold_builtin): ...this. Take the function subcode
7898 and return type as arguments. Remove the "ignored" argument.
7899 (aarch64_gimple_fold_builtin): Rename to...
7900 (aarch64_general_gimple_fold_builtin): ...this. Take the function
7901 subcode and gcall as arguments, and return the new function call.
7902 * config/aarch64/aarch64.c (aarch64_init_builtins)
7903 (aarch64_fold_builtin, aarch64_gimple_fold_builtin)
7904 (aarch64_expand_builtin, aarch64_builtin_decl): New functions.
7905 (aarch64_builtin_reciprocal): Call aarch64_general_builtin_rsqrt
7906 instead of aarch64_builtin_rsqrt.
7907 (aarch64_mangle_type): Call aarch64_general_mangle_builtin_type
7908 instead of aarch64_mangle_builtin_type.
7910 2019-09-27 Richard Sandiford <richard.sandiford@arm.com>
7912 * target.def (check_builtin_call): New target hook.
7913 * doc/tm.texi.in (TARGET_CHECK_BUILTIN_CALL): New @hook.
7914 * doc/tm.texi: Regenerate.
7916 2019-09-27 Richard Sandiford <richard.sandiford@arm.com>
7918 PR tree-optimization/91909
7919 * tree-vect-loop.c (vect_create_epilog_for_reduction): Take a
7920 reduc_index parameter. When handling COND_REDUCTION, make sure
7921 that the reduction phi operand is in the correct arm of the
7923 (vectorizable_reduction): Pass reduc_index to the above.
7925 2019-09-27 Yuliang Wang <yuliang.wang@arm.com>
7927 * config/aarch64/aarch64-sve2.md (aarch64_sve2_sra<mode>):
7928 New combine pattern.
7930 2019-09-26 Max Filippov <jcmvbkbc@gmail.com>
7932 * config/xtensa/xtensa.c (hwloop_optimize): Insert zero overhead
7933 loop instruction into new basic block before the loop when basic
7934 block that precedes the loop is empty.
7936 2019-09-26 Jakub Jelinek <jakub@redhat.com>
7938 * function.c (gimplify_parameters): Use build_clobber function.
7939 * tree-ssa.c (execute_update_addresses_taken): Likewise.
7940 * tree-inline.c (expand_call_inline): Likewise.
7941 * tree-sra.c (clobber_subtree): Likewise.
7942 * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Likewise.
7943 * omp-low.c (lower_rec_simd_input_clauses, lower_rec_input_clauses,
7944 lower_omp_single, lower_depend_clauses, lower_omp_taskreg,
7945 lower_omp_target): Likewise.
7946 * omp-expand.c (expand_omp_for_generic): Likewise.
7947 * omp-offload.c (ompdevlow_adjust_simt_enter): Likewise.
7949 2019-09-26 Will Schmidt <will_schmidt@vnet.ibm.com>
7951 * config/rs6000/rs6000-builtin.def: (LVSL, LVSR, LVEBX, LVEHX,
7952 LVEWX, LVXL, LVXL_V2DF, LVXL_V2DI, LVXL_V4SF, LVXL_V4SI, LVXL_V8HI,
7953 LVXL_V16QI, LVX, LVX_V1TI, LVX_V2DF, LVX_V2DI, LVX_V4SF, LVX_V4SI,
7954 LVX_V8HI, LVX_V16QI, LVLX, LVLXL, LVRX, LVRXL, LXSDX, LXVD2X_V1TI,
7955 LXVD2X_V2DF, LXVD2X_V2DI, LXVDSX, LXVW4X_V4SF, LXVW4X_V4SI,
7956 LXVW4X_V8HI, LXVW4X_V16QI, LD_ELEMREV_V1TI, LD_ELEMREV_V2DF,
7957 LD_ELEMREV_V2DI, LD_ELEMREV_V4SF, LD_ELEMREV_V4SI, LD_ELEMREV_V8HI,
7958 LD_ELEMREV_V16QI): Use the PURE attribute.
7960 2019-09-26 Iain Sandoe <iain@sandoe.co.uk>
7962 * config/rs6000/darwin.md: Replace the expanders for
7963 load_macho_picbase and reload_macho_picbase with use of '@'
7964 and <mode> in their respective define_insns.
7965 (nonlocal_goto_receiver): Pass Pmode to gen_reload_macho_picbase.
7966 * config/rs6000/rs6000-logue.c (rs6000_emit_prologue): Pass
7967 Pmode to gen_load_macho_picbase.
7968 * config/rs6000/rs6000.md: Likewise.
7970 2019-09-25 Richard Biener <rguenther@suse.de>
7972 PR tree-optimization/91896
7973 * tree-vect-loop.c (vectorizable_reduction): The single
7974 def-use cycle optimization cannot apply when there's more
7975 than one pattern stmt involved.
7977 2019-09-26 Richard Biener <rguenther@suse.de>
7979 * tree-vect-loop.c (vect_analyze_loop_operations): Analyze
7980 loop-closed PHIs that are vect_internal_def.
7981 (vect_create_epilog_for_reduction): Exit early for nested cycles.
7983 (vectorizable_lc_phi): New.
7984 * tree-vect-stmts.c (vect_analyze_stmt): Call vectorize_lc_phi.
7985 (vect_transform_stmt): Likewise.
7986 * tree-vectorizer.h (stmt_vec_info_type): Add lc_phi_info_type.
7987 (vectorizable_lc_phi): Declare.
7989 2019-09-26 Richard Biener <rguenther@suse.de>
7991 * tree-vect-loop.c (vect_analyze_loop_operations): Also call
7992 vectorizable_reduction for vect_double_reduction_def.
7993 (vect_transform_loop): Likewise.
7994 (vect_create_epilog_for_reduction): Move double-reduction
7995 PHI creation and preheader argument setting of PHIs ...
7996 (vectorizable_reduction): ... here. Also process
7997 vect_double_reduction_def PHIs, creating the vectorized
7998 PHI nodes, remembering the scalar adjustment computed for
7999 the epilogue in STMT_VINFO_REDUC_EPILOGUE_ADJUSTMENT.
8000 Remember the original reduction code in STMT_VINFO_REDUC_CODE.
8001 * tree-vectorizer.c (vec_info::new_stmt_vec_info):
8002 Initialize STMT_VINFO_REDUC_CODE.
8003 * tree-vectorizer.h (_stmt_vec_info::reduc_epilogue_adjustment): New.
8004 (_stmt_vec_info::reduc_code): Likewise.
8005 (STMT_VINFO_REDUC_EPILOGUE_ADJUSTMENT): Likewise.
8006 (STMT_VINFO_REDUC_CODE): Likewise.
8008 2019-09-26 Matt Turner <mattst88@gmail.com>
8011 * config/aarch64/aarch64.opt (march=): Add Negative(march=).
8012 (mtune=): Add Negative(mtune=).
8013 (mcpu=): Add Negative(mcpu=).
8014 * config/arm/arm.opt: Likewise.
8016 2019-09-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8018 * config/arm/arm.md (arm_<simd32_op>): New define_insn.
8019 * config/arm/arm_acle.h (__smlald, __smlaldx, __smlsld, __smlsldx):
8021 * config/arm/arm_acle.h: Define builtins for the above.
8022 * config/arm/iterators.md (SIMD32_DIMODE): New int_iterator.
8023 (simd32_op): Handle the above.
8024 * config/arm/unspecs.md: Define unspecs for the above.
8026 2019-09-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8028 * config/arm/arm.md (arm_<simd32_op>): New define_insn.
8029 (arm_<sup>xtb16): Likewise.
8030 (arm_usada8): Likewise.
8031 * config/arm/arm_acle.h (__qadd8, __qsub8, __shadd8, __shsub8,
8032 __uhadd8, __uhsub8, __uqadd8, __uqsub8, __qadd16, __qasx, __qsax,
8033 __qsub16, __shadd16, __shasx, __shsax, __shsub16, __uhadd16, __uhasx,
8034 __uhsax, __uhsub16, __uqadd16, __uqasx, __uqsax, __uqsub16, __sxtab16,
8035 __sxtb16, __uxtab16, __uxtb16): Define.
8036 * config/arm/arm_acle_builtins.def: Define builtins for the above.
8037 * config/arm/unspecs.md: Define unspecs for the above.
8038 * config/arm/iterators.md (SIMD32_NOGE_BINOP): New int_iterator.
8039 (USXTB16): Likewise.
8040 (simd32_op): New int_attribute.
8041 (sup): Handle UNSPEC_SXTB16, UNSPEC_UXTB16.
8042 * doc/sourcebuild.exp (arm_simd32_ok): Document.
8044 2019-09-26 Martin Jambor <mjambor@suse.cz>
8046 * ipa-sra.c (verify_splitting_accesses): Fix quoting in a call to
8049 2019-09-26 Martin Jambor <mjambor@suse.cz>
8051 * ipa-sra.c (process_scan_results): Fix continue condition.
8053 2019-09-26 Martin Liska <mliska@suse.cz>
8055 PR tree-optimization/91885
8056 * tree-vectorizer.c (try_vectorize_loop_1): Add
8057 TODO_update_ssa_only_virtuals similarly to what slp pass does.
8059 2019-09-26 Richard Sandiford <richard.sandiford@arm.com>
8061 * config/aarch64/aarch64.c (aarch64_rtx_costs): Use
8062 aarch64_plus_immediate rather than aarch64_uimm12_shift
8063 to test for valid PLUS immediates.
8065 2019-09-25 Martin Jambor <mjambor@suse.cz>
8067 * tree-sra.c (no_accesses_p): Remove.
8068 (no_accesses_representant): Likewise.
8070 2019-09-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8072 * config/aarch64/arm_neon.h (vaba_s8): Use __ in identifiers
8074 (vaba_s16): Likewise.
8075 (vaba_s32): Likewise.
8076 (vaba_u8): Likewise.
8077 (vaba_u16): Likewise.
8078 (vaba_u32): Likewise.
8079 (vabal_high_s8): Likewise.
8080 (vabal_high_s16): Likewise.
8081 (vabal_high_s32): Likewise.
8082 (vabal_high_u8): Likewise.
8083 (vabal_high_u16): Likewise.
8084 (vabal_high_u32): Likewise.
8085 (vabal_s8): Likewise.
8086 (vabal_s16): Likewise.
8087 (vabal_s32): Likewise.
8088 (vabal_u8): Likewise.
8089 (vabal_u16): Likewise.
8090 (vabal_u32): Likewise.
8091 (vabaq_s8): Likewise.
8092 (vabaq_s16): Likewise.
8093 (vabaq_s32): Likewise.
8094 (vabaq_u8): Likewise.
8095 (vabaq_u16): Likewise.
8096 (vabaq_u32): Likewise.
8097 (vabd_s8): Likewise.
8098 (vabd_s16): Likewise.
8099 (vabd_s32): Likewise.
8100 (vabd_u8): Likewise.
8101 (vabd_u16): Likewise.
8102 (vabd_u32): Likewise.
8103 (vabdl_high_s8): Likewise.
8104 (vabdl_high_s16): Likewise.
8105 (vabdl_high_s32): Likewise.
8106 (vabdl_high_u8): Likewise.
8107 (vabdl_high_u16): Likewise.
8108 (vabdl_high_u32): Likewise.
8109 (vabdl_s8): Likewise.
8110 (vabdl_s16): Likewise.
8111 (vabdl_s32): Likewise.
8112 (vabdl_u8): Likewise.
8113 (vabdl_u16): Likewise.
8114 (vabdl_u32): Likewise.
8115 (vabdq_s8): Likewise.
8116 (vabdq_s16): Likewise.
8117 (vabdq_s32): Likewise.
8118 (vabdq_u8): Likewise.
8119 (vabdq_u16): Likewise.
8120 (vabdq_u32): Likewise.
8121 (vaddlv_s8): Likewise.
8122 (vaddlv_s16): Likewise.
8123 (vaddlv_u8): Likewise.
8124 (vaddlv_u16): Likewise.
8125 (vaddlvq_s8): Likewise.
8126 (vaddlvq_s16): Likewise.
8127 (vaddlvq_s32): Likewise.
8128 (vaddlvq_u8): Likewise.
8129 (vaddlvq_u16): Likewise.
8130 (vaddlvq_u32): Likewise.
8131 (vcvtx_f32_f64): Likewise.
8132 (vcvtx_high_f32_f64): Likewise.
8133 (vcvtxd_f32_f64): Likewise.
8134 (vmla_n_f32): Likewise.
8135 (vmla_n_s16): Likewise.
8136 (vmla_n_s32): Likewise.
8137 (vmla_n_u16): Likewise.
8138 (vmla_n_u32): Likewise.
8139 (vmla_s8): Likewise.
8140 (vmla_s16): Likewise.
8141 (vmla_s32): Likewise.
8142 (vmla_u8): Likewise.
8143 (vmla_u16): Likewise.
8144 (vmla_u32): Likewise.
8145 (vmlal_high_n_s16): Likewise.
8146 (vmlal_high_n_s32): Likewise.
8147 (vmlal_high_n_u16): Likewise.
8148 (vmlal_high_n_u32): Likewise.
8149 (vmlal_high_s8): Likewise.
8150 (vmlal_high_s16): Likewise.
8151 (vmlal_high_s32): Likewise.
8152 (vmlal_high_u8): Likewise.
8153 (vmlal_high_u16): Likewise.
8154 (vmlal_high_u32): Likewise.
8155 (vmlal_n_s16): Likewise.
8156 (vmlal_n_s32): Likewise.
8157 (vmlal_n_u16): Likewise.
8158 (vmlal_n_u32): Likewise.
8159 (vmlal_s8): Likewise.
8160 (vmlal_s16): Likewise.
8161 (vmlal_s32): Likewise.
8162 (vmlal_u8): Likewise.
8163 (vmlal_u16): Likewise.
8164 (vmlal_u32): Likewise.
8165 (vmlaq_n_f32): Likewise.
8166 (vmlaq_n_s16): Likewise.
8167 (vmlaq_n_s32): Likewise.
8168 (vmlaq_n_u16): Likewise.
8169 (vmlaq_n_u32): Likewise.
8170 (vmlaq_s8): Likewise.
8171 (vmlaq_s16): Likewise.
8172 (vmlaq_s32): Likewise.
8173 (vmlaq_u8): Likewise.
8174 (vmlaq_u16): Likewise.
8175 (vmlaq_u32): Likewise.
8176 (vmls_n_f32): Likewise.
8177 (vmls_n_s16): Likewise.
8178 (vmls_n_s32): Likewise.
8179 (vmls_n_u16): Likewise.
8180 (vmls_n_u32): Likewise.
8181 (vmls_s8): Likewise.
8182 (vmls_s16): Likewise.
8183 (vmls_s32): Likewise.
8184 (vmls_u8): Likewise.
8185 (vmls_u16): Likewise.
8186 (vmls_u32): Likewise.
8187 (vmlsl_high_n_s16): Likewise.
8188 (vmlsl_high_n_s32): Likewise.
8189 (vmlsl_high_n_u16): Likewise.
8190 (vmlsl_high_n_u32): Likewise.
8191 (vmlsl_high_s8): Likewise.
8192 (vmlsl_high_s16): Likewise.
8193 (vmlsl_high_s32): Likewise.
8194 (vmlsl_high_u8): Likewise.
8195 (vmlsl_high_u16): Likewise.
8196 (vmlsl_high_u32): Likewise.
8197 (vmlsl_n_s16): Likewise.
8198 (vmlsl_n_s32): Likewise.
8199 (vmlsl_n_u16): Likewise.
8200 (vmlsl_n_u32): Likewise.
8201 (vmlsl_s8): Likewise.
8202 (vmlsl_s16): Likewise.
8203 (vmlsl_s32): Likewise.
8204 (vmlsl_u8): Likewise.
8205 (vmlsl_u16): Likewise.
8206 (vmlsl_u32): Likewise.
8207 (vmlsq_n_f32): Likewise.
8208 (vmlsq_n_s16): Likewise.
8209 (vmlsq_n_s32): Likewise.
8210 (vmlsq_n_u16): Likewise.
8211 (vmlsq_n_u32): Likewise.
8212 (vmlsq_s8): Likewise.
8213 (vmlsq_s16): Likewise.
8214 (vmlsq_s32): Likewise.
8215 (vmlsq_u8): Likewise.
8216 (vmlsq_u16): Likewise.
8217 (vmlsq_u32): Likewise.
8218 (vmovl_high_s8): Likewise.
8219 (vmovl_high_s16): Likewise.
8220 (vmovl_high_s32): Likewise.
8221 (vmovl_high_u8): Likewise.
8222 (vmovl_high_u16): Likewise.
8223 (vmovl_high_u32): Likewise.
8224 (vmovl_s8): Likewise.
8225 (vmovl_s16): Likewise.
8226 (vmovl_s32): Likewise.
8227 (vmovl_u8): Likewise.
8228 (vmovl_u16): Likewise.
8229 (vmovl_u32): Likewise.
8230 (vmovn_high_s16): Likewise.
8231 (vmovn_high_s32): Likewise.
8232 (vmovn_high_s64): Likewise.
8233 (vmovn_high_u16): Likewise.
8234 (vmovn_high_u32): Likewise.
8235 (vmovn_high_u64): Likewise.
8236 (vmovn_s16): Likewise.
8237 (vmovn_s32): Likewise.
8238 (vmovn_s64): Likewise.
8239 (vmovn_u16): Likewise.
8240 (vmovn_u32): Likewise.
8241 (vmovn_u64): Likewise.
8242 (vmull_high_n_s16): Likewise.
8243 (vmull_high_n_s32): Likewise.
8244 (vmull_high_n_u16): Likewise.
8245 (vmull_high_n_u32): Likewise.
8246 (vmull_high_p8): Likewise.
8247 (vmull_high_s8): Likewise.
8248 (vmull_high_s16): Likewise.
8249 (vmull_high_s32): Likewise.
8250 (vmull_high_u8): Likewise.
8251 (vmull_high_u16): Likewise.
8252 (vmull_high_u32): Likewise.
8253 (vmull_n_s16): Likewise.
8254 (vmull_n_s32): Likewise.
8255 (vmull_n_u16): Likewise.
8256 (vmull_n_u32): Likewise.
8257 (vmull_p8): Likewise.
8258 (vmull_s8): Likewise.
8259 (vmull_s16): Likewise.
8260 (vmull_s32): Likewise.
8261 (vmull_u8): Likewise.
8262 (vmull_u16): Likewise.
8263 (vmull_u32): Likewise.
8264 (vpadal_s8): Likewise.
8265 (vpadal_s16): Likewise.
8266 (vpadal_s32): Likewise.
8267 (vpadal_u8): Likewise.
8268 (vpadal_u16): Likewise.
8269 (vpadal_u32): Likewise.
8270 (vpadalq_s8): Likewise.
8271 (vpadalq_s16): Likewise.
8272 (vpadalq_s32): Likewise.
8273 (vpadalq_u8): Likewise.
8274 (vpadalq_u16): Likewise.
8275 (vpadalq_u32): Likewise.
8276 (vpaddl_s8): Likewise.
8277 (vpaddl_s16): Likewise.
8278 (vpaddl_s32): Likewise.
8279 (vpaddl_u8): Likewise.
8280 (vpaddl_u16): Likewise.
8281 (vpaddl_u32): Likewise.
8282 (vpaddlq_s8): Likewise.
8283 (vpaddlq_s16): Likewise.
8284 (vpaddlq_s32): Likewise.
8285 (vpaddlq_u8): Likewise.
8286 (vpaddlq_u16): Likewise.
8287 (vpaddlq_u32): Likewise.
8288 (vpaddq_s8): Likewise.
8289 (vpaddq_s16): Likewise.
8290 (vpaddq_s32): Likewise.
8291 (vpaddq_s64): Likewise.
8292 (vpaddq_u8): Likewise.
8293 (vpaddq_u16): Likewise.
8294 (vpaddq_u32): Likewise.
8295 (vpaddq_u64): Likewise.
8296 (vqdmulh_n_s16): Likewise.
8297 (vqdmulh_n_s32): Likewise.
8298 (vqdmulhq_n_s16): Likewise.
8299 (vqdmulhq_n_s32): Likewise.
8300 (vqmovn_high_s16): Likewise.
8301 (vqmovn_high_s32): Likewise.
8302 (vqmovn_high_s64): Likewise.
8303 (vqmovn_high_u16): Likewise.
8304 (vqmovn_high_u32): Likewise.
8305 (vqmovn_high_u64): Likewise.
8306 (vqmovun_high_s16): Likewise.
8307 (vqmovun_high_s32): Likewise.
8308 (vqmovun_high_s64): Likewise.
8309 (vqrdmulh_n_s16): Likewise.
8310 (vqrdmulh_n_s32): Likewise.
8311 (vqrdmulhq_n_s16): Likewise.
8312 (vqrdmulhq_n_s32): Likewise.
8313 (vrsqrte_u32): Likewise.
8314 (vrsqrteq_u32): Likewise.
8315 (vtst_p8): Likewise.
8316 (vtst_p16): Likewise.
8317 (vtst_p64): Likewise.
8318 (vtstq_p8): Likewise.
8319 (vtstq_p16): Likewise.
8320 (vtstq_p64): Likewise.
8321 (vaddlv_s32): Likewise.
8322 (vaddlv_u32): Likewise.
8323 (vqtbl1_p8): Likewise.
8324 (vqtbl1_s8): Likewise.
8325 (vqtbl1_u8): Likewise.
8326 (vqtbl1q_p8): Likewise.
8327 (vqtbl1q_s8): Likewise.
8328 (vqtbl1q_u8): Likewise.
8329 (vqtbx1_s8): Likewise.
8330 (vqtbx1_u8): Likewise.
8331 (vqtbx1_p8): Likewise.
8332 (vqtbx1q_s8): Likewise.
8333 (vqtbx1q_u8): Likewise.
8334 (vqtbx1q_p8): Likewise.
8335 (vtbl1_s8): Likewise.
8336 (vtbl1_u8): Likewise.
8337 (vtbl1_p8): Likewise.
8338 (vtbl2_s8): Likewise.
8339 (vtbl2_u8): Likewise.
8340 (vtbl2_p8): Likewise.
8341 (vtbl3_s8): Likewise.
8342 (vtbl3_u8): Likewise.
8343 (vtbl3_p8): Likewise.
8344 (vtbl4_s8): Likewise.
8345 (vtbl4_u8): Likewise.
8346 (vtbl4_p8): Likewise.
8347 (vtbx2_s8): Likewise.
8348 (vtbx2_u8): Likewise.
8349 (vtbx2_p8): Likewise.
8350 (vld1_f32): Likewise.
8351 (vld1_f64): Likewise.
8352 (vld1_p8): Likewise.
8353 (vld1_p16): Likewise.
8354 (vld1_p64): Likewise.
8355 (vld1_s8): Likewise.
8356 (vld1_s16): Likewise.
8357 (vld1_s32): Likewise.
8358 (vld1_s64): Likewise.
8359 (vld1_u8): Likewise.
8360 (vld1_u16): Likewise.
8361 (vld1_u32): Likewise.
8362 (vld1_u64): Likewise.
8363 (vld1q_f32): Likewise.
8364 (vld1q_f64): Likewise.
8365 (vld1q_p8): Likewise.
8366 (vld1q_p16): Likewise.
8367 (vld1q_p64): Likewise.
8368 (vld1q_s8): Likewise.
8369 (vld1q_s16): Likewise.
8370 (vld1q_s32): Likewise.
8371 (vld1q_s64): Likewise.
8372 (vld1q_u8): Likewise.
8373 (vld1q_u16): Likewise.
8374 (vld1q_u32): Likewise.
8375 (vld1q_u64): Likewise.
8376 (vpmax_s8): Likewise.
8377 (vpmax_s16): Likewise.
8378 (vpmax_s32): Likewise.
8379 (vpmax_u8): Likewise.
8380 (vpmax_u16): Likewise.
8381 (vpmax_u32): Likewise.
8382 (vpmaxq_s8): Likewise.
8383 (vpmaxq_s16): Likewise.
8384 (vpmaxq_s32): Likewise.
8385 (vpmaxq_u8): Likewise.
8386 (vpmaxq_u16): Likewise.
8387 (vpmaxq_u32): Likewise.
8388 (vpmax_f32): Likewise.
8389 (vpmaxq_f32): Likewise.
8390 (vpmaxq_f64): Likewise.
8391 (vpmaxqd_f64): Likewise.
8392 (vpmaxs_f32): Likewise.
8393 (vpmaxnm_f32): Likewise.
8394 (vpmaxnmq_f32): Likewise.
8395 (vpmaxnmq_f64): Likewise.
8396 (vpmaxnmqd_f64): Likewise.
8397 (vpmaxnms_f32): Likewise.
8398 (vpmin_s8): Likewise.
8399 (vpmin_s16): Likewise.
8400 (vpmin_s32): Likewise.
8401 (vpmin_u8): Likewise.
8402 (vpmin_u16): Likewise.
8403 (vpmin_u32): Likewise.
8404 (vpminq_s8): Likewise.
8405 (vpminq_s16): Likewise.
8406 (vpminq_s32): Likewise.
8407 (vpminq_u8): Likewise.
8408 (vpminq_u16): Likewise.
8409 (vpminq_u32): Likewise.
8410 (vpmin_f32): Likewise.
8411 (vpminq_f32): Likewise.
8412 (vpminq_f64): Likewise.
8413 (vpminqd_f64): Likewise.
8414 (vpmins_f32): Likewise.
8415 (vpminnm_f32): Likewise.
8416 (vpminnmq_f32): Likewise.
8417 (vpminnmq_f64): Likewise.
8418 (vpminnmqd_f64): Likewise.
8419 (vpminnms_f32): Likewise.
8420 (vmla_f32): Likewise.
8421 (vmlaq_f32): Likewise.
8422 (vmlaq_f64): Likewise.
8423 (vmls_f32): Likewise.
8424 (vmlsq_f32): Likewise.
8425 (vmlsq_f64): Likewise.
8426 (vqtbl2_s8): Likewise.
8427 (vqtbl2_u8): Likewise.
8428 (vqtbl2_p8): Likewise.
8429 (vqtbl2q_s8): Likewise.
8430 (vqtbl2q_u8): Likewise.
8431 (vqtbl2q_p8): Likewise.
8432 (vqtbl3_s8): Likewise.
8433 (vqtbl3_u8): Likewise.
8434 (vqtbl3_p8): Likewise.
8435 (vqtbl3q_s8): Likewise.
8436 (vqtbl3q_u8): Likewise.
8437 (vqtbl3q_p8): Likewise.
8438 (vqtbl4_s8): Likewise.
8439 (vqtbl4_u8): Likewise.
8440 (vqtbl4_p8): Likewise.
8441 (vqtbl4q_s8): Likewise.
8442 (vqtbl4q_u8): Likewise.
8443 (vqtbl4q_p8): Likewise.
8444 (vqtbx2_s8): Likewise.
8445 (vqtbx2_u8): Likewise.
8446 (vqtbx2_p8): Likewise.
8447 (vqtbx2q_s8): Likewise.
8448 (vqtbx2q_u8): Likewise.
8449 (vqtbx2q_p8): Likewise.
8450 (vqtbx3_s8): Likewise.
8451 (vqtbx3_u8): Likewise.
8452 (vqtbx3_p8): Likewise.
8453 (vqtbx3q_s8): Likewise.
8454 (vqtbx3q_u8): Likewise.
8455 (vqtbx3q_p8): Likewise.
8456 (vqtbx4_s8): Likewise.
8457 (vqtbx4_u8): Likewise.
8458 (vqtbx4_p8): Likewise.
8459 (vqtbx4q_s8): Likewise.
8460 (vqtbx4q_u8): Likewise.
8461 (vqtbx4q_p8): Likewise.
8462 (vrev16_p8): Likewise.
8463 (vrev16_s8): Likewise.
8464 (vrev16_u8): Likewise.
8465 (vrev16q_p8): Likewise.
8466 (vrev16q_s8): Likewise.
8467 (vrev16q_u8): Likewise.
8468 (vrev32_p8): Likewise.
8469 (vrev32_p16): Likewise.
8470 (vrev32_s8): Likewise.
8471 (vrev32_s16): Likewise.
8472 (vrev32_u8): Likewise.
8473 (vrev32_u16): Likewise.
8474 (vrev32q_p8): Likewise.
8475 (vrev32q_p16): Likewise.
8476 (vrev32q_s8): Likewise.
8477 (vrev32q_s16): Likewise.
8478 (vrev32q_u8): Likewise.
8479 (vrev32q_u16): Likewise.
8480 (vrev64_f32): Likewise.
8481 (vrev64_p8): Likewise.
8482 (vrev64_p16): Likewise.
8483 (vrev64_s8): Likewise.
8484 (vrev64_s16): Likewise.
8485 (vrev64_s32): Likewise.
8486 (vrev64_u8): Likewise.
8487 (vrev64_u16): Likewise.
8488 (vrev64_u32): Likewise.
8489 (vrev64q_f32): Likewise.
8490 (vrev64q_p8): Likewise.
8491 (vrev64q_p16): Likewise.
8492 (vrev64q_s8): Likewise.
8493 (vrev64q_s16): Likewise.
8494 (vrev64q_s32): Likewise.
8495 (vrev64q_u8): Likewise.
8496 (vrev64q_u16): Likewise.
8497 (vrev64q_u32): Likewise.
8498 (vsha1cq_u32): Likewise.
8499 (vsha1mq_u32): Likewise.
8500 (vsha1pq_u32): Likewise.
8501 (vsha1h_u32): Likewise.
8502 (vsha1su0q_u32): Likewise.
8503 (vsha1su1q_u32): Likewise.
8504 (vsha256hq_u32): Likewise.
8505 (vsha256h2q_u32): Likewise.
8506 (vsha256su0q_u32): Likewise.
8507 (vsha256su1q_u32): Likewise.
8508 (vmull_p64): Likewise.
8509 (vmull_high_p64): Likewise.
8510 (vsqrt_f32): Likewise.
8511 (vsqrtq_f32): Likewise.
8512 (vsqrt_f64): Likewise.
8513 (vsqrtq_f64): Likewise.
8514 (vst1_f32): Likewise.
8515 (vst1_f64): Likewise.
8516 (vst1_p8): Likewise.
8517 (vst1_p16): Likewise.
8518 (vst1_p64): Likewise.
8519 (vst1_s8): Likewise.
8520 (vst1_s16): Likewise.
8521 (vst1_s32): Likewise.
8522 (vst1_s64): Likewise.
8523 (vst1_u8): Likewise.
8524 (vst1_u16): Likewise.
8525 (vst1_u32): Likewise.
8526 (vst1_u64): Likewise.
8527 (vst1q_f32): Likewise.
8528 (vst1q_f64): Likewise.
8529 (vst1q_p8): Likewise.
8530 (vst1q_p16): Likewise.
8531 (vst1q_p64): Likewise.
8532 (vst1q_s8): Likewise.
8533 (vst1q_s16): Likewise.
8534 (vst1q_s32): Likewise.
8535 (vst1q_s64): Likewise.
8536 (vst1q_u8): Likewise.
8537 (vst1q_u16): Likewise.
8538 (vst1q_u32): Likewise.
8539 (vst1q_u64): Likewise.
8540 (vst1_s64_x2): Likewise.
8541 (vst1_u64_x2): Likewise.
8542 (vst1_f64_x2): Likewise.
8543 (vst1_s8_x2): Likewise.
8544 (vst1_p8_x2): Likewise.
8545 (vst1_s16_x2): Likewise.
8546 (vst1_p16_x2): Likewise.
8547 (vst1_s32_x2): Likewise.
8548 (vst1_u8_x2): Likewise.
8549 (vst1_u16_x2): Likewise.
8550 (vst1_u32_x2): Likewise.
8551 (vst1_f16_x2): Likewise.
8552 (vst1_f32_x2): Likewise.
8553 (vst1_p64_x2): Likewise.
8554 (vst1q_s8_x2): Likewise.
8555 (vst1q_p8_x2): Likewise.
8556 (vst1q_s16_x2): Likewise.
8557 (vst1q_p16_x2): Likewise.
8558 (vst1q_s32_x2): Likewise.
8559 (vst1q_s64_x2): Likewise.
8560 (vst1q_u8_x2): Likewise.
8561 (vst1q_u16_x2): Likewise.
8562 (vst1q_u32_x2): Likewise.
8563 (vst1q_u64_x2): Likewise.
8564 (vst1q_f16_x2): Likewise.
8565 (vst1q_f32_x2): Likewise.
8566 (vst1q_f64_x2): Likewise.
8567 (vst1q_p64_x2): Likewise.
8568 (vst1_s64_x3): Likewise.
8569 (vst1_u64_x3): Likewise.
8570 (vst1_f64_x3): Likewise.
8571 (vst1_s8_x3): Likewise.
8572 (vst1_p8_x3): Likewise.
8573 (vst1_s16_x3): Likewise.
8574 (vst1_p16_x3): Likewise.
8575 (vst1_s32_x3): Likewise.
8576 (vst1_u8_x3): Likewise.
8577 (vst1_u16_x3): Likewise.
8578 (vst1_u32_x3): Likewise.
8579 (vst1_f16_x3): Likewise.
8580 (vst1_f32_x3): Likewise.
8581 (vst1_p64_x3): Likewise.
8582 (vst1q_s8_x3): Likewise.
8583 (vst1q_p8_x3): Likewise.
8584 (vst1q_s16_x3): Likewise.
8585 (vst1q_p16_x3): Likewise.
8586 (vst1q_s32_x3): Likewise.
8587 (vst1q_s64_x3): Likewise.
8588 (vst1q_u8_x3): Likewise.
8589 (vst1q_u16_x3): Likewise.
8590 (vst1q_u32_x3): Likewise.
8591 (vst1q_u64_x3): Likewise.
8592 (vst1q_f16_x3): Likewise.
8593 (vst1q_f32_x3): Likewise.
8594 (vst1q_f64_x3): Likewise.
8595 (vst1q_p64_x3): Likewise.
8596 (vst2_s64): Likewise.
8597 (vst2_u64): Likewise.
8598 (vst2_f64): Likewise.
8599 (vst2_s8): Likewise.
8600 (vst2_p8): Likewise.
8601 (vst2_s16): Likewise.
8602 (vst2_p16): Likewise.
8603 (vst2_s32): Likewise.
8604 (vst2_u8): Likewise.
8605 (vst2_u16): Likewise.
8606 (vst2_u32): Likewise.
8607 (vst2_f16): Likewise.
8608 (vst2_f32): Likewise.
8609 (vst2_p64): Likewise.
8610 (vst2q_s8): Likewise.
8611 (vst2q_p8): Likewise.
8612 (vst2q_s16): Likewise.
8613 (vst2q_p16): Likewise.
8614 (vst2q_s32): Likewise.
8615 (vst2q_s64): Likewise.
8616 (vst2q_u8): Likewise.
8617 (vst2q_u16): Likewise.
8618 (vst2q_u32): Likewise.
8619 (vst2q_u64): Likewise.
8620 (vst2q_f16): Likewise.
8621 (vst2q_f32): Likewise.
8622 (vst2q_f64): Likewise.
8623 (vst2q_p64): Likewise.
8624 (vst3_s64): Likewise.
8625 (vst3_u64): Likewise.
8626 (vst3_f64): Likewise.
8627 (vst3_s8): Likewise.
8628 (vst3_p8): Likewise.
8629 (vst3_s16): Likewise.
8630 (vst3_p16): Likewise.
8631 (vst3_s32): Likewise.
8632 (vst3_u8): Likewise.
8633 (vst3_u16): Likewise.
8634 (vst3_u32): Likewise.
8635 (vst3_f16): Likewise.
8636 (vst3_f32): Likewise.
8637 (vst3_p64): Likewise.
8638 (vst3q_s8): Likewise.
8639 (vst3q_p8): Likewise.
8640 (vst3q_s16): Likewise.
8641 (vst3q_p16): Likewise.
8642 (vst3q_s32): Likewise.
8643 (vst3q_s64): Likewise.
8644 (vst3q_u8): Likewise.
8645 (vst3q_u16): Likewise.
8646 (vst3q_u32): Likewise.
8647 (vst3q_u64): Likewise.
8648 (vst3q_f16): Likewise.
8649 (vst3q_f32): Likewise.
8650 (vst3q_f64): Likewise.
8651 (vst3q_p64): Likewise.
8652 (vst4_s64): Likewise.
8653 (vst4_u64): Likewise.
8654 (vst4_f64): Likewise.
8655 (vst4_s8): Likewise.
8656 (vst4_p8): Likewise.
8657 (vst4_s16): Likewise.
8658 (vst4_p16): Likewise.
8659 (vst4_s32): Likewise.
8660 (vst4_u8): Likewise.
8661 (vst4_u16): Likewise.
8662 (vst4_u32): Likewise.
8663 (vst4_f16): Likewise.
8664 (vst4_f32): Likewise.
8665 (vst4_p64): Likewise.
8666 (vst4q_s8): Likewise.
8667 (vst4q_p8): Likewise.
8668 (vst4q_s16): Likewise.
8669 (vst4q_p16): Likewise.
8670 (vst4q_s32): Likewise.
8671 (vst4q_s64): Likewise.
8672 (vst4q_u8): Likewise.
8673 (vst4q_u16): Likewise.
8674 (vst4q_u32): Likewise.
8675 (vst4q_u64): Likewise.
8676 (vst4q_f16): Likewise.
8677 (vst4q_f32): Likewise.
8678 (vst4q_f64): Likewise.
8679 (vst4q_p64): Likewise.
8680 (vtbx4_s8): Likewise.
8681 (vtbx4_u8): Likewise.
8682 (vtbx4_p8): Likewise.
8683 (vtrn_f32): Likewise.
8684 (vtrn_p8): Likewise.
8685 (vtrn_p16): Likewise.
8686 (vtrn_s8): Likewise.
8687 (vtrn_s16): Likewise.
8688 (vtrn_s32): Likewise.
8689 (vtrn_u8): Likewise.
8690 (vtrn_u16): Likewise.
8691 (vtrn_u32): Likewise.
8692 (vtrnq_f32): Likewise.
8693 (vtrnq_p8): Likewise.
8694 (vtrnq_p16): Likewise.
8695 (vtrnq_s8): Likewise.
8696 (vtrnq_s16): Likewise.
8697 (vtrnq_s32): Likewise.
8698 (vtrnq_u8): Likewise.
8699 (vtrnq_u16): Likewise.
8700 (vtrnq_u32): Likewise.
8701 (vrsqrte_f16): Likewise.
8702 (vrsqrteq_f16): Likewise.
8703 (vsqrt_f16): Likewise.
8704 (vsqrtq_f16): Likewise.
8705 (vabd_f16): Likewise.
8706 (vabdq_f16): Likewise.
8707 (vpadd_f16): Likewise.
8708 (vpaddq_f16): Likewise.
8709 (vpmax_f16): Likewise.
8710 (vpmaxq_f16): Likewise.
8711 (vpmaxnm_f16): Likewise.
8712 (vpmaxnmq_f16): Likewise.
8713 (vpmin_f16): Likewise.
8714 (vpminq_f16): Likewise.
8715 (vpminnm_f16): Likewise.
8716 (vpminnmq_f16): Likewise.
8717 (vrsqrts_f16): Likewise.
8718 (vrsqrtsq_f16): Likewise.
8720 2019-09-25 Richard Biener <rguenther@suse.de>
8722 PR tree-optimization/91896
8723 * tree-vect-loop.c (vectorizable_reduction): The single
8724 def-use cycle optimization cannot apply when there's more
8725 than one pattern stmt involved.
8727 2019-09-24 Iain Sandoe <iain@sandoe.co.uk>
8729 * config/rs6000/rs6000.md (load_macho_picbase_<mode>): New, using
8730 the 'P' mode iterator, replacing the (removed) SI and DI variants.
8731 (reload_macho_picbase_<mode>): Likewise.
8733 2019-09-24 Iain Sandoe <iain@sandoe.co.uk>
8735 * config/rs6000/rs6000.md: Move darwin.md include until
8736 after the definition of the mode iterators.
8738 2019-09-23 Martin Sebor <msebor@redhat.com>
8740 PR tree-optimization/91570
8741 * tree-ssa-strlen.c (get_range_strlen_dynamic): Handle null and
8742 non-constant minlen, maxlen and maxbound.
8744 2019-09-24 Richard Biener <rguenther@suse.de>
8746 * tree-vectorizer.h (_stmt_vec_info::const_cond_reduc_code):
8748 (_stmt_vec_info::cond_reduc_code): ... this.
8749 (_stmt_vec_info::induc_cond_initial_val): Add.
8750 (STMT_VINFO_VEC_CONST_COND_REDUC_CODE): Rename to...
8751 (STMT_VINFO_VEC_COND_REDUC_CODE): ... this.
8752 (STMT_VINFO_VEC_INDUC_COND_INITIAL_VAL): Add.
8753 * tree-vectorizer.c (vec_info::new_stmt_vec_info): Adjust.
8754 * tree-vect-loop.c (get_initial_def_for_reduction): Pass in
8756 (vect_create_epilog_for_reduction): Drop special
8757 induction condition reduction params, pass in reduction code
8759 (vectorizable_reduction): Perform condition reduction kind
8760 selection only at analysis time. Adjust passing on state.
8762 2019-09-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8764 * config/aarch64/aarch64.md (mov<mode>): Don't call
8765 aarch64_split_dimode_const_store on volatile MEM.
8767 2019-09-24 Stamatis Markianos-Wright <stam.markianos-wright@arm.com>
8769 * config/aarch64/aarch64-option-extensions.def (fp16fml):
8770 Update hwcap string for fp16fml.
8772 2019-09-24 Jakub Jelinek <jakub@redhat.com>
8775 * match.pd (((T)(A)) + CST -> (T)(A + CST)): Formatting fix.
8776 (((T)(A + CST1)) + CST2 -> (T)(A) + (T)CST1 + CST2): New optimization.
8778 2019-09-24 Martin Liska <mliska@suse.cz>
8780 * cfgexpand.c (gimple_assign_rhs_to_tree): Use switch statement
8781 instead of if-elseif-elseif-...
8782 * gimple-expr.c (extract_ops_from_tree): Likewise.
8783 * gimple.c (get_gimple_rhs_num_ops): Likewise.
8784 * tree-ssa-forwprop.c (rhs_to_tree): Likewise.
8786 2019-09-24 Martin Jambor <mjambor@suse.cz>
8789 * ipa-param-manipulation.c (carry_over_param): Make a method of
8790 ipa_param_body_adjustments, remove now unnecessary argument. Also copy
8791 in case of a context mismatch.
8792 (ipa_param_body_adjustments::common_initialization): Adjust call to
8794 * ipa-param-manipulation.h (class ipa_param_body_adjustments): Add
8795 private method carry_over_param.
8797 2019-09-24 Martin Jambor <mjambor@suse.cz>
8800 * ipa-sra.c (scan_expr_access): Check that offset is non-negative.
8802 2019-09-24 Richard Biener <rguenther@suse.de>
8804 * tree-ssa-sccvn.c (vn_reference_lookup_3): Valueize MEM_REF
8807 2019-09-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8809 * config/arm/t-arm (arm-builtins.o): Add dependency on
8810 arm_acle_builtins.def.
8812 2019-09-23 Richard Sandiford <richard.sandiford@arm.com>
8815 * config/rs6000/altivec.md (altivec_copysign_v4sf3): Generate
8816 canonical CONST_INTs. Use gen_rtvec.
8818 2019-09-23 Richard Biener <rguenther@suse.de>
8820 * tree-vect-loop.c (get_initial_def_for_reduction): Simplify,
8821 avoid adjusting by + 0 or * 1.
8822 (vect_create_epilog_for_reduction): Get reduction code only
8823 when necessary. Deal with adjustment_def only when necessary.
8825 2019-09-23 Richard Sandiford <richard.sandiford@arm.com>
8827 * config/aarch64/atomics.md (aarch64_store_exclusive_pair): Fix
8830 2019-09-23 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
8833 * lto-section-in.c (lto_section_name): Use "ipa_sra" instead of
8836 2019-09-22 Iain Sandoe <iain@sandoe.co.uk>
8838 * config/rs6000/rs6000.c (machopic_output_stub): Remove dead
8839 code. Merge code blocks with common conditionals. Use declared
8840 macro instead of a magic number for PIC level.
8842 2019-09-21 Martin Sebor <msebor@redhat.com>
8845 * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
8846 Simplify computation of the offset of the referenced subobject.
8848 2019-09-21 Iain Sandoe <iain@sandoe.co.uk>
8850 * config/darwin.c (machopic_legitimize_pic_address): Check
8853 2019-09-21 Richard Sandiford <richard.sandiford@arm.com>
8855 * ira-conflicts.c (can_use_same_reg_p): New function.
8856 (process_reg_shuffles): Take an insn parameter. Ignore cases
8857 in which input operand op_num could seemingly never be allocated
8858 to the same register as the destination.
8859 (add_insn_allocno_copies): Update call to process_reg_shuffles.
8861 2019-09-21 Richard Sandiford <richard.sandiford@arm.com>
8863 * simplify-rtx.c (neg_const_int): Replace with...
8864 (neg_poly_int_rtx): ...this new function.
8865 (simplify_binary_operation_1): Extend (minus x C) -> (plus X -C)
8866 to all CONST_SCALAR_INTs and to CONST_POLY_INT.
8867 (simplify_plus_minus): Likewise for constant terms here.
8869 2019-09-20 Jonas Pfeil <jonas.pfeil@uli-ulm.de>
8871 * config/microblaze/microblaze.h (ASM_OUTPUT_SKIP): Use
8872 HOST_WIDE_PRINT_UNSIGNED.
8874 2019-09-20 John David Anglin <danglin@gcc.gnu.org>
8876 * config/pa/pa.c (pa_trampoline_init): Remove spurious extended
8879 2019-09-20 Maya Rashish <coypu@sdf.org>
8882 * config/vax/vax.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
8883 Define to speculation_safe_value_not_needed.
8885 2019-09-20 Richard Biener <rguenther@suse.de>
8886 Uros Bizjak <ubizjak@gmail.com>
8889 * config/i386/i386-features.c (gen_gpr_to_xmm_move_src): Revert
8891 (general_scalar_chain::convert_op): Force not suitable memory
8892 operands to a register.
8894 2019-09-20 Richard Biener <rguenther@suse.de>
8896 PR tree-optimization/91821
8897 * tree-vect-loop.c (check_reduction_path): Check we can compute
8899 (vect_is_simple_reduction): Set STMT_VINFO_REDUC_IDX.
8900 * tree-vect-patterns.c (vect_reassociating_reduction_p): Return
8901 operands in canonical order.
8902 * tree-vectorizer.c (vec_info::new_stmt_vec_info): Initialize
8903 STMT_VINFO_REDUC_IDX.
8904 * tree-vectorizer.h (_stmt_vec_info::reduc_idx): New.
8905 (STMT_VINFO_REDUC_IDX): Likewise.
8907 2019-09-20 Eric Botcazou <ebotcazou@adacore.com>
8910 * config/sparc/sparc.h (HARD_REGNO_CALLER_SAVE_MODE): Define.
8912 2019-09-20 Richard Biener <rguenther@suse.de>
8914 PR tree-optimization/91822
8915 * tree-vectorizer.h (vectorizable_condition): Restore for_reduction
8917 * tree-vect-loop.c (vectorizable_reduction): Adjust asserts
8918 for reduc_index in nested cycles, adjust vectorizable_condition
8920 * tree-vect-stmts.c (vectorizable_condition): Restore for_reduction
8922 (vect_analyze_stmt): Adjust.
8923 (vect_transform_stmt): Likewise.
8925 2019-09-20 Richard Biener <rguenther@suse.de>
8928 * config/i386/i386-features.c (general_scalar_chain::convert_registers):
8929 Ensure there's a sequence point between allocating the new register
8930 and passing a reference to a reg via regno_reg_rtx.
8932 2019-09-20 Martin Jambor <mjambor@suse.cz>
8934 * coretypes.h (cgraph_edge): Declare.
8935 * ipa-param-manipulation.c: Rewrite.
8936 * ipa-param-manipulation.h: Likewise.
8937 * Makefile.in (GTFILES): Added ipa-param-manipulation.h and ipa-sra.c.
8938 (OBJS): Added ipa-sra.o.
8939 * cgraph.h (ipa_replace_map): Removed fields old_tree, replace_p
8940 and ref_p, added fields param_adjustments and performed_splits.
8941 (struct cgraph_clone_info): Remove ags_to_skip and
8942 combined_args_to_skip, new field param_adjustments.
8943 (cgraph_node::create_clone): Changed parameters to use
8944 ipa_param_adjustments.
8945 (cgraph_node::create_virtual_clone): Likewise.
8946 (cgraph_node::create_virtual_clone_with_body): Likewise.
8947 (tree_function_versioning): Likewise.
8948 (cgraph_build_function_type_skip_args): Removed.
8949 * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Convert to
8950 using ipa_param_adjustments.
8951 (clone_of_p): Likewise.
8952 * cgraphclones.c (cgraph_build_function_type_skip_args): Removed.
8953 (build_function_decl_skip_args): Likewise.
8954 (duplicate_thunk_for_node): Adjust parameters using
8955 ipa_param_body_adjustments, copy param_adjustments instead of
8957 (cgraph_node::create_clone): Convert to using ipa_param_adjustments.
8958 (cgraph_node::create_virtual_clone): Likewise.
8959 (cgraph_node::create_version_clone_with_body): Likewise.
8960 (cgraph_materialize_clone): Likewise.
8961 (symbol_table::materialize_all_clones): Likewise.
8962 * ipa-fnsummary.c (ipa_fn_summary_t::duplicate): Simplify
8963 ipa_replace_map check.
8964 * ipa-cp.c (get_replacement_map): Do not initialize removed fields.
8965 (initialize_node_lattices): Make aware that some parameters might have
8966 already been removed.
8967 (want_remove_some_param_p): New function.
8968 (create_specialized_node): Convert to using ipa_param_adjustments and
8969 deal with possibly pre-existing adjustments.
8970 * lto-cgraph.c (output_cgraph_opt_summary_p): Likewise.
8971 (output_node_opt_summary): Do not stream removed fields. Stream
8972 parameter adjustments instead of argumetns to skip.
8973 (input_node_opt_summary): Likewise.
8974 (input_node_opt_summary): Likewise.
8975 * lto-section-in.c (lto_section_name): Added ipa-sra section.
8976 * lto-streamer.h (lto_section_type): Likewise.
8977 * tree-inline.h (copy_body_data): New fields killed_new_ssa_names and
8979 (copy_decl_to_var): Declare.
8980 * tree-inline.c (update_clone_info): Do not remap old_tree.
8981 (remap_gimple_stmt): Use ipa_param_body_adjustments to modify gimple
8982 statements, walk all extra generated statements and remap their
8984 (redirect_all_calls): Add killed SSA names to a hash set.
8985 (remap_ssa_name): Do not remap killed SSA names.
8986 (copy_arguments_for_versioning): Renames to copy_arguments_nochange,
8987 half of functionality moved to ipa_param_body_adjustments.
8988 (copy_decl_to_var): Make exported.
8989 (copy_body): Destroy killed_new_ssa_names hash set.
8990 (expand_call_inline): Remap performed splits.
8991 (update_clone_info): Likewise.
8992 (tree_function_versioning): Simplify tree_map processing. Updated to
8993 accept ipa_param_adjustments and use ipa_param_body_adjustments.
8994 * omp-simd-clone.c (simd_clone_vector_of_formal_parm_types): Adjust
8995 for the new interface.
8996 (simd_clone_clauses_extract): Likewise, make args an auto_vec.
8997 (simd_clone_compute_base_data_type): Likewise.
8998 (simd_clone_init_simd_arrays): Adjust for the new interface.
8999 (simd_clone_adjust_argument_types): Likewise.
9000 (struct modify_stmt_info): Likewise.
9001 (ipa_simd_modify_stmt_ops): Likewise.
9002 (ipa_simd_modify_function_body): Likewise.
9003 (simd_clone_adjust): Likewise.
9004 * tree-sra.c: Removed IPA-SRA. Include tree-sra.h.
9005 (type_internals_preclude_sra_p): Make public.
9006 * tree-sra.h: New file.
9007 * ipa-inline-transform.c (save_inline_function_body): Update to
9008 refelct new tree_function_versioning signature.
9009 * ipa-prop.c (adjust_agg_replacement_values): Use a helper from
9010 ipa_param_adjustments to get current parameter indices.
9011 (ipcp_modif_dom_walker::before_dom_children): Likewise.
9012 (ipcp_update_bits): Likewise.
9013 (ipcp_update_vr): Likewise.
9014 * ipa-split.c (split_function): Convert to using ipa_param_adjustments.
9015 * ipa-sra.c: New file.
9016 * multiple_target.c (create_target_clone): Update to reflet new type
9017 of create_version_clone_with_body.
9018 * trans-mem.c (ipa_tm_create_version): Update to reflect new type of
9019 tree_function_versioning.
9020 (modify_function): Update to reflect new type of
9021 tree_function_versioning.
9022 * params.def (PARAM_IPA_SRA_MAX_REPLACEMENTS): New.
9023 * passes.def: Remove old IPA-SRA and add new one.
9024 * tree-pass.h (make_pass_early_ipa_sra): Remove declaration.
9025 (make_pass_ipa_sra): Declare.
9026 * dbgcnt.def: Remove eipa_sra. Added ipa_sra_params and
9028 * doc/invoke.texi (ipa-sra-max-replacements): New.
9030 2019-09-19 Martin Sebor <msebor@redhat.com>
9033 * builtins.c (component_size): Correct trailing array computation,
9034 rename to component_ref_size and move...
9035 (compute_objsize): Adjust.
9036 * gimple-ssa-warn-restrict.c (builtin_memref::refsize): New member.
9037 (builtin_access::strict): Do not consider memmove.
9038 (builtin_access::write_off): New function.
9039 (builtin_memref::builtin_memref): Initialize refsize.
9040 (builtin_memref::set_base_and_offset): Adjust refoff and compute
9042 (builtin_memref::offset_out_of_bounds): Use ooboff input values.
9044 (builtin_access::builtin_access): Initialize dstoff to destination
9045 refeence offset here instead of in maybe_diag_overlap. Adjust
9046 referencess even to unrelated objects. Adjust sizrange of bounded
9047 string functions to reflect bound. For strcat, adjust destination
9048 sizrange by that of source.
9049 (builtin_access::strcat_overlap): Adjust offsets and sizes
9050 to reflect the increase in destination sizrange above.
9051 (builtin_access::overlap): Do not set dstoff here but instead
9052 in builtin_access::builtin_access.
9053 (check_bounds_or_overlap): Use builtin_access::write_off.
9054 (maybe_diag_access_bounds): Add argument. Add informational notes.
9055 (dump_builtin_memref, dump_builtin_access): New functions.
9056 * tree.c (component_ref_size): ...to here.
9057 * tree.h (component_ref_size): Declare.
9058 * tree-ssa-strlen (handle_builtin_strcat): Include the terminating
9059 nul in the size of the source string.
9061 2019-09-19 Lewis Hyatt <lhyatt@gmail.com>
9064 * doc/cpp.texi: Document support for extended characters in
9066 * doc/cppopts.texi: Likewise.
9068 2019-09-19 Richard Biener <rguenther@suse.de>
9070 * tree-vect-loop.c (vect_is_slp_reduction): Remove.
9071 (check_reduction_path): New overload having the path as result.
9072 (vect_is_simple_reduction): From the detected reduction
9073 path build a SLP reduction chain if possible.
9075 2019-09-19 Richard Biener <rguenther@suse.de>
9078 * config/i386/i386-features.c (gen_gpr_to_xmm_move_src):
9079 Force operand to a register if it isn't nonimmediate_operand.
9081 2019-09-19 Wilco Dijkstra <wdijkstr@arm.com>
9083 * config/arm/arm.md (<logical_op>di3): Use <optab> and <CODE>.
9084 * config/arm/iterators.md (optab): Add and, ior, xor entries.
9085 (logical_op): Remove code attribute.
9086 (logical_OP): Likewise.
9088 2019-09-19 Martin Liska <mliska@suse.cz>
9090 * ipa-icf.c (sort_congruence_class_groups_by_decl_uid):
9093 2019-09-19 Richard Henderson <richard.henderson@linaro.org>
9095 * config/aarch64/aarch64.c (aarch64_print_operand): Allow integer
9098 * config/aarch64/aarch64.c (aarch64_gen_compare_reg): Add support
9099 for NE comparison of TImode values.
9100 (aarch64_emit_load_exclusive): Add support for TImode.
9101 (aarch64_emit_store_exclusive): Likewise.
9102 (aarch64_split_compare_and_swap): Disable strong_zero_p for TImode.
9103 * config/aarch64/atomics.md (@atomic_compare_and_swap<ALLI_TI>):
9104 Change iterator from ALLI to ALLI_TI.
9105 (@atomic_compare_and_swap<JUST_TI>): New.
9106 (@atomic_compare_and_swap<JUST_TI>_lse): New.
9107 (aarch64_load_exclusive_pair): New.
9108 (aarch64_store_exclusive_pair): New.
9109 * config/aarch64/iterators.md (JUST_TI): New.
9111 * config/aarch64/aarch64 (aarch64_split_compare_and_swap): Disable
9112 strong_zero_p for aarch64_track_speculation; unify some code paths;
9113 use aarch64_gen_compare_reg instead of open-coding.
9115 * config/aarch64/aarch64.opt (-moutline-atomics): New.
9116 * config/aarch64/aarch64.c (aarch64_atomic_ool_func): New.
9117 (aarch64_ool_cas_names, aarch64_ool_swp_names): New.
9118 (aarch64_ool_ldadd_names, aarch64_ool_ldset_names): New.
9119 (aarch64_ool_ldclr_names, aarch64_ool_ldeor_names): New.
9120 (aarch64_expand_compare_and_swap): Honor TARGET_OUTLINE_ATOMICS.
9121 * config/aarch64/atomics.md (atomic_exchange<ALLI>): Likewise.
9122 (atomic_<atomic_op><ALLI>): Likewise.
9123 (atomic_fetch_<atomic_op><ALLI>): Likewise.
9124 (atomic_<atomic_op>_fetch<ALLI>): Likewise.
9125 * doc/invoke.texi: Document -moutline-atomics.
9127 2019-09-19 Feng Xue <fxue@os.amperecomputing.com>
9129 * ipa-fnsummary.c (set_cond_stmt_execution_predicate): Do not compute
9130 trivial predicate for condition branch.
9131 (set_switch_stmt_execution_predicate): Do not compute trivial predicate
9133 (compute_bb_predicates): Update predicate based on post-dominating
9135 (analyze_function_body): Calculate post-dominating information.
9137 2019-09-19 Richard Sandiford <richard.sandiford@arm.com>
9139 * tree-vectorizer.h (vectorizable_condition): Take an int
9140 reduction index instead of a boolean flag.
9141 * tree-vect-stmts.c (vectorizable_condition): Likewise.
9142 Swap the "then" and "else" values for EXTRACT_LAST_REDUCTION
9143 reductions if the reduction accumulator is the "then" rather
9144 than the "else" value.
9145 (vect_analyze_stmt): Update call accordingly.
9146 (vect_transform_stmt): Likewise.
9147 * tree-vect-loop.c (vectorizable_reduction): Likewise,
9148 asserting that the index is > 0.
9150 2019-09-19 Martin Liska <mliska@suse.cz>
9152 * ipa-icf.c (sort_sem_items_by_decl_uid): Simplify comparator.
9153 (sort_congruence_classes_by_decl_uid): Likewise.
9154 (sort_congruence_class_groups_by_decl_uid): Use std::pair for
9156 (sem_item_optimizer::merge_classes): Likewise.
9158 2019-09-19 Richard Biener <rguenther@suse.de>
9160 PR tree-optimization/91812
9161 * tree-ssa-phiprop.c (propagate_with_phi): Do not replace
9164 2019-09-19 Richard Sandiford <richard.sandiford@arm.com>
9166 * defaults.h (TARGET_UNIT): New macro.
9167 (target_unit): New type.
9168 * rtl.h (native_encode_rtx, native_decode_rtx)
9169 (native_decode_vector_rtx, subreg_size_lsb): Declare.
9170 (subreg_lsb_1): Turn into an inline wrapper around subreg_size_lsb.
9171 * rtlanal.c (subreg_lsb_1): Delete.
9172 (subreg_size_lsb): New function.
9173 * simplify-rtx.c: Include rtx-vector-builder.h
9174 (simplify_immed_subreg): Delete.
9175 (native_encode_rtx, native_decode_vector_rtx, native_decode_rtx)
9176 (simplify_const_vector_byte_offset, simplify_const_vector_subreg): New
9178 (simplify_subreg): Use them.
9179 (test_vector_subregs_modes, test_vector_subregs_repeating)
9180 (test_vector_subregs_fore_back, test_vector_subregs_stepped)
9181 (test_vector_subregs): New functions.
9182 (test_vector_ops): Call test_vector_subregs for integer vector
9183 modes with at least 2 elements.
9185 2019-09-19 Richard Biener <rguenther@suse.de>
9187 * tree-parloops.c (parloops_is_slp_reduction): Do not set
9188 LOOP_VINFO_OPERANDS_SWAPPED.
9189 (parloops_is_simple_reduction): Likewise.
9190 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Do not
9191 initialize operands_swapped.
9192 (_loop_vec_info::~_loop_vec_info): Do not re-canonicalize stmts.
9193 (vect_is_slp_reduction): Do not swap operands.
9194 * tree-vectorizer.h (_loop_vec_info::operands_swapped): Remove.
9195 (LOOP_VINFO_OPERANDS_SWAPPED): Likewise.
9197 2019-09-19 Hongtao Liu <hongtao.liu@intel.com>
9200 * config/i386.md (*floatuns<SWI48:mode><MODEF:mode>2_avx512):
9201 Add avx_partial_xmm_update.
9203 2019-09-18 Jim Wilson <jimw@sifive.com>
9206 * config/riscv/riscv-protos.h (riscv_split_symbol): New bool parameter.
9207 (riscv_move_integer): Likewise.
9208 * config/riscv/riscv.c (riscv_split_integer): Pass FALSE for new
9209 riscv_move_integer arg.
9210 (riscv_legitimize_move): Likewise.
9211 (riscv_force_temporary): New parameter in_splitter. Don't call
9213 (riscv_unspec_offset_high): Pass FALSE for new riscv_force_temporary
9215 (riscv_add_offset): Likewise.
9216 (riscv_split_symbol): New parameter in_splitter. Pass to
9217 riscv_force_temporary.
9218 (riscv_legitimize_address): Pass FALSE for new riscv_split_symbol
9220 (riscv_move_integer): New parameter in_splitter. New local
9221 can_create_psuedo. Don't call riscv_split_integer or force_reg when
9223 (riscv_legitimize_const_move): Pass FALSE for new riscv_move_integer,
9224 riscv_split_symbol, and riscv_force_temporary args.
9225 * config/riscv/riscv.md (low<mode>+1): Pass TRUE for new
9226 riscv_move_integer arg.
9227 (low<mode>+2): Pass TRUE for new riscv_split_symbol arg.
9229 2019-09-18 H.J. Lu <hongjiu.lu@intel.com>
9232 * config/i386/x86-tune-costs.h (skylake_cost): Restore SImode
9233 hard register store cost to 6.
9235 2019-09-18 H.J. Lu <hongjiu.lu@intel.com>
9238 * config/i386/x86-tune-costs.h (skylake_cost): Increase SImode
9239 pseudo register store cost from 3 to 6 to make it the same as
9242 2019-09-18 Wilco Dijkstra <wdijkstr@arm.com>
9245 * config/arm/arm.md (<logical_op>di3): Expand explicitly.
9246 (one_cmpldi2): Likewise.
9247 * config/arm/arm.c (const_ok_for_dimode_op): Return true if one
9248 of the constant parts is simple.
9249 * config/arm/iterators.md (LOGICAL): Add new code iterator.
9250 (logical_op): Add new code attribute.
9251 (logical_OP): Likewise.
9252 * config/arm/predicates.md (arm_anddi_operand): Add predicate.
9253 (arm_iordi_operand): Add predicate.
9254 (arm_xordi_operand): Add predicate.
9256 2019-09-18 Wilco Dijkstra <wdijkstr@arm.com>
9258 * config/arm/arm.md (maddsidi4): Remove expander.
9259 (mulsidi3adddi): Remove pattern.
9260 (mulsidi3adddi_v6): Likewise.
9261 (mulsidi3_nov6): Likewise.
9262 (mulsidi3_v6): Likewise.
9263 (umulsidi3): Remove expander.
9264 (umulsidi3_nov6): Remove pattern.
9265 (umulsidi3_v6): Likewise.
9266 (umulsidi3adddi): Likewise.
9267 (umulsidi3adddi_v6): Likewise.
9268 (<Us>mulsidi3): Add combined expander.
9269 (<Us>maddsidi4): Likewise.
9270 (<US>mull): Add combined umull and smull pattern.
9271 (<US>mlal): Likewise.
9272 * config/arm/iterators.md (Us): Add new iterator.
9274 2019-09-18 Richard Biener <rguenther@suse.de>
9276 * tree-vect-loop.c (vect_is_simple_reduction): Remove operand
9278 (vectorize_fold_left_reduction): Remove assert.
9279 (vectorizable_reduction): Also expect COND_EXPR non-reduction
9280 operand in position 2. Remove assert.
9282 2019-09-18 Wilco Dijkstra <wdijkstr@arm.com>
9284 * config/arm/arm.md (smulsi3_highpart): Use <US> and <SE> iterators.
9285 (smulsi3_highpart_nov6): Remove pattern.
9286 (smulsi3_highpart_v6): Likewise.
9287 (umulsi3_highpart): Likewise.
9288 (umulsi3_highpart_nov6): Likewise.
9289 (umulsi3_highpart_v6): Likewise.
9290 (<US>mull_high): Add new combined multiply pattern.
9292 2019-09-18 Wilco Dijkstra <wdijkstr@arm.com>
9294 * config/arm/arm.md (arm_mulsi3): Remove pattern.
9295 (arm_mulsi3_v6): Likewise.
9296 (mulsi3addsi_v6): Likewise.
9297 (mulsi3subsi): Likewise.
9298 (mul): Add new multiply pattern.
9302 2019-09-18 Richard Biener <rguenther@suse.de>
9304 * tree-parloops.c (report_ploop_op): Copy from report_vect_op.
9305 (parloops_valid_reduction_input_p): Copy from
9306 valid_reduction_input_p.
9307 (parloops_is_slp_reduction): Copy from vect_is_slp_reduction.
9308 (parloops_needs_fold_left_reduction_p): Copy from
9309 needs_fold_left_reduction_p.
9310 (parloops_is_simple_reduction): Copy from
9311 vect_is_simple_reduction.
9312 (parloops_force_simple_reduction): Copy from
9313 vect_force_simple_reduction.
9314 (gather_scalar_reductions): Adjust.
9315 * tree-vect-loop.c (vect_force_simple_reduction): Make static.
9316 * tree-vectorizer.h (vect_force_simple_reduction): Remove.
9318 2019-09-18 Richard Biener <rguenther@suse.de>
9320 * tree-vectorizer.h (get_initial_def_for_reduction): Remove.
9321 * tree-vect-loop.c (get_initial_def_for_reduction): Make
9323 (vect_create_epilog_for_reduction): Remove dead code.
9325 2019-09-18 Richard Sandiford <richard.sandiford@arm.com>
9327 * varasm.c (assemble_real): Generate canonical const_ints.
9329 2019-09-18 Richard Biener <rguenther@suse.de>
9332 * lto-streamer-in.c (input_eh_regions): Move EH init to
9333 lto_materialize_function.
9334 * tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers):
9337 2019-09-18 Richard Sandiford <richard.sandiford@arm.com>
9339 * tree-ssa-ccp.c (get_value_for_expr): Check whether CONSTANTs
9342 2019-09-18 Richard Sandiford <richard.sandiford@arm.com>
9344 * gimplify.c (gimplify_decl_expr): Use poly_int_tree_p instead
9345 of checking specifically for INTEGER_CST.
9347 2019-09-18 Richard Sandiford <richard.sandiford@arm.com>
9349 * stor-layout.c (compute_record_mode): Operate on poly_uint64
9350 sizes instead of uhwi sizes.
9352 2019-09-18 Richard Sandiford <richard.sandiford@arm.com>
9354 * dwarf2out.c (loc_list_from_tree_1): Handle POLY_INT_CST.
9355 (add_const_value_attribute): Handle CONST_POLY_INT.
9357 2019-09-18 Martin Liska <mliska@suse.cz>
9359 * dbgcnt.def (store_merging): New counter.
9360 * gimple-ssa-store-merging.c (imm_store_chain_info::output_merged_stores):
9361 Use it in store merging.
9363 2019-09-17 Richard Sandiford <richard.sandiford@arm.com>
9365 * config/aarch64/aarch64.c (aarch64_sched_variable_issue): New
9367 (TARGET_SCHED_VARIABLE_ISSUE): New macro.
9368 * config/arm/arm.c (arm_sched_variable_issue): New function.
9369 (TARGET_SCHED_VARIABLE_ISSUE): New macro.
9371 2019-09-17 Richard Sandiford <richard.sandiford@arm.com>
9373 * config/arm/types.md (no_reservation): New reservation.
9374 * config/aarch64/falkor.md (falkor_other_0_nothing): Don't handle
9376 * config/aarch64/saphira.md (saphira_other_0_nothing): Likewise.
9377 * config/aarch64/thunderx2t99.md (thunderx2t99_nothing): Likewise.
9378 * config/aarch64/tsv110.md (tsv110_alu): Likewise.
9379 * config/arm/arm1020e.md (1020alu_op): Likewise.
9380 * config/arm/arm1026ejs.md (alu_op): Likewise.
9381 * config/arm/arm1136jfs.md (11_alu_op): Likewise.
9382 * config/arm/arm926ejs.md (9_alu_op): Likewise.
9383 * config/arm/cortex-a15.md (cortex_a15_alu): Likewise.
9384 * config/arm/cortex-a17.md (cortex_a17_alu): Likewise.
9385 * config/arm/cortex-a5.md (cortex_a5_alu): Likewise.
9386 * config/arm/cortex-a53.md (cortex_a53_alu): Likewise.
9387 * config/arm/cortex-a57.md (cortex_a57_alu): Likewise.
9388 * config/arm/cortex-a7.md (cortex_a7_alu_shift): Likewise.
9389 * config/arm/cortex-a8.md (cortex_a8_alu): Likewise.
9390 * config/arm/cortex-a9.md (cortex_a9_dp): Likewise.
9391 * config/arm/cortex-m4.md (cortex_m4_alu): Likewise.
9392 * config/arm/cortex-m7.md (cortex_m7_alu_simple): Likewise.
9393 * config/arm/cortex-r4.md (cortex_r4_alu_shift_reg): Likewise.
9394 * config/arm/fa526.md (526_alu_op): Likewise.
9395 * config/arm/fa606te.md (606te_alu_op): Likewise.
9396 * config/arm/fa626te.md (626te_alu_op): Likewise.
9397 * config/arm/fa726te.md (726te_alu_op): Likewise.
9398 * config/arm/xgene1.md (xgene1_nop): Likewise.
9400 2019-09-17 Richard Sandiford <richard.sandiford@arm.com>
9402 * config/arm/thumb1.md (*thumb1_tablejump): Change type from
9403 "no_insn" to "branch".
9405 2019-09-17 Richard Sandiford <richard.sandiford@arm.com>
9407 * array-traits.h (array_traits<T[N]>::size): Remove parameter name.
9409 2019-09-17 Richard Biener <rguenther@suse.de>
9412 * dwarf2out.c (dwarf2out_late_global_decl): If early dwarf
9413 was missing generate locations only once.
9415 2019-09-17 Feng Xue <fxue@os.amperecomputing.com>
9418 * doc/invoke.texi (ipa-max-switch-predicate-bounds): Document new
9420 * params.def (PARAM_IPA_MAX_SWITCH_PREDICATE_BOUNDS): New.
9421 * ipa-fnsummary.c (set_switch_stmt_execution_predicate): Add predicate
9422 for switch default case using range analysis information.
9424 2019-09-17 Christophe Lyon <christophe.lyon@linaro.org>
9427 * config/arm/arm.c (arm_valid_target_attribute_rec): Make sure the
9428 mode attributed is supported by FDPIC.
9430 2019-09-17 Richard Biener <rguenther@suse.de>
9432 PR tree-optimization/91790
9433 * tree-vect-stmts.c (vectorizable_load): For BB vectorization
9434 use the correct DR for setting up realignment.
9436 2019-09-16 Uroš Bizjak <ubizjak@gmail.com>
9439 * config/i386/i386.h (TARGET_USE_XCHG_FOR_ATOMIC_STORE): New macro.
9440 * config/i386/x86-tune.def (X86_TUNE_USE_XCHG_FOR_ATOMIC_STORE): New.
9441 * config/i386/sync.md (atomic_store<mode>): emit XCHG for
9442 TARGET_USE_XCHG_FOR_ATOMIC_STORE.
9444 2019-09-16 Jason Merrill <jason@redhat.com>
9446 * Makefile.in (build/genmatch.o): Depend on $(CPPLIB_H).
9448 2019-09-16 Martin Liska <mliska@suse.cz>
9450 * gimple-fold.c (or_comparisons_1): Remove rules moved
9452 * match.pd: ... here.
9454 2019-09-16 Martin Liska <mliska@suse.cz>
9456 * gimple-fold.c (or_comparisons_1): Remove rules
9458 * match.pd: ... here.
9460 2019-09-16 Martin Liska <mliska@suse.cz>
9462 * genmatch.c (dt_node::append_simplify): Do not print
9463 warning when we have duplicate patterns belonging
9464 to a same simplify rule.
9465 * gimple-fold.c (and_comparisons_1): Remove matching moved to match.pd.
9466 (maybe_fold_comparisons_from_match_pd): Handle
9467 tcc_comparison as a results.
9468 * match.pd: Handle (X == CST1) && (X OP2 CST2) conditions.
9470 2019-09-16 Li Jia He <helijia@linux.ibm.com>
9471 Qi Feng <ffengqi@linux.ibm.com>
9474 * match.pd (x > y && x != XXX_MIN): Optimize into 'x > y'.
9475 (x > y && x == XXX_MIN): Optimize into 'false'.
9476 (x <= y && x == XXX_MIN): Optimize into 'x == XXX_MIN'.
9477 (x < y && x != XXX_MAX): Optimize into 'x < y'.
9478 (x < y && x == XXX_MAX): Optimize into 'false'.
9479 (x >= y && x == XXX_MAX): Optimize into 'x == XXX_MAX'.
9480 (x > y || x != XXX_MIN): Optimize into 'x != XXX_MIN'.
9481 (x <= y || x != XXX_MIN): Optimize into 'true'.
9482 (x <= y || x == XXX_MIN): Optimize into 'x <= y'.
9483 (x < y || x != XXX_MAX): Optimize into 'x != XXX_MAX'.
9484 (x >= y || x != XXX_MAX): Optimize into 'true'.
9485 (x >= y || x == XXX_MAX): Optimize into 'x >= y'.
9487 2019-09-16 Li Jia He <helijia@linux.ibm.com>
9488 Martin Liska <mliska@suse.cz>
9490 * gimple-fold.c (and_comparisons_1): Add type as first
9492 (and_var_with_comparison): Likewise.
9493 (and_var_with_comparison_1): Likewise.
9494 (or_comparisons_1): Likewise.
9495 (or_var_with_comparison): Likewise.
9496 (or_var_with_comparison_1): Likewise.
9497 (maybe_fold_and_comparisons): Call maybe_fold_comparisons_from_match_pd.
9498 (maybe_fold_or_comparisons): Likewise.
9499 (maybe_fold_comparisons_from_match_pd): New.
9500 * gimple-fold.h (maybe_fold_and_comparisons): Add type argument.
9501 (maybe_fold_or_comparisons): Likewise.
9502 * gimple.c (gimple_size): Make it public and add num_ops argument.
9503 (gimple_init): New function.
9504 (gimple_alloc): Call gimple_init.
9505 * gimple.h (gimple_size): New.
9506 (gimple_init): Likewise.
9507 * tree-if-conv.c (fold_or_predicates): Pass type.
9508 * tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise.
9509 * tree-ssa-reassoc.c (eliminate_redundant_comparison): Likewise.
9510 (optimize_vec_cond_expr): Likewise.
9511 (ovce_extract_ops): Return type of conditional expression.
9512 * tree-ssanames.c (init_ssa_name_imm_use): New.
9513 (make_ssa_name_fn): Use init_ssa_name_imm_use.
9514 * tree-ssanames.h (init_ssa_name_imm_use): New.
9516 2019-09-16 Richard Biener <rguenther@suse.de>
9518 PR tree-optimization/91756
9519 PR tree-optimization/87132
9520 * tree-ssa-alias.h (enum translate_flags): New.
9521 (get_continuation_for_phi): Use it instead of simple bool flag.
9522 (walk_non_aliased_vuses): Likewise.
9523 * tree-ssa-alias.c (maybe_skip_until): Adjust.
9524 (get_continuation_for_phi): When looking across backedges only
9525 disallow valueization.
9526 (walk_non_aliased_vuses): Adjust.
9527 * tree-ssa-sccvn.c (vn_reference_lookup_3): Avoid valueization
9530 2019-09-14 Kewen Lin <linkw@gcc.gnu.org>
9533 * config/rs6000/rs6000.c (TARGET_HAVE_COUNT_REG_DECR_P): New macro.
9534 (TARGET_DOLOOP_COST_FOR_GENERIC): Likewise.
9535 (TARGET_DOLOOP_COST_FOR_ADDRESS): Likewise.
9536 * target.def (have_count_reg_decr_p): New hook.
9537 (doloop_cost_for_generic): Likewise.
9538 (doloop_cost_for_address): Likewise.
9539 * doc/tm.texi.in (TARGET_HAVE_COUNT_REG_DECR_P): Likewise.
9540 (TARGET_DOLOOP_COST_FOR_GENERIC): Likewise.
9541 (TARGET_DOLOOP_COST_FOR_ADDRESS): Likewise.
9542 * doc/tm.texi: Regenerate.
9543 * tree-ssa-loop-ivopts.c (comp_cost::operator+=): Consider infinite cost
9545 (record_group): Init doloop_p.
9546 (add_candidate_1): Add optional argument doloop, change the handlings
9548 (add_candidate): Likewise.
9549 (generic_predict_doloop_p): Update attribute.
9550 (force_expr_to_var_cost): Add costing for expressions COND_EXPR/LT_EXPR/
9551 LE_EXPR/GT_EXPR/GE_EXPR/EQ_EXPR/NE_EXPR/UNORDERED_EXPR/ORDERED_EXPR/
9552 UNLT_EXPR/UNLE_EXPR/UNGT_EXPR/UNGE_EXPR/UNEQ_EXPR/LTGT_EXPR/MAX_EXPR/
9554 (get_computation_cost): Update for doloop IV cand extra cost.
9555 (determine_group_iv_cost_cond): Update for doloop IV cand.
9556 (determine_iv_cost): Likewise.
9557 (ivopts_estimate_reg_pressure): Likewise.
9558 (may_eliminate_iv): Update handlings for doloop IV cand.
9559 (add_iv_candidate_for_doloop): New function.
9560 (find_iv_candidates): Call function add_iv_candidate_for_doloop.
9561 (iv_ca_set_no_cp): Update for doloop IV cand.
9562 (iv_ca_set_cp): Likewise.
9563 (iv_ca_dump): Dump register cost.
9564 (find_doloop_use): New function.
9565 (analyze_and_mark_doloop_use): Likewise.
9566 (tree_ssa_iv_optimize_loop): Call function analyze_and_mark_doloop_use.
9568 2019-09-13 Bernd Edlinger <bernd.edlinger@hotmail.de>
9571 * cse.c (cse_insn): Do not replace anything with a
9574 2019-09-13 Ian Lance Taylor <iant@golang.org>
9576 * doc/invoke.texi (Optimize Options): Fix typo.
9578 2019-09-12 Uroš Bizjak <ubizjak@gmail.com>
9580 PR tree-optimization/89386
9581 * config/i386/sse.md (smulhrs<mode>3): New expander.
9582 (smulhrsv4hi3): Ditto.
9584 2019-09-12 Richard Biener <rguenther@suse.de>
9586 PR tree-optimization/91750
9587 * tree-vect-loop.c (vectorizable_induction): Compute IV increments
9588 in the type of the evolution.
9590 2019-09-12 Yuliang Wang <yuliang.wang@arm.com>
9592 PR tree-optimization/89386
9593 * config/aarch64/aarch64-sve2.md (<su>mull<bt><Vwide>)
9594 (<r>shrnb<mode>, <r>shrnt<mode>): New SVE2 patterns.
9595 (<su>mulh<r>s<mode>3): New pattern for MULHRS.
9596 * config/aarch64/iterators.md (UNSPEC_SMULLB, UNSPEC_SMULLT)
9597 (UNSPEC_UMULLB, UNSPEC_UMULLT, UNSPEC_SHRNB, UNSPEC_SHRNT)
9598 (UNSPEC_RSHRNB, UNSPEC_RSHRNT, UNSPEC_SMULHS, UNSPEC_SMULHRS)
9599 UNSPEC_UMULHS, UNSPEC_UMULHRS): New unspecs.
9600 (MULLBT, SHRNB, SHRNT, MULHRS): New int iterators.
9601 (su, r): Handle the unspecs above.
9602 (bt): New int attribute.
9603 * internal-fn.def (IFN_MULHS, IFN_MULHRS): New internal functions.
9604 * internal-fn.c (first_commutative_argument): Commutativity info for
9606 * optabs.def (smulhs_optab, smulhrs_optab, umulhs_optab)
9607 (umulhrs_optab): New optabs.
9608 * doc/md.texi (smulhs$var{m3}, umulhs$var{m3})
9609 (smulhrs$var{m3}, umulhrs$var{m3}): Documentation for the above.
9610 * tree-vect-patterns.c (vect_recog_mulhs_pattern): New pattern
9612 (vect_vect_recog_func_ptrs): Add it.
9614 2019-09-11 Michael Meissner <meissner@linux.ibm.com>
9616 * config/rs6000/predicates.md (non_add_cint_operand): Simplify the
9619 2019-09-11 Nathan Sidwell <nathan@acm.org>
9621 * tree.h (MARK_TS_TYPE_NON_COMMON): New.
9622 * tree.c (tree_node_structure_for_code): Reformat and alphabetize.
9624 2019-09-11 Richard Biener <rguenther@suse.de>
9626 * lto-opts.c (lto_write_options): Stream -g when debug is enabled.
9627 * lto-wrapper.c (merge_and_complain): Pick up -g.
9628 (append_compiler_options): Likewise.
9629 (run_gcc): Re-instantiate handling -g0 at link-time.
9630 * doc/invoke.texi (flto): Document debug info generation.
9632 2019-09-11 Richard Biener <rguenther@suse.de>
9634 PR tree-optimization/90387
9635 * vr-values.c (vr_values::extract_range_basic): After inlining
9636 simplify non-constant __builtin_constant_p to false.
9638 2019-09-11 Eric Botcazou <ebotcazou@adacore.com>
9640 PR rtl-optimization/89795
9641 * rtlanal.c (nonzero_bits1) <SUBREG>: Do not propagate results from
9642 inner REGs to paradoxical SUBREGs if WORD_REGISTER_OPERATIONS is set.
9644 2019-09-11 Jakub Jelinek <jakub@redhat.com>
9646 PR tree-optimization/91723
9647 * tree-vect-stmts.c (vectorizable_call): Use types_compatible_p check
9648 instead of pointer equality when checking if argument vectypes are
9652 * match.pd ((A / (1 << B)) -> (A >> B)): Call tree_nonzero_bits instead
9653 of get_nonzero_bits, only call it for integral types.
9655 2019-09-11 Richard Biener <rguenther@suse.de>
9658 2019-09-09 Barnaby Wilks <barnaby.wilks@arm.com>
9660 * match.pd: Add flag_unsafe_math_optimizations check
9661 before deciding on the widest type in a binary math operation.
9663 2019-09-10 Richard Sandiford <richard.sandiford@arm.com>
9665 * doc/tm.texi.in: Document that exactly one of CALL_USED_REGISTERS
9666 and CALL_REALLY_USED_REGISTERS must be defined, and that
9667 CALL_REALLY_USED_REGISTERS is preferred.
9668 * doc/tm.texi: Regenerate.
9669 * hard-reg-set.h (target_hard_regs::x_call_really_used_regs): Delete.
9670 (call_really_used_regs): Likewise.
9671 * reginfo.c: Raise an #error if both CALL_USED_REGISTERS and
9672 CALL_REALLY_USED_REGISTERS are defined.
9673 (initial_call_used_regs): Use CALL_REALLY_USED_REGISTERS as the
9674 initial value if defined.
9675 (initial_call_really_used_regs): Delete.
9676 (saved_call_really_used_regs): Likewise.
9677 (CALL_REALLY_USED_REGNO_P): Likewise.
9678 (init_reg_sets): Remove handling of call_really_used_regs.
9679 (save_register_info, restore_register_info, globalize_reg): Likewise.
9680 (init_reg_sets_1): Likewise. Use call_used_regs instead of
9681 CALL_REALLY_USED_REGNO_P. Don't set call_used_regs for registers
9682 outside operand_reg_set.
9683 (fix_register): Don't change call_used_regs if
9684 CALL_REALLY_USED_REGISTERS is defined.
9685 * config/csky/csky.h (CALL_USED_REGISTERS): Delete.
9686 * config/csky/csky.c (get_csky_live_regs): Use call_used_regs
9687 instead of call_really_used_regs.
9688 (csky_conditional_register_usage): Remove the old handling of
9689 call_used_regs and change the handling of call_really_used_regs
9690 to use call_used_regs instead.
9691 * config/ia64/ia64.h (CALL_USED_REGISTERS): Delete.
9692 * config/ia64/ia64.c (fix_range): Don't set call_used_regs when
9693 making a register fixed.
9694 * config/m32r/m32r.h (CALL_USED_REGISTERS): Delete.
9695 * config/m32r/m32r.c (MUST_SAVE_REGISTER): Use call_used_regs
9696 instead of call_really_used_regs.
9697 (m32r_conditional_register_usage): Don't set call_used_regs when
9698 making a register fixed.
9699 * config/mips/mips.h (CALL_USED_REGISTERS): Delete.
9700 * config/mips/mips.c (mips_global_pointer): Use call_used_regs
9701 instead of call_really_used_regs.
9702 (mips_interrupt_extra_call_saved_reg_p): Likewise.
9703 (mips_cfun_call_saved_reg_p): Likewise.
9704 (mips_swap_registers): Remove the old handling of call_used_regs
9705 and change the handling of call_really_used_regs to use call_used_regs
9707 (mips_conditional_register_usage): Likewise.
9708 * config/mn10300/mn10300.h (CALL_USED_REGISTERS): Delete.
9709 * config/mn10300/mn10300.c (fp_regs_to_save): Use call_used_regs
9710 instead of call_really_used_regs.
9711 (mn10300_get_live_callee_saved_regs): Likewise.
9712 (mn10300_expand_prologue, mn10300_expand_epilogue): Likewise.
9713 (mn10300_conditional_register_usage): Don't set call_used_regs when
9714 making a register fixed.
9715 * config/rs6000/rs6000.h (CALL_USED_REGISTERS): Delete.
9716 * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
9717 Remove the old handling of call_used_regs and change the handling
9718 of call_really_used_regs to use call_used_regs instead.
9719 * config/s390/s390.h (CALL_USED_REGISTERS): Delete.
9720 * config/s390/s390.c (s390_regs_ever_clobbered): Use call_used_regs
9721 instead of call_really_used_regs.
9722 (s390_register_info_gprtofpr, s390_register_info): Likewise.
9723 (s390_hard_regno_rename_ok, s390_hard_regno_scratch_ok): Likewise.
9724 (s390_emit_prologue, s300_set_up_by_prologue): Likewise.
9725 (s390_can_use_return_insn, s390_optimize_prologue): Likewise.
9726 (s390_conditional_register_usage): Remove the old handling of
9727 call_used_regs and change the handling of call_really_used_regs
9728 to use call_used_regs instead.
9729 * config/sh/sh.h (CALL_USED_REGISTERS): Delete.
9730 * config/sh/sh.c (output_stack_adjust, calc_live_regs): Likewise.
9731 (sh_fix_range, reg_unused_after): Likewise.
9732 (sh_conditional_register_usage): Remove the old handling of
9733 call_used_regs and change the handling of call_really_used_regs
9734 to use call_used_regs instead.
9735 * config/sparc/sparc.h (CALL_USED_REGISTERS): Delete.
9736 * config/sparc/sparc.c (sparc_conditional_register_usage): Don't set
9737 call_used_regs when making a register fixed.
9738 * config/tilegx/tilegx.h (CALL_USED_REGISTERS): Delete.
9739 * config/tilegx/tilegx.c (tilegx_conditional_register_usage): Don't set
9740 call_used_regs when making a register fixed.
9741 * config/tilepro/tilepro.h (CALL_USED_REGISTERS): Delete.
9742 * config/tilepro/tilepro.c (tilepro_conditional_register_usage): Don't
9743 set call_used_regs when making a register fixed.
9744 * config/visium/visium.h (CALL_USED_REGISTERS): Delete.
9745 * config/visium/visium.c (visium_conditional_register_usage): Remove
9746 the old handling of call_used_regs and change the handling of
9747 call_really_used_regs to use call_used_regs instead.
9749 2019-09-10 Richard Sandiford <richard.sandiford@arm.com>
9751 * hard-reg-set.h (call_used_regs): Only define if IN_TARGET_CODE.
9752 (call_used_or_fixed_reg_p): Expand definition of call_used_regs.
9753 * reginfo.c (call_used_regs): New macro.
9755 2019-09-10 Richard Sandiford <richard.sandiford@arm.com>
9757 * config/alpha/alpha.c (alpha_compute_frame_layout): Remove redundant
9759 * config/bpf/bpf.c (bpf_compute_frame_layout, bpf_expand_prologue)
9760 (bpf_expand_epilogue): Likewise.
9761 * config/c6x/c6x.c (c6x_save_reg): Likewise.
9762 * config/ft32/ft32.c (ft32_expand_prologue): Likewise.
9763 (ft32_expand_epilogue): Likewise.
9764 * config/i386/i386.c (ix86_save_reg): Likewise.
9765 * config/moxie/moxie.c (moxie_expand_prologue): Likewise.
9766 (moxie_expand_epilogue): Likewise.
9767 * config/tilegx/tilegx.c (need_to_save_reg): Likewise.
9768 * config/tilepro/tilepro.c (need_to_save_reg): Likewise.
9769 * config/xtensa/xtensa.c (xtensa_call_save_reg): Likewise.
9771 2019-09-10 Richard Sandiford <richard.sandiford@arm.com>
9773 * hard-reg-set.h (call_used_or_fixed_reg_p): New macro.
9774 * cfgloopanal.c (init_set_costs): Use call_used_or_fixed_reg_p
9775 instead of testing call_used_regs directly.
9776 * config/aarch64/aarch64.c (aarch64_layout_frame): Likewise.
9777 (aarch64_components_for_bb): Likewise.
9778 * config/alpha/alpha.c (alpha_compute_frame_layout): Likewise.
9779 * config/arc/arc.c (arc_must_save_register): Likewise.
9780 (arc_epilogue_uses): Likewise.
9781 * config/arm/arm.c (arm_option_override, use_return_insn): Likewise.
9782 (legitimize_pic_address, callee_saved_reg_p): Likewise.
9783 (arm_compute_save_reg0_reg12_mask): Likewise.
9784 (arm_compute_save_core_reg_mask): Likewise.
9785 (arm_get_vfp_saved_size, arm_compute_frame_layout): Likewise.
9786 (arm_save_coproc_regs, thumb1_extra_regs_pushed): Likewise.
9787 (cmse_nonsecure_entry_clear_before_return): Likewise.
9788 (thumb1_expand_epilogue, arm_expand_epilogue_apcs_frame): Likewise.
9789 (arm_expand_epilogue): Likewise.
9790 * config/avr/avr.c (avr_regs_to_save, sequent_regs_live): Likewise.
9791 (avr_function_arg_advance, avr_find_unused_d_reg): Likewise.
9792 (_reg_unused_after): Likewise.
9793 * config/bfin/bfin.c (must_save_p, expand_prologue_reg_save): Likewise.
9794 (expand_epilogue_reg_restore, n_regs_saved_by_prologue): Likewise.
9795 (add_to_reg, hwloop_optimize): Likewise.
9796 * config/bpf/bpf.c (bpf_compute_frame_layout, bpf_expand_prologue)
9797 (bpf_expand_epilogue): Likewise.
9798 * config/c6x/c6x.c (c6x_save_reg, c6x_regno_reg_class): Likewise.
9799 * config/cr16/cr16.c (cr16_compute_save_regs): Likewise.
9800 * config/cris/cris.c (cris_reg_saved_in_regsave_area): Likewise.
9801 * config/epiphany/epiphany.c (epiphany_init_reg_tables): Likewise.
9802 (epiphany_compute_function_type, MUST_SAVE_REGISTER): Likewise.
9803 (epiphany_output_mi_thunk, epiphany_start_function): Likewise.
9804 * config/fr30/fr30.c (fr30_num_arg_regs): Likewise.
9805 * config/frv/frv.c (frv_stack_info): Likewise.
9806 * config/ft32/ft32.c (ft32_compute_frame): Likewise.
9807 (ft32_expand_prologue, ft32_expand_epilogue): Likewise.
9808 * config/gcn/gcn.c (gcn_compute_frame_offsets): Likewise.
9809 (move_callee_saved_registers): Likewise.
9810 * config/h8300/h8300.c (byte_reg): Likewise.
9811 * config/i386/i386-options.c (ix86_set_current_function): Likewise.
9812 * config/i386/i386.c (ix86_save_reg, ix86_expand_prologue): Likewise.
9813 (ix86_expand_epilogue, x86_order_regs_for_local_alloc): Likewise.
9814 * config/i386/predicates.md (sibcall_memory_operand): Likewise.
9815 * config/ia64/ia64.c (emit_safe_across_calls, find_gr_spill): Likewise.
9816 (next_scratch_gr_reg, ia64_compute_frame_size): Likewise.
9817 * config/iq2000/iq2000.h (MUST_SAVE_REGISTER): Likewise.
9818 * config/lm32/lm32.c (lm32_compute_frame_size): Likewise.
9819 * config/m32c/m32c.c (need_to_save): Likewise.
9820 * config/m68k/m68k.c (m68k_save_reg): Likewise.
9821 * config/mcore/mcore.c (calc_live_regs): Likewise.
9822 * config/microblaze/microblaze.c (microblaze_must_save_register):
9824 * config/mmix/mmix.c (mmix_local_regno): Likewise.
9825 (mmix_initial_elimination_offset, mmix_reorg): Likewise.
9826 (mmix_use_simple_return, mmix_expand_prologue): Likewise.
9827 (mmix_expand_epilogue): Likewise.
9828 * config/moxie/moxie.c (moxie_compute_frame): Likewise.
9829 (moxie_expand_prologue, moxie_expand_epilogue): Likewise.
9830 * config/msp430/msp430.c (msp430_preserve_reg_p): Likewise.
9831 * config/nds32/nds32.h (nds32_16bit_address_type): Likewise.
9832 (NDS32_REQUIRED_CALLEE_SAVED_P): Likewise.
9833 * config/nios2/nios2.c (prologue_saved_reg_p): Likewise.
9834 * config/or1k/or1k.c (callee_saved_regno_p): Likewise.
9835 * config/pa/pa.c (pa_expand_prologue, pa_expand_epilogue): Likewise.
9836 * config/pdp11/pdp11.c (pdp11_saved_regno): Likewise.
9837 * config/pru/pru.c (prologue_saved_reg_p): Likewise.
9838 * config/riscv/riscv.c (riscv_save_reg_p): Likewise.
9839 (riscv_epilogue_uses, riscv_hard_regno_mode_ok): Likewise.
9840 * config/rl78/rl78.c (need_to_save): Likewise.
9841 * config/rs6000/rs6000-logue.c (save_reg_p): Likewise.
9842 (rs6000_stack_info, generate_set_vrsave): Likewise.
9843 (rs6000_emit_prologue, rs6000_emit_epilogue): Likewise.
9844 * config/rs6000/rs6000.c (rs6000_debug_reg_print): Likewise.
9845 * config/rx/rx.c (rx_get_stack_layout): Likewise.
9846 * config/s390/s390.c (s390_call_saved_register_used): Likewise.
9847 * config/sh/sh.c (calc_live_regs, sh_output_mi_thunk): Likewise.
9848 * config/sparc/sparc.c (save_global_or_fp_reg_p): Likewise.
9849 (save_local_or_in_reg_p): Likewise.
9850 * config/stormy16/stormy16.c (REG_NEEDS_SAVE): Likewise.
9851 (xstormy16_epilogue_uses): Likewise.
9852 * config/tilegx/tilegx.c (need_to_save_reg): Likewise.
9853 * config/tilepro/tilepro.c (need_to_save_reg): Likewise.
9854 * config/v850/v850.c (compute_register_save_size): Likewise.
9855 * config/vax/vax.c (vax_expand_prologue): Likewise.
9856 * config/visium/visium.c (visium_save_reg_p): Likewise.
9857 * config/xtensa/xtensa.c (xtensa_call_save_reg): Likewise.
9858 * cselib.c (cselib_process_insn): Likewise.
9859 * df-scan.c (df_get_entry_block_def_set): Likewise.
9860 * function.c (aggregate_value_p): Likewise.
9861 * haifa-sched.c (alloc_global_sched_pressure_data): Likewise.
9862 * ira-lives.c (process_bb_node_lives): Likewise.
9863 * ira.c (do_reload): Likewise.
9864 * lra-lives.c (process_bb_lives): Likewise.
9865 * lra-remat.c (lra_remat): Likewise.
9866 * lra.c (lra): Likewise.
9867 * postreload.c (reload_combine_recognize_pattern): Likewise.
9868 (reload_cse_move2add): Likewise.
9869 * recog.c (peep2_find_free_register): Likewise.
9870 * regrename.c (check_new_reg_p): Likewise.
9871 * reload.c (find_equiv_reg): Likewise.
9872 * reload1.c (reload, find_reg): Likewise.
9873 * sel-sched.c (init_hard_regs_data): Likewise.
9875 2019-09-10 Richard Sandiford <richard.sandiford@arm.com>
9877 * config/frv/frv.c (frv_ifcvt_modify_tests): Use
9878 regs_invalidated_by_call & ~fixed_reg_set instead of
9879 call_used_or_fixed_regs & ~fixed_reg_set.
9880 * config/sh/sh.c (output_stack_adjust): Likewise.
9882 2019-09-10 Richard Sandiford <richard.sandiford@arm.com>
9884 * hard-reg-set.h (target_hard_regs::x_call_used_reg_set): Delete.
9885 (call_used_reg_set): Delete.
9886 (call_used_or_fixed_regs): New macro.
9887 * reginfo.c (init_reg_sets_1, globalize_reg): Remove initialization
9888 of call_used_reg_set.
9889 * caller-save.c (setup_save_areas): Use call_used_or_fixed_regs
9890 instead of call_used_regs.
9891 (save_call_clobbered_regs): Likewise.
9892 * cfgcleanup.c (old_insns_match_p): Likewise.
9893 * config/c6x/c6x.c (c6x_call_saved_register_used): Likewise.
9894 * config/epiphany/epiphany.c (epiphany_conditional_register_usage):
9896 * config/frv/frv.c (frv_ifcvt_modify_tests): Likewise.
9897 * config/sh/sh.c (output_stack_adjust): Likewise.
9898 * final.c (collect_fn_hard_reg_usage): Likewise.
9899 * ira-build.c (ira_build): Likewise.
9900 * ira-color.c (calculate_saved_nregs): Likewise.
9901 (allocno_reload_assign, calculate_spill_cost): Likewise.
9902 * ira-conflicts.c (ira_build_conflicts): Likewise.
9903 * ira-costs.c (ira_tune_allocno_costs): Likewise.
9904 * ira-lives.c (process_bb_node_lives): Likewise.
9905 * ira.c (setup_reg_renumber): Likewise.
9906 * lra-assigns.c (find_hard_regno_for_1, lra_assign): Likewise.
9907 * lra-constraints.c (need_for_call_save_p): Likewise.
9908 (need_for_split_p, inherit_in_ebb): Likewise.
9909 * lra-lives.c (process_bb_lives): Likewise.
9910 * lra-remat.c (call_used_input_regno_present_p): Likewise.
9911 * postreload.c (reload_combine): Likewise.
9912 * regrename.c (find_rename_reg): Likewise.
9913 * reload1.c (reload_as_needed): Likewise.
9914 * rtlanal.c (find_all_hard_reg_sets): Likewise.
9915 * sel-sched.c (mark_unavailable_hard_regs): Likewise.
9916 * shrink-wrap.c (requires_stack_frame_p): Likewise.
9918 2019-09-10 Richard Sandiford <richard.sandiford@arm.com>
9920 * hard-reg-set.h (target_hard_regs::x_no_caller_save_reg_set): Delete.
9921 (no_caller_save_reg_set): Delete.
9922 * caller-save.c (init_caller_save): Don't initialize it.
9923 * ira-conflicts.c (ira_build_conflicts): Calculate
9924 no_caller_save_reg_set locally from call_used_reg_set and savable_regs.
9926 2019-09-10 Richard Sandiford <richard.sandiford@arm.com>
9928 * hard-reg-set.h (target_hard_regs::x_call_fixed_reg_set): Delete.
9929 (target_hard_regs::x_savable_regs): New field.
9930 (call_fixed_reg_set): Delete.
9931 (savable_regs): New macro,
9932 * reginfo.c (globalize_reg): Don't set call_fixed_reg_set.
9933 (init_reg_sets_1): Likewise. Initialize savable_regs.
9934 * caller-save.c (init_caller_save): Invoke HARD_REGNO_CALLER_SAVE_MODE
9935 for all registers. Set savable_regs instead of call_fixed_reg_set.
9936 (setup_save_areas, save_call_clobbered_regs): Replace uses of
9937 ~call_fixed_reg_set with ~fixed_reg_set & savable_regs.
9938 * config/sh/sh.c (output_stack_adjust): Likewise.
9940 2019-09-10 Richard Sandiford <richard.sandiford@arm.com>
9942 * config/c6x/c6x-protos.h (c6x_set_return_address): Declare.
9943 * config/c6x/c6x.h (REGNO_REG_CLASS): Move implementation to
9944 * config/c6x/c6x.c (c6x_regno_reg_class): ...this new function.
9946 2019-09-10 Richard Sandiford <richard.sandiford@arm.com>
9948 * rtl.h (get_call_rtx_from): Take a const rtx_insn * instead of an rtx.
9949 * rtlanal.c (get_call_rtx_from): Likewise.
9950 * dwarf2out.c (dwarf2out_var_location): Pass the insn rather
9951 than the pattern to get_call_rtx_from.
9952 * config/i386/i386-expand.h (ix86_notrack_prefixed_insn_p): Take
9953 an rtx_insn * instead of an rtx.
9954 * config/i386/i386-expand.c (ix86_notrack_prefixed_insn_p): Likewise.
9956 2019-09-10 Martin Liska <mliska@suse.cz>
9958 * common.opt: Use newly added WarnRemoved.
9959 * config/aarch64/aarch64.opt: Likewise.
9960 * config/arm/arm.opt: Likewise.
9961 * config/i386/i386.opt: Likewise.
9962 * config/ia64/ia64.opt: Likewise.
9963 * config/rs6000/rs6000.opt: Likewise.
9964 * doc/options.texi: Document WarnRemoved properly.
9965 * dwarf2out.c (gen_producer_string): Handle renamed
9966 OPT_SPECIAL_warn_removed.
9967 * lto-opts.c (lto_write_options): Likewise.
9968 * lto-wrapper.c (merge_and_complain): Likewise.
9969 * opts-common.c (decode_cmdline_option): Likewise.
9970 (prune_options): Likewise.
9971 (read_cmdline_option): Likewise.
9972 (control_warning_option): Likewise.
9973 * opts.c (print_filtered_help): Likewise.
9974 * optc-gen.awk: Parse for WarnRemoved and make usage
9975 of Deprecated an error.
9976 * opth-gen.awk: Generate new OPT_SPECIAL_warn_removed.
9978 2019-09-10 Arnaud Charlet <charlet@adacore.com>
9980 * doc/install.texi: Fix syntax for html generation.
9982 2019-09-10 Jakub Jelinek <jakub@redhat.com>
9985 * match.pd ((A / (1 << B)) -> (A >> B)): Allow widening cast from
9986 the shift type to type.
9988 2019-09-10 Christophe Lyon <christophe.lyon@st.com>
9990 * config/arm/arm.md (stack_protect_combined_set_insn): Handle
9992 (stack_protect_combined_test_insn): Likewise.
9994 2019-09-10 Christophe Lyon <christophe.lyon@st.com>
9995 Mickaël Guêné <mickael.guene@st.com>
9997 * config/arm/arm.c (arm_load_tp): Add FDPIC support.
9998 * config/arm/arm.md (FDPIC_REGNUM): New constant.
9999 (load_tp_soft_fdpic): New pattern.
10000 (load_tp_soft): Disable in FDPIC mode.
10002 2019-09-10 Christophe Lyon <christophe.lyon@st.com>
10003 Mickaël Guêné <mickael.guene@st.com>
10005 * config/arm/arm.c (tls_reloc): Add TLS_GD32_FDPIC,
10006 TLS_LDM32_FDPIC and TLS_IE32_FDPIC.
10007 (arm_call_tls_get_addr): Add FDPIC support.
10008 (legitimize_tls_address): Likewise.
10009 (arm_emit_tls_decoration): Likewise.
10011 2019-09-10 Christophe Lyon <christophe.lyon@st.com>
10012 Mickaël Guêné <mickael.guene@st.com>
10014 * config/arm/arm.c (arm_asm_trampoline_template): Add FDPIC
10016 (arm_trampoline_init): Likewise.
10017 (arm_trampoline_adjust_address): Likewise.
10018 * config/arm/arm.h (TRAMPOLINE_SIZE): Likewise.
10020 2019-09-10 Christophe Lyon <christophe.lyon@st.com>
10021 Mickaël Guêné <mickael.guene@st.com>
10023 * config/arm/arm.c (arm_fdpic_local_funcdesc_p): New function.
10024 (legitimize_pic_address): Enforce binding rules on function
10025 pointers in FDPIC mode.
10026 (arm_assemble_integer): Likewise.
10028 2019-09-10 Christophe Lyon <christophe.lyon@st.com>
10029 Mickaël Guêné <mickael.guene@st.com>
10031 * config/arm/arm.h (PIC_REGISTER_MAY_NEED_SAVING): New helper.
10032 * config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Handle
10035 2019-09-10 Christophe Lyon <christophe.lyon@st.com>
10036 Mickaël Guêné <mickael.guene@st.com>
10038 * ginclude/unwind-arm-common.h (unwinder_cache): Add reserved5
10041 2019-09-10 Christophe Lyon <christophe.lyon@st.com>
10042 Mickaël Guêné <mickael.guene@st.com>
10044 * config/arm/arm-c.c (__FDPIC__): Define new pre-processor macro
10046 * config/arm/arm-protos.h (arm_load_function_descriptor): Declare
10048 * config/arm/arm.c (arm_option_override): Define pic register to
10050 (arm_function_ok_for_sibcall): Disable sibcall optimization if we
10051 have no decl or go through PLT.
10052 (calculate_pic_address_constant): New function.
10053 (legitimize_pic_address): Call calculate_pic_address_constant.
10054 (arm_load_pic_register): Handle TARGET_FDPIC.
10055 (arm_is_segment_info_known): New function.
10056 (arm_pic_static_addr): Add support for FDPIC.
10057 (arm_load_function_descriptor): New function.
10058 (arm_emit_call_insn): Add support for FDPIC.
10059 (arm_assemble_integer): Add support for FDPIC.
10060 * config/arm/arm.h (PIC_OFFSET_TABLE_REG_CALL_CLOBBERED):
10061 Define. (FDPIC_REGNUM): New define.
10062 * config/arm/arm.md (call): Add support for FDPIC.
10063 (call_value): Likewise.
10064 (restore_pic_register_after_call): New pattern.
10065 (untyped_call): Disable if FDPIC.
10066 (untyped_return): Likewise.
10067 * config/arm/unspecs.md (UNSPEC_PIC_RESTORE): New.
10069 2019-09-10 Christophe Lyon <christophe.lyon@st.com>
10070 Mickaël Guêné <mickael.guene@st.com>
10072 * config.gcc: Handle arm*-*-uclinuxfdpiceabi.
10073 * config/arm/bpabi.h (TARGET_FDPIC_ASM_SPEC): New.
10074 (SUBTARGET_EXTRA_ASM_SPEC): Use TARGET_FDPIC_ASM_SPEC.
10075 * config/arm/linux-eabi.h (FDPIC_CC1_SPEC): New.
10076 (CC1_SPEC): Use FDPIC_CC1_SPEC.
10077 (MUSL_DYNAMIC_LINKER): Add -fdpic suffix when needed.
10078 * config/arm/uclinuxfdpiceabi.h: New file.
10080 2019-09-10 Christophe Lyon <christophe.lyon@st.com>
10082 * config.gcc: Handle *-*-uclinuxfdpiceabi.
10084 2019-09-10 Christophe Lyon <christophe.lyon@st.com>
10085 Mickaël Guêné <mickael.guene@st.com>
10087 * config/arm/arm.opt: Add -mfdpic option.
10088 * doc/invoke.texi: Add documentation for -mfdpic.
10090 2019-09-09 Bernd Edlinger <bernd.edlinger@hotmail.de>
10092 * expmed.c (extract_bit_field): Update function comment
10094 * expr.c (expand_expr_real): Update function comment
10096 (expand_misaligned_mem_ref): New helper function.
10097 (expand_expr_real_2): Use expand_misaligned_mem_ref.
10098 Remove duplicate assignment to "base" at case MEM_REF.
10099 Remove a shadowed variable "unsignedp" at case VCE.
10101 2019-09-09 Richard Sandiford <richard.sandiford@arm.com>
10103 * regset.h (regs_invalidated_by_call_regset): Delete.
10104 (fixed_reg_set_regset): Likewise.
10105 * reginfo.c (regs_invalidated_by_call_regset): Likewise.
10106 (fixed_reg_set_regset, persistent_obstack): Likewise.
10107 (init_reg_sets_1, globalize_reg): Update accordingly.
10108 * df.h (df_print_regset, df_print_word_regset): Take a const_bitmap
10109 instead of a bitmap.
10110 * df-core.c (df_print_regset, df_print_word_regset): Likewise.
10111 * df-problems.c (df_rd_local_compute): Use regs_invalidated_by_call
10112 instead of regs_invalidated_by_call_regset.
10113 (df_lr_confluence_n, df_md_confluence_n): Likewise.
10114 * df-scan.c (df_scan_start_dump): Likewise.
10115 * dse.c (copy_fixed_regs): Likewise.
10116 * config/sh/sh.c (sh_find_equiv_gbr_addr): Likewise.
10118 2019-09-09 Richard Sandiford <richard.sandiford@arm.com>
10120 * array-traits.h: New file.
10121 * coretypes.h (array_traits, bitmap_view): New types.
10122 * bitmap.h: Include "array-traits.h"
10123 (bitmap_bit_p): Take a const_bitmap instead of a bitmap.
10124 (base_bitmap_view, bitmap_view): New classes.
10125 * bitmap.c (bitmap_bit_p): Take a const_bitmap instead of a bitmap.
10126 * hard-reg-set.h: Include array-traits.h.
10127 (array_traits<HARD_REG_SET>): New struct.
10128 * regset.h (IOR_REG_SET_HRS): New macro.
10129 * loop-iv.c (simplify_using_initial_values): Use IOR_REG_SET_HRS
10130 rather than iterating over each hard register.
10131 * sched-deps.c (sched_analyze_insn): Likewise.
10132 * sel-sched-ir.c (setup_id_implicit_regs): Likewise.
10134 2019-09-09 Richard Sandiford <richard.sandiford@arm.com>
10136 * ira-int.h (ior_hard_reg_conflicts): Take a const_hard_reg_set
10137 instead of a HARD_REG_SET *.
10138 * ira-build.c (ior_hard_reg_conflicts): Likewise.
10139 (ira_build): Update call accordingly.
10140 * ira-emit.c (add_range_and_copies_from_move_list): Likewise.
10142 2019-09-09 Richard Sandiford <richard.sandiford@arm.com>
10144 * hard-reg-set.h (HARD_REG_SET::operator==): New function.
10145 (HARD_REG_SET::operator!=): Likewise.
10146 (hard_reg_set_equal_p): Delete.
10147 * cfgcleanup.c (old_insns_match_p): Use == instead of
10148 hard_reg_set_equal_p and != instead of !hard_reg_set_equal_p.
10149 * ira-color.c (allocno_hard_regs_hasher::equal): Likewise.
10150 (add_allocno_hard_regs_to_forest): Likewise.
10151 (setup_allocno_available_regs_num): Likewise.
10152 * ira.c (setup_pressure_classes): Likewise.
10153 (setup_allocno_and_important_classes): Likewise.
10154 (setup_reg_class_relations): Likewise.
10155 * lra-lives.c (process_bb_lives): Likewise.
10156 * reg-stack.c (change_stack, convert_regs_1): Likewise.
10158 2019-09-09 Richard Sandiford <richard.sandiford@arm.com>
10160 * hard-reg-set.h (IOR_COMPL_HARD_REG_SET): Delete.
10161 * config/aarch64/cortex-a57-fma-steering.c (rename_single_chain):
10162 Use "|~" instead of IOR_COMPL_HARD_REG_SET.
10163 * config/aarch64/falkor-tag-collision-avoidance.c (init_unavailable):
10165 * ira-build.c (ira_create_object, ira_set_allocno_class): Likewise.
10166 * ira.c (setup_reg_renumber): Likewise.
10167 * lra-assigns.c (find_hard_regno_for_1): Likewise.
10168 * regrename.c (regrename_find_superclass): Likewise.
10169 * reload1.c (find_reg): Likewise.
10171 2019-09-09 Richard Sandiford <richard.sandiford@arm.com>
10173 * hard-reg-set.h (AND_COMPL_HARD_REG_SET): Delete.
10174 * caller-save.c (setup_save_areas): Use "&~" instead of
10175 AND_COMPL_HARD_REG_SET.
10176 (save_call_clobbered_regs): Likewise.
10177 * config/epiphany/epiphany.c (epiphany_conditional_register_usage):
10179 * config/frv/frv.c (frv_ifcvt_modify_tests): Likewise.
10180 * config/gcn/gcn.c (gcn_md_reorg): Likewise.
10181 * config/i386/i386.c (ix86_conditional_register_usage): Likewise.
10182 * config/mips/mips.c (mips_class_max_nregs): Likewise.
10183 (mips_conditional_register_usage): Likewise.
10184 * config/sh/sh.c (output_stack_adjust): Likewise.
10185 * ira-color.c (form_allocno_hard_regs_nodes_forest): Likewise.
10186 (setup_profitable_hard_regs): Likewise.
10187 (get_conflict_and_start_profitable_regs): Likewise.
10188 * ira-conflicts.c (print_allocno_conflicts): Likewise.
10189 (ira_build_conflicts): Likewise.
10190 * ira-costs.c (restrict_cost_classes): Likewise.
10191 (setup_regno_cost_classes_by_aclass): Likewise.
10192 * ira-lives.c (process_bb_node_lives): Likewise.
10193 * ira.c (setup_class_hard_regs, setup_reg_subclasses): Likewise.
10194 (setup_class_subset_and_memory_move_costs, setup_pressure_classes)
10195 (setup_allocno_and_important_classes, setup_class_translate_array)
10196 (setup_reg_class_relations, setup_prohibited_class_mode_regs):
10198 * lra-assigns.c (find_hard_regno_for_1): Likewise.
10199 * lra-constraints.c (prohibited_class_reg_set_mode_p): Likewise.
10200 (process_alt_operands, inherit_in_ebb): Likewise.
10201 * lra-eliminations.c (update_reg_eliminate): Likewise.
10202 * lra-lives.c (process_bb_lives): Likewise.
10203 * reload1.c (update_eliminables_and_spill, reload_as_needed): Likewise.
10204 * resource.c (find_dead_or_set_registers): Likewise.
10205 (mark_target_live_regs): Likewise.
10206 * sched-deps.c (get_implicit_reg_pending_clobbers): Likewise.
10207 * sel-sched.c (mark_unavailable_hard_regs): Likewise.
10208 (implicit_clobber_conflict_p): Likewise.
10209 * shrink-wrap.c (requires_stack_frame_p): Likewise.
10210 (try_shrink_wrapping): Likewise.
10212 2019-09-09 Richard Sandiford <richard.sandiford@arm.com>
10214 * hard-reg-set.h (HARD_REG_SET::operator|): New function.
10215 (HARD_REG_SET::operator|=): Likewise.
10216 (IOR_HARD_REG_SET): Delete.
10217 * config/gcn/gcn.c (gcn_md_reorg): Use "|" instead of
10219 * config/m32c/m32c.c (m32c_register_move_cost): Likewise.
10220 * config/s390/s390.c (s390_adjust_loop_scan_osc): Likewise.
10221 * final.c (collect_fn_hard_reg_usage): Likewise.
10222 * hw-doloop.c (scan_loop, optimize_loop): Likewise.
10223 * ira-build.c (merge_hard_reg_conflicts): Likewise.
10224 (ior_hard_reg_conflicts, create_cap_allocno, propagate_allocno_info)
10225 (propagate_some_info_from_allocno): Likewise.
10226 (copy_info_to_removed_store_destinations): Likewise.
10227 * ira-color.c (add_allocno_hard_regs_to_forest, assign_hard_reg)
10228 (allocno_reload_assign, ira_reassign_pseudos): Likewise.
10229 (fast_allocation): Likewise.
10230 * ira-conflicts.c (ira_build_conflicts): Likewise.
10231 * ira-lives.c (make_object_dead, process_single_reg_class_operands)
10232 (process_bb_node_lives): Likewise.
10233 * ira.c (setup_pressure_classes, setup_reg_class_relations): Likewise.
10234 * lra-assigns.c (find_hard_regno_for_1): Likewise.
10235 (setup_live_pseudos_and_spill_after_risky_transforms): Likewise.
10236 * lra-constraints.c (process_alt_operands, inherit_in_ebb): Likewise.
10237 * lra-eliminations.c (spill_pseudos, update_reg_eliminate): Likewise.
10238 * lra-lives.c (mark_pseudo_dead, check_pseudos_live_through_calls)
10239 (process_bb_lives): Likewise.
10240 * lra-spills.c (assign_spill_hard_regs): Likewise.
10241 * postreload.c (reload_combine): Likewise.
10242 * reginfo.c (init_reg_sets_1): Likewise.
10243 * regrename.c (merge_overlapping_regs, find_rename_reg)
10244 (merge_chains): Likewise.
10245 * reload1.c (maybe_fix_stack_asms, order_regs_for_reload, find_reg)
10246 (find_reload_regs, finish_spills, choose_reload_regs_init)
10247 (emit_reload_insns): Likewise.
10248 * reorg.c (redundant_insn): Likewise.
10249 * resource.c (find_dead_or_set_registers, mark_set_resources)
10250 (mark_target_live_regs): Likewise.
10251 * rtlanal.c (find_all_hard_reg_sets): Likewise.
10252 * sched-deps.c (sched_analyze_insn): Likewise.
10253 * sel-sched.c (mark_unavailable_hard_regs): Likewise.
10254 (find_best_reg_for_expr): Likewise.
10255 * shrink-wrap.c (try_shrink_wrapping): Likewise.
10257 2019-09-09 Richard Sandiford <richard.sandiford@arm.com>
10259 * hard-reg-set.h (HARD_REG_SET::operator&): New function.
10260 (HARD_REG_SET::operator&): Likewise.
10261 (AND_HARD_REG_SET): Delete.
10262 * caller-save.c (setup_save_areas): Use "&" instead of
10264 (save_call_clobbered_regs): Likewise.
10265 * config/gcn/gcn.c (gcn_md_reorg): Likewise.
10266 * config/m32c/m32c.c (reduce_class): Likewise.
10267 * config/rs6000/rs6000.c (rs6000_register_move_cost): Likewise.
10268 * final.c (get_call_reg_set_usage): Likewise.
10269 * ira-color.c (add_allocno_hard_regs_to_forest): Likewise.
10270 (setup_left_conflict_sizes_p): Likewise.
10271 * ira-conflicts.c (print_allocno_conflicts): Likewise.
10272 (ira_build_conflicts): Likewise.
10273 * ira-costs.c (restrict_cost_classes): Likewise.
10274 * ira.c (setup_stack_reg_pressure_class, setup_class_translate_array)
10275 (setup_reg_class_relations): Likewise.
10276 * reginfo.c (init_reg_sets_1, record_subregs_of_mode): Likewise.
10277 * reload1.c (maybe_fix_stack_asms, finish_spills): Likewise.
10278 * resource.c (find_dead_or_set_registers): Likewise.
10279 * sel-sched.c (mark_unavailable_hard_regs): Likewise.
10281 2019-09-09 Richard Sandiford <richard.sandiford@arm.com>
10283 * hard-reg-set.h (HARD_REG_SET::operator~): New function.
10284 (COMPL_HARD_REG_SET): Delete.
10285 * config/c6x/c6x.c (c6x_call_saved_register_used): Use ~ instead
10286 of COMPL_HARD_REG_SET.
10287 (try_rename_operands): Likewise.
10288 * config/sh/sh.c (push_regs): Likewise.
10289 * lra-assigns.c (find_hard_regno_for_1): Likewise.
10290 * lra-constraints.c (contains_reg_p): Likewise.
10291 * reload1.c (finish_spills, choose_reload_regs_init): Likewise.
10293 2019-09-09 Richard Sandiford <richard.sandiford@arm.com>
10295 * hard-reg-set.h (COPY_HARD_REG_SET): Delete.
10296 * caller-save.c (save_call_clobbered_regs): Use assignment instead
10297 of COPY_HARD_REG_SET.
10298 * config/epiphany/epiphany.c (epiphany_compute_frame_size): Likewise.
10299 (epiphany_conditional_register_usage): Likewise.
10300 * config/frv/frv.c (frv_ifcvt_modify_tests): Likewise.
10301 * config/gcn/gcn.c (gcn_md_reorg): Likewise.
10302 * config/ia64/ia64.c (ia64_compute_frame_size): Likewise.
10303 * config/m32c/m32c.c (m32c_register_move_cost): Likewise.
10304 * config/m68k/m68k.c (m68k_conditional_register_usage): Likewise.
10305 * config/mips/mips.c (mips_class_max_nregs): Likewise.
10306 * config/pdp11/pdp11.c (pdp11_conditional_register_usage): Likewise.
10307 * config/rs6000/rs6000.c (rs6000_register_move_cost): Likewise.
10308 * config/sh/sh.c (output_stack_adjust): Likewise.
10309 * final.c (collect_fn_hard_reg_usage): Likewise.
10310 (get_call_reg_set_usage): Likewise.
10311 * ira-build.c (ira_create_object, remove_low_level_allocnos)
10312 (ira_flattening): Likewise.
10313 * ira-color.c (add_allocno_hard_regs, add_allocno_hard_regs_to_forest)
10314 (setup_left_conflict_sizes_p, setup_profitable_hard_regs)
10315 (get_conflict_and_start_profitable_regs, allocno_reload_assign)
10316 (ira_reassign_pseudos): Likewise.
10317 * ira-conflicts.c (print_allocno_conflicts): Likewise.
10318 (ira_build_conflicts): Likewise.
10319 * ira-costs.c (restrict_cost_classes): Likewise.
10320 (setup_regno_cost_classes_by_aclass): Likewise.
10321 * ira.c (setup_class_hard_regs, setup_alloc_regs): Likewise.
10322 (setup_reg_subclasses, setup_class_subset_and_memory_move_costs)
10323 (setup_stack_reg_pressure_class, setup_pressure_classes)
10324 (setup_allocno_and_important_classes, setup_class_translate_array)
10325 (setup_reg_class_relations, setup_prohibited_class_mode_regs)
10326 (ira_setup_eliminable_regset): Likewise.
10327 * lra-assigns.c (find_hard_regno_for_1): Likewise.
10328 (setup_live_pseudos_and_spill_after_risky_transforms): Likewise.
10329 * lra-constraints.c (prohibited_class_reg_set_mode_p): Likewise.
10330 (process_alt_operands, inherit_in_ebb): Likewise.
10331 * lra-lives.c (process_bb_lives): Likewise.
10332 * lra-spills.c (assign_spill_hard_regs): Likewise.
10333 * lra.c (lra): Likewise.
10334 * mode-switching.c (new_seginfo): Likewise.
10335 * postreload.c (reload_combine): Likewise.
10336 * reg-stack.c (straighten_stack): Likewise.
10337 * reginfo.c (save_register_info, restore_register_info): Likewise.
10338 (init_reg_sets_1, record_subregs_of_mode): Likewise
10339 * regrename.c (create_new_chain, rename_chains): Likewise.
10340 * reload1.c (order_regs_for_reload, find_reg): Likewise.
10341 (find_reload_regs): Likewise.
10342 * resource.c (find_dead_or_set_registers): Likewise.
10343 (mark_target_live_regs): Likewise.
10344 * sel-sched.c (mark_unavailable_hard_regs): Likewise.
10346 2019-09-09 Richard Sandiford <richard.sandiford@arm.com>
10348 * rtl.h (CALL_INSN_FUNCTION_USAGE): Document what SETs mean.
10349 (note_pattern_stores): Declare.
10350 (note_stores): Take an rtx_insn *.
10351 * rtlanal.c (set_of): Use note_pattern_stores instead of note_stores.
10352 (find_all_hard_reg_sets): Pass the insn rather than its pattern to
10353 note_stores. Remove explicit handling of CALL_INSN_FUNCTION_USAGE.
10354 (note_stores): Take an rtx_insn * as argument and process
10355 CALL_INSN_FUNCTION_USAGE. Rename old function to...
10356 (note_pattern_stores): ...this.
10357 (find_first_parameter_load): Pass the insn rather than
10358 its pattern to note_stores.
10359 * alias.c (memory_modified_in_insn_p, init_alias_analysis): Likewise.
10360 * caller-save.c (setup_save_areas, save_call_clobbered_regs)
10361 (insert_one_insn): Likewise.
10362 * combine.c (combine_instructions): Likewise.
10363 (likely_spilled_retval_p): Likewise.
10364 (try_combine): Use note_pattern_stores instead of note_stores.
10365 (record_dead_and_set_regs): Pass the insn rather than its pattern
10367 (reg_dead_at_p): Likewise.
10368 * config/bfin/bfin.c (workaround_speculation): Likewise.
10369 * config/c6x/c6x.c (maybe_clobber_cond): Likewise. Take an rtx_insn *
10370 rather than an rtx.
10371 * config/frv/frv.c (frv_registers_update): Use note_pattern_stores
10372 instead of note_stores.
10373 (frv_optimize_membar_local): Pass the insn rather than its pattern
10375 * config/gcn/gcn.c (gcn_md_reorg): Likewise.
10376 * config/i386/i386.c (ix86_avx_u128_mode_after): Likewise.
10377 * config/mips/mips.c (vr4130_true_reg_dependence_p): Likewise.
10378 (r10k_needs_protection_p, mips_sim_issue_insn): Likewise.
10379 (mips_reorg_process_insns): Likewise.
10380 * config/s390/s390.c (s390_regs_ever_clobbered): Likewise.
10381 * config/sh/sh.c (flow_dependent_p): Likewise. Take rtx_insn *s
10383 * cse.c (delete_trivially_dead_insns): Pass the insn rather than
10384 its pattern to note_stores.
10385 * cselib.c (cselib_record_sets): Use note_pattern_stores instead
10387 * dce.c (mark_nonreg_stores): Remove the "body" parameter and pass
10388 the insn to note_stores.
10389 (prescan_insns_for_dce): Update call accordingly.
10390 * ddg.c (mem_write_insn_p): Pass the insn rather than its pattern
10392 * df-problems.c (can_move_insns_across): Likewise.
10393 * dse.c (emit_inc_dec_insn_before, replace_read): Likewise.
10394 * function.c (assign_parm_setup_reg): Likewise.
10395 * gcse-common.c (record_last_mem_set_info_common): Likewise.
10396 * gcse.c (load_killed_in_block_p, compute_hash_table_work): Likewise.
10397 (single_set_gcse): Likewise.
10398 * ira.c (validate_equiv_mem): Likewise.
10399 (update_equiv_regs): Use note_pattern_stores rather than note_stores
10401 * loop-doloop.c (doloop_optimize): Pass the insn rather than its
10402 pattern to note_stores.
10403 * loop-invariant.c (calculate_loop_reg_pressure): Likewise.
10404 * loop-iv.c (simplify_using_initial_values): Likewise.
10405 * mode-switching.c (optimize_mode_switching): Likewise.
10406 * optabs.c (emit_libcall_block_1): Likewise.
10407 (expand_atomic_compare_and_swap): Likewise.
10408 * postreload-gcse.c (load_killed_in_block_p): Likewise.
10409 (record_opr_changes): Likewise. Remove explicit handling of
10410 CALL_INSN_FUNCTION_USAGE.
10411 * postreload.c (reload_combine, reload_cse_move2add): Likewise.
10412 * regcprop.c (kill_clobbered_values): Likewise.
10413 (copyprop_hardreg_forward_1): Pass the insn rather than its pattern
10415 * regrename.c (build_def_use): Likewise.
10416 * reload1.c (reload): Use note_pattern_stores instead of note_stores
10417 for mark_not_eliminable.
10418 (reload_as_needed): Pass the insn rather than its pattern
10420 (emit_output_reload_insns): Likewise.
10421 * resource.c (mark_target_live_regs): Likewise.
10422 * sched-deps.c (init_insn_reg_pressure_info): Likewise.
10423 * sched-rgn.c (sets_likely_spilled): Use note_pattern_stores
10424 instead of note_stores.
10425 * shrink-wrap.c (try_shrink_wrapping): Pass the insn rather than
10426 its pattern to note_stores.
10427 * stack-ptr-mod.c (pass_stack_ptr_mod::execute): Likewise.
10428 * var-tracking.c (adjust_insn, add_with_sets): Likewise.
10430 2019-09-09 Richard Sandiford <richard.sandiford@arm.com>
10432 * hard-reg-set.h (HARD_REG_SET): Define using a typedef rather
10433 than a #define. Use a structure rather than an array as the
10434 fallback definition. Remove special cases for low array sizes.
10435 (const_hard_reg_set): New typedef.
10436 (hard_reg_set_subset_p): Use it instead of "const HARD_REG_SET".
10437 (hard_reg_set_equal_p, hard_reg_set_intersect_p): Likewise.
10438 (hard_reg_set_empty_p): Likewise.
10439 (SET_HARD_REG_BIT): Use a function rather than a macro to
10440 handle the case in which HARD_REG_SET is a structure.
10441 (CLEAR_HARD_REG_BIT, TEST_HARD_REG_BIT, CLEAR_HARD_REG_SET)
10442 (SET_HARD_REG_SET, COPY_HARD_REG_SET, COMPL_HARD_REG_SET)
10443 (AND_HARD_REG_SET, AND_COMPL_HARD_REG_SET, IOR_HARD_REG_SET)
10444 (IOR_COMPL_HARD_REG_SET): Likewise.
10445 (hard_reg_set_iterator::pset): Constify the pointer target.
10446 (hard_reg_set_iter_init): Take a const_hard_reg_set instead
10447 of a "const HARD_REG_SET". Update the handling of non-integer
10449 * recog.h: Test HARD_CONST instead of CLEAR_HARD_REG_SET.
10450 * reload.h: Likewise.
10451 * rtl.h (choose_hard_reg_mode): Remove unnecessary line break.
10452 * regs.h (in_hard_reg_set_p): Take a const_hard_reg_set instead
10453 of a "const HARD_REG_SET".
10454 (overlaps_hard_reg_set_p, range_overlaps_hard_reg_set_p): Likewise.
10455 (range_in_hard_reg_set_p): Likewise.
10456 * ira-costs.c (restrict_cost_classes): Likewise.
10457 * shrink-wrap.c (move_insn_for_shrink_wrap): Likewise.
10458 * config/epiphany/resolve-sw-modes.c (pass_resolve_sw_modes::execute):
10459 Pass a NO_REGS HARD_REG_SET rather than NULL to emit_set_fp_mode.
10460 * config/ia64/ia64.c (rws_insn): In the CHECKING_P version,
10461 use unsigned HOST_WIDEST_FAST_INT rather than HARD_REG_ELT_TYPE.
10462 (rws_insn_set, rws_insn_test): In the CHECKING_P version,
10463 take an unsigned int and open-code the HARD_REG_SET operations.
10465 2019-09-09 Richard Sandiford <richard.sandiford@arm.com>
10467 * Makefile.in (OBJS): Remove bt-load.o.
10468 * doc/invoke.texi (fbranch-target-load-optimize): Delete.
10469 (fbranch-target-load-optimize2, fbtr-bb-exclusive): Likewise.
10470 * common.opt (fbranch-target-load-optimize): Mark as Ignore and
10471 document that the option no longer does anything.
10472 (fbranch-target-load-optimize2, fbtr-bb-exclusive): Likewise.
10473 * target.def (branch_target_register_class): Delete.
10474 (branch_target_register_callee_saved): Likewise.
10475 * doc/tm.texi.in (TARGET_BRANCH_TARGET_REGISTER_CLASS): Likewise.
10476 (TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED): Likewise.
10477 * doc/tm.texi: Regenerate.
10478 * tree-pass.h (make_pass_branch_target_load_optimize1): Delete.
10479 (make_pass_branch_target_load_optimize2): Likewise.
10480 * passes.def (pass_branch_target_load_optimize1): Likewise.
10481 (pass_branch_target_load_optimize2): Likewise.
10482 * targhooks.h (default_branch_target_register_class): Likewise.
10483 * targhooks.c (default_branch_target_register_class): Likewise.
10484 * opt-suggestions.c (test_completion_valid_options): Remove
10485 -fbtr-bb-exclusive from the list of test options.
10486 * bt-load.c: Remove.
10488 2019-09-09 Barnaby Wilks <barnaby.wilks@arm.com>
10490 * match.pd: Add flag_unsafe_math_optimizations check
10491 before deciding on the widest type in a binary math operation.
10493 2019-09-09 Martin Liska <mliska@suse.cz>
10495 * config/i386/i386.opt: Update comment of removed
10496 options that are preserved only for backward
10499 2019-09-09 Jakub Jelinek <jakub@redhat.com>
10502 * config/i386/emmintrin.h (_mm_cmpeq_epi8): Use casts to __v16qi
10503 instead of __v16qs.
10506 * config/i386/avxintrin.h (__v32qs): New typedef.
10507 * config/i386/avx2intrin.h (_mm256_cmpgt_epi8): Use casts to __v32qs
10508 instead of __v32qi.
10510 2019-09-09 Jose E. Marchesi <jose.marchesi@oracle.com>
10512 * doc/invoke.texi (Option Summary): Cover eBPF.
10513 (eBPF Options): New section.
10514 * doc/extend.texi (BPF Built-in Functions): Likewise.
10515 (BPF Kernel Helpers): Likewise.
10517 2019-09-09 Jose E. Marchesi <jose.marchesi@oracle.com>
10519 * config.gcc: Support for bpf-*-* targets.
10520 * common/config/bpf/bpf-common.c: New file.
10521 * config/bpf/t-bpf: Likewise.
10522 * config/bpf/predicates.md: Likewise.
10523 * config/bpf/constraints.md: Likewise.
10524 * config/bpf/bpf.opt: Likewise.
10525 * config/bpf/bpf.md: Likewise.
10526 * config/bpf/bpf.h: Likewise.
10527 * config/bpf/bpf.c: Likewise.
10528 * config/bpf/bpf-protos.h: Likewise.
10529 * config/bpf/bpf-opts.h: Likewise.
10530 * config/bpf/bpf-helpers.h: Likewise.
10531 * config/bpf/bpf-helpers.def: Likewise.
10533 2019-09-09 Jose E. Marchesi <jose.marchesi@oracle.com>
10535 * doc/sourcebuild.texi (Effective-Target Keywords): Document
10538 2019-09-09 Jose E. Marchesi <jose.marchesi@oracle.com>
10540 * opt-functions.awk (integer_range_info): Make sure values are in
10541 numeric context before operating with them.
10543 2019-09-08 Segher Boessenkool <segher@kernel.crashing.org>
10545 * genemit.c (gen_split): Print the filename and line number where the
10546 splitter (or peephole2) was defined, to the dump file.
10548 2019-09-07 Jakub Jelinek <jakub@redhat.com>
10550 PR tree-optimization/91665
10551 * tree-vect-loop.c (vectorizable_reduction): Punt if base has type
10552 incompatible with the type of PHI result.
10554 2019-09-07 Bernd Edlinger <bernd.edlinger@hotmail.de>
10557 * config/arm/arm.c (arm_block_set_aligned_non_vect): Use
10558 gen_unaligned_storedi for 4-byte aligned addresses.
10560 2019-09-06 Jim Wilson <jimw@sifive.com>
10562 * config/riscv/riscv.c (riscv_option_override): Revert 2019-08-30
10565 2019-09-06 Segher Boessenkool <segher@kernel.crashing.org>
10567 * config/rs6000/rs6000.md (unspec): Delete UNSPEC_MV_CR_OV.
10569 2019-09-06 Segher Boessenkool <segher@kernel.crashing.org>
10571 * config/rs6000/rs6000.c (rs6000_rtx_costs) <case UNSPEC>: Delete.
10572 * config/rs6000/rs6000.md (unspec): Delete UNSPEC_FRSP.
10574 2019-09-06 Uroš Bizjak <ubizjak@gmail.com>
10577 * config/i386/x86-tune-costs.h (skylake_cost): Raise the
10578 cost of SSE->integer and integer->SSE moves from 2 to 6.
10579 (core_cost): Ditto.
10581 2019-09-06 Jakub Jelinek <jakub@redhat.com>
10583 * function.c (assign_parm_find_data_types): Use RECORD_OR_UNION_TYPE_P
10584 before testing TYPE_TRANSPARENT_AGGR.
10585 * calls.c (initialize_argument_information, load_register_parameters):
10588 2019-09-06 Richard Earnshaw <rearnsha@arm.com>
10590 * config/arm/arm.md (cmp_and): Add short-it variant for thumb2 with
10592 (cmp_ior): Likewise.
10594 2019-09-06 Martin Liska <mliska@suse.cz>
10596 * doc/match-and-simplify.texi: Separate tuples with ;.
10598 2019-09-06 Martin Liska <mliska@suse.cz>
10601 * Makefile.in: Remove tlink.o.
10602 * collect2.c (do_link): New function isolated
10605 * collect2.h (do_tlink): Remove declaration of do_tlink.
10606 * doc/extend.texi: Remove documentation of -frepo.
10607 * doc/invoke.texi: Likewise.
10608 * doc/sourcebuild.texi: Remove cleanup-repo-files.
10611 2019-09-05 Jakub Jelinek <jakub@redhat.com>
10612 Jim Wilson <jimw@sifive.com>
10615 * config/riscv/riscv.md (zero_extendsidi2, zero_extendhi<GPR:mode>2,
10616 extend<SHORT:mode><SUPERQI:mode>2): Don't split if
10617 paradoxical_subreg_p (operands[0]).
10618 (*lshrsi3_zero_extend_3+1, *lshrsi3_zero_extend_3+2): Add clobber and
10619 use as intermediate value.
10621 2019-09-05 Andrew Stubbs <ams@codesourcery.com>
10623 * config/gcn/gcn.md (*movti_insn): Set delayeduse for global_store.
10624 (sync_compare_and_swap<mode>_insn): Likewise.
10626 2019-09-05 Bernd Edlinger <bernd.edlinger@hotmail.de>
10628 PR middle-end/91615
10629 * expr.c (expand_expr_real_1): Handle misaligned TARGET_MEM_REF
10630 without movmisalign optab.
10632 2019-09-05 Jakub Jelinek <jakub@redhat.com>
10634 PR middle-end/91001
10635 PR middle-end/91105
10636 PR middle-end/91106
10637 * calls.c (load_register_parameters): For TYPE_TRANSPARENT_AGGR
10638 types, use type of their first field instead of type of
10639 args[i].tree_value.
10641 2019-09-05 Richard Biener <rguenther@suse.de>
10643 PR rtl-optimization/91656
10644 * postreload-gcse.c (record_last_mem_set_info): Revert addition
10647 2019-09-05 Richard Biener <rguenther@suse.de>
10649 PR middle-end/90501
10650 * tree-inline.c (declare_return_variable): Mark the return
10651 slot as addressable after building an address of it.
10653 2019-09-05 Arnaud Charlet <charlet@adacore.com>
10655 * doc/install.texi: Update and clarify requirements to build GNAT.
10657 2019-09-05 Richard Sandiford <richard.sandiford@arm.com>
10659 PR middle-end/91577
10660 * cfgexpand.c (discover_nonconstant_array_refs): Force the source
10661 of an IFN_LOAD_LANES call and the destination of an IFN_STORE_LANES
10662 call to be in memory.
10663 (pass_expand::execute): Call discover_nonconstant_array_refs before
10664 setting currently_expanding_to_rtl.
10666 2019-09-04 Caroline Tice <cmtice@google.com>
10668 * opts.c (finish_options): Disallow -fvtable-verify and -flto to be
10669 specified together.
10671 2019-09-04 Marek Polacek <polacek@redhat.com>
10673 * doc/invoke.texi: Remove -fdeduce-init-list documentation.
10675 2019-09-04 Uroš Bizjak <ubizjak@gmail.com>
10678 * config/i386/i386.c (inline_secondary_memory_needed): Return true
10679 for QI and HImode moves between SSE and general registers.
10681 2019-09-04 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
10684 * doc/invoke.texi: Document -Wenum-conversion.
10686 2019-09-04 Richard Biener <rguenther@suse.de>
10688 PR rtl-optimization/36262
10689 * postreload-gcse.c: Include intl.h and gcse.h.
10690 (insert_expr_in_table): Insert at the head of cur_expr->avail_occr
10691 to avoid linear list walk.
10692 (record_last_mem_set_info): Gate off if not computing transparentness.
10693 (get_bb_avail_insn): If transparentness isn't computed give up
10695 (gcse_after_reload_main): Skip compute_transp and extended PRE
10696 if gcse_or_cprop_is_too_expensive says so.
10698 2019-09-03 Jozef Lawrynowicz <jozef.l@mittosystems.com>
10700 * config/msp430/msp430.c (msp430_init_sections): Remove handling of the
10702 (msp430_select_section): Handle decls with the "noinit" attribute with
10703 default_elf_select_section.
10704 Handle SECCAT_RODATA_MERGE_* section types with
10705 default_elf_select_section.
10706 Add comments about handling of unsupported section types.
10707 (msp430_section_type_flags): Remove handling of the noinit section.
10709 2019-09-03 Jozef Lawrynowicz <jozef.l@mittosystems.com>
10711 * config/msp430/msp430.c (msp430_attr): Remove warnings about
10712 conflicting msp430-specific attributes.
10713 (msp430_section_attr): Likewise.
10714 Add warnings about conflicts with generic "noinit" and "section"
10716 Fix grammar in -mlarge error message.
10717 (msp430_data_attr): Rename to msp430_persist_attr.
10718 Add warnings about conflicts with generic "noinit" and "section"
10720 Add warning for when variable is not initialized.
10721 Chain conditionals which prevent the attribute being added.
10722 (ATTR_EXCL): New helper.
10723 (attr_reent_exclusions): New exclusion table.
10724 (attr_naked_exclusions): Likewise.
10725 (attr_crit_exclusions): Likewise.
10726 (attr_lower_exclusions): Likewise.
10727 (attr_upper_exclusions): Likewise.
10728 (attr_either_exclusions): Likewise.
10729 (attr_persist_exclusions): Likewise.
10730 (msp430_attribute_table): Update with exclusion rules.
10731 (msp430_output_aligned_decl_common): Don't output common symbol if decl
10734 2019-09-03 Jozef Lawrynowicz <jozef.l@mittosystems.com>
10736 * config/msp430/msp430.c (TARGET_HANDLE_GENERIC_ATTRIBUTE): Define.
10737 (msp430_handle_generic_attribute): New function.
10738 * doc/tm.texi: Regenerate.
10739 * doc/tm.texi.in: Add TARGET_HANDLE_GENERIC_ATTRIBUTE.
10740 * hooks.c (hook_tree_treeptr_tree_tree_int_boolptr_null): New.
10741 * hooks.h (hook_tree_treeptr_tree_tree_int_boolptr_null): New.
10742 * target.def: Define new hook TARGET_HANDLE_GENERIC_ATTRIBUTE.
10744 2019-09-03 Kamlesh Kumar <kamleshbhalui@gmail.com>
10746 PR tree-optimization/91504
10747 * match.pd: Add ((~a & b) ^a) --> (a | b).
10749 2019-09-03 Jakub Jelinek <jakub@redhat.com>
10752 * config/i386/i386-expand.c (split_double_mode): If there is more than
10753 one MEM operand and they are rtx_equal_p, reuse lo_half/hi_half from
10754 already split matching MEM operand instead of calling adjust_address
10757 2019-09-03 Ulrich Weigand <uweigand@de.ibm.com>
10759 * config.gcc: Obsolete spu target. Remove references to spu.
10760 * configure.ac: Remove references to spu.
10761 * configure: Regenerate.
10762 * config/spu/: Remove directory.
10763 * common/config/spu/: Remove directory.
10765 * doc/extend.texi: Remove references to spu.
10766 * doc/invoke.texi: Likewise.
10767 * doc/md.texi: Likewise.
10768 * doc/sourcebuild.texi: Likewise.
10770 2019-09-03 Bernd Edlinger <bernd.edlinger@hotmail.de>
10772 PR middle-end/91603
10773 PR middle-end/91612
10774 PR middle-end/91613
10775 * expr.c (expand_expr_real_1): Handle unaligned decl_rtl
10776 and SSA_NAME referring to CONSTANT_P correctly.
10778 2019-09-03 Richard Biener <rguenther@suse.de>
10780 * tree-ssa-sccvn.h (vn_nary_op_lookup): Remove.
10781 (vn_nary_op_insert): Likewise.
10782 * tree-ssa-sccvn.c (init_vn_nary_op_from_op): Remove.
10783 (vn_nary_op_lookup): Likewise.
10784 (vn_nary_op_insert): Likewise.
10786 2019-09-03 Ilya Leoshkevich <iii@linux.ibm.com>
10788 * config/s390/s390.c (s390_canonicalize_comparison): Use XEXP
10789 (*op0, 1) instead of XEXP (*op1, 0).
10791 2019-09-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10793 * config/aarch64/aarch64.md (UNSPEC_FJCVTZS): Define.
10794 (aarch64_fjcvtzs): New define_insn.
10795 * config/aarch64/aarch64.h (TARGET_JSCVT): Define.
10796 * config/aarch64/aarch64-builtins.c (aarch64_builtins):
10798 (aarch64_init_builtins): Initialize __builtin_aarch64_jcvtzs.
10799 (aarch64_expand_builtin): Handle AARCH64_JSCVT.
10800 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Define
10801 __ARM_FEATURE_JCVT where appropriate.
10802 * config/aarch64/arm_acle.h (__jcvt): Define.
10804 2019-09-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10806 * config/aarch64/aarch64.md ("unspec"): Add UNSPEC_FRINT32Z,
10807 UNSPEC_FRINT32X, UNSPEC_FRINT64Z, UNSPEC_FRINT64X.
10808 (aarch64_<frintnzs_op><mode>): New define_insn.
10809 * config/aarch64/aarch64.h (TARGET_FRINT): Define.
10810 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Define
10811 __ARM_FEATURE_FRINT when appropriate.
10812 * config/aarch64/aarch64-simd-builtins.def: Add builtins for frint32z,
10813 frint32x, frint64z, frint64x.
10814 * config/aarch64/arm_acle.h (__rint32zf, __rint32z, __rint64zf,
10815 __rint64z, __rint32xf, __rint32x, __rint64xf, __rint64x): Define.
10816 * config/aarch64/arm_neon.h (vrnd32z_f32, vrnd32zq_f32, vrnd32z_f64,
10817 vrnd32zq_f64, vrnd32x_f32, vrnd32xq_f32, vrnd32x_f64, vrnd32xq_f64,
10818 vrnd64z_f32, vrnd64zq_f32, vrnd64z_f64, vrnd64zq_f64, vrnd64x_f32,
10819 vrnd64xq_f32, vrnd64x_f64, vrnd64xq_f64): Define.
10820 * config/aarch64/iterators.md (VSFDF): Define.
10821 (FRINTNZX): Likewise.
10822 (frintnzs_op): Likewise.
10824 2019-09-03 Dennis Zhang <dennis.zhang@arm.com>
10826 * config/aarch64/aarch64-cores.def (AARCH64_CORE): New entries
10827 for Cortex-A77, Cortex-A76AE, Cortex-A65, Cortex-A65AE, and
10829 * config/aarch64/aarch64-tune.md: Regenerated.
10830 * doc/invoke.texi: Document the new processors.
10832 2019-09-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10834 * config/aarch64/aarch64-option-extensions.def (sb): Add feature
10838 (sve2-sm4): Likewise.
10839 (sveaes): Likewise.
10840 (svesha3): Likewise.
10841 (svebitperm): Likewise.
10843 2019-09-03 Jakub Jelinek <jakub@redhat.com>
10844 Richard Biener <rguenther@suse.de>
10846 PR tree-optimization/91597
10847 * tree-vrp.c (extract_range_from_binary_expr): Remove unsafe
10848 BIT_AND_EXPR optimization for pointers, even if both operand
10849 ranges don't include NULL, the result can be NULL.
10851 2019-09-02 Bernd Edlinger <bernd.edlinger@hotmail.de>
10853 PR middle-end/91605
10854 * expr.c (addr_expr_of_non_mem_decl_p_1): Refactor into...
10855 (non_mem_decl_p): ...this.
10856 (mem_ref_refers_to_non_mem_p): Handle DECL_P as well as MEM_REF.
10857 (expand_assignment): Call mem_ref_referes_to_non_mem_p
10858 unconditionally as before.
10860 2019-09-02 Eric Botcazou <ebotcazou@adacore.com>
10863 * doc/generic.texi (LTGT_EXPR): Merge with other comparison operators.
10864 * rtl.def (LTGT): Likewise. Add note about floating-point exceptions.
10865 * tree.def (LTGT_EXPR): Likewise.
10866 * config/sparc/sparc.c (select_cc_mode): Return CCFPEmode for LTGT.
10868 2019-09-02 Jakub Jelinek <jakub@redhat.com>
10871 * fold-const.c (range_check_type): For enumeral and boolean
10872 type, pass 1 to type_for_size langhook instead of
10873 TYPE_UNSIGNED (etype). Return unsigned_type_for result whenever
10874 etype isn't TYPE_UNSIGNED INTEGER_TYPE.
10875 (build_range_check): Don't call unsigned_type_for for pointer types.
10876 * match.pd (X / C1 op C2): Don't call unsigned_type_for on
10877 range_check_type result.
10879 2019-09-02 Eric Botcazou <ebotcazou@adacore.com>
10881 * gimple-ssa-strength-reduction.c (valid_mem_ref_cand_p): New function.
10882 (replace_ref): Do not replace a chain of only two candidates which are
10883 valid memory references.
10885 2019-09-02 Martin Liska <mliska@suse.cz>
10887 * tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
10888 Bail out when we'll end up with the same number of clusters as
10890 (bit_test_cluster::find_bit_tests): Likewise for bit tests.
10891 (jump_table_cluster::can_be_handled): Remove the guard
10892 as it's already handled in ::is_enabled. Allocate output
10893 after early bail out.
10895 2019-09-02 Martin Liska <mliska@suse.cz>
10897 PR gcov-profile/91601
10898 * gcov.c (path_contains_zero_cycle_arc): Rename to ...
10899 (path_contains_zero_or_negative_cycle_arc): ... this and handle
10900 also negative edges.
10901 (circuit): Handle also negative edges as they can happen
10902 in some situations.
10904 2019-09-01 Eric Botcazou <ebotcazou@adacore.com>
10907 * config/sparc/sparc.c (sparc_cannot_force_const_mem): Return true
10908 during LRA/reload in PIC mode if the PIC register hasn't been used yet.
10909 (sparc_pic_register_p): Test reload_in_progress for consistency's sake.
10911 2019-09-01 Jakub Jelinek <jakub@redhat.com>
10913 PR middle-end/91623
10914 * optabs.c (expand_vec_cond_expr): If op0 is a VECTOR_CST and only
10915 EQ_EXPR/NE_EXPR is supported, verify that op0 only contains
10916 zeros or negative elements and use NE_EXPR instead of LT_EXPR against
10920 * tree.c (find_decls_types_in_node): Also walk TREE_PURPOSE of
10921 GIMPLE_ASM TREE_LIST operands.
10923 2019-08-31 Gerald Pfeifer <gerald@pfeifer.com>
10925 * doc/generic.texi (Unary and Binary Expressions): Mark up
10926 an instance of TYPE_MIN.
10928 2019-08-31 Stafford Horne <shorne@gmail.com>
10930 * config/or1k/constraints.md (t): New constraint.
10931 * config/or1k/or1k.h (GOT_REGS): New register class.
10932 * config/or1k/or1k.md (set_got_tmp, set_got): Use t contraint.
10934 2019-08-30 Jim Wilson <jimw@sifive.com>
10936 * config/riscv/riscv.c (riscv_option_override): If -msave-restore
10937 and -fpic and -mplt then disable -msave-restore and warn.
10939 2019-08-30 Martin Sebor <msebor@redhat.com>
10941 PR middle-end/91599
10942 * tree-ssa-strlen.c (handle_store): Use a fallback location if
10943 the statement doesn't have one.
10944 * gimple-pretty-print.c (percent_G_format): Same.
10946 PR middle-end/91584
10947 * tree-vrp.c (vrp_prop::check_mem_ref): Normalize type domain bounds
10948 before using them to validate MEM_REF offset.
10950 2019-08-30 Marek Polacek <polacek@redhat.com>
10952 * doc/invoke.texi (-Wvolatile): Use @code for volatile.
10954 2019-08-30 Bernd Edlinger <bernd.edlinger@hotmail.de>
10956 * config/arm/arm.md (unaligned_loaddi,
10957 unaligned_storedi): New unspec insn patterns.
10958 * config/arm/neon.md (unaligned_storev8qi): Likewise.
10959 * config/arm/arm.c (gen_cpymem_ldrd_strd): Use unaligned_loaddi
10960 and unaligned_storedi for 4-byte aligned memory.
10961 (arm_block_set_aligned_vect): Use unaligned_storev8qi for
10962 4-byte aligned memory.
10964 2019-08-30 Martin Jambor <mjambor@suse.cz>
10966 tree-optimization/91579
10967 * tree-tailcall.c (tailr_arg_needs_copy): New variable.
10968 (find_tail_calls): Allocate tailr_arg_needs_copy and set its bits as
10970 (arg_needs_copy_p): Removed.
10971 (eliminate_tail_call): Test tailr_arg_needs_copy instead of calling
10973 (tree_optimize_tail_calls_1): Likewise. Free tailr_arg_needs_copy.
10975 2019-08-29 Uroš Bizjak <ubizjak@gmail.com>
10977 * config/i386/i386-features.c
10978 (general_scalar_chain::compute_convert_gain):
10979 Correct cost for double-word shifts.
10980 (general_scalar_to_vector_candidate_p): Reject count operands
10981 greater or equal to mode bitsize.
10983 2019-08-29 Uroš Bizjak <ubizjak@gmail.com>
10985 * config/i386/i386.c (inline_secondary_memory_needed): Return true
10986 for moves between SSE and non-general registers and between
10987 mask and non-general registers.
10988 (ix86_register_move_cost): Remove stalled comment.
10990 2019-08-29 Richard Biener <rguenther@suse.de>
10992 * config/i386/i386-features.c (general_scalar_chain::convert_insn):
10993 Guard debug work with MAY_HAVE_DEBUG_BIND_INSNS.
10995 2019-08-29 Richard Biener <rguenther@suse.de>
10998 * config/i386/i386-features.c (general_scalar_chain::convert_insn):
10999 Do not emit scalar copies for debug-insns, instead replace
11000 their uses with the reg copy used in the chain or reset them
11001 if there is a reaching definition outside of the chain as well.
11003 2019-08-29 Jakub Jelinek <jakub@redhat.com>
11006 * config/i386/i386-expand.c (expand_vec_perm_movs,
11007 expand_vec_perm_blend, expand_vec_perm_vpermil,
11008 expand_vec_perm_pshufb, expand_vec_perm_1,
11009 expand_vec_perm_pshuflw_pshufhw, expand_vec_perm_palignr,
11010 expand_vec_perm_interleave2, expand_vec_perm_vpermq_perm_1,
11011 expand_vec_perm_vperm2f128, expand_vec_perm_interleave3,
11012 expand_vec_perm_vperm2f128_vblend, expand_vec_perm_2vperm2f128_vshuf,
11013 expand_vec_perm_even_odd, expand_vec_perm_broadcast): Adjust function
11014 comments - replace ix86_expand_vec_perm_builtin_1 with
11015 ix86_expand_vec_perm_const_1.
11016 (expand_vec_perm2_vperm2f128_vblend): New function.
11017 (ix86_expand_vec_perm_const_1): New forward declaration. Call
11018 expand_vec_perm2_vperm2f128_vblend as last resort.
11019 (canonicalize_perm): Formatting fix.
11021 PR tree-optimization/91351
11022 * tree-cfg.c (generate_range_test): Use range_check_type instead of
11024 * tree-cfgcleanup.c (convert_single_case_switch): Punt if
11025 range_check_type returns NULL.
11026 * tree-switch-conversion.c (switch_conversion::build_one_array):
11027 Use range_check_type instead of unsigned_type_for, don't perform
11028 linear opt if it returns NULL.
11029 (bit_test_cluster::find_bit_tests): Formatting fix.
11030 (bit_test_cluster::emit): Use range_check_type instead of
11032 (switch_decision_tree::try_switch_expansion): Punt if range_check_type
11035 2019-08-29 Richard Biener <rguenther@suse.de>
11037 PR tree-optimization/91568
11038 * tree-vectorizer.h (_slp_tree::max_nunits): Add.
11039 (vect_update_max_nunits): Add overload for poly_uint64.
11040 * tree-vect-slp.c (vect_create_new_slp_node): Initialize it.
11041 (vect_build_slp_tree): Record max_nunits into the subtree
11042 and merge it upwards.
11043 (vect_print_slp_tree): Print max_nunits.
11045 2019-08-28 Marek Polacek <polacek@redhat.com>
11047 Implement P1152R4: Deprecating some uses of volatile.
11049 * doc/invoke.texi: Document -Wvolatile.
11051 2019-08-28 Marek Polacek <polacek@redhat.com>
11053 PR c++/91360 - Implement C++20 P1143R2: constinit.
11054 * doc/invoke.texi: Document -Wc++20-compat.
11056 2019-08-28 Martin Sebor <msebor@redhat.com>
11058 PR tree-optimization/91457
11059 * builtins.c (component_size): New function.
11060 (compute_objsize): Add argument. Handle ARRAY_REF and COMPONENT_REF.
11061 * builtins.h (compute_objsize): Add argument.
11062 * tree-ssa-strlen.c (handle_store): Handle no-warning bit.
11063 * tree-vrp.c (vrp_prop::check_array_ref): Return warning result.
11064 (vrp_prop::check_mem_ref): Same.
11065 (vrp_prop::search_for_addr_array): Set no-warning bit.
11066 (check_array_bounds): Same.
11068 2019-08-28 Martin Sebor <msebor@redhat.com>
11071 * opts-common.c (option_enabled): Correct checking for language
11074 2019-08-28 Uroš Bizjak <ubizjak@gmail.com>
11076 * config/i386/i386.c (ix86_register_move_cost): Do not
11077 limit the cost of moves to/from XMM register to minimum 8.
11079 2019-08-28 Martin Jambor <mjambor@suse.cz>
11082 * ipa-cp.c (merge_agg_lats_step): Removed redundant test, made a
11083 checking assert a normal assert to test it really is redundant.
11084 * ipa-prop.c (compute_complex_assign_jump_func): Removed
11086 (update_jump_functions_after_inlining): Removed combining unary
11087 arithmetic operations with an ancestor jump function.
11088 (ipcp_modif_dom_walker::before_dom_children): Fix wrong use of rhs
11091 2019-08-28 Richard Biener <rguenther@suse.de>
11093 * config/i386/i386-features.c (convert_scalars_to_vector): Do not
11094 add the MD problem.
11096 2019-08-28 Bernd Edlinger <bernd.edlinger@hotmail.de>
11097 Richard Biener <rguenther@suse.de>
11099 * expr.c (expand_assignment): Handle misaligned DECLs.
11100 (expand_expr_real_1): Handle FUNCTION_DECL as unaligned.
11101 * function.c (assign_parm_adjust_stack_rtl): Check movmisalign optab
11103 (assign_parm_setup_stack): Allocate properly aligned stack slots.
11104 * varasm.c (build_constant_desc): Align constants of misaligned types.
11105 * config/arm/predicates.md (aligned_operand): New predicate.
11106 * config/arm/arm.md (movdi, movsi, movhi, movhf, movsf, movdf): Use
11107 aligned_operand to check restrictions on memory addresses.
11108 * config/arm/neon.md (movti, mov<VSTRUCT>, mov<VH>): Likewise.
11109 * config/arm/vec-common.md (mov<VALL>): Likewise.
11111 2019-08-28 Jakub Jelinek <jakub@redhat.com>
11114 * config/i386/sse.md (vec_shl_<mode>, vec_shr_<mode>): Use
11115 V_128 iterator instead of VI_128.
11117 2019-08-28 Martin Liska <mliska@suse.cz>
11119 PR tree-optimization/90970
11120 * builtins.c (check_access): Remove assignment to maxread
11121 as it hasn't been used since when it was introduced in r255755.
11123 2019-08-27 Martin Sebor <msebor@redhat.com>
11125 PR tree-optimization/91567
11126 * gimple-ssa-sprintf.c (get_string_length): Handle more forms of lengths
11127 of unknown strings.
11128 * vr-values.c (vr_values::extract_range_basic): Set strlen upper bound
11129 to PTRDIFF_MAX - 2.
11131 2019-08-27 Jeff Law <law@redhat.com>
11133 * tree-ssa-strlen.c (printf_strlen_execute): Initialize
11134 the loop optimizer and SCEV before sizing ssa_ver_to_stridx.
11136 2019-08-27 Uroš Bizjak <ubizjak@gmail.com>
11139 * config/i386/i386-features.c (convert_scalars_to_vector):
11140 Update crtl->stack_realign_needed, crtl->stack_realign_tried and
11141 crtl->stack_realign_processed. Update crtl->drap_reg by calling
11142 targetm.calls.get_drap_rtx. If drap_rtx is non-null then
11143 Update crtl->args.internal_arg_pointer and call fixup_tail_calls.
11145 2019-08-27 Richard Biener <rguenther@suse.de>
11147 * config/i386/i386-features.h
11148 (general_scalar_chain::~general_scalar_chain): Add.
11149 (general_scalar_chain::insns_conv): New bitmap.
11150 (general_scalar_chain::n_sse_to_integer): New.
11151 (general_scalar_chain::n_integer_to_sse): Likewise.
11152 (general_scalar_chain::make_vector_copies): Adjust signature.
11153 * config/i386/i386-features.c
11154 (general_scalar_chain::general_scalar_chain): Outline,
11155 initialize new members.
11156 (general_scalar_chain::~general_scalar_chain): New.
11157 (general_scalar_chain::mark_dual_mode_def): Record insns
11158 we need to insert conversions at and count them.
11159 (general_scalar_chain::compute_convert_gain): Account
11160 for conversion instructions at chain boundary.
11161 (general_scalar_chain::make_vector_copies): Generate a single
11162 copy for a def by a specific insn.
11163 (general_scalar_chain::convert_registers): First populate
11164 defs_map, then make copies at out-of chain insns.
11166 2019-08-27 Richard Earnshaw <rearnsha@arm.com>
11168 * config/arm/arm.md (stack_protect_set_insn): Add security-related
11170 * config/aarch64/aarch64.md (stack_protect_set_<mode>): Likewise.
11172 2019-08-27 Martin Liska <mliska@suse.cz>
11174 * cgraph.c (cgraph_node::remove): Remove dead assignment before
11176 * config/i386/i386-features.c (scalar_chain::emit_conversion_insns):
11177 Enclose in anonymous namespace.
11178 * config/i386/x86-tune-costs.h (struct processor_costs): Wrap
11179 hard_register initialization in braces.
11180 * tree-vrp.h (value_range_base::supports_type_p): Return false
11181 for function with boolean return type.
11183 2019-08-26 Uroš Bizjak <ubizjak@gmail.com>
11185 * config/i386/i386.c (emit_i387_cw_initialization)
11186 <case I387_CW_ROUNDEVEN>: Fix masking operand value.
11188 2019-08-26 Martin Sebor <msebor@redhat.com>
11191 * gimple-ssa-sprintf.c (pass_data_sprintf_length): Remove object.
11192 (sprintf_dom_walker): Remove class.
11193 (get_int_range): Make argument const.
11194 (directive::fmtfunc, directive::set_precision): Same.
11195 (format_none): Same.
11196 (build_intmax_type_nodes): Same.
11197 (adjust_range_for_overflow): Same.
11198 (format_floating): Same.
11199 (format_character): Same.
11200 (format_string): Same.
11201 (format_plain): Same.
11202 (get_int_range): Cast away constness.
11203 (format_integer): Same.
11204 (get_string_length): Call get_range_strlen_dynamic. Handle
11205 null lendata.maxbound.
11206 (should_warn_p): Adjust argument scope qualifier.
11207 (maybe_warn): Same.
11208 (format_directive): Same.
11209 (parse_directive): Same.
11210 (is_call_safe): Same.
11211 (try_substitute_return_value): Same.
11212 (sprintf_dom_walker::handle_printf_call): Rename...
11213 (handle_printf_call): ...to this. Initialize target to host charmap
11214 here instead of in pass_sprintf_length::execute.
11215 (struct call_info): Make global.
11216 (sprintf_dom_walker::compute_format_length): Make global.
11217 (sprintf_dom_walker::handle_gimple_call): Same.
11218 * passes.def (pass_sprintf_length): Replace with pass_strlen.
11219 * print-rtl.c (print_pattern): Reduce the number of spaces to
11220 avoid -Wformat-truncation.
11221 * tree-pass.h (make_pass_warn_printf): New function.
11222 * tree-ssa-strlen.c (strlen_optimize): New variable.
11223 (get_string_length): Add comments.
11224 (get_range_strlen_dynamic): New function.
11225 (check_and_optimize_call): New function.
11226 (handle_integral_assign): New function.
11227 (strlen_check_and_optimize_stmt): Factor code out into
11228 strlen_check_and_optimize_call and handle_integral_assign.
11229 (strlen_dom_walker::evrp): New member.
11230 (strlen_dom_walker::before_dom_children): Use evrp member.
11231 (strlen_dom_walker::after_dom_children): Use evrp member.
11232 (printf_strlen_execute): New function.
11233 (pass_strlen::gate): Update to handle printf calls.
11234 (dump_strlen_info): New function.
11235 (pass_data_warn_printf): New variable.
11236 (pass_warn_printf): New class.
11237 * tree-ssa-strlen.h (get_range_strlen_dynamic): Declare.
11238 (handle_printf_call): Same.
11239 * tree-vrp.c (value_range_base::type): Adjust assertion.
11240 * vr-values.c (vr_values::update_value_range): Use type of the first
11241 argument rather than the second.
11243 2019-08-26 Richard Biener <rguenther@suse.de>
11245 * config/i386/i386-features.c (general_remove_non_convertible_regs):
11247 (convert_scalars_to_vector): Do not call it.
11249 2019-08-26 Tejas Joshi <tejasjoshi9673@gmail.com>
11250 Uros Bizjak <ubizjak@gmail.com>
11252 * builtins.c (mathfn_built_in_2): Change CASE_MATHFN to
11253 CASE_MATHFN_FLOATN for roundeven.
11254 * config/i386/i386.c (ix86_i387_mode_needed): Add case
11256 (ix86_mode_needed): Likewise.
11257 (ix86_mode_after): Likewise.
11258 (ix86_mode_entry): Likewise.
11259 (ix86_mode_exit): Likewise.
11260 (ix86_emit_mode_set): Likewise.
11261 (emit_i387_cw_initialization): Add case I387_CW_ROUNDEVEN.
11262 * config/i386/i386.h (ix86_stack_slot): Add SLOT_CW_ROUNDEVEN.
11263 (ix86_entity): Add I387_ROUNDEVEN.
11264 (NUM_MODES_FOR_MODE_SWITCHING): Add I387_CW_ANY.
11265 * config/i386/i386.md: Define UNSPEC_FRNDINT_ROUNDEVEN.
11266 (define_int_iterator): Likewise.
11267 (define_int_attr): Likewise for rounding_insn, rounding and ROUNDING.
11268 (define_constant): Define ROUND_ROUNDEVEN mode.
11269 (define_attr): Add roundeven mode for i387_cw.
11270 (<rouding_insn><mode>2): Add condition for ROUND_ROUNDEVEN.
11271 * internal-fn.def (ROUNDEVEN): New builtin function.
11272 * optabs.def (roundeven_optab): New optab.
11274 2019-08-26 Tejas Joshi <tejasjoshi9673@gmail.com>
11276 * builtins.c (mathfn_built_in_2): Added CASE_MATHFN_FLOATN
11278 * builtins.def: Added function definitions for roundeven function
11280 * fold-const-call.c (fold_const_call_ss): Added case for roundeven
11281 function call. Adjust condition for floor, ceil, trunc and round.
11282 * fold-const.c (negate_mathfn_p): Added case for roundeven function.
11283 (tree_call_nonnegative_warnv_p): Added case for roundeven function.
11284 (integer_valued_real_call_p): Added case for roundeven function.
11285 * real.c (is_even): New function. Returns true if real number is even,
11286 otherwise returns false.
11287 (is_halfway_below): New function. Returns true if real number is
11288 halfway between two integers, else return false.
11289 (real_roundeven): New function. Round real number to nearest integer,
11290 rounding halfway cases towards even.
11291 * real.h (real_value): Added descriptive comments. Added function
11292 declaration for roundeven function.
11293 * doc/extend.texi (Other Builtins): List roundeven variants among
11294 functions which can be handled as builtins.
11296 2019-08-26 Richard Biener <rguenther@suse.de>
11300 * config/i386/i386-features.h (general_scalar_chain::defs_map):
11302 (general_scalar_chain::replace_with_subreg): Remove.
11303 (general_scalar_chain::replace_with_subreg_in_insn): Likewise.
11304 (general_scalar_chain::convert_reg): Adjust signature.
11305 * config/i386/i386-features.c (scalar_chain::add_insn): Do not
11306 iterate over all defs of a reg.
11307 (general_scalar_chain::replace_with_subreg): Remove.
11308 (general_scalar_chain::replace_with_subreg_in_insn): Likewise.
11309 (general_scalar_chain::make_vector_copies): Populate defs_map,
11310 place copy only after defs that are used as vectors in the chain.
11311 (general_scalar_chain::convert_reg): Emit a copy for a specific
11312 def in a specific instruction.
11313 (general_scalar_chain::convert_op): All reg uses are converted here.
11314 (general_scalar_chain::convert_insn): Emit copies for scalar
11315 uses of defs here. Replace uses with the copies we created.
11316 Replace and convert the def. Adjust REG_DEAD notes, remove
11317 REG_EQUIV/EQUAL notes.
11318 (general_scalar_chain::convert_registers): Only handle copies
11319 into the chain here.
11321 2019-08-26 Robin Dapp <rdapp@linux.ibm.com>
11323 * match.pd: Add (T)(A) + CST -> (T)(A + CST).
11325 2019-08-26 Robin Dapp <rdapp@linux.ibm.com>
11327 * gimple-loop-versioning.cc (loop_versioning::record_address_fragment):
11328 Add nop_convert case.
11329 * tree-ssa-propagate.c (substitute_and_fold_dom_walker::before_dom_children):
11330 Fold all statements if requested.
11331 * tree-ssa-propagate.h (class substitute_and_fold_engine):
11332 Allow to fold all statements.
11333 * tree-vrp.c (class vrp_folder):
11334 Let substitute_and_fold_engine fold all statements.
11336 2019-08-26 Richard Biener <rguenther@suse.de>
11338 PR tree-optimization/91526
11339 * passes.def: Note that after late FRE we do TODO_update_address_taken.
11340 * tree-ssa-sccvn.c (pass_fre::execute): In late mode schedule
11341 TODO_update_address_taken.
11343 2019-08-26 Gerald Pfeifer <gerald@pfeifer.com>
11345 * config/i386/gmm_malloc.h: Only use <errno.h> and errno if
11348 2019-08-23 Mihailo Stojanovic <mistojanovic@wavecomp.com>
11350 * config/mips/mips.md (mips_get_fcsr, *mips_get_fcsr): Use SI
11351 machine mode for unspec_volatile operand.
11353 2019-08-23 Wilco Dijkstra <wdijkstr@arm.com>
11355 * doc/invoke.texi (mneon-for-64bits): Deprecate option.
11356 * config/arm/arm.opt (mneon-for-64bits): Deprecate option.
11357 * config/arm/arm.h (TARGET_PREFER_NEON_64BITS): Remove.
11358 (prefer_neon_for_64bits): Remove.
11359 * config/arm/arm.c (prefer_neon_for_64bits): Remove.
11360 (tune_params): Remove PREF_NEON_64_FALSE uses.
11361 (arm_option_override): Remove prefer_neon selection code.
11362 (arm_print_tune_info): Remove prefer_neon_for_64bits.
11363 * config/arm/arm-protos.h (tune_params): Remove
11364 prefer_neon_for_64bits.
11365 (prefer_neon_for_64bits): Remove.
11367 2019-08-23 Iain Sandoe <iain@sandoe.co.uk>
11370 * ggc-page.c (ggc_pch_read): Read the ggc_pch_ondisk structure
11371 and issue any diagnostics needed before collecting the pre-PCH
11374 2019-08-23 Jakub Jelinek <jakub@redhat.com>
11376 PR middle-end/91283
11377 * common.opt (fexcess-precision=): Add Optimization flag. Use
11378 flag_excess_precision variable instead of
11379 flag_excess_precision_cmdline.
11380 * flags.h (class target_flag_state): Remove x_flag_excess_precision
11382 (flag_excess_precision): Don't define.
11383 * langhooks.c (lhd_post_options): Set flag_excess_precision instead of
11384 flag_excess_precision_cmdline. Remove comment.
11385 * opts.c (set_fast_math_flags): Use frontend_set_flag_excess_precision
11386 and x_flag_excess_precision instead of
11387 frontend_set_flag_excess_precision_cmdline and
11388 x_flag_excess_precision_cmdline.
11389 (fast_math_flags_set_p): Use x_flag_excess_precision instead of
11390 x_flag_excess_precision_cmdline.
11391 * toplev.c (init_excess_precision): Remove.
11392 (lang_dependent_init_target): Don't call it.
11394 2019-08-23 Martin Liska <mliska@suse.cz>
11396 * lto-wrapper.c (run_gcc): When setting jobserver
11397 set also parallel to 1. This was done so before r273908.
11399 2019-08-23 Dennis Zhang <dennis.zhang@arm.com>
11401 * config/arm/arm-cpus.in (cortex-m35p): New entry.
11402 (cortex-a76ae): Likewise.
11403 (cortex-a77): Likewise
11404 * config/arm/arm-tables.opt: Regenerate.
11405 * config/arm/arm-tune.md: Likewise.
11406 * doc/invoke.texi (ARM Options): Document cortex-m35p, cortx-a76ae,
11407 cortex-a77 CPU options.
11409 2019-08-23 Martin Liska <mliska@suse.cz>
11411 * profile.c (instrument_values): Do not set
11412 0 as last argument.
11413 * tree-profile.c (gimple_gen_interval_profiler): Remove
11415 (gimple_gen_pow2_profiler): Likewise.
11416 (gimple_gen_topn_values_profiler): Likewise.
11417 (gimple_gen_ic_profiler): Likewise.
11418 (gimple_gen_time_profiler): Likewise.
11419 (gimple_gen_average_profiler): Likewise.
11420 (gimple_gen_ior_profiler): Likewise.
11421 * value-prof.c (dump_histogram_value): Use default
11422 in switch statement instead of HIST_TYPE_MAX.
11423 (stream_in_histogram_value): Likewise.
11424 (gimple_duplicate_stmt_histograms): Do not
11425 use NULL for implicitly set arguments.
11426 (gimple_divmod_values_to_profile): Do not use
11427 reserve+quick_push.
11428 (gimple_indirect_call_to_profile): Likewise.
11429 (gimple_find_values_to_profile): Use implicit
11430 function call arguments.
11431 * value-prof.h (gimple_alloc_histogram_value):
11432 Set default values.
11433 (gimple_gen_interval_profiler): Remove last argument.
11434 (gimple_gen_pow2_profiler): Likewise.
11435 (gimple_gen_topn_values_profiler): Likewise.
11436 (gimple_gen_ic_profiler): Likewise.
11437 (gimple_gen_time_profiler): Likewise.
11438 (gimple_gen_average_profiler): Likewise.
11439 (gimple_gen_ior_profiler): Likewise.
11441 2019-08-22 Martin Sebor <msebor@redhat.com>
11443 PR middle-end/91490
11444 * builtins.c (c_strlen): Rename argument and introduce new local.
11445 Set no-warning bit on original argument.
11446 * expr.c (string_constant): Pass argument type to fold_ctor_reference.
11447 Fold empty and zero constructors into empty strings.
11448 * gimple-fold.c (fold_nonarray_ctor_reference): Return a STRING_CST
11449 for missing initializers.
11450 * tree.c (build_string_literal): Handle optional argument.
11451 * tree.h (build_string_literal): Add defaulted argument.
11452 * gimple-ssa-warn-restrict.c (maybe_diag_access_bounds): Check
11453 no-warning bit on original expression.
11455 2019-08-22 Segher Boessenkool <segher@kernel.crashing.org>
11458 * config/rs6000/rs6000.md (unspec): Delete UNSPEC_DARN, UNSPEC_DARN_32,
11459 and UNSPEC_DARN_RAW.
11460 (unspecv): New enumerator values UNSPECV_DARN, UNSPECV_DARN_32, and
11462 (darn_32): Use an unspec_volatile, and UNSPECV_DARN_32.
11463 (darn_raw): Use an unspec_volatile, and UNSPECV_DARN_RAW.
11464 (darn): Use an unspec_volatile, and UNSPECV_DARN.
11466 2019-08-22 Segher Boessenkool <segher@kernel.crashing.org>
11468 * config/rs6000/altivec.md (unspec): Delete UNSPEC_DARN, UNSPEC_DARN_32,
11469 UNSPEC_DARN_RAW, UNSPEC_CMPRB, UNSPEC_CMPRB2, UNSPEC_CMPEQB; move to...
11470 * config/rs6000/rs6000.md (unspec): ... here.
11471 * config/rs6000/altivec.md (darn_32, darn_raw, darn, cmprb,
11472 *cmprb_internal, setb_signed, setb_unsigned, cmprb2, *cmprb2_internal,
11473 cmpeqb, *cmpeqb_internal): Delete, move to...
11474 * config/rs6000/rs6000.md (darn_32, darn_raw, darn, cmprb,
11475 *cmprb_internal, setb_signed, setb_unsigned, cmprb2, *cmprb2_internal,
11476 cmpeqb, *cmpeqb_internal): ... here.
11478 2019-08-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11480 * config/arm/arm_acle.h: Use arch=armv8-a+crc+simd pragma for CRC32
11481 intrinsics if __ARM_FP.
11482 Use __ARM_FEATURE_CRC32 ifdef guard.
11484 2019-08-22 Wilco Dijkstra <wdijkstr@arm.com>
11486 * config/arm/arm.md (neon_for_64bits): Remove.
11487 (avoid_neon_for_64bits): Remove.
11488 (arm_adddi3): Always split early.
11489 (arm_subdi3): Always split early.
11490 (negdi2): Remove Neon expansion.
11491 (split zero_extend): Split before reload.
11492 (split sign_extend): Split before reload.
11494 2019-08-22 Wilco Dijkstra <wdijkstr@arm.com>
11496 * config/arm/iterators.md (qhs_extenddi_cstr): Update.
11497 (qhs_extenddi_cstr): Likewise.
11498 * config/arm/arm.md (ashldi3): Always expand early.
11499 (ashlsi3): Likewise.
11500 (ashrsi3): Likewise.
11501 (zero_extend<mode>di2): Remove Neon variants.
11502 (extend<mode>di2): Likewise.
11503 * config/arm/neon.md (ashldi3_neon_noclobber): Remove.
11504 (signed_shift_di3_neon): Likewise.
11505 (unsigned_shift_di3_neon): Likewise.
11506 (ashrdi3_neon_imm_noclobber): Likewise.
11507 (lshrdi3_neon_imm_noclobber): Likewise.
11508 (<shift>di3_neon): Likewise.
11509 (split extend): Remove DI extend split patterns.
11511 2019-08-22 Wilco Dijkstra <wdijkstr@arm.com>
11513 * config/arm/arm.md (split and/eor/ior): Remove Neon check.
11514 (split not): Add DImode not splitter.
11515 (anddi3): Remove pattern.
11516 (anddi3_insn): Likewise.
11517 (anddi_zesidi_di): Likewise.
11518 (anddi_sesdi_di): Likewise.
11519 (anddi_notdi_di): Likewise.
11520 (anddi_notzesidi_di): Likewise.
11521 (anddi_notsesidi_di): Likewise.
11522 (iordi3): Likewise.
11523 (iordi3_insn): Likewise.
11524 (iordi_zesidi_di): Likewise.
11525 (iordi_sesidi_di): Likewise.
11526 (xordi3): Likewise.
11527 (xordi3_insn): Likewise.
11528 (xordi_sesidi_di): Likewise.
11529 (xordi_zesidi_di): Likewise.
11530 (one_cmpldi2): Likewise.
11531 (one_cmpldi2_insn): Likewise.
11532 * config/arm/constraints.md: Remove De, Df, Dg constraints.
11533 * config/arm/iwmmxt.md (iwmmxt_iordi3): Remove general register
11535 (iwmmxt_xordi3): Likewise.
11536 (iwmmxt_anddi3): Likewise.
11537 * config/arm/neon.md (orndi3_neon): Remove pattern.
11538 (anddi_notdi_di): Likewise.
11539 * config/arm/predicates.md (arm_anddi_operand_neon): Remove.
11540 (arm_iordi_operand_neon): Likewise.
11541 (arm_xordi_operand_neon): Likewise.
11542 * config/arm/thumb2.md(iordi_notdi_di): Remove pattern.
11543 (iordi_notzesidi_di): Likewise.
11544 (iordi_notdi_zesidi): Likewise.
11545 (iordi_notsesidi_di): Likewise.
11547 2019-08-22 Richard Earnshaw <rearnsha@arm.com>
11549 * config/arm/arm.md (iorsi3_compare0): Add alternative for 16-bit thumb
11551 (iorsi3_compare0_scratch): Likewise.
11553 2019-08-22 Sylvia Taylor <sylvia.taylor@arm.com>
11555 * config/aarch64/aarch64-simd-builtins.def:
11558 * config/aarch64/aarch64-simd.md:
11559 (aarch64_ld1x4<VALLDIF:mode>): New pattern.
11560 (aarch64_st1x4<VALLDIF:mode>): Likewise.
11561 (aarch64_ld1_x4_<mode>): Likewise.
11562 (aarch64_st1_x4_<mode>): Likewise.
11563 * config/aarch64/arm_neon.h:
11564 (vld1_s8_x4): New function.
11565 (vld1q_s8_x4): Likewise.
11566 (vld1_s16_x4): Likewise.
11567 (vld1q_s16_x4): Likewise.
11568 (vld1_s32_x4): Likewise.
11569 (vld1q_s32_x4): Likewise.
11570 (vld1_u8_x4): Likewise.
11571 (vld1q_u8_x4): Likewise.
11572 (vld1_u16_x4): Likewise.
11573 (vld1q_u16_x4): Likewise.
11574 (vld1_u32_x4): Likewise.
11575 (vld1q_u32_x4): Likewise.
11576 (vld1_f16_x4): Likewise.
11577 (vld1q_f16_x4): Likewise.
11578 (vld1_f32_x4): Likewise.
11579 (vld1q_f32_x4): Likewise.
11580 (vld1_p8_x4): Likewise.
11581 (vld1q_p8_x4): Likewise.
11582 (vld1_p16_x4): Likewise.
11583 (vld1q_p16_x4): Likewise.
11584 (vld1_s64_x4): Likewise.
11585 (vld1_u64_x4): Likewise.
11586 (vld1_p64_x4): Likewise.
11587 (vld1q_s64_x4): Likewise.
11588 (vld1q_u64_x4): Likewise.
11589 (vld1q_p64_x4): Likewise.
11590 (vld1_f64_x4): Likewise.
11591 (vld1q_f64_x4): Likewise.
11592 (vst1_s8_x4): Likewise.
11593 (vst1q_s8_x4): Likewise.
11594 (vst1_s16_x4): Likewise.
11595 (vst1q_s16_x4): Likewise.
11596 (vst1_s32_x4): Likewise.
11597 (vst1q_s32_x4): Likewise.
11598 (vst1_u8_x4): Likewise.
11599 (vst1q_u8_x4): Likewise.
11600 (vst1_u16_x4): Likewise.
11601 (vst1q_u16_x4): Likewise.
11602 (vst1_u32_x4): Likewise.
11603 (vst1q_u32_x4): Likewise.
11604 (vst1_f16_x4): Likewise.
11605 (vst1q_f16_x4): Likewise.
11606 (vst1_f32_x4): Likewise.
11607 (vst1q_f32_x4): Likewise.
11608 (vst1_p8_x4): Likewise.
11609 (vst1q_p8_x4): Likewise.
11610 (vst1_p16_x4): Likewise.
11611 (vst1q_p16_x4): Likewise.
11612 (vst1_s64_x4): Likewise.
11613 (vst1_u64_x4): Likewise.
11614 (vst1_p64_x4): Likewise.
11615 (vst1q_s64_x4): Likewise.
11616 (vst1q_u64_x4): Likewise.
11617 (vst1q_p64_x4): Likewise.
11618 (vst1_f64_x4): Likewise.
11619 (vst1q_f64_x4): Likewise.
11621 2019-08-22 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
11623 * config/aarch64/aarch64-sve.md (vcond_mask): Add "@".
11625 2019-08-22 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
11626 Richard Sandiford <richard.sandiford@arm.com>
11629 * config/aarch64/aarch64.c (aarch64_evpc_sel): New function.
11630 (aarch64_expand_vec_perm_const_1): Call aarch64_evpc_sel.
11632 2019-08-21 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
11635 * config/aarch64/aarch64.c (aarch64_gen_compare_reg_maybe_ze): Force y
11636 in reg if it fails aarch64_plus_operand predicate.
11638 2019-08-21 Richard Biener <rguenther@suse.de>
11640 PR tree-optimization/91482
11641 * tree-ssa-ccp.c (ccp_folder::fold_stmt): Remove useless
11642 BUILT_IN_ASSUME_ALIGNED calls.
11644 2019-08-21 Richard Biener <rguenther@suse.de>
11648 * config/i386/i386-features.c
11649 (general_scalar_chain::make_vector_copies): Copy stack temporary
11650 rtx when using it multiple times.
11651 (general_scalar_chain::convert_reg): Likewise.
11653 2019-08-20 Bernd Edlinger <bernd.edlinger@hotmail.de>
11655 * function.c (assign_parm_find_stack_rtl): Use known_eq instead of ==.
11657 2019-08-20 Matthew Beliveau <mbelivea@redhat.com>
11659 * tree-ssa-dse.c (dse_optimize_redundant_stores): Improved check to
11660 catch more redundant zero initialization cases.
11661 (dse_dom_walker::dse_optimize_stmt): Likewise.
11663 2019-08-20 Richard Biener <rguenther@suse.de>
11666 * ipa.c (cgraph_build_static_cdtor_1): Use names not recognizable
11667 by collect2 when targetm.have_ctors_dtors which avoids dragging
11668 in temporary filenames from LTO input objects.
11670 2019-08-20 Richard Biener <rguenther@suse.de>
11672 PR tree-optimization/37242
11673 * tree-ssa-sccvn.c (visit_nary_op): Also CSE (T)(a + b)
11674 to (T)a + (T)b if we know that a + b does not overflow.
11676 2019-08-20 Eric Botcazou <ebotcazou@adacore.com>
11678 PR rtl-optimization/91347
11679 * dse.c (scan_insn): Call add_wild_read for non-const/memset tail calls
11680 before reload if HARD_FRAME_POINTER_IS_ARG_POINTER.
11682 2019-08-20 Richard Sandiford <richard.sandiford@arm.com>
11684 * calls.h (function_arg_info): Add a pass_by_reference field,
11685 defaulting to false.
11686 * calls.c (apply_pass_by_reference_rules): Set pass_by_reference
11687 when applying pass-by-reference semantics.
11688 (initialize_argument_information): Likewise.
11689 (emit_library_call_value_1): Likewise.
11690 * function.c (assign_parm_data_one): Remove passed_pointer field.
11691 (assign_parm_find_data_types): Don't set it.
11692 (assign_parm_find_stack_rtl, assign_parm_adjust_stack_rtl)
11693 (assign_parm_setup_reg, assign_parms, gimplify_parameters): Use
11694 arg.pass_by_reference instead of passed_pointer.
11696 2019-08-20 Richard Sandiford <richard.sandiford@arm.com>
11698 * calls.c (emit_library_call_value_1): Merge arg and orig_arg
11699 into a single function_arg_info, updating its fields when we
11700 apply pass-by-reference and promotion semantics. Use the
11701 function_arg_info to track the mode rather than keeping it in
11702 a separate local variable.
11703 (initialize_argument_information): Likewise. Base the final
11704 arg_to_skip on this new function_arg_info rather than creating
11705 a new one from scratch.
11707 2019-08-20 Richard Sandiford <richard.sandiford@arm.com>
11709 * function.c (assign_parm_data_one): Replace passed_type,
11710 promoted_mode and named_arg with a function_arg_info field.
11711 (assign_parm_find_data_types): Remove local variables and
11712 assign directly to "data". Make data->passed_mode shadow
11713 data->arg.mode until promotion, then assign the promoted
11714 mode to data->arg.mode.
11715 (assign_parms_setup_varargs, assign_parm_find_entry_rtl)
11716 (assign_parm_find_stack_rtl, assign_parm_adjust_entry_rtl)
11717 (assign_parm_remove_parallels, assign_parm_setup_block_p)
11718 (assign_parm_setup_block, assign_parm_setup_reg)
11719 (assign_parm_setup_stack, assign_parms, gimplify_parameters): Use
11720 arg.mode instead of promoted_mode, arg.type instead of passed_type
11721 and arg.named instead of named_arg. Use data->arg for
11722 function_arg_info structures that had the field values passed_type,
11723 promoted_mode and named_arg. Base other function_arg_infos on
11724 data->arg, changing the necessary properties.
11726 2019-08-20 Richard Sandiford <richard.sandiford@arm.com>
11728 * calls.h (apply_pass_by_reference_rules): Declare.
11729 * calls.c (apply_pass_by_reference_rules): New function.
11730 * config/c6x/c6x.c (c6x_call_saved_register_used): Use it.
11731 * config/rs6000/rs6000-call.c (rs6000_parm_needs_stack): Likewise.
11732 * config/s390/s390.c (s390_call_saved_register_used): Likewise.
11733 * function.c (assign_parm_find_data_types): Likewise.
11734 * var-tracking.c (prepare_call_arguments): Likewise.
11736 2019-08-20 Richard Sandiford <richard.sandiford@arm.com>
11738 * target.def (must_pass_in_stack): Take a function_arg_info instead
11739 of a mode and a type.
11740 * doc/tm.texi: Regenerate.
11741 * calls.h (must_pass_in_stack_var_size): Take a function_arg_info
11742 instead of a mode and a type.
11743 (must_pass_in_stack_var_size_or_pad): Likewise.
11744 * calls.c (must_pass_in_stack_var_size): Likewise.
11745 (must_pass_in_stack_var_size_or_pad): Likewise.
11746 (initialize_argument_information): Update call to
11747 targetm.calls.must_pass_in_stack.
11748 (must_pass_va_arg_on_stack): Likewise.
11749 * function.c (assign_parm_find_entry_rtl): Likewise.
11750 * targhooks.c (hook_pass_by_reference_must_pass_in_stack): Likewise.
11751 * config/alpha/alpha.c (alpha_function_arg): Likewise.
11752 (alpha_function_arg_advance): Likewise.
11753 * config/cr16/cr16.c (cr16_function_arg): Likewise.
11754 (cr16_function_arg_advance): Likewise.
11755 * config/cris/cris.c (cris_pass_by_reference): Likewise.
11756 (cris_arg_partial_bytes): Likewise.
11757 * config/iq2000/iq2000.c (iq2000_pass_by_reference): Likewise.
11758 * config/lm32/lm32.c (lm32_function_arg): Likewise.
11759 * config/mcore/mcore.c (mcore_num_arg_regs): Likewise.
11760 (mcore_function_arg, mcore_arg_partial_bytes): Likewise.
11761 * config/mips/mips.c (mips_pass_by_reference): Likewise.
11762 * config/mmix/mmix.c (mmix_function_arg_advance): Likewise.
11763 (mmix_function_arg_1, mmix_pass_by_reference): Likewise.
11764 * config/sh/sh.c (sh_pass_by_reference): Likewise.
11765 * config/stormy16/stormy16.c (xstormy16_function_arg): Likewise.
11766 * config/xtensa/xtensa.c (xtensa_function_arg_advance): Likewise.
11767 * config/arm/arm.c (arm_must_pass_in_stack): Take a function_arg_info
11768 instead of a mode and a type.
11769 * config/fr30/fr30.c (fr30_must_pass_in_stack): Likewise.
11770 (fr30_num_arg_regs): Likewise.
11771 (fr30_setup_incoming_varargs): Update calls accordingly.
11772 (fr30_arg_partial_bytes, fr30_function_arg): Likewise.
11773 (fr30_function_arg_advance): Likewise.
11774 * config/frv/frv.c (frv_must_pass_in_stack): Take a function_arg_info
11775 instead of a mode and a type.
11776 * config/gcn/gcn.c (num_arg_regs): Likewise.
11777 (gcn_function_arg, gcn_function_arg_advance): Update calls to
11778 num_arg_regs and targetm.calls.must_pass_in_stack.
11779 (gcn_arg_partial_bytes): Likewise.
11780 * config/i386/i386.c (ix86_must_pass_in_stack): Take a
11781 function_arg_info instead of a mode and a type.
11782 (classify_argument): Update call accordingly.
11783 * config/nds32/nds32.c (nds32_must_pass_in_stack): Take a
11784 function_arg_info instead of a mode and a type.
11785 * config/rs6000/rs6000-internal.h (rs6000_must_pass_in_stack):
11787 * config/rs6000/rs6000-call.c (rs6000_must_pass_in_stack): Likewise.
11788 (rs6000_parm_needs_stack): Update call accordingly.
11789 (setup_incoming_varargs): Likewise.
11791 2019-08-20 Richard Sandiford <richard.sandiford@arm.com>
11793 * target.def (callee_copies): Take a function_arg_info instead
11794 of a mode, type and named flag.
11795 * doc/tm.texi: Regenerate.
11796 * targhooks.h (hook_callee_copies_named): Take a function_arg_info
11797 instead of a mode, type and named flag.
11798 (hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false): Delete.
11799 (hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true): Likewise.
11800 (hook_bool_CUMULATIVE_ARGS_arg_info_true): New function.
11801 * targhooks.c (hook_callee_copies_named): Take a function_arg_info
11802 instead of a mode, type and named flag.
11803 (hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false): Delete.
11804 (hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true): Likewise.
11805 (hook_bool_CUMULATIVE_ARGS_arg_info_true): New function.
11806 * calls.h (reference_callee_copied): Take a function_arg_info
11807 instead of a mode, type and named flag.
11808 * calls.c (reference_callee_copied): Likewise.
11809 (initialize_argument_information): Update call accordingly.
11810 (emit_library_call_value_1): Likewise.
11811 * function.c (gimplify_parameters): Likewise.
11812 * config/aarch64/aarch64.c (TARGET_CALLEE_COPIES): Define to
11813 hook_bool_CUMULATIVE_ARGS_arg_info_false instead of
11814 hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false.
11815 * config/c6x/c6x.c (c6x_callee_copies): Delete.
11816 (TARGET_CALLEE_COPIES): Define to
11817 hook_bool_CUMULATIVE_ARGS_arg_info_true instead.
11818 * config/epiphany/epiphany.c (TARGET_CALLEE_COPIES): Define to
11819 hook_bool_CUMULATIVE_ARGS_arg_info_true instead of
11820 hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true.
11821 * config/mips/mips.c (mips_callee_copies): Take a function_arg_info
11822 instead of a mode, type and named flag.
11823 * config/mmix/mmix.c (TARGET_CALLEE_COPIES): Define to
11824 hook_bool_CUMULATIVE_ARGS_arg_info_true instead of
11825 hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true.
11826 * config/mn10300/mn10300.c (TARGET_CALLEE_COPIES): Likewise.
11827 * config/msp430/msp430.c (msp430_callee_copies): Delete.
11828 (TARGET_CALLEE_COPIES): Define to
11829 hook_bool_CUMULATIVE_ARGS_arg_info_true instead.
11830 * config/pa/pa.c (pa_callee_copies): Take a function_arg_info
11831 instead of a mode, type and named flag.
11832 * config/sh/sh.c (sh_callee_copies): Likewise.
11833 * config/v850/v850.c (TARGET_CALLEE_COPIES): Define to
11834 hook_bool_CUMULATIVE_ARGS_arg_info_true instead of
11835 hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true.
11837 2019-08-20 Richard Sandiford <richard.sandiford@arm.com>
11839 * target.def (function_arg_advance): Take a function_arg_info instead
11840 of a mode, type and named flag.
11841 * doc/tm.texi: Regenerate.
11842 * targhooks.h (default_function_arg_advance): Take a function_arg_info
11843 instead of a mode, type and named flag.
11844 * targhooks.c (default_function_arg_advance): Likewise.
11845 * calls.c (initialize_argument_information): Update call to
11846 targetm.calls.function_arg_advance.
11847 (emit_library_call_value_1): Likewise.
11848 * dse.c (get_call_args): Likewise.
11849 * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
11850 * function.c (assign_parms, gimplify_parameters): Likewise.
11851 * var-tracking.c (prepare_call_arguments): Likewise.
11852 * config/aarch64/aarch64.c (aarch64_function_arg_advance): Take a
11853 function_arg_info instead of a mode, type and named flag.
11854 (aarch64_setup_incoming_varargs): Update call accordingly.
11855 * config/alpha/alpha.c (alpha_function_arg_advance): Take a
11856 function_arg_info instead of a mode, type and named flag.
11857 (alpha_setup_incoming_varargs): Update call accordingly.
11858 * config/arc/arc.c (arc_function_arg_advance): Take a
11859 function_arg_info instead of a mode, type and named flag.
11860 (arc_setup_incoming_varargs): Update call accordingly.
11861 * config/arm/arm.c (arm_function_arg_advance): Take a
11862 function_arg_info instead of a mode, type and named flag.
11863 (cmse_func_args_or_return_in_stack): Update call accordingly.
11864 (arm_function_ok_for_sibcall): Likewise.
11865 (cmse_nonsecure_call_clear_caller_saved): Likewise.
11866 * config/avr/avr.c (avr_function_arg_advance): Take a
11867 function_arg_info instead of a mode, type and named flag.
11868 * config/bfin/bfin.c (bfin_function_arg_advance): Likewise.
11869 * config/c6x/c6x.c (c6x_function_arg_advance): Likewise.
11870 (c6x_call_saved_register_used): Update call accordingly.
11871 * config/cr16/cr16.c (cr16_function_arg_advance): Take a
11872 function_arg_info instead of a mode, type and named flag.
11873 * config/cris/cris.c (cris_function_arg_advance): Likewise.
11874 * config/csky/csky.c (csky_function_arg_advance): Likewise.
11875 (csky_setup_incoming_varargs): Update call accordingly.
11876 * config/epiphany/epiphany.c (epiphany_function_arg_advance): Take a
11877 function_arg_info instead of a mode, type and named flag.
11878 * config/fr30/fr30.c (fr30_function_arg_advance): Likewise.
11879 * config/frv/frv.c (frv_function_arg_advance): Likewise.
11880 * config/ft32/ft32.c (ft32_function_arg_advance): Likewise.
11881 * config/gcn/gcn.c (gcn_function_arg_advance): Likewise.
11882 * config/h8300/h8300.c (h8300_function_arg_advance): Likewise.
11883 * config/i386/i386.c (ix86_function_arg_advance): Likewise.
11884 (ix86_setup_incoming_varargs): Update call accordingly.
11885 * config/ia64/ia64.c (ia64_function_arg_advance): Take a
11886 function_arg_info instead of a mode, type and named flag.
11887 (ia64_setup_incoming_varargs): Update call accordingly.
11888 * config/iq2000/iq2000.c (iq2000_function_arg_advance): Take a
11889 function_arg_info instead of a mode, type and named flag.
11890 (iq2000_expand_prologue): Update call accordingly.
11891 * config/lm32/lm32.c (lm32_function_arg_advance): Take a
11892 function_arg_info instead of a mode, type and named flag.
11893 * config/m32c/m32c.c (m32c_function_arg_advance): Likewise.
11894 * config/m32r/m32r.c (m32r_function_arg_advance): Likewise.
11895 * config/m68k/m68k.c (m68k_function_arg_advance): Likewise.
11896 * config/mcore/mcore.c (mcore_function_arg_advance): Likewise.
11897 * config/microblaze/microblaze.c (microblaze_function_arg_advance):
11899 (microblaze_expand_prologue): Update call accordingly.
11900 * config/mips/mips.c (mips_function_arg_advance): Take a
11901 function_arg_info instead of a mode, type and named flag.
11902 (mips_setup_incoming_varargs): Update call accordingly.
11903 (mips_output_args_xfer): Likewise.
11904 * config/mmix/mmix.c (mmix_function_arg_advance): Take a
11905 function_arg_info instead of a mode, type and named flag.
11906 * config/mn10300/mn10300.c (mn10300_function_arg_advance): Likewise.
11907 * config/moxie/moxie.c (moxie_function_arg_advance): Likewise.
11908 * config/msp430/msp430.c (msp430_function_arg_advance): Likewise.
11909 * config/nds32/nds32.c (nds32_function_arg_advance): Likewise.
11910 * config/nios2/nios2.c (nios2_function_arg_advance): Likewise.
11911 (nios2_setup_incoming_varargs): Update call accordingly.
11912 * config/nvptx/nvptx.c (nvptx_function_arg_advance): Take a
11913 function_arg_info instead of a mode, type and named flag.
11914 * config/or1k/or1k.c (or1k_function_arg_advance): Likewise.
11915 * config/pa/pa.c (pa_function_arg_advance): Likewise.
11916 * config/pdp11/pdp11.c (pdp11_function_arg_advance): Likewise.
11917 * config/pru/pru.c (pru_function_arg_advance): Likewise.
11918 * config/riscv/riscv.c (riscv_function_arg_advance): Likewise.
11919 (riscv_setup_incoming_varargs): Update call accordingly.
11920 * config/rl78/rl78.c (rl78_function_arg_advance): Take a
11921 function_arg_info instead of a mode, type and named flag.
11922 * config/rs6000/rs6000-internal.h (rs6000_function_arg_advance):
11924 * config/rs6000/rs6000-call.c (rs6000_function_arg_advance): Likewise.
11925 (rs6000_parm_needs_stack): Update call accordingly.
11926 * config/rx/rx.c (rx_function_arg_advance): Take a function_arg_info
11927 instead of a mode, type and named flag.
11928 * config/s390/s390.c (s390_function_arg_advance): Likewise.
11929 (s390_call_saved_register_used): Update call accordingly.
11930 * config/sh/sh.c (sh_function_arg_advance): Take a function_arg_info
11931 instead of a mode, type and named flag.
11932 (sh_output_mi_thunk): Update call accordingly.
11933 * config/sparc/sparc.c (sparc_function_arg_advance): Take a
11934 function_arg_info instead of a mode, type and named flag.
11935 * config/spu/spu.c (spu_function_arg_advance): Likewise.
11936 (spu_setup_incoming_varargs): Update call accordingly.
11937 * config/stormy16/stormy16.c (xstormy16_function_arg_advance): Take a
11938 function_arg_info instead of a mode, type and named flag.
11939 * config/tilegx/tilegx.c (tilegx_function_arg_advance): Likewise.
11940 (tilegx_setup_incoming_varargs): Update call accordingly.
11941 * config/tilepro/tilepro.c (tilepro_function_arg_advance): Take a
11942 function_arg_info instead of a mode, type and named flag.
11943 (tilegx_setup_incoming_varargs): Update call accordingly.
11944 * config/v850/v850.c (v850_function_arg_advance): Take a
11945 function_arg_info instead of a mode, type and named flag.
11946 * config/vax/vax.c (vax_function_arg_advance): Likewise.
11947 * config/visium/visium.c (visium_function_arg_advance): Likewise.
11948 (visium_setup_incoming_varargs): Update call accordingly.
11949 * config/xtensa/xtensa.c (xtensa_function_arg_advance): Take a
11950 function_arg_info instead of a mode, type and named flag.
11952 2019-08-20 Richard Sandiford <richard.sandiford@arm.com>
11954 * target.def (function_arg, function_incoming_arg): Take a
11955 function_arg_info instead of a mode, tree and named flag.
11956 * doc/tm.texi: Regenerate.
11957 * targhooks.h (default_function_arg): Take a function_arg_info
11958 instead of a mode, tree and named flag.
11959 (default_function_incoming_arg): Likewise.
11960 * targhooks.c (default_function_arg): Likewise.
11961 (default_function_incoming_arg): Likewise.
11962 * calls.h (function_arg_info::end_marker_p): New function.
11963 (function_arg_info::end_marker): Likewise.
11964 * calls.c (prepare_call_address, initialize_argument_information)
11965 (expand_call, emit_library_call_value_1): Update calls to
11966 targetm.calls.function_arg and targetm.calls.function_incoming_arg.
11967 * dse.c: Include calls.h.
11968 (get_call_args): Update call to targetm.calls.function_arg.
11969 * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
11970 * var-tracking.c (prepare_call_arguments): Likewise.
11971 * function.c (assign_parm_find_entry_rtl): Update call to
11972 targetm.calls.function_incoming_arg.
11973 * config/aarch64/aarch64.c (aarch64_function_arg): Take a
11974 function_arg_info instead of a mode, tree and named flag.
11975 * config/alpha/alpha.c (alpha_function_arg): Likewise.
11976 * config/arc/arc.c (arc_function_arg): Likewise.
11977 * config/arm/arm.c (arm_function_arg): Likewise.
11978 (cmse_func_args_or_return_in_stack): Update call accordingly.
11979 (arm_function_ok_for_sibcall): Likewise.
11980 (cmse_nonsecure_call_clear_caller_saved): Likewise.
11981 * config/avr/avr.c (avr_function_arg): Take a function_arg_info
11982 instead of a mode, tree and named flag.
11983 * config/bfin/bfin.c (bfin_function_arg): Likewise.
11984 * config/c6x/c6x.c (c6x_function_arg): Likewise.
11985 (c6x_call_saved_register_used): Update call accordingly.
11986 * config/cr16/cr16.c (cr16_function_arg): Take a function_arg_info
11987 instead of a mode, tree and named flag.
11988 * config/cris/cris.c (cris_function_arg, cris_function_incoming_arg)
11989 (cris_function_arg_1): Likewise.
11990 * config/csky/csky.c (csky_function_arg): Likewise.
11991 * config/epiphany/epiphany.c (epiphany_function_arg): Likewise.
11992 * config/fr30/fr30.c (fr30_function_arg): Likewise.
11993 * config/frv/frv.c (frv_function_arg, frv_function_incoming_arg)
11994 (frv_function_arg_1): Likewise.
11995 * config/ft32/ft32.c (ft32_function_arg): Likewise.
11996 * config/gcn/gcn.c (gcn_function_arg): Likewise.
11997 * config/h8300/h8300.c (h8300_function_arg): Likewise.
11998 * config/i386/i386.c (ix86_function_arg): Likewise.
11999 * config/ia64/ia64.c (ia64_function_arg, ia64_function_incoming_arg)
12000 (ia64_function_arg_1): Likewise.
12001 * config/iq2000/iq2000.c (iq2000_function_arg): Likewise.
12002 (iq2000_expand_prologue, iq2000_pass_by_reference): Update call
12004 * config/lm32/lm32.c (lm32_function_arg): Take a function_arg_info
12005 instead of a mode, tree and named flag.
12006 * config/m32c/m32c.c (m32c_function_arg): Likewise.
12007 * config/m32r/m32r.c (m32r_function_arg): Likewise.
12008 * config/m68k/m68k.c (m68k_function_arg): Likewise.
12009 * config/mcore/mcore.c (mcore_function_arg): Likewise.
12010 * config/microblaze/microblaze.c (microblaze_function_arg): Likewise.
12011 (microblaze_expand_prologue): Update call accordingly.
12012 * config/mips/mips.c (mips_function_arg): Take a function_arg_info
12013 instead of a mode, tree and named flag.
12014 * config/mmix/mmix.c (mmix_function_incoming_arg, mmix_function_arg)
12015 (mmix_function_arg_1): Likewise.
12016 * config/mn10300/mn10300.c (mn10300_function_arg): Likewise.
12017 * config/moxie/moxie.c (moxie_function_arg): Likewise.
12018 * config/msp430/msp430.c (msp430_function_arg): Likewise.
12019 * config/nds32/nds32.c (nds32_function_arg): Likewise.
12020 * config/nios2/nios2.c (nios2_function_arg): Likewise.
12021 * config/nvptx/nvptx.c (nvptx_function_arg): Likewise.
12022 (nvptx_function_incoming_arg): Likewise.
12023 * config/or1k/or1k.c (or1k_function_arg): Likewise.
12024 * config/pa/pa.c (pa_function_arg): Likewise.
12025 * config/pdp11/pdp11.c (pdp11_function_arg): Likewise.
12026 * config/pru/pru.c (pru_function_arg): Likewise.
12027 * config/riscv/riscv.c (riscv_function_arg): Likewise.
12028 * config/rl78/rl78.c (rl78_function_arg): Likewise.
12029 * config/rs6000/rs6000-internal.h (rs6000_function_arg): Likewise.
12030 * config/rs6000/rs6000-call.c (rs6000_function_arg): Likewise.
12031 (rs6000_parm_needs_stack): Update call accordingly.
12032 * config/rx/rx.c (rx_function_arg): Take a function_arg_info
12033 instead of a mode, tree and named flag.
12034 * config/s390/s390.c (s390_function_arg): Likewise.
12035 (s390_call_saved_register_used): Update call accordingly.
12036 * config/sh/sh.c (sh_function_arg): Take a function_arg_info
12037 instead of a mode, tree and named flag.
12038 (sh_output_mi_thunk): Update call accordingly.
12039 * config/sparc/sparc.c (sparc_function_arg_1, sparc_function_arg)
12040 (sparc_function_incoming_arg): Take a function_arg_info instead of
12041 a mode, tree and named flag.
12042 * config/spu/spu.c (spu_function_arg): Likewise.
12043 * config/stormy16/stormy16.c (xstormy16_function_arg): Likewise.
12044 * config/tilegx/tilegx.c (tilegx_function_arg): Likewise.
12045 * config/tilepro/tilepro.c (tilepro_function_arg): Likewise.
12046 * config/v850/v850.c (v850_function_arg): Likewise.
12047 * config/vax/vax.c (vax_function_arg): Likewise.
12048 * config/visium/visium.c (visium_function_arg): Likewise.
12049 * config/xtensa/xtensa.c (xtensa_function_arg_1, xtensa_function_arg)
12050 (xtensa_function_incoming_arg): Likewise.
12052 2019-08-20 Richard Sandiford <richard.sandiford@arm.com>
12054 * target.def (setup_incoming_varargs): Take a function_arg_info
12055 instead of a mode and tree.
12056 * doc/tm.texi: Regenerate.
12057 * targhooks.h (default_setup_incoming_varargs): Take a
12058 function_arg_info instead of a mode and tree.
12059 * targhooks.c (default_setup_incoming_varargs): Likewise.
12060 * config/aarch64/aarch64.c (aarch64_setup_incoming_varargs): Likewise.
12061 * config/alpha/alpha.c (alpha_setup_incoming_varargs): Likewise.
12062 * config/arc/arc.c (arc_setup_incoming_varargs): Likewise.
12063 * config/arm/arm.c (arm_setup_incoming_varargs): Likewise.
12064 * config/bfin/bfin.c (setup_incoming_varargs): Likewise.
12065 * config/cris/cris.c (cris_setup_incoming_varargs): Likewise.
12066 * config/csky/csky.c (csky_setup_incoming_varargs): Likewise.
12067 * config/epiphany/epiphany.c (epiphany_setup_incoming_varargs):
12069 * config/fr30/fr30.c (fr30_setup_incoming_varargs): Likewise.
12070 * config/frv/frv.c (frv_setup_incoming_varargs): Likewise.
12071 * config/ft32/ft32.c (ft32_setup_incoming_varargs): Likewise.
12072 * config/i386/i386.c (ix86_setup_incoming_varargs): Likewise.
12073 * config/ia64/ia64.c (ia64_setup_incoming_varargs): Likewise.
12074 * config/iq2000/iq2000.c (iq2000_setup_incoming_varargs): Likewise.
12075 * config/lm32/lm32.c (lm32_setup_incoming_varargs): Likewise.
12076 * config/m32r/m32r.c (m32r_setup_incoming_varargs): Likewise.
12077 * config/mcore/mcore.c (mcore_setup_incoming_varargs): Likewise.
12078 * config/mips/mips.c (mips_setup_incoming_varargs): Likewise.
12079 * config/mmix/mmix.c (mmix_setup_incoming_varargs): Likewise.
12080 * config/moxie/moxie.c (moxie_setup_incoming_varargs): Likewise.
12081 * config/nds32/nds32.c (nds32_setup_incoming_varargs): Likewise.
12082 * config/nios2/nios2.c (nios2_setup_incoming_varargs): Likewise.
12083 * config/riscv/riscv.c (riscv_setup_incoming_varargs): Likewise.
12084 * config/rs6000/rs6000-internal.h (setup_incoming_varargs): Likewise.
12085 * config/rs6000/rs6000-call.c (setup_incoming_varargs): Likewise.
12086 * config/sh/sh.c (sh_setup_incoming_varargs): Likewise.
12087 * config/spu/spu.c (spu_setup_incoming_varargs): Likewise.
12088 * config/tilegx/tilegx.c (tilegx_setup_incoming_varargs): Likewise.
12089 * config/tilepro/tilepro.c (tilepro_setup_incoming_varargs): Likewise.
12090 * config/visium/visium.c (visium_setup_incoming_varargs): Likewise.
12091 * function.c (assign_parms_setup_varargs): Update call to
12092 targetm.calls.setup_incoming_varargs.
12094 2019-08-20 Richard Sandiford <richard.sandiford@arm.com>
12096 * target.def (pass_by_reference): Take a function_arg_info instead
12097 of a mode, type and named flag.
12098 * doc/tm.texi: Regenerate.
12099 * targhooks.h (hook_pass_by_reference_must_pass_in_stack): Update
12101 (hook_bool_CUMULATIVE_ARGS_arg_info_false): Declare.
12102 * targhooks.c (hook_pass_by_reference_must_pass_in_stack): Take a
12103 function_arg_info instead of a mode, type and named flag.
12104 (hook_bool_CUMULATIVE_ARGS_arg_info_false): New function.
12105 * calls.h (pass_by_reference): Take a function_arg_info instead of a
12106 mode, type and named flag.
12107 * calls.c (pass_by_reference): Likewise.
12108 (pass_va_arg_by_reference): Update call accordingly.
12109 (initialize_argument_information): Likewise.
12110 (emit_library_call_value_1): Likewise.
12111 * function.c (assign_parm_find_data_types): Likewise.
12112 * var-tracking.c (prepare_call_arguments): Likewise.
12113 * stor-layout.c: Include calls.h.
12114 (compute_record_mode): Update call to targetm.calls.pass_by_reference.
12115 * config/aarch64/aarch64.c (aarch64_pass_by_reference): Take a
12116 function_arg_info instead of a mode, type and named flag.
12117 * config/alpha/alpha.c (alpha_pass_by_reference): Likewise.
12118 * config/arc/arc.c (arc_pass_by_reference): Likewise.
12119 * config/arm/arm.c (arm_pass_by_reference): Likewise.
12120 * config/bfin/bfin.c (bfin_pass_by_reference): Likewise.
12121 * config/c6x/c6x.c (c6x_pass_by_reference): Likewise.
12122 (c6x_call_saved_register_used): Update call to pass_by_reference.
12123 * config/cris/cris.c (cris_pass_by_reference): Take a
12124 function_arg_info instead of a mode, type and named flag.
12125 * config/epiphany/epiphany.c (epiphany_pass_by_reference): Take a
12126 function_arg_info instead of a mode, type and named flag.
12127 (epiphany_arg_partial_bytes): Update call accordingly.
12128 * config/ft32/ft32.c (ft32_pass_by_reference): Take a
12129 function_arg_info instead of a mode, type and named flag.
12130 (ft32_arg_partial_bytes): Update call accordingly.
12131 * config/i386/i386.c (ix86_pass_by_reference): Take a
12132 function_arg_info instead of a mode, type and named flag.
12133 * config/iq2000/iq2000.c (iq2000_pass_by_reference): Likewise.
12134 * config/m32c/m32c.c (m32c_pass_by_reference): Likewise.
12135 * config/m32r/m32r.c (m32r_pass_by_reference): Likewise.
12136 (m32r_return_in_memory): Update call accordingly.
12137 * config/mips/mips.c (mips_pass_by_reference): Take a
12138 function_arg_info instead of a mode, type and named flag.
12139 * config/mmix/mmix.c (mmix_pass_by_reference): Likewise.
12140 * config/mn10300/mn10300.c (mn10300_pass_by_reference): Likewise.
12141 * config/moxie/moxie.c (moxie_pass_by_reference): Likewise.
12142 (moxie_arg_partial_bytes): Update call accordingly.
12143 * config/msp430/msp430.c (msp430_pass_by_reference): Take a
12144 function_arg_info instead of a mode, type and named flag.
12145 * config/nvptx/nvptx.c (nvptx_pass_by_reference): Likewise.
12146 * config/or1k/or1k.c (or1k_pass_by_reference): Likewise.
12147 * config/pa/pa.c (pa_pass_by_reference): Likewise.
12148 * config/riscv/riscv.c (riscv_pass_by_reference): Likewise.
12149 (riscv_return_in_memory): Update call accordingly.
12150 * config/rs6000/rs6000-internal.h (rs6000_pass_by_reference): Take a
12151 function_arg_info instead of a mode, type and named flag.
12152 * config/rs6000/rs6000-call.c (rs6000_pass_by_reference): Likewise.
12153 (rs6000_parm_needs_stack): Update call to pass_by_reference.
12154 * config/s390/s390.c (s390_pass_by_reference): Take a
12155 function_arg_info instead of a mode, type and named flag.
12156 (s390_call_saved_register_used): Update call accordingly.
12157 * config/sh/sh.c (sh_pass_by_reference): Take a function_arg_info
12158 instead of a mode, type and named flag.
12159 * config/sparc/sparc.c (sparc_pass_by_reference): Likewise.
12160 * config/spu/spu.c (spu_pass_by_reference): Likewise.
12161 * config/tilegx/tilegx.c (tilegx_pass_by_reference): Likewise.
12162 * config/tilepro/tilepro.c (tilepro_pass_by_reference): Likewise.
12163 * config/v850/v850.c (v850_pass_by_reference): Likewise.
12164 * config/visium/visium.c (visium_pass_by_reference): Likewise.
12166 2019-08-20 Richard Sandiford <richard.sandiford@arm.com>
12168 * target.def (arg_partial_bytes): Take a function_arg_info instead
12169 of a mode, type and named flag.
12170 * doc/tm.texi: Regenerate.
12171 * target.h (function_arg_info): Declare.
12172 * calls.h (function_arg_info): New class.
12173 * targhooks.h (hook_int_CUMULATIVE_ARGS_mode_tree_bool_0): Delete.
12174 (hook_int_CUMULATIVE_ARGS_arg_info_0): Declare.
12175 * targhooks.c (hook_int_CUMULATIVE_ARGS_mode_tree_bool_0): Delete.
12176 (hook_int_CUMULATIVE_ARGS_arg_info_0): New function.
12177 * calls.c (initialize_argument_information): Update call to
12178 targetm.calls.partial_bytes.
12179 (emit_library_call_value_1): Likewise.
12180 * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
12181 * function.c (assign_parm_find_entry_rtl): Likewise.
12182 * config/alpha/alpha.c (alpha_arg_partial_bytes): Take a
12183 function_arg_info instead of a mode, type and named flag.
12184 * config/arc/arc.c (arc_arg_partial_bytes): Likewise.
12185 * config/arm/arm.c (arm_arg_partial_bytes): Likewise.
12186 (cmse_func_args_or_return_in_stack): Update accordingly.
12187 * config/bfin/bfin.c (bfin_arg_partial_bytes): Take a
12188 function_arg_info instead of a mode, type and named flag.
12189 * config/cris/cris.c (cris_arg_partial_bytes): Likewise.
12190 * config/csky/csky.c (csky_arg_partial_bytes): Likewise.
12191 * config/epiphany/epiphany.c (epiphany_arg_partial_bytes): Likewise.
12192 * config/fr30/fr30.c: Include calls.h.
12193 (fr30_arg_partial_bytes): Take a function_arg_info instead of a mode,
12194 type and named flag.
12195 * config/frv/frv.c: Include calls.h.
12196 (frv_arg_partial_bytes): Take a function_arg_info instead of a mode,
12197 type and named flag.
12198 * config/ft32/ft32.c (ft32_arg_partial_bytes): Likewise.
12199 * config/gcn/gcn.c (gcn_arg_partial_bytes): Likewise.
12200 * config/ia64/ia64.c (ia64_arg_partial_bytes): Likewise.
12201 * config/iq2000/iq2000.c (iq2000_arg_partial_bytes): Likewise.
12202 * config/m32r/m32r.c (m32r_arg_partial_bytes): Likewise.
12203 * config/mcore/mcore.c (mcore_arg_partial_bytes): Likewise.
12204 * config/microblaze/microblaze.c (function_arg_partial_bytes):
12206 * config/mips/mips.c (mips_arg_partial_bytes): Likewise.
12207 * config/mn10300/mn10300.c (mn10300_arg_partial_bytes): Likewise.
12208 * config/moxie/moxie.c (moxie_arg_partial_bytes): Likewise.
12209 * config/msp430/msp430.c (msp430_arg_partial_bytes): Likewise.
12210 * config/nds32/nds32.c (nds32_arg_partial_bytes): Likewise.
12211 * config/nios2/nios2.c (nios2_arg_partial_bytes): Likewise.
12212 * config/pa/pa.c (pa_arg_partial_bytes): Likewise.
12213 * config/pru/pru.c (pru_arg_partial_bytes): Likewise.
12214 * config/riscv/riscv.c (riscv_arg_partial_bytes): Likewise.
12215 * config/rs6000/rs6000-internal.h (rs6000_arg_partial_bytes): Likewise.
12216 * config/rs6000/rs6000-call.c (rs6000_arg_partial_bytes): Likewise.
12217 (rs6000_parm_needs_stack): Update call accordingly.
12218 * config/sh/sh.c (sh_arg_partial_bytes): Take a
12219 function_arg_info instead of a mode, type and named flag.
12220 * config/sparc/sparc.c (sparc_arg_partial_bytes): Likewise.
12221 * config/v850/v850.c (v850_arg_partial_bytes): Likewise.
12223 2019-08-20 Richard Sandiford <richard.sandiford@arm.com>
12225 * calls.h (must_pass_va_arg_in_stack): Declare.
12226 * calls.c (must_pass_va_arg_in_stack): New function.
12227 * config/alpha/alpha.c (alpha_gimplify_va_arg_1): Use it.
12228 * config/sh/sh.c (sh_gimplify_va_arg_expr): Likewise.
12229 * config/stormy16/stormy16.c (xstormy16_gimplify_va_arg_expr):
12231 * config/xtensa/xtensa.c (xtensa_gimplify_va_arg_expr): Likewise.
12233 2019-08-20 Richard Sandiford <richard.sandiford@arm.com>
12235 * calls.h (pass_va_arg_by_reference): Declare.
12236 * calls.c (pass_va_arg_by_reference): New function.
12237 * config/aarch64/aarch64.c (aarch64_gimplify_va_arg_expr): Use it.
12238 * config/alpha/alpha.c (alpha_gimplify_va_arg): Likewise.
12239 * config/gcn/gcn.c (gcn_gimplify_va_arg_expr): Likewise.
12240 * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
12241 * config/ia64/ia64.c (ia64_gimplify_va_arg): Likewise.
12242 * config/mips/mips.c (mips_std_gimplify_va_arg_expr): Likewise.
12243 (mips_gimplify_va_arg_expr): Likewise.
12244 * config/msp430/msp430.c (msp430_gimplify_va_arg_expr): Likewise.
12245 * config/pa/pa.c (hppa_gimplify_va_arg_expr): Likewise.
12246 * config/rs6000/rs6000-call.c (rs6000_gimplify_va_arg): Likewise.
12247 * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
12248 * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
12249 * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
12250 * config/tilegx/tilegx.c (tilegx_gimplify_va_arg_expr): Likewise.
12251 * config/tilepro/tilepro.c (tilepro_gimplify_va_arg_expr): Likewise.
12252 * config/visium/visium.c (visium_gimplify_va_arg): Likewise.
12253 * config/xtensa/xtensa.c (xtensa_gimplify_va_arg_expr): Likewise.
12254 * targhooks.c (std_gimplify_va_arg_expr): Likewise.
12256 2019-08-20 Richard Biener <rguenther@suse.de>
12259 * config/i386/i386-features.c (general_scalar_chain::convert_op):
12260 Use (vec_merge (vec_duplicate..)) style vector from scalar move.
12261 (convert_scalars_to_vector): Add timode_p parameter and use it
12262 to guard TImode-only operation.
12263 (pass_stv::gate): Adjust so STV runs twice for TARGET_64BIT.
12264 (pass_stv::execute): Pass down timode_p.
12266 2019-08-20 Lili Cui <lili.cui@intel.com>
12268 * common/config/i386/i386-common.c
12269 (processor_names): Add tigerlake and cooperlake.
12270 (processor_alias_table): Add tigerlake and cooperlake.
12271 * config.gcc: Add -march=tigerlake and cooperlake.
12272 * config/i386/driver-i386.c
12273 (host_detect_local_cpu): Detect tigerlake and cooperlake.
12274 Add "has_avx" to classify processor.
12275 * config/i386/i386-builtins.c (processor_model) :
12276 Add M_INTEL_COREI7_TIGERLAKE and M_INTEL_COREI7_COOPERLAKE.
12277 (arch_names_table): Add tigerlake and cooperlake.
12278 (get_builtin_code_for_version): Handle PROCESSOR_TIGERLAKE
12279 and PROCESSOR_COOPERLAKE.
12280 * config/i386/i386-c.c
12281 (ix86_target_macros_internal): Handle tigerlake and cooperlake.
12282 * config/i386/i386-options.c
12283 (m_TIGERLAKE): Define.
12284 (m_COOPERLAKE): Ditto.
12285 (m_CORE_AVX512): Ditto.
12286 (processor_cost_table): Add cascadelake.
12287 (ix86_option_override_internal): Hadle PTA_MOVDIRI, PTA_MOVDIR64B.
12288 * config/i386/i386.h
12289 (ix86_size_cost): Define TARGET_TIGERLAKE and TARGET_COOPERLAKE.
12290 (processor_type): Add PROCESSOR_TIGERLAKE and PROCESSOR_COOPERLAKE.
12291 (PTA_MOVDIRI): Ditto.
12292 (PTA_MOVDIR64B): Ditto.
12293 (PTA_COOPERLAKE): Ditto.
12294 (PTA_TIGERLAKE): Ditto.
12295 (processor_type): Add PROCESSOR_TIGERLAKE and PROCESSOR_COOPERLAKE.
12296 * doc/extend.texi: Add tigerlake and cooperlake.
12297 * doc/invoke.texi: Add tigerlake and cooperlake.
12299 2019-08-20 Gerald Pfeifer <gerald@pfeifer.com>
12301 * doc/install.texi (Specific, alpha): Remove note to use
12302 binutils 2.11.2 or later.
12304 2019-08-20 Bernd Edlinger <bernd.edlinger@hotmail.de>
12306 PR middle-end/89544
12307 * function.c (assign_parm_find_stack_rtl): Use larger alignment
12310 2019-08-19 Joel Hutton <Joel.Hutton@arm.com>
12312 * config/aarch64/aarch64-protos.h (aarch64_fpconst_pow2_recip): New prototype
12313 * config/aarch64/aarch64.c (aarch64_fpconst_pow2_recip): New function
12314 * config/aarch64/aarch64.md (*aarch64_<su_optab>cvtf<fcvt_target><GPF:mode>2_mult): New pattern
12315 (*aarch64_<su_optab>cvtf<fcvt_iesize><GPF:mode>2_mult): New pattern
12316 * config/aarch64/constraints.md (Dt): New constraint
12317 * config/aarch64/predicates.md (aarch64_fpconst_pow2_recip): New predicate
12319 2019-08-19 Richard Biener <rguenther@suse.de>
12321 PR tree-optimization/91403
12322 * tree-scalar-evolution.c (follow_ssa_edge_binary): Inline
12323 cases we can handle with tail-recursion...
12324 (follow_ssa_edge_expr): ... here. Do so.
12326 2019-08-19 Kito Cheng <kito.cheng@sifive.com>
12329 * toplev.c (process_options): Check TARGET_ASAN_SHADOW_OFFSET is
12330 implemented for -fsanitize=kernel-address, and merge check logic
12331 with -fsanitize=address.
12333 2019-08-18 Iain Sandoe <iain@sandoe.co.uk>
12335 * config/rs6000/darwin.h (TARGET_OS_CPP_BUILTINS): Add asserts
12336 for cpu and machine. Factor 64/32b builtins.
12338 2019-08-18 Gerald Pfeifer <gerald@pfeifer.com>
12340 * doc/install.texi (Specific, bfin): blackfin.uclinux.org is
12341 gone, point to sourceforge.net.
12343 2019-08-17 Gerald Pfeifer <gerald@pfeifer.com>
12345 * doc/ux.texi (User Experience Guidelines): Update reference.
12347 2019-08-17 Gerald Pfeifer <gerald@pfeifer.com>
12349 * doc/include/gpl_v3.texi (Copying): Adjust the link to "Why
12352 2019-08-16 Eric Botcazou <ebotcazou@adacore.com>
12354 * tree-sra.c (build_reconstructed_reference): Return NULL_TREE instead
12355 of NULL. Add guard for broken VIEW_CONVERT_EXPRs.
12357 2019-08-16 Martin Sebor <msebor@redhat.com>
12359 * tree.def (TYPE_SIZE): Clarify.
12360 * tree.h (TYPE_SIZE, TYPE_SIZE_UNIT, DECL_SIZE): Add comments.
12362 2019-08-16 Bernd Edlinger <bernd.edlinger@hotmail.de>
12364 PR tree-optimization/91109
12365 * lra-int.h (lra_need_for_scratch_reg_p): Declare.
12366 * lra.c (lra): Use lra_need_for_scratch_reg_p.
12367 * lra-spills.c (lra_need_for_scratch_reg_p): New function.
12369 2019-08-16 Uroš Bizjak <ubizjak@gmail.com>
12371 * config/i386/mmx.md (mmxdoublemode): New mode attribute.
12372 (mmx_uavg<mode>3): Macroize expaner from mmx_uavgv8qi3 and
12373 mmx_uavgv4hi3 using MMXMODE12 mode iterator.
12374 (uavg<mode>3_ceil): New expander.
12375 * config/i386/sse.md (uavg<mode>3_ceil): Use ssedoublemode
12376 mode iterator when creating CONST1_RTX.
12377 (<sse2_avx2>_uavg<mode>3<mask_name>): Ditto.
12378 (*<sse2_avx2>_uavg<mode>3<mask_name>): Use ssedoublemode
12379 mode iterator for const1_operand predicate.
12381 2019-08-16 Richard Biener <rguenther@suse.de>
12383 * tree-scalar-evolution.c (follow_ssa_edge_expr): Declare.
12384 (follow_ssa_edge_binary): Call follow_ssa_edge_expr instead of
12386 (follow_ssa_edge_in_condition_phi_branch): Likewise.
12387 (analyze_evolution_in_loop): Likewise.
12388 (follow_ssa_edge, follow_ssa_edge_in_rhs): Inline into ...
12389 (follow_ssa_edge_expr): ... here. Refactor code.
12391 2019-08-16 Richard Biener <rguenther@suse.de>
12394 * config/i386/i386-features.c
12395 (general_scalar_chain::replace_with_subreg): Stop at memory operands.
12397 2019-08-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12400 * gensupport.c (has_subst_attribute): Error out on set_attr_alternative
12401 only if subst_name matches curr_attr string.
12403 2019-08-16 Richard Biener <rguenther@suse.de>
12405 * tree-ssa-forwprop.c (simplify_builtin_call): Do not remove
12406 stmt at gsi_p, instead replace it with a NOP removed later.
12407 (pass_forwprop::execute): Fully propagate lattice, DCE stmts
12408 that became dead because of that.
12410 2019-08-16 Aldy Hernandez <aldyh@redhat.com>
12412 * gimple-ssa-evrp-analyze.c (record_ranges_from_phis): Skip PHIs
12413 for which we can't represent a range.
12414 * ipa-cp.c (ipcp_vr_lattice::set_to_bottom): Pass type to
12416 * tree-ssa-threadedge.c (record_temporary_equivalences_from_phis):
12417 Set VR_UNDEFINED if type is not supported.
12418 * tree-ssanames.c (get_range_info): Pass type to set_varying.
12419 * tree-vrp.c (value_range_base::check): Assert that a varying has
12421 (value_range_base::equal_p): Early bail for undefines.
12422 (value_range_base::set_varying): Accept a type.
12423 (value_range::set_varying): Same.
12424 (value_range_base::type): VARYING can have a type, while UNDEFINE
12426 (value_range_base::dump): Print type for VARYING nodes.
12427 (value_range_base::set): Add type to VARYING.
12428 (extract_range_from_multiplicative_op): Pass type to set_varying.
12429 (extract_range_from_binary_expr): Same.
12430 (value_range_base::intersect_helper): Same.
12431 (value_range_base::union_helper): Same.
12432 (value_range_base::normalize_symbolics): Same.
12433 (determine_value_range_1): Same.
12434 * tree-vrp.h (class value_range_base): Add type to set_varying.
12435 Add prototype for dump(void).
12436 Add prototype for supports_type_p.
12437 (class value_range): Add type to set_varying.
12438 Add prototype for dump(void).
12439 * vr-values.c (set_value_range_to_truthvalue): Pass type to
12441 (vr_values::get_lattice_entry): Set varying even if propagation
12443 Pass type to set_varying.
12444 (vr_values::get_value_range): Remove vr_const_varying.
12445 Reallocate the lattice if needed.
12446 (vr_values::update_value_range): Pass type to set_varying.
12447 (vr_values::extract_range_for_var_from_comparison_expr): Same.
12448 (vr_values::extract_range_from_binary_expr): Same.
12449 (vr_values::extract_range_from_unary_expr): Same.
12450 (vr_values::extract_range_from_cond_expr): Same.
12451 (vr_values::check_for_binary_op_overflow): Same.
12452 (vr_values::extract_range_basic): Same.
12453 (vr_values::extract_range_from_assignment): Same.
12454 (vr_values::vr_values): Increase size of num_vr_values.
12455 (vr_values::extract_range_from_phi_node): Pass type to
12458 2019-08-15 H.J. Lu <hongjiu.lu@intel.com>
12461 * config/i386/i386.c (inline_memory_move_cost): Use hard_register
12462 for costs of hard register moves.
12463 (ix86_register_move_cost): Likewise.
12464 * config/i386/i386.h (processor_costs): Move costs of hard
12465 register moves to hard_register. Add int_load, int_store,
12466 xmm_move, ymm_move, zmm_move, sse_to_integer, integer_to_sse,
12467 sse_load, sse_store, sse_unaligned_load and sse_unaligned_store
12468 for costs of RTL expressions.
12469 * config/i386/x86-tune-costs.h: Move costs of hard register
12470 moves to hard_register. Duplicate int_load, int_store,
12471 xmm_move, ymm_move, zmm_move, sse_to_integer, integer_to_sse,
12472 sse_load, sse_store for costs of RTL expressions.
12474 2019-08-15 Richard Sandiford <richard.sandiford@arm.com>
12476 * target.def (setup_incoming_vararg_bounds): Remove.
12477 * doc/tm.texi.in (TARGET_SETUP_INCOMING_VARARG_BOUNDS): Remove.
12478 * doc/tm.texi: Regenerate.
12479 * targhooks.c (default_setup_incoming_vararg_bounds): Delete.
12480 * targhooks.h (default_setup_incoming_vararg_bounds): Likewise.
12481 * config/i386/i386.c (ix86_setup_incoming_vararg_bounds): Likewise.
12482 (TARGET_SETUP_INCOMING_VARARG_BOUNDS): Likewise.
12484 2019-08-15 Jozef Lawrynowicz <jozef.l@mittosystems.com>
12486 MSP430: Fix lines over 80 characters long in
12487 config/msp430/*.{c,h} files
12489 * config/msp430/driver-msp430.c (msp430_select_cpu): Fix format
12490 specifier in string.
12491 (msp430_select_hwmult_lib): Split line more than 80 characters long.
12492 * config/msp430/msp430-devices.c (msp430_extract_mcu_data): Remove
12493 redundant old comment.
12494 * config/msp430/msp430-protos.h (msp430_output_aligned_decl_common):
12495 Split line more than 80 characters long.
12496 * config/msp430/msp430.c (msp430_option_override): Likewise.
12497 (msp430_return_in_memory): Likewise.
12498 (msp430_gimplify_va_arg_expr): Likewise.
12499 (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise.
12500 (msp430_legitimate_constant): Likewise.
12501 (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Likewise.
12502 (msp430_attr): Likewise.
12503 (msp430_data_attr): Likewise.
12504 (msp430_start_function): Likewise.
12505 (gen_prefix): Likewise.
12506 (msp430_init_sections): Likewise.
12507 (msp430_select_section): Likewise.
12508 (msp430_function_section): Likewise.
12509 (msp430_unique_section): Likewise.
12510 (msp430_output_aligned_decl_common): Likewise.
12511 (msp430_do_not_relax_short_jumps): Likewise.
12512 (msp430_init_builtins): Likewise.
12513 (msp430_expand_delay_cycles): Likewise.
12514 (msp430_expand_prologue): Likewise.
12515 (msp430_expand_epilogue): Likewise.
12516 (msp430_expand_helper): Likewise.
12517 (msp430_split_movsi): Likewise.
12518 (msp430_print_operand): Likewise.
12519 (msp430_return_addr_rtx): Likewise.
12520 (msp430x_extendhisi): Likewise.
12521 * config/msp430/msp430.h (STARTFILE_SPEC): Likewise.
12522 (ASM_SPEC): Likewise.
12523 Remove very obvious comments.
12524 (LIB_SPEC): Split line more than 80 characters long.
12525 (EH_RETURN_HANDLER_RTX): Likewise.
12526 (HARD_REGNO_CALLER_SAVE_MODE): Likewise.
12528 2019-08-15 Jozef Lawrynowicz <jozef.l@mittosystems.com>
12530 MSP430: Fix whitespace errors and incorrect indentation in
12531 config/msp430/*.{c,h} files
12533 * config/msp430/driver-msp430.c (msp430_select_cpu): Fix indentation.
12534 (msp430_select_hwmult_lib): Likewise.
12535 * config/msp430/msp430-devices.c (parse_devices_csv_1): Likewise.
12536 (msp430_extract_mcu_data): Likewise.
12537 (struct t_msp430_mcu_data): Likewise.
12538 * config/msp430/msp430.c (struct machine_function): Remove whitespace
12539 before left square bracket.
12540 (msp430_option_override): Fix indentation.
12541 (msp430_hard_regno_nregs_with_padding): Likewise.
12542 (msp430_initial_elimination_offset): Likewise.
12543 (msp430_special_register_convention_p): Remove whitespace before left
12544 square bracket and after exclamation mark.
12545 (msp430_evaluate_arg): Likewise.
12546 (msp430_callee_copies): Fix indentation.
12547 (msp430_gimplify_va_arg_expr): Likewise.
12548 (msp430_function_arg_advance): Remove whitespace before left square
12550 (reg_ok_for_addr): Likewise.
12551 (msp430_preserve_reg_p): Likewise.
12552 (msp430_compute_frame_info): Likewise.
12553 (msp430_asm_output_addr_const_extra): Add space between function name
12554 and open parenthesis.
12555 (has_section_name): Fix indentation.
12556 (msp430_attr): Remove trailing whitespace.
12557 (msp430_section_attr): Likewise.
12558 (msp430_data_attr): Likewise.
12559 (struct msp430_attribute_table): Fix comment and whitespace.
12560 (msp430_start_function): Remove whitespace before left square bracket.
12561 Add space between function name and open parenthesis.
12562 (msp430_select_section): Remove trailing whitespace.
12563 (msp430_section_type_flags): Remove trailing whitespace.
12564 (msp430_unique_section): Remove space before closing parenthesis.
12565 (msp430_output_aligned_decl_common): Change 8 spaces to a tab.
12566 (msp430_builtins): Remove whitespace before left square bracket.
12567 (msp430_init_builtins): Fix indentation.
12568 (msp430_expand_prologue): Remove whitespace before left square bracket.
12569 Remove space before closing parenthesis.
12570 (msp430_expand_epilogue): Remove whitespace before left square bracket.
12571 (msp430_split_movsi): Remove space before closing parenthesis.
12572 (helper_function_name_mappings): Fix indentation.
12573 (msp430_use_f5_series_hwmult): Fix whitespace.
12574 (use_32bit_hwmult): Likewise.
12575 (msp430_no_hwmult): Likewise.
12576 (msp430_output_labelref): Remove whitespace before left square bracket.
12577 (msp430_print_operand_raw): Likewise.
12578 (msp430_print_operand_addr): Likewise.
12579 (msp430_print_operand): Add two spaces after '.' in comment.
12580 Fix trailing whitespace.
12581 (msp430x_extendhisi): Fix indentation.
12582 * config/msp430/msp430.h (TARGET_CPU_CPP_BUILTINS): Change 8 spaces to
12584 (PC_REGNUM): Likewise.
12585 (STACK_POINTER_REGNUM): Likewise.
12586 (CC_REGNUM): Likewise.
12588 2019-08-15 Richard Biener <rguenther@suse.de>
12591 * config/i386/i386-features.c (gen_gpr_to_xmm_move_src): New
12593 (general_scalar_chain::make_vector_copies): Use it.
12595 2019-08-15 Bernd Edlinger <bernd.edlinger@hotmail.de>
12597 * function.c (assign_parm_setup_reg): Handle misaligned stack arguments.
12599 2019-08-15 Martin Liska <mliska@suse.cz>
12601 * tree-ssa-dce.c (propagate_necessity): We can't reach now
12602 operators with no arguments.
12603 (eliminate_unnecessary_stmts): Likewise here.
12605 2019-08-15 Uroš Bizjak <ubizjak@gmail.com>
12607 * config/i386/i386-features.c (general_scalar_chain::convert_insn)
12608 <case COMPARE>: Revert 2019-08-14 change.
12609 (convertible_comparison_p): Revert 2019-08-14 change. Return false
12610 for (TARGET_64BIT || mode != DImode).
12612 2019-08-15 Aldy Hernandez <aldyh@redhat.com>
12614 * tree-vrp.c (value_range_base::set): Merge in code from
12615 value_range_base::set_and_canonicalize.
12616 Enforce canonicalization at set time.
12617 Normalize [MIN, MAX] into VARYING and ~[MIN, MAX] into UNDEFINED.
12618 (value_range_base::set_undefined): Inline call to set().
12619 (value_range_base::set_varying): Same.
12620 (value_range_base::singleton_p): Handle VR_ANTI_RANGEs.
12621 (vrp_val_max): New argument handle_pointers.
12622 (vrp_val_min): Same.
12623 (ranges_from_anti_range): Same.
12624 (extract_range_into_wide_ints): Use tree argument instead of sign
12626 (extract_range_from_multiplicative_op): Take in tree type instead
12627 of precision and sign. Adapt function for canonicalized ranges.
12628 (extract_range_from_binary_expr): Pass type to
12629 extract_range_from_multiplicative_op.
12630 Adapt for canonicalized ranges.
12631 (extract_range_from_unary_expr): Same.
12632 (value_range_base::intersect_helper): Adjust for canonicalized
12634 (value_range_base::union_helper): Same.
12635 (value_range_base::normalize_symbolics): New.
12636 * tree-vrp.h (class value_range_base): Remove
12637 set_and_canonicalize.
12638 New prototype for normalize_symbolics.
12639 (class value_range): Remove set_and_canonicalize.
12640 (vrp_val_min): Adjust prototype.
12641 (vrp_val_max): Same.
12643 (vr_values::extract_range_for_var_from_comparison_expr): Call set
12644 instead of set_and_canonicalize.
12646 2019-08-15 Richard Sandiford <richard.sandiford@arm.com>
12648 PR middle-end/91444
12649 * tree-vect-stmts.c (vectorizable_call): Check that the function
12650 is a BUILT_IN_MD function before passing it to
12651 targetm.vectorize.builtin_md_vectorized_function.
12653 2019-08-15 Richard Sandiford <richard.sandiford@arm.com>
12655 * config/aarch64/aarch64-protos.h (aarch64_sve_mode_p): Declare.
12656 * config/aarch64/aarch64.c (aarch64_sve_mode_p): New function.
12657 (aarch64_select_early_remat_modes): Use it.
12659 2019-08-15 Richard Sandiford <richard.sandiford@arm.com>
12661 * config/aarch64/aarch64.c (aarch64_simd_vector_alignment): Return
12662 16 for SVE predicates even if they are fixed-length.
12664 2019-08-15 Richard Sandiford <richard.sandiford@arm.com>
12666 * config/aarch64/aarch64-sve.md (and<PRED_ALL:mode>3): Make the
12667 operand order match the MOV /Z alias.
12669 2019-08-15 Richard Sandiford <richard.sandiford@arm.com>
12671 * config/aarch64/aarch64.c (aarch64_output_sve_cnt_immediate): Take
12672 the vector pattern as an aarch64_svpattern argument. Update the
12673 overloaded caller accordingly.
12674 (aarch64_output_sve_scalar_inc_dec): Update call accordingly.
12675 (aarch64_output_sve_vector_inc_dec): Likewise.
12677 2019-08-15 Richard Sandiford <richard.sandiford@arm.com>
12679 * config/aarch64/aarch64.c (aarch64_add_offset): In the fallback
12680 multiplication case, try to compute VG * (lowest set bit) directly
12681 rather than always basing the multiplication on VG. Use
12682 expand_mult for the multiplication if we can.
12684 2019-08-15 Richard Sandiford <richard.sandiford@arm.com>
12686 * config/aarch64/aarch64-protos.h
12687 (aarch64_sve_scalar_inc_dec_immediate_p): Declare.
12688 (aarch64_sve_inc_dec_immediate_p): Rename to...
12689 (aarch64_sve_vector_inc_dec_immediate_p): ...this.
12690 (aarch64_output_sve_addvl_addpl): Take a single rtx argument.
12691 (aarch64_output_sve_scalar_inc_dec): Declare.
12692 (aarch64_output_sve_inc_dec_immediate): Rename to...
12693 (aarch64_output_sve_vector_inc_dec): ...this.
12694 * config/aarch64/aarch64.c (aarch64_sve_scalar_inc_dec_immediate_p)
12695 (aarch64_output_sve_scalar_inc_dec): New functions.
12696 (aarch64_output_sve_addvl_addpl): Remove the base and offset
12697 arguments. Only handle true ADDVL and ADDPL instructions;
12698 don't emit an INC or DEC.
12699 (aarch64_sve_inc_dec_immediate_p): Rename to...
12700 (aarch64_sve_vector_inc_dec_immediate_p): ...this.
12701 (aarch64_output_sve_inc_dec_immediate): Rename to...
12702 (aarch64_output_sve_vector_inc_dec): ...this. Update call to
12703 aarch64_sve_vector_inc_dec_immediate_p.
12704 * config/aarch64/predicates.md (aarch64_sve_scalar_inc_dec_immediate)
12705 (aarch64_sve_plus_immediate): New predicates.
12706 (aarch64_pluslong_operand): Accept aarch64_sve_plus_immediate
12707 rather than aarch64_sve_addvl_addpl_immediate.
12708 (aarch64_sve_inc_dec_immediate): Rename to...
12709 (aarch64_sve_vector_inc_dec_immediate): ...this. Update call to
12710 aarch64_sve_vector_inc_dec_immediate_p.
12711 (aarch64_sve_add_operand): Update accordingly.
12712 * config/aarch64/constraints.md (Uai): New constraint.
12713 (vsi): Update call to aarch64_sve_vector_inc_dec_immediate_p.
12714 * config/aarch64/aarch64.md (add<GPI:mode>3): Don't force the second
12715 operand into a register if it satisfies aarch64_sve_plus_immediate.
12716 (*add<GPI:mode>3_aarch64, *add<GPI:mode>3_poly_1): Add an alternative
12717 for Uai. Update calls to aarch64_output_sve_addvl_addpl.
12718 * config/aarch64/aarch64-sve.md (add<mode>3): Call
12719 aarch64_output_sve_vector_inc_dec instead of
12720 aarch64_output_sve_inc_dec_immediate.
12722 2019-08-15 Richard Sandiford <richard.sandiford@arm.com>
12724 * config/aarch64/iterators.md (UNSPEC_REVB, UNSPEC_REVH)
12725 (UNSPEC_REVW): New constants.
12726 (elem_bits): New mode attribute.
12727 (SVE_INT_UNARY): New int iterator.
12728 (optab): Handle UNSPEC_REV[BHW].
12729 (sve_int_op): New int attribute.
12730 (min_elem_bits): Handle VNx16QI and the predicate modes.
12731 * config/aarch64/aarch64-sve.md (*aarch64_sve_rev64<mode>)
12732 (*aarch64_sve_rev32<mode>, *aarch64_sve_rev16vnx16qi): Delete.
12733 (@aarch64_pred_<SVE_INT_UNARY:optab><SVE_I:mode>): New pattern.
12734 * config/aarch64/aarch64.c (aarch64_sve_data_mode): New function.
12735 (aarch64_sve_int_mode, aarch64_sve_rev_unspec): Likewise.
12736 (aarch64_split_sve_subreg_move): Use UNSPEC_REV[BHW] instead of
12737 unspecs based on the total width of the reversed data.
12738 (aarch64_evpc_rev_local): Likewise (for SVE only). Use a
12739 reinterpret followed by a subreg on big-endian targets.
12741 2019-08-15 Richard Sandiford <richard.sandiford@arm.com>
12742 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
12744 * config/aarch64/aarch64-sve.md
12745 (*cond_<SVE_COND_FP_TERNARY:optab><SVE_F:mode>_any): Add /z
12746 alternatives in which one of the inputs is in the same register
12749 2019-08-15 Richard Sandiford <richard.sandiford@arm.com>
12751 * config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_ext)
12752 (*aarch64_sve_ext<mode>): Add MOVPRFX alternatives.
12754 2019-08-15 Richard Sandiford <richard.sandiford@arm.com>
12756 * config/aarch64/aarch64-sve.md (*sub<SVE_F:mode>3): Remove immediate
12757 FADD and FSUB alternatives. Add a MOVPRFX alternative for FSUBR.
12759 2019-08-15 Richard Sandiford <richard.sandiford@arm.com>
12760 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
12762 * config/aarch64/aarch64-sve.md (add<SVE_I:mode>3, sub<SVE_I:mode>3)
12763 (<LOGICAL:optab><SVE_I:mode>3, *add<SVE_F:mode>3, *mul<SVE_F:mode>3)
12764 (*fabd<SVE_F:mode>3): Add more MOVPRFX alternatives.
12766 2019-08-15 Richard Sandiford <richard.sandiford@arm.com>
12767 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
12769 * config/aarch64/aarch64-sve.md (*v<ASHIFT:optab><SVE_I:mode>3):
12770 Add an alternative that uses reversed shifts.
12772 2019-08-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12774 * config/aarch64/aarch64-cores.def (cortex-a76): Use neoversen1 tuning
12777 2019-08-15 Richard Sandiford <richard.sandiford@arm.com>
12779 * config/aarch64/aarch64-sve.md (aarch64_<su>abd<mode>_3): Add
12780 a commutativity marker.
12782 2019-08-15 Richard Sandiford <richard.sandiford@arm.com>
12783 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
12785 * config/aarch64/aarch64-protos.h (aarch64_prepare_sve_int_fma)
12786 (aarch64_prepare_sve_cond_int_fma): Declare.
12787 * config/aarch64/aarch64.c (aarch64_convert_mult_to_shift)
12788 (aarch64_prepare_sve_int_fma): New functions.
12789 (aarch64_prepare_sve_cond_int_fma): Likewise.
12790 * config/aarch64/aarch64-sve.md
12791 (cond_<SVE_INT_BINARY:optab><SVE_I:mode>): Add a "@" marker.
12792 (fma<SVE_I:mode>4, cond_fma<SVE_I:mode>, *cond_fma<SVE_I:mode>_2)
12793 (*cond_fma<SVE_I:mode>_4, *cond_fma<SVE_I:mode>_any, fnma<SVE_I:mode>4)
12794 (cond_fnma<SVE_I:mode>, *cond_fnma<SVE_I:mode>_2)
12795 (*cond_fnma<SVE_I:mode>_4, *cond_fnma<SVE_I:mode>_any): New patterns.
12796 (*madd<mode>): Rename to...
12797 (*fma<mode>4): ...this.
12798 (*msub<mode>): Rename to...
12799 (*fnma<mode>4): ...this.
12801 2019-08-15 Richard Sandiford <richard.sandiford@arm.com>
12802 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
12804 * config/aarch64/aarch64.c (aarch64_print_vector_float_operand):
12805 Print 2.0 naturally.
12806 (aarch64_sve_float_mul_immediate_p): Return true for 2.0.
12807 * config/aarch64/predicates.md
12808 (aarch64_sve_float_negated_arith_immediate): New predicate,
12809 renamed from aarch64_sve_float_arith_with_sub_immediate.
12810 (aarch64_sve_float_arith_with_sub_immediate): Test for both
12811 positive and negative constants.
12812 (aarch64_sve_float_arith_with_sub_operand): Redefine as a register
12813 or an aarch64_sve_float_arith_with_sub_immediate.
12814 * config/aarch64/constraints.md (vsN): Use
12815 aarch64_sve_float_negated_arith_immediate.
12816 * config/aarch64/iterators.md (SVE_COND_FP_BINARY_I1): New int
12818 (sve_pred_fp_rhs2_immediate): New int attribute.
12819 * config/aarch64/aarch64-sve.md
12820 (cond_<SVE_COND_FP_BINARY:optab><SVE_F:mode>): Use
12821 sve_pred_fp_rhs1_operand and sve_pred_fp_rhs2_operand.
12822 (*cond_<SVE_COND_FP_BINARY_I1:optab><SVE_F:mode>_2_const)
12823 (*cond_<SVE_COND_FP_BINARY_I1:optab><SVE_F:mode>_any_const)
12824 (*cond_add<SVE_F:mode>_2_const, *cond_add<SVE_F:mode>_any_const)
12825 (*cond_sub<mode>_3_const, *cond_sub<mode>_any_const): New patterns.
12827 2019-08-15 Richard Sandiford <richard.sandiford@arm.com>
12828 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
12830 * config/aarch64/aarch64-sve.md (*aarch64_cond_abd<SVE_F:mode>_2)
12831 (*aarch64_cond_abd<SVE_F:mode>_3)
12832 (*aarch64_cond_abd<SVE_F:mode>_any): New patterns.
12834 2019-08-15 Richard Sandiford <richard.sandiford@arm.com>
12835 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
12837 * config/aarch64/aarch64-sve.md (*aarch64_cond_<su>abd<mode>_2)
12838 (*aarch64_cond_<su>abd<mode>_any): New patterns.
12840 2019-08-15 Richard Sandiford <richard.sandiford@arm.com>
12841 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
12843 * internal-fn.def (IFN_COND_SHL, IFN_COND_SHR): New internal functions.
12844 * internal-fn.c (FOR_EACH_CODE_MAPPING): Handle shifts.
12845 * match.pd (UNCOND_BINARY, COND_BINARY): Likewise.
12846 * optabs.def (cond_ashl_optab, cond_ashr_optab, cond_lshr_optab): New
12848 * optabs.h (create_convert_operand_from): Expand comment.
12849 * optabs.c (maybe_legitimize_operand): Allow implicit broadcasts
12850 when mapping scalar rtxes to vector operands.
12851 * config/aarch64/iterators.md (SVE_INT_BINARY): Add ashift,
12852 ashiftrt and lshiftrt.
12853 (sve_int_op, sve_int_op_rev, sve_pred_int_rhs2_operand): Handle them.
12854 * config/aarch64/aarch64-sve.md (*cond_<optab><mode>_2_const)
12855 (*cond_<optab><mode>_any_const): New patterns.
12857 2019-08-15 Martin Liska <mliska@suse.cz>
12860 * cgraph.c (cgraph_node::remove): When setting
12861 n->origin = NULL for all nested functions, reset
12864 2019-08-15 Martin Liska <mliska@suse.cz>
12866 * cgraph.c (cgraph_node::verify_node): Verify origin, nested
12869 2019-08-15 Martin Liska <mliska@suse.cz>
12872 * passes.c (order): Remove.
12873 (uid_hash_t): Likewise).
12874 (remove_cgraph_node_from_order): Remove from set
12875 of pointers (cgraph_node *).
12876 (insert_cgraph_node_to_order): New.
12877 (duplicate_cgraph_node_to_order): New.
12878 (do_per_function_toporder): Register all 3 cgraph hooks.
12879 Skip removed_nodes now as we know about all of them.
12881 2019-08-14 Uroš Bizjak <ubizjak@gmail.com>
12883 * config/i386/i386-expand.c (ix86_expand_vector_init_one_nonzero)
12884 <case E_V8QImode>: Use vector_set path for
12885 TARGET_MMX_WITH_SSE && TARGET_SSE4_1.
12886 (ix86_expand_vector_init_one_var) <case E_V8QImode>:
12887 Do not widen for TARGET_MMX_WITH_SSE && TARGET_SSE4_1.
12889 2019-08-14 Bernd Edlinger <bernd.edlinger@hotmail.de>
12891 * builtins.c (expand_builtin_init_descriptor): Set memory alignment.
12893 2019-08-14 Martin Sebor <msebor@redhat.com>
12895 PR tree-optimization/91294
12896 * tree-ssa-strlen.c (handle_store): Avoid treating lower bound of
12897 source length as exact.
12899 2019-08-14 Christophe Lyon <christophe.lyon@linaro.org>
12901 * doc/extend.texi: Add "noinit" attribute documentation.
12902 * doc/sourcebuild.texi: Add noinit effective target documentation.
12903 * varasm.c (default_section_type_flags): Add support for "noinit"
12905 (default_elf_select_section): Add support for "noinit" attribute.
12906 * config/msp430/msp430.c (msp430_attribute_table): Remove
12909 2019-08-14 Richard Biener <rguenther@suse.de>
12910 Uroš Bizjak <ubizjak@gmail.com>
12913 * config/i386/i386-features.h (scalar_chain::scalar_chain): Add
12915 (scalar_chain::smode): New member.
12916 (scalar_chain::vmode): Likewise.
12917 (dimode_scalar_chain): Rename to...
12918 (general_scalar_chain): ... this.
12919 (general_scalar_chain::general_scalar_chain): Take mode arguments.
12920 (timode_scalar_chain::timode_scalar_chain): Initialize scalar_chain
12921 base with TImode and V1TImode.
12922 * config/i386/i386-features.c (scalar_chain::scalar_chain): Adjust.
12923 (general_scalar_chain::vector_const_cost): Adjust for SImode
12925 (general_scalar_chain::compute_convert_gain): Likewise. Add
12926 {S,U}{MIN,MAX} support.
12927 (general_scalar_chain::replace_with_subreg): Use vmode/smode.
12928 (general_scalar_chain::make_vector_copies): Likewise. Handle
12929 non-DImode chains appropriately.
12930 (general_scalar_chain::convert_reg): Likewise.
12931 (general_scalar_chain::convert_op): Likewise.
12932 (general_scalar_chain::convert_insn): Likewise. Add
12933 fatal_insn_not_found if the result is not recognized.
12934 (convertible_comparison_p): Pass in the scalar mode and use that.
12935 (general_scalar_to_vector_candidate_p): Likewise. Rename from
12936 dimode_scalar_to_vector_candidate_p. Add {S,U}{MIN,MAX} support.
12937 (scalar_to_vector_candidate_p): Remove by inlining into single
12939 (general_remove_non_convertible_regs): Rename from
12940 dimode_remove_non_convertible_regs.
12941 (remove_non_convertible_regs): Remove by inlining into single caller.
12942 (convert_scalars_to_vector): Handle SImode and DImode chains
12943 in addition to TImode chains.
12944 * config/i386/i386.md (<maxmin><MAXMIN_IMODE>3): New expander.
12945 (*<maxmin><MAXMIN_IMODE>3_1): New insn-and-split.
12946 (*<maxmin>di3_doubleword): Likewise.
12948 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
12949 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
12951 * config/aarch64/aarch64-sve.md (*cond_bic<mode>_2)
12952 (*cond_bic<mode>_any): New patterns.
12954 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
12956 * config/aarch64/aarch64.c (aarch64_print_operand): Allow %e to
12957 take the equivalent mask, as well as a bit count.
12958 * config/aarch64/predicates.md (aarch64_sve_uxtb_immediate)
12959 (aarch64_sve_uxth_immediate, aarch64_sve_uxt_immediate)
12960 (aarch64_sve_pred_and_operand): New predicates.
12961 * config/aarch64/iterators.md (sve_pred_int_rhs2_operand): New
12963 * config/aarch64/aarch64-sve.md
12964 (cond_<SVE_INT_BINARY:optab><SVE_I:mode>): Use it.
12965 (*cond_uxt<mode>_2, *cond_uxt<mode>_any): New patterns.
12967 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
12969 * config/aarch64/aarch64-sve.md
12970 (*cond_<SVE_COND_FCVTI:optab>_nontrunc<SVE_F:mode><SVE_HSDI:mode>)
12971 (*cond_<SVE_COND_ICVTF:optab>_nonextend<SVE_HSDI:mode><SVE_F:mode>):
12974 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
12975 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
12977 * config/aarch64/aarch64-sve.md
12978 (*cond_<SVE_COND_FP_UNARY:optab><SVE_F:mode>_2): New pattern.
12979 (*cond_<SVE_COND_FP_UNARY:optab><SVE_F:mode>_any): Likewise.
12981 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
12982 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
12984 * config/aarch64/aarch64-sve.md
12985 (*cond_<SVE_INT_UNARY:optab><SVE_I:mode>_2): New pattern.
12986 (*cond_<SVE_INT_UNARY:optab><SVE_I:mode>_any): Likewise.
12988 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
12990 * config/aarch64/iterators.md (SVE_COND_FP_ABS_CMP): New iterator.
12991 * config/aarch64/aarch64-sve.md (*aarch64_pred_fac<cmp_op><mode>):
12994 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
12995 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
12997 * config/aarch64/aarch64-sve.md (*aarch64_sel_dup<mode>): New pattern.
12999 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
13000 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
13002 * config/aarch64/aarch64.c (aarch64_bit_representation): New function.
13003 (aarch64_print_vector_float_operand): Also handle 8-bit floats.
13004 (aarch64_print_operand): Add support for %I.
13005 (aarch64_sve_dup_immediate_p): Handle scalars as well as vectors.
13006 Bitcast floating-point constants to the corresponding integer constant.
13007 (aarch64_float_const_representable_p): Handle vectors as well
13009 (aarch64_expand_sve_vcond): Make sure that the operands are valid
13010 for the new vcond_mask_<mode><vpred> expander.
13011 * config/aarch64/predicates.md (aarch64_sve_dup_immediate): Also
13012 test aarch64_float_const_representable_p.
13013 (aarch64_sve_reg_or_dup_imm): New predicate.
13014 * config/aarch64/aarch64-sve.md (vec_extract<vpred><Vel>): Use
13015 gen_vcond_mask_<mode><vpred> instead of
13016 gen_aarch64_sve_dup<mode>_const.
13017 (vcond_mask_<mode><vpred>): Turn into a define_expand that
13018 accepts aarch64_sve_reg_or_dup_imm and aarch64_simd_reg_or_zero
13019 for operands 1 and 2 respectively. Force operand 2 into a
13020 register if operand 1 is a register. Fold old define_insn...
13021 (aarch64_sve_dup<mode>_const): ...and this define_insn...
13022 (*vcond_mask_<mode><vpred>): ...into this new pattern. Handle
13023 floating-point constants that can be moved as integers. Add
13024 alternatives for MOV /M and FMOV /M.
13025 (vcond<mode><v_int_equiv>, vcondu<mode><v_int_equiv>)
13026 (vcond<mode><v_fp_equiv>): Accept nonmemory_operand for operands
13027 1 and 2 respectively.
13028 * config/aarch64/constraints.md (Ufc): Handle vectors as well
13030 (vss): New constraint.
13032 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
13034 * config/aarch64/predicates.md (aarch64_sve_float_maxmin_immediate)
13035 (aarch64_sve_float_maxmin_operand): New predicates.
13036 * config/aarch64/constraints.md (vsB): New constraint.
13038 * config/aarch64/iterators.md (sve_pred_fp_rhs2_operand): Use
13039 aarch64_sve_float_maxmin_operand for UNSPEC_COND_FMAXNM and
13040 UNSPEC_COND_FMINNM.
13041 * config/aarch64/aarch64-sve.md (<maxmin_uns><SVE_F:mode>3):
13042 Use aarch64_sve_float_maxmin_operand for operand 2.
13043 (*<SVE_COND_FP_MAXMIN_PUBLIC:optab><SVE_F:mode>3): Likewise.
13044 Add alternatives for the constant forms.
13046 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
13048 * config/aarch64/constraints.md (vsb): New constraint.
13049 (vsm): Generalize description.
13050 * config/aarch64/iterators.md (SVE_INT_BINARY_IMM): New code
13052 (sve_imm_con): Handle smax, smin, umax and umin.
13053 (sve_imm_prefix): New code attribute.
13054 * config/aarch64/predicates.md (aarch64_sve_vsb_immediate)
13055 (aarch64_sve_vsb_operand): New predicates.
13056 (aarch64_sve_mul_immediate): Rename to...
13057 (aarch64_sve_vsm_immediate): ...this.
13058 (aarch64_sve_mul_operand): Rename to...
13059 (aarch64_sve_vsm_operand): ...this.
13060 * config/aarch64/aarch64-sve.md (mul<mode>3): Generalize to...
13061 (<SVE_INT_BINARY_IMM:optab><SVE_I:mode>3): ...this.
13062 (*mul<mode>3, *post_ra_mul<mode>3): Generalize to...
13063 (*<SVE_INT_BINARY_IMM:optab><SVE_I:mode>3)
13064 (*post_ra_<SVE_INT_BINARY_IMM:optab><SVE_I:mode>3): ...these and
13065 add movprfx support for the immediate alternatives.
13066 (<su><maxmin><mode>3, *<su><maxmin><mode>3): Delete in favor
13068 (*<SVE_INT_BINARY_SD:optab><SVE_SDI:mode>3): Fix incorrect predicate
13071 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
13073 * config/aarch64/predicates.md (aarch64_simd_imm_one): New predicate.
13074 * config/aarch64/aarch64-sve.md (*cnot<mode>): New pattern.
13075 (*cond_cnot<mode>_2, *cond_cnot<mode>_any): Likewise.
13077 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
13079 * config/aarch64/iterators.md (SVE_INT_UNARY): Add clrsb and clz.
13080 (optab, sve_int_op): Handle them.
13081 * config/aarch64/aarch64-sve.md: Expand comment.
13083 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
13085 * config/aarch64/predicates.md (const_1_to_3_operand): New predicate.
13086 * config/aarch64/aarch64-sve.md (*aarch64_adr_uxtw)
13087 (*aarch64_adr<mode>_shift, *aarch64_adr_shift_uxtw): New patterns.
13089 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
13091 * config/aarch64/aarch64.c (aarch64_expand_sve_const_pred_eor)
13092 (aarch64_expand_sve_const_pred_trn): New functions.
13093 (aarch64_expand_sve_const_pred_1): Add a recurse_p parameter and
13094 use the above functions when the parameter is true.
13095 (aarch64_expand_sve_const_pred): Update call accordingly.
13096 * config/aarch64/aarch64-sve.md (*aarch64_sve_<perm_insn><mode>):
13098 (@aarch64_sve_<perm_insn><mode>): ...this.
13100 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
13102 * config/aarch64/aarch64-protos.h (aarch64_sve_same_pred_for_ptest_p):
13104 * config/aarch64/aarch64.c (aarch64_sve_same_pred_for_ptest_p)
13105 (aarch64_sve_emit_int_cmp): New functions.
13106 (aarch64_convert_sve_data_to_pred): Use aarch64_sve_emit_int_cmp.
13107 (aarch64_sve_cmp_operand_p, aarch64_emit_sve_ptrue_op_cc): Delete.
13108 (aarch64_expand_sve_vec_cmp_int): Use aarch64_sve_emit_int_cmp.
13109 * config/aarch64/aarch64.md (UNSPEC_MERGE_PTRUE): Delete.
13110 (UNSPEC_PRED_Z): New unspec.
13111 (set_clobber_cc_nzc): Delete.
13112 * config/aarch64/aarch64-sve.md: Add a block comment about
13114 (*cmp<SVE_INT_CMP:cmp_op><mode>): Rename to...
13115 (@aarch64_pred_cmp<SVE_INT_CMP:cmp_op><mode>): ...this, replacing
13116 the old pattern with that name. Use UNSPEC_PRED_Z instead of
13117 UNSPEC_MERGE_PTRUE.
13118 (*cmp<SVE_INT_CMP:cmp_op><mode>_cc): Use UNSPEC_PRED_Z instead of
13119 UNSPEC_MERGE_PTRUE. Use aarch64_sve_same_pred_for_ptest_p to
13120 check for compatible predicates.
13121 (*cmp<cmp_op><SVE_INT_CMP:mode>_ptest): Likewise.
13122 (*cmp<cmp_op><mode>_and): Match a known-ptrue UNSPEC_PRED_Z instead
13123 of UNSPEC_MERGE_PTRUE. Split into the new form of predicated
13126 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
13128 * config/aarch64/aarch64.md (UNSPEC_PRED_X): New unspec.
13129 * config/aarch64/aarch64-sve.md: Add a section describing it.
13130 (@aarch64_pred_mov<mode>, @aarch64_pred_mov<mode>)
13131 (<SVE_INT_UNARY:optab><mode>2, *<SVE_INT_UNARY:optab><mode>2)
13132 (aarch64_<su>abd<mode>_3, mul<SVE_I:mode>3, *mul<SVE_I:mode>3)
13133 (<su>mul<mode>3_highpart, *<su>mul<mode>3_highpart)
13134 (<SVE_INT_BINARY:optab><mode>3, *<SVE_INT_BINARY:optab><mode>3)
13135 (*bic<mode>3, v<ASHIFT:optab><mode>3, *v<ASHIFT:optab><mode>3)
13136 (<su><maxmin><mode>3, *<su><maxmin><mode>3, *madd<SVE_I:mode>)
13137 (*msub<SVE_I:mode>3, *aarch64_sve_rev64<mode>)
13138 (*aarch64_sve_rev32<mode>, *aarch64_sve_rev16vnx16qi): Use
13139 UNSPEC_PRED_X instead of UNSPEC_MERGE_PTRUE.
13140 * config/aarch64/aarch64-sve2.md (<u>avg<mode>3_floor)
13141 (<u>avg<mode>3_ceil, *<sur>h<addsub><mode>): Likewise.
13142 * config/aarch64/aarch64.c (aarch64_split_sve_subreg_move)
13143 (aarch64_evpc_rev_local): Update accordingly.
13145 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
13147 * config/aarch64/iterators.md (VNx4SI_ONLY, VNx2DF_ONLY): New mode
13149 (SVE_BHSI, SVE_SDI): Tweak comment.
13150 (SVE_HSDI): Likewise. Fix definition.
13151 (SVE_SDF): New mode iterator.
13152 (elem_bits): New mode attribute.
13153 (SVE_COND_FCVT): New int iterator.
13154 * config/aarch64/aarch64-sve.md
13155 (*<SVE_COND_ICVTF:optab>v16hsf<SVE_HSDI:mode>2)
13156 (*<SVE_COND_ICVTF:optab>vnx4sf<SVE_SDI:mode>2)
13157 (*<SVE_COND_ICVTF:optab>vnx2df<SVE_SDI:mode>2): Merge into...
13158 (*aarch64_sve_<SVE_COND_ICVTF:optab>_nontrunc<SVE_F:mode><SVE_HSDI:mode>)
13159 (*aarch64_sve_<SVE_COND_ICVTF:optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>):
13160 ...these new patterns.
13161 (*<SVE_COND_FCVTI:optab><SVE_HSDI:mode>vnx8hf2)
13162 (*<SVE_COND_FCVTI:optab><SVE_SDI:mode>vnx4sf2)
13163 (aarch64_sve_<SVE_COND_FCVTI:optab><SVE_SDI:mode>vnx2df2):
13165 (*aarch64_sve_<SVE_COND_FCVTI:optab>_nonextend<SVE_HSDI:mode><SVE_F:mode>)
13166 (aarch64_sve_<SVE_COND_FCVTI:optab>_extend<VNx4SI_ONLY:mode><VNx2DF_ONLY:mode>):
13167 ...these new patterns.
13168 (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Update accordingly.
13169 (*trunc<Vwide><SVE_SDF:mode>2): Replace with...
13170 (*aarch64_sve_<SVE_COND_FCVT:optab>_trunc<SVE_SDF:mode><SVE_HSF:mode>):
13171 ...this new pattern.
13172 (aarch64_sve_extend<SVE_HSDF:mode><Vwide>2): Replace with...
13173 (aarch64_sve_<SVE_COND_FCVT:optab>_nontrunc<SVE_HSF:mode><SVE_SDF:mode>):
13174 ...this new pattern.
13175 (vec_unpacks_<perm_hilo>_<mode>): Update accordingly.
13177 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
13179 * config/aarch64/aarch64.md (UNSPEC_FLOAT_CONVERT): Delete.
13180 * config/aarch64/iterators.md (UNSPEC_COND_FCVT, UNSPEC_COND_FCVTZS)
13181 (UNSPEC_COND_FCVTZU, UNSPEC_COND_SCVTF, UNSPEC_COND_UCVTF): New
13183 (optab, su): Handle them.
13184 (SVE_COND_FCVTI, SVE_COND_ICVTF): New int iterators.
13185 * config/aarch64/aarch64-sve.md
13186 (<fix_trunc_optab><SVE_F:mode><v_int_equiv>2): Replace with...
13187 (<SVE_COND_FCVTI:optab><SVE_F:mode><v_int_equiv>2): ...this.
13188 (*<fix_trunc_optab>v16hsf<:SVE_HSDImode>2): Replace with...
13189 (*<SVE_COND_FCVTI:optab>v16hsf<SVE_F:mode>2): ...this.
13190 (*<fix_trunc_optab>vnx4sf<SVE_SDI:mode>2): Replace with...
13191 (*<SVE_COND_FCVTI:optab>vnx4sf<SVE_SDI:mode>2): ...this.
13192 (*<fix_trunc_optab>vnx2df<SVE_SDI:mode>2): Replace with...
13193 (*<SVE_COND_FCVTI:optab>vnx2df<SVE_SDI:mode>2): ...this.
13194 (vec_pack_<su>fix_trunc_vnx2df): Use SVE_COND_FCVTI instead of
13196 (<FLOATUORS:optab><v_int_equiv><SVE_F:mode>2): Replace with...
13197 (<SVE_COND_ICVTF:optab><v_int_equiv><SVE_F:mode>2): ...this.
13198 (*<FLOATUORS:optab><SVE_HSDI:mode>vnx8hf2): Replace with...
13199 (*<SVE_COND_ICVTF:optab><SVE_HSDI:mode>vnx8hf2): ...this.
13200 (*<FLOATUORS:optab><SVE_SDI:mode>vnx4sf2): Replace with...
13201 (*<SVE_COND_ICVTF:optab><SVE_SDI:mode>vnx4sf2): ...this.
13202 (aarch64_sve_<FLOATUORS:optab><SVE_SDI:mode>vnx2df2): Replace with...
13203 (aarch64_sve_<SVE_COND_ICVTF:optab><SVE_SDI:mode>vnx2df2): ...this.
13204 (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Pass a GP strictness
13205 operand to aarch64_sve_<SVE_COND_ICVTF:optab><SVE_SDI:mode>vnx2df2.
13206 (vec_pack_trunc_<SVE_HSF:Vwide>, *trunc<Vwide><SVE_HSF:mode>2)
13207 (aarch64_sve_extend<mode><Vwide>2): Use UNSPEC_COND_FCVT instead
13208 of UNSPEC_FLOAT_CONVERT.
13209 (vec_unpacks_<perm_hilo>_<mode>): Pass a GP strictness operand to
13210 aarch64_sve_extend<mode><Vwide>2.
13212 2019-08-14 Richard Biener <rguenther@suse.de>
13215 * config/i386/i386-features.c
13216 (dimode_scalar_chain::compute_convert_gain): Compute and dump
13217 individual instruction gain. Fix reg-reg copy GRP cost. Use
13218 ix86_cost->sse_op for vector instruction costs.
13220 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
13222 * config/aarch64/iterators.md (UNSPEC_COND_FCMUO): New unspec.
13223 (cmp_op): Handle it.
13224 (SVE_COND_FP_CMP): Rename to...
13225 (SVE_COND_FP_CMP_I0): ...this.
13226 (SVE_FP_CMP): Remove.
13227 * config/aarch64/aarch64-sve.md
13228 (*fcm<SVE_FP_CMP:cmp_op><SVE_F:mode>): Replace with...
13229 (*fcm<SVE_COND_FP_CMP_I0:cmp_op><SVE_F:mode>): ...this new pattern,
13230 using unspecs to represent the comparison.
13231 (*fcmuo<SVE_F:mode>): Use UNSPEC_COND_FCMUO.
13232 (*fcm<cmp_op><mode>_and_combine, *fcmuo<mode>_and_combine): Update
13234 * config/aarch64/aarch64.c (aarch64_emit_sve_ptrue_op): Delete.
13235 (aarch64_unspec_cond_code): Move after integer code. Handle
13237 (aarch64_emit_sve_predicated_cond): Replace with...
13238 (aarch64_emit_sve_fp_cond): ...this new function.
13239 (aarch64_emit_sve_or_conds): Replace with...
13240 (aarch64_emit_sve_or_fp_conds): ...this new function.
13241 (aarch64_emit_sve_inverted_cond): Replace with...
13242 (aarch64_emit_sve_invert_fp_cond): ...this new function.
13243 (aarch64_expand_sve_vec_cmp_float): Update accordingly.
13245 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
13247 * config/aarch64/iterators.md (SVE_HSD): New mode iterator.
13248 (V_FP_EQUIV, v_fp_equiv): Handle VNx8HI and VNx8HF.
13249 * config/aarch64/aarch64-sve.md (vcond<mode><v_fp_equiv>): Use
13250 SVE_HSD instead of SVE_SD.
13252 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
13253 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
13255 * config/aarch64/iterators.md (SVE_COND_FP_BINARY_REG): New int
13257 (sve_pred_fp_rhs1_operand, sve_pred_fp_rhs1_operand): New int
13259 * config/aarch64/aarch64-sve.md (add<SVE_F:mode>3, sub<SVE_F:mode>3)
13260 (mul<SVE_F:mode>3, div<SVE_F:mode>3)
13261 (<SVE_COND_FP_MAXMIN_PUBLIC:optab><SVE_F:mode>3): Merge into...
13262 (<SVE_COND_FP_BINARY:optab><SVE_F:mode>3): ...this new expander.
13263 (*div<SVE_F:mode>3): Generalize to...
13264 (*<SVE_COND_FP_BINARY:optab><SVE_F:mode>3): ...this.
13266 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
13267 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
13269 * config/aarch64/aarch64.md (SVE_RELAXED_GP, SVE_STRICT_GP): New
13271 * config/aarch64/predicates.md (aarch64_sve_gp_strictness): New
13273 * config/aarch64/aarch64-protos.h (aarch64_sve_pred_dominates_p):
13275 * config/aarch64/aarch64.c (aarch64_sve_pred_dominates_p): New
13277 * config/aarch64/aarch64-sve.md: Add a block comment about the
13278 handling of predicated FP operations.
13279 (<SVE_COND_FP_UNARY:optab><SVE_F:mode>2, add<SVE_F:mode>3)
13280 (sub<SVE_F:mode>3, mul<SVE_F:mode>3, div<SVE_F:mode>3)
13281 (<SVE_COND_FP_MAXMIN_PUBLIC:optab><SVE_F:mode>3)
13282 (<SVE_COND_FP_MAXMIN_PUBLIC:maxmin_uns><SVE_F:mode>3)
13283 (<SVE_COND_FP_TERNARY:optab><SVE_F:mode>4): Add an SVE_RELAXED_GP
13285 (cond_<SVE_COND_FP_BINARY:optab><SVE_F:mode>)
13286 (cond_<SVE_COND_FP_TERNARY:optab><SVE_F:mode>): Add an SVE_STRICT_GP
13288 (*<SVE_COND_FP_UNARY:optab><SVE_F:mode>2)
13289 (*cond_<SVE_COND_FP_BINARY:optab><SVE_F:mode>_2)
13290 (*cond_<SVE_COND_FP_BINARY:optab><SVE_F:mode>_3)
13291 (*cond_<SVE_COND_FP_BINARY:optab><SVE_F:mode>_any)
13292 (*fabd<SVE_F:mode>3, *div<SVE_F:mode>3)
13293 (*<SVE_COND_FP_MAXMIN_PUBLIC:optab><SVE_F:mode>3)
13294 (*<SVE_COND_FP_TERNARY:optab><SVE_F:mode>4)
13295 (*cond_<SVE_COND_FP_TERNARY:optab><SVE_F:mode>_2)
13296 (*cond_<SVE_COND_FP_TERNARY:optab><SVE_F:mode>_4)
13297 (*cond_<SVE_COND_FP_TERNARY:optab><SVE_F:mode>_any): Match the
13298 strictness operands. Use aarch64_sve_pred_dominates_p to check
13299 whether the predicate on the conditional operation is suitable
13300 for merging. Split patterns into the canonical equal-predicate form.
13301 (*add<SVE_F:mode>3, *sub<SVE_F:mode>3, *mul<SVE_F:mode>3): Likewise.
13302 Restrict the unpredicated alternatives to SVE_RELAXED_GP.
13304 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
13305 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
13307 * config/aarch64/aarch64-sve.md (add<mode>3, *add<mode>3)
13308 (sub<mode>3, *sub<mode>3, *fabd<mode>3, mul<mode>3, *mul<mode>3)
13309 (div<mode>3, *div<mode>3): Use SVE_COND_FP_* unspecs instead of
13311 (cond_<optab><mode>, *cond_<optab><mode>_2, *cond_<optab><mode>_3)
13312 (*cond_<optab><mode>_any): Add the predicate to the SVE_COND_FP_*
13315 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
13316 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
13318 * config/aarch64/aarch64-sve.md (bic<mode>3): Rename to...
13319 (*bic<SVE_I:mode>3): ...this. Match the form that an SVE inverse
13320 actually has, rather than relying on REG_EQUAL notes.
13321 Make the insn operand order match the SVE operand order.
13322 (*<nlogical><PRED_ALL:mode>3): Make the insn operand order match
13323 the SVE operand order.
13325 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
13327 * config/aarch64/aarch64.c (aarch64_target_reg): New function.
13328 (aarch64_emit_set_immediate): Likewise.
13329 (aarch64_ptrue_reg): Build a VNx16BI constant and then bitcast it.
13330 (aarch64_pfalse_reg): Likewise.
13331 (aarch64_convert_sve_data_to_pred): New function.
13332 (aarch64_sve_move_pred_via_while): Take an optional target register
13333 and the required register mode.
13334 (aarch64_expand_sve_const_pred_1): New function.
13335 (aarch64_expand_sve_const_pred): Likewise.
13336 (aarch64_expand_mov_immediate): Build an all-true predicate
13337 if the significant bits of the immediate are all true. Use
13338 aarch64_expand_sve_const_pred for all compile-time predicate constants.
13339 (aarch64_mov_operand_p): Force predicate constants to be VNx16BI
13340 before register allocation.
13341 * config/aarch64/aarch64-sve.md (*vec_duplicate<mode>_reg): Use
13342 a VNx16BI PTRUE when splitting the memory alternative.
13343 (vec_duplicate<mode>): Update accordingly.
13344 (*pred_cmp<cmp_op><mode>): Rename to...
13345 (@aarch64_pred_cmp<cmp_op><mode>): ...this.
13347 2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
13349 * config/aarch64/aarch64-protos.h (aarch64_ptrue_all): Declare.
13350 * config/aarch64/aarch64.c (aarch64_ptrue_all): New function.
13351 * config/aarch64/aarch64.md (UNSPEC_PTEST_PTRUE): Delete.
13352 (UNSPEC_PTEST): New unspec.
13353 (SVE_MAYBE_NOT_PTRUE, SVE_KNOWN_PTRUE): New constants.
13354 * config/aarch64/iterators.md (data_bytes): New mode attribute.
13355 * config/aarch64/predicates.md (aarch64_sve_ptrue_flag): New predicate.
13356 * config/aarch64/aarch64-sve.md: Add a new section describing the
13357 handling of UNSPEC_PTEST.
13358 (pred_<LOGICAL:optab><PRED_ALL:mode>3): Rename to...
13359 (@aarch64_pred_<LOGICAL:optab><PRED_ALL:mode>_z): ...this.
13360 (ptest_ptrue<mode>): Replace with...
13361 (aarch64_ptest<mode>): ...this new pattern.
13362 (cbranch<mode>4): Update after above changes.
13363 (*<LOGICAL:optab><PRED_ALL:mode>3_cc): Use UNSPEC_PTEST instead of
13364 UNSPEC_PTEST_PTRUE.
13365 (*cmp<SVE_INT_CMP:cmp_op><SVE_I:mode>_cc): Likewise.
13366 (*cmp<SVE_INT_CMP:cmp_op><SVE_I:mode>_ptest): Likewise.
13367 (*while_ult<GPI:mode><PRED_ALL:mode>_cc): Likewise.
13369 2019-08-14 Xiong Hu Luo <luoxhu@linux.ibm.com>
13372 * builtins.c (builtin_with_linkage_p): New function.
13373 * builtins.h (builtin_with_linkage_p): New function.
13374 * symtab.c (write_symbol): Remove redundant assert.
13375 * lto-streamer-out.c (symtab_node::output_to_lto_symbol_table_p):
13376 Remove FIXME and use builtin_with_linkage_p.
13378 2019-08-13 Richard Sandiford <richard.sandiford@arm.com>
13380 PR middle-end/91421
13381 * tree-core.h (function_decl::function_code): Change type to
13383 * tree.h (DECL_FUNCTION_CODE): Rename old definition to...
13384 (DECL_UNCHECKED_FUNCTION_CODE): ...this.
13385 (DECL_BUILT_IN_CLASS): Make an rvalue macro only.
13386 (DECL_FUNCTION_CODE): New function. Assert that the built-in class
13387 is BUILT_IN_NORMAL.
13388 (DECL_MD_FUNCTION_CODE, DECL_FE_FUNCTION_CODE): New functions.
13389 (set_decl_built_in_function, copy_decl_built_in_function): Likewise.
13390 (fndecl_built_in_p): Change the type of the "name" argument to
13392 * builtins.c (expand_builtin): Move DECL_FUNCTION_CODE use
13393 after check for DECL_BUILT_IN_CLASS.
13394 * cgraphclones.c (build_function_decl_skip_args): Use
13395 set_decl_built_in_function.
13396 * ipa-param-manipulation.c (ipa_modify_formal_parameters): Likewise.
13397 * ipa-split.c (split_function): Likewise.
13398 * langhooks.c (add_builtin_function_common): Likewise.
13399 * omp-simd-clone.c (simd_clone_create): Likewise.
13400 * tree-streamer-in.c (unpack_ts_function_decl_value_fields): Likewise.
13401 * config/darwin.c (darwin_init_cfstring_builtins): Likewise.
13402 (darwin_fold_builtin): Use DECL_MD_FUNCTION_CODE instead of
13403 DECL_FUNCTION_CODE.
13404 * fold-const.c (operand_equal_p): Compare DECL_UNCHECKED_FUNCTION_CODE
13405 instead of DECL_FUNCTION_CODE.
13406 * lto-streamer-out.c (hash_tree): Use DECL_UNCHECKED_FUNCTION_CODE
13407 instead of DECL_FUNCTION_CODE.
13408 * tree-streamer-out.c (pack_ts_function_decl_value_fields): Likewise.
13409 * print-tree.c (print_node): Use DECL_MD_FUNCTION_CODE when
13410 printing DECL_BUILT_IN_MD. Handle DECL_BUILT_IN_FRONTEND.
13411 * config/aarch64/aarch64-builtins.c (aarch64_expand_builtin)
13412 (aarch64_fold_builtin, aarch64_gimple_fold_builtin): Use
13413 DECL_MD_FUNCTION_CODE instead of DECL_FUNCTION_CODE.
13414 * config/aarch64/aarch64.c (aarch64_builtin_reciprocal): Likewise.
13415 * config/alpha/alpha.c (alpha_expand_builtin, alpha_fold_builtin):
13416 (alpha_gimple_fold_builtin): Likewise.
13417 * config/arc/arc.c (arc_expand_builtin): Likewise.
13418 * config/arm/arm-builtins.c (arm_expand_builtin): Likewise.
13419 * config/avr/avr-c.c (avr_resolve_overloaded_builtin): Likewise.
13420 * config/avr/avr.c (avr_expand_builtin, avr_fold_builtin): Likewise.
13421 * config/bfin/bfin.c (bfin_expand_builtin): Likewise.
13422 * config/c6x/c6x.c (c6x_expand_builtin): Likewise.
13423 * config/frv/frv.c (frv_expand_builtin): Likewise.
13424 * config/gcn/gcn.c (gcn_expand_builtin_1): Likewise.
13425 (gcn_expand_builtin): Likewise.
13426 * config/i386/i386-builtins.c (ix86_builtin_reciprocal): Likewise.
13427 (fold_builtin_cpu): Likewise.
13428 * config/i386/i386-expand.c (ix86_expand_builtin): Likewise.
13429 * config/i386/i386.c (ix86_fold_builtin): Likewise.
13430 (ix86_gimple_fold_builtin): Likewise.
13431 * config/ia64/ia64.c (ia64_fold_builtin): Likewise.
13432 (ia64_expand_builtin): Likewise.
13433 * config/iq2000/iq2000.c (iq2000_expand_builtin): Likewise.
13434 * config/mips/mips.c (mips_expand_builtin): Likewise.
13435 * config/msp430/msp430.c (msp430_expand_builtin): Likewise.
13436 * config/nds32/nds32-intrinsic.c (nds32_expand_builtin_impl): Likewise.
13437 * config/nios2/nios2.c (nios2_expand_builtin): Likewise.
13438 * config/nvptx/nvptx.c (nvptx_expand_builtin): Likewise.
13439 * config/pa/pa.c (pa_expand_builtin): Likewise.
13440 * config/pru/pru.c (pru_expand_builtin): Likewise.
13441 * config/riscv/riscv-builtins.c (riscv_expand_builtin): Likewise.
13442 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
13444 * config/rs6000/rs6000-call.c (htm_expand_builtin): Likewise.
13445 (altivec_expand_dst_builtin, altivec_expand_builtin): Likewise.
13446 (rs6000_gimple_fold_builtin, rs6000_expand_builtin): Likewise.
13447 * config/rs6000/rs6000.c (rs6000_builtin_md_vectorized_function)
13448 (rs6000_builtin_reciprocal): Likewise.
13449 * config/rx/rx.c (rx_expand_builtin): Likewise.
13450 * config/s390/s390-c.c (s390_resolve_overloaded_builtin): Likewise.
13451 * config/s390/s390.c (s390_expand_builtin): Likewise.
13452 * config/sh/sh.c (sh_expand_builtin): Likewise.
13453 * config/sparc/sparc.c (sparc_expand_builtin): Likewise.
13454 (sparc_fold_builtin): Likewise.
13455 * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
13456 * config/spu/spu.c (spu_expand_builtin): Likewise.
13457 * config/stormy16/stormy16.c (xstormy16_expand_builtin): Likewise.
13458 * config/tilegx/tilegx.c (tilegx_expand_builtin): Likewise.
13459 * config/tilepro/tilepro.c (tilepro_expand_builtin): Likewise.
13460 * config/xtensa/xtensa.c (xtensa_fold_builtin): Likewise.
13461 (xtensa_expand_builtin): Likewise.
13463 2019-08-13 Richard Sandiford <richard.sandiford@arm.com>
13465 PR middle-end/91421
13466 * attribs.c (decl_attributes): Check the DECL_BUILT_IN_CLASS
13467 before the DECL_FUNCTION_CODE.
13468 * calls.c (maybe_warn_alloc_args_overflow): Use fndecl_built_in_p
13469 to check for a BUILT_IN_ALLOCA call.
13470 * ipa-cp.c (ipa_get_indirect_edge_target_1): Likewise for
13471 BUILT_IN_UNREACHABLE. Don't check for a FUNCTION_TYPE.
13472 * ipa-devirt.c (possible_polymorphic_call_target_p): Likewise.
13473 * ipa-prop.c (try_make_edge_direct_virtual_call): Likewise.
13474 * gimple-ssa-isolate-paths.c (is_addr_local): Check specifically
13475 for BUILT_IN_NORMAL functions.
13476 * trans-mem.c (expand_block_edges): Use gimple_call_builtin_p to
13477 test for BUILT_IN_TM_ABORT.
13478 * tree-ssa-ccp.c (optimize_stack_restore): Use fndecl_built_in_p
13479 to check for a BUILT_IN_STACK_RESTORE call.
13480 (optimize_stdarg_builtin): Remove redundant check for GIMPLE_CALL.
13481 * tree-ssa-threadedge.c
13482 (record_temporary_equivalences_from_stmts_at_dest): Check for a
13483 BUILT_IN_NORMAL decl before checking its DECL_FUNCTION_CODE.
13484 * tree-vect-patterns.c (vect_recog_pow_pattern): Use a positive
13485 test for a BUILT_IN_NORMAL call instead of a negative test for
13486 an internal function call.
13488 2019-08-13 Richard Sandiford <richard.sandiford@arm.com>
13490 * tree.h (build_vector_a_then_b): Declare.
13491 * tree.c (build_vector_a_then_b): New function.
13492 * fold-const-call.c (fold_while_ult): Likewise.
13493 (fold_const_call): Use it to handle IFN_WHILE_ULT.
13494 * config/aarch64/aarch64-protos.h (AARCH64_FOR_SVPATTERN): New macro.
13495 (aarch64_svpattern): New enum.
13496 * config/aarch64/aarch64-sve.md (mov<PRED_ALL:mode>): Pass
13497 constants through aarch64_expand_mov_immediate.
13498 (*aarch64_sve_mov<PRED_ALL:mode>): Use aarch64_mov_operand rather
13499 than general_operand as the predicate for operand 1.
13500 (while_ult<GPI:mode><PRED_ALL:mode>): Add a '@' marker.
13501 * config/aarch64/aarch64.c (simd_immediate_info::PTRUE): New
13503 (simd_immediate_info::simd_immediate_info): New overload that
13504 takes a scalar_int_mode and an svpattern.
13505 (simd_immediate_info::u): Add a "pattern" field.
13506 (svpattern_token): New function.
13507 (aarch64_get_sve_pred_bits, aarch64_widest_sve_pred_elt_size)
13508 (aarch64_partial_ptrue_length, aarch64_svpattern_for_vl)
13509 (aarch64_sve_move_pred_via_while): New functions.
13510 (aarch64_expand_mov_immediate): Try using
13511 aarch64_sve_move_pred_via_while for predicates that contain N ones
13512 followed by M zeros but that do not correspond to a VLnnn pattern.
13513 (aarch64_sve_pred_valid_immediate): New function.
13514 (aarch64_simd_valid_immediate): Use it instead of dealing directly
13515 with PTRUE and PFALSE.
13516 (aarch64_output_sve_mov_immediate): Handle new simd_immediate_info
13519 2019-08-13 Iain Sandoe <iain@sandoe.co.uk>
13521 * config/darwin.c (machopic_indirect_call_target): Rename symbol stub
13523 (darwin_override_options): Likewise.
13524 * config/darwin.h: Likewise.
13525 * config/darwin.opt: Likewise.
13526 * config/i386/i386.c (output_pic_addr_const): Likewise.
13527 * config/rs6000/darwin.h: Likewise.
13528 * config/rs6000/rs6000.c (rs6000_call_darwin_1): Likewise.
13529 * config/i386/darwin.h (TARGET_MACHO_PICSYM_STUBS): Rename to ...
13530 ... this TARGET_MACHO_SYMBOL_STUBS.
13531 (FUNCTION_PROFILER):Likewise.
13532 * config/i386/i386.h: Likewise.
13534 2019-08-13 Uroš Bizjak <ubizjak@gmail.com>
13536 * config/i386/i386-expand.c (ix86_expand_vector_extract)
13537 <case E_V2SImode>: Use vec_extr path for
13538 TARGET_MMX_WITH_SSE && TARGET_SSE4_1.
13539 <case E_V8QImode>: Ditto.
13540 * config/i386/mmx.md (*mmx_pextrw_zext): Rename from mmx_pextrw.
13541 Use SWI48 mode iterator. Use %k to output operand 0.
13542 (*mmx_pextrw): New insn pattern.
13543 (*mmx_pextrb): Ditto.
13544 (*mmx_pextrb_zext): Ditto.
13546 2019-08-13 Jonathan Wakely <jwakely@redhat.com>
13548 * target.def (libc_has_function, libc_has_fast_function): Improve
13549 documentation strings.
13550 * doc/tm.texi: Regenerate.
13552 2019-08-13 Caroline Tice <cmtice@google.com>
13555 * config/gnu-user.h (GNU_USER_TARGET_ENDFILE_SPEC): Only add the
13556 vtv_end.o or vtv_end_preinit.o files if !static.
13558 2019-08-13 Olivier Hainque <hainque@adacore.com>
13560 * rtl.h (tablejump_casesi_pattern): Move declaration to proper spot.
13562 2019-08-13 Olivier Hainque <hainque@adacore.com>
13564 * rtlanal.c (tablejump_casesi_pattern): New function, to
13565 determine if a tablejump insn is a casesi dispatcher. Extracted
13566 from patch_jump_insn.
13567 * rtl.h (tablejump_casesi_pattern): Declare.
13568 * cfgrtl.c (patch_jump_insn): Use it.
13569 * dwarf2cfi.c (create_trace_edges): Use it.
13571 2019-08-13 Wilco Dijkstra <wdijkstr@arm.com>
13574 * config/aarch64/aarch64.md (lrint): Disable lrint pattern if GPF
13575 operand is larger than a long int.
13577 2019-08-13 Richard Sandiford <richard.sandiford@arm.com>
13579 * machmode.h (opt_mode::else_mode): New function.
13580 (opt_mode::else_blk): Use it.
13581 * config/aarch64/aarch64-protos.h (aarch64_vq_mode): Declare.
13582 (aarch64_full_sve_mode, aarch64_sve_ld1rq_operand_p): Likewise.
13583 (aarch64_gen_stepped_int_parallel): Likewise.
13584 (aarch64_stepped_int_parallel_p): Likewise.
13585 (aarch64_expand_mov_immediate): Remove the optional gen_vec_duplicate
13587 * config/aarch64/aarch64.c
13588 (aarch64_expand_sve_widened_duplicate): Delete.
13589 (aarch64_expand_sve_dupq, aarch64_expand_sve_ld1rq): New functions.
13590 (aarch64_expand_sve_const_vector): Rewrite to handle more cases.
13591 (aarch64_expand_mov_immediate): Remove the optional gen_vec_duplicate
13592 argument. Use early returns in the !CONST_INT_P handling.
13593 Pass all SVE data vectors to aarch64_expand_sve_const_vector rather
13594 than handling some inline.
13595 (aarch64_full_sve_mode, aarch64_vq_mode): New functions, split out
13597 (aarch64_simd_container_mode): ...here.
13598 (aarch64_gen_stepped_int_parallel, aarch64_stepped_int_parallel_p)
13599 (aarch64_sve_ld1rq_operand_p): New functions.
13600 * config/aarch64/predicates.md (descending_int_parallel)
13601 (aarch64_sve_ld1rq_operand): New predicates.
13602 * config/aarch64/constraints.md (UtQ): New constraint.
13603 * config/aarch64/aarch64.md (UNSPEC_REINTERPRET): New unspec.
13604 * config/aarch64/aarch64-sve.md (mov<SVE_ALL:mode>): Remove the
13605 gen_vec_duplicate from call to aarch64_expand_mov_immediate.
13606 (@aarch64_sve_reinterpret<mode>): New expander.
13607 (*aarch64_sve_reinterpret<mode>): New pattern.
13608 (@aarch64_vec_duplicate_vq<mode>_le): New pattern.
13609 (@aarch64_vec_duplicate_vq<mode>_be): Likewise.
13610 (*sve_ld1rq<Vesize>): Replace with...
13611 (@aarch64_sve_ld1rq<mode>): ...this new pattern.
13613 2019-08-13 Wilco Dijkstra <wdijkstr@arm.com>
13615 * config/aarch64/aarch64.c (generic_tunings): Set function alignment to
13618 2019-08-13 Jozef Lawrynowicz <jozef.l@mittosystems.com>
13620 * config/msp430/driver-msp430.c (msp430_set_driver_var): New.
13621 * config/msp430/msp430-devices.c (canonicalize_path_dirsep): New.
13622 (msp430_check_path_for_devices): New.
13623 (parse_devices_csv_1): New.
13624 (parse_devices_csv): New.
13625 (msp430_extract_mcu_data): Try to find devices.csv and search for the
13626 MCU data in devices.csv before using the hard-coded data.
13627 Warn if devices.csv isn't found and the MCU wasn't found in the
13628 hard-coded data either.
13629 * config/msp430/msp430.h (DRIVER_SELF_SPECS): Call
13630 msp430_set_driver_var for -mno-warn-devices-csv and -mdevices-csv-loc.
13631 Search for devices.csv on -I and -L paths.
13632 (EXTRA_SPEC_FUNCTIONS): Add msp430_check_path_for_devices and
13633 msp430_set_driver_var.
13634 * config/msp430/msp430.opt: Add -mwarn-devices-csv and
13635 -mdevices-csv-loc=.
13636 * doc/invoke.texi (-mmcu): Document that -I and -L paths are
13637 searched for devices.csv.
13638 (mwarn-devices-csv): Document option.
13640 2019-08-13 Richard Sandiford <richard.sandiford@arm.com>
13642 * config/aarch64/aarch64-protos.h (aarch64_output_ptrue): Delete.
13643 * config/aarch64/aarch64-sve.md (*aarch64_sve_mov<PRED_ALL:mode>):
13644 Use a single Dn alternative instead of separate Dz and Dm
13645 alternatives. Use aarch64_output_sve_move_immediate.
13646 * config/aarch64/aarch64.c (aarch64_sve_element_int_mode): New
13648 (aarch64_simd_valid_immediate): Fill in the simd_immediate_info
13649 for predicates too.
13650 (aarch64_output_sve_mov_immediate): Handle predicate modes.
13651 (aarch64_output_ptrue): Delete.
13653 2019-08-13 Richard Sandiford <richard.sandiford@arm.com>
13655 * config/aarch64/aarch64.c (simd_immediate_info::insn_type): Add
13657 (simd_immediate_info::value, simd_immediate_info::step)
13658 (simd_immediate_info::modifier, simd_immediate_info::shift): Replace
13660 (simd_immediate_info::u): ...this new union.
13661 (simd_immediate_info::simd_immediate_info): Update accordingly.
13662 (aarch64_output_simd_mov_immediate): Likewise.
13663 (aarch64_output_sve_mov_immediate): Likewise.
13665 2019-08-13 Jozef Lawrynowicz <jozef.l@mittosystems.com>
13667 * config.gcc (msp430*-*-*): Add msp430-devices.o to extra_objs and
13669 * config/msp430/driver-msp430.c: Remove msp430_mcu_data.
13670 (msp430_select_cpu): New spec function.
13671 (msp430_select_hwmult_lib): Use msp430_extract_mcu_data to extract
13673 * config/msp430/msp430-devices.c: New file.
13674 * config/msp430/msp430-devices.h: New file.
13675 * config/msp430/msp430.c: Remove msp430_mcu_data.
13676 (msp430_option_override): Use msp430_extract_mcu_data to extract
13678 (msp430_use_f5_series_hwmult): Likewise.
13679 (use_32bit_hwmult): Likewise.
13680 (msp430_no_hwmult): Likewise.
13681 * config/msp430/msp430.h (ASM_SPEC): Don't pass -mmcu to the
13683 (DRIVER_SELF_SPECS): Call msp430_select_cpu if -mmcu is used without
13685 (EXTRA_SPEC_FUNCTIONS): Add msp430_select_cpu.
13686 * config/msp430/t-msp430: Add rule to build msp430-devices.o.
13687 Remove hard-coded MCU multilib data.
13689 2019-08-13 Richard Sandiford <richard.sandiford@arm.com>
13691 * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Switch
13692 based on the mode instead of testing properties of it.
13694 2019-08-13 Richard Sandiford <richard.sandiford@arm.com>
13696 * doc/md.texi: Document the x and y constraints for AArch64.
13697 * config/aarch64/aarch64.h (FP_LO8_REGNUM_P): New macro.
13698 (FP_LO8_REGS): New reg_class.
13699 (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Add an entry for FP_LO8_REGS.
13700 * config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
13701 (aarch64_regno_regclass, aarch64_class_max_nregs): Handle FP_LO8_REGS.
13702 * config/aarch64/predicates.md (aarch64_simd_register): Use
13703 FP_REGNUM_P instead of checking the classes manually.
13704 * config/aarch64/constraints.md (y): New constraint.
13706 2019-08-13 Richard Sandiford <richard.sandiford@arm.com>
13708 * config/aarch64/iterators.md (perm_insn): Include the "1"/"2" suffix.
13709 (perm_hilo): Remove UNSPEC_ZIP*, UNSEPC_TRN* and UNSPEC_UZP*.
13710 * config/aarch64/aarch64-simd.md
13711 (aarch64_<PERMUTE:perm_insn><PERMUTE:perm_hilo><mode>): Rename to..
13712 (aarch64_<PERMUTE:perm_insn><mode>): ...this and remove perm_hilo
13713 from the asm template.
13714 * config/aarch64/aarch64-sve.md
13715 (aarch64_<perm_insn><perm_hilo><PRED_ALL:mode>): Rename to..
13716 (aarch64_<perm_insn><PRED_ALL:mode>): ...this and remove perm_hilo
13717 from the asm template.
13718 (aarch64_<perm_insn><perm_hilo><SVE_ALL:mode>): Rename to..
13719 (aarch64_<perm_insn><SVE_ALL:mode>): ...this and remove perm_hilo
13720 from the asm template.
13721 * config/aarch64/aarch64-simd-builtins.def: Update comment.
13723 2019-08-13 Martin Liska <mliska@suse.cz>
13725 * value-prof.c (gimple_ic_transform): Add new line.
13726 Print details with MSG_NOTE.
13728 2019-08-13 Martin Liska <mliska@suse.cz>
13730 * doc/invoke.texi: Document automatic detection of jobserver.
13731 * lto-wrapper.c (run_gcc): Detect jobserver always.
13733 2019-08-13 Uroš Bizjak <ubizjak@gmail.com>
13735 * config/i386/i386-expand.c (ix86_expand_vector_set)
13736 <case E_V2SImode>: Use vec_merge path for
13737 TARGET_MMX_WITH_SSE && TARGET_SSE4_1.
13738 <case E_V8QImode>: Ditto.
13739 * config/i386/mmx.md (*mmx_pinsrd): New insn pattern.
13740 (*mmx_pinsrb): Ditto.
13742 2019-08-12 Jakub Jelinek <jakub@redhat.com>
13746 * config/i386/avxintrin.h (_mm256_zextpd128_pd256,
13747 _mm256_zextps128_ps256, _mm256_zextsi128_si256): New intrinsics.
13748 * config/i386/avx512fintrin.h (_mm512_zextpd128_pd512,
13749 _mm512_zextps128_ps512, _mm512_zextsi128_si512, _mm512_zextpd256_pd512,
13750 _mm512_zextps256_ps512, _mm512_zextsi256_si512): Likewise.
13752 2019-08-12 Richard Biener <rguenther@suse.de>
13755 * tree.c (free_lang_data_in_type): Do not free TYPE_BINFO dependent on
13758 2019-08-12 Richard Biener <rguenther@suse.de>
13761 * lto-wrapper.c (get_options_from_collect_gcc_options): Remove
13762 lang_mask option, always use CL_DRIVER.
13763 (get_options_from_collect_gcc_options): Adjust.
13764 (find_and_merge_options): Likewise.
13765 (run_gcc): Likewise.
13767 2019-08-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
13769 * ipa-predicate.c (add_condition): Restore inverted test.
13771 2019-08-10 Jakub Jelinek <jakub@redhat.com>
13773 * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_DEVICE_TYPE.
13774 (enum omp_clause_device_type_kind): New enum.
13775 (struct tree_omp_clause): Add subcode.device_type_kind.
13776 * tree.h (OMP_CLAUSE_DEVICE_TYPE_KIND): Define.
13777 * tree.c (omp_clause_num_ops, omp_clause_code_name): Add entries
13778 for device_type clause.
13779 (walk_tree_1): Handle OMP_CLAUSE_DEVICE_TYPE.
13780 * tree-pretty-print.c (dump_omp_clause): Likewise.
13783 * config/i386/mmx.md (usadv8qi): Use register_operand instead of
13786 2019-08-09 Vladimir Makarov <vmakarov@redhat.com>
13788 * reload1.c (finish_spills): Do not check ira_conflicts_p when
13789 handling spilled pseudos.
13791 2019-08-09 Richard Earnshaw <rearnsha@arm.com>
13794 * config/aarch64/aarch64.c (aarch64_gen_adjusted_ldpstp): Use copy_rtx
13795 to preserve the contents of the original insns.
13797 2019-08-09 Richard Earnshaw <rearnsha@arm.com>
13799 * config/arm/arm.md (addsi3_compare_op1): Add 16-bit thumb-2 variants.
13800 (addsi3_compare_op2): Likewise.
13802 2019-08-09 Martin Liska <mliska@suse.cz>
13804 * alias.c (alias_ptr_types_compatible_p): Strengten
13805 type comparison in LTO mode.
13807 2019-08-09 Richard Sandiford <richard.sandiford@arm.com>
13809 PR middle-end/90313
13810 * tree-tailcall.c (find_tail_calls): Reject calls that might
13811 read from an escaped RESULT_DECL.
13813 2019-08-09 Martin Liska <mliska@suse.cz>
13815 * doc/invoke.texi: Document the option value.
13816 * lto-wrapper.c (run_gcc): Set auto_parallel
13817 only with -flto=auto.
13819 2019-08-09 Martin Liska <mliska@suse.cz>
13821 * opts.c (common_handle_option): Error for an invalid argument
13824 2019-08-09 Martin Liska <mliska@suse.cz>
13826 * ipa-icf.c (sem_function::merge): Define AUTO_DUMP_SCOPE and
13827 use dump_printf to report optimization.
13828 (sem_variable::merge): Likwise.
13829 (sem_item_optimizer::merge_classes): Use dump_printf to report
13832 2019-08-09 Martin Liska <mliska@suse.cz>
13834 * value-prof.c (gimple_divmod_fixed_value_transform):
13835 Use dump_printf_loc.
13836 (gimple_mod_pow2_value_transform): Likewise.
13837 (gimple_mod_subtract_transform): Likewise.
13838 (init_node_map): Likewise.
13839 (gimple_ic_transform): Likewise.
13840 (gimple_stringops_transform): Likewise.
13842 2019-08-08 Mihailo Stojanovic <mistojanovic@wavecomp.com>
13844 * doc/extend.texi: Add const qualifier to ld intrinsics.
13846 2019-08-08 Segher Boessenkool <segher@kernel.crashing.org>
13848 * config/rs6000/dfp.md (D64_D128): Rename to ...
13849 (DDTD): ... this, throughout.
13850 (dfp_suffix): Rename to ...
13851 (q): ... this, throughout.
13853 2019-08-08 Segher Boessenkool <segher@kernel.crashing.org>
13855 * config/rs6000/dfp.md (D64_D128): Move earlier in the file.
13856 (dfp_suffix): Ditto.
13857 (adddd3, addtd3): Merge to ...
13858 (add<mode>3 for D64_D128): ... this.
13859 (subdd3, subtd3): Merge to ...
13860 (sub<mode>3 for D64_D128): ... this.
13861 (muldd3, multd3): Merge to ...
13862 (mul<mode>3 for D64_D128): ... this.
13863 (divdd3, divtd3): Merge to ...
13864 (div<mode>3 for D64_D128): ... this.
13865 (*cmpdd_internal1, *cmptd_internal1): Merge to ...
13866 (*cmp<mode>_internal1 for D64_D128): ... this.
13867 (ftruncdd2, ftrunctd2): Merge to ...
13868 (ftrunc<mode>2 for D64_D128): ... this.
13869 (fixdddi2, fixtddi2): Merge to ...
13870 (fix<mode>di2 for D64_D128): ... this.
13872 2019-08-08 Jim Wilson <jimw@sifive.com>
13875 * config/riscv/riscv.c (riscv_flatten_aggregate_field): New arg
13876 ignore_zero_width_bit_field_p. Skip zero size bitfields when true.
13877 Pass into recursive call.
13878 (riscv_flatten_aggregate_argument): New arg. Pass to
13879 riscv_flatten_aggregate_field.
13880 (riscv_pass_aggregate_in_fpr_pair_p): New local warned. Call
13881 riscv_flatten_aggregate_argument twice, with false and true as last
13882 arg. Process result twice. Compare results and warn if different.
13883 (riscv_pass_aggregate_in_fpr_and_gpr_p): Likewise.
13885 2019-08-08 Martin Liska <mliska@suse.cz>
13888 * gcc.c (driver::detect_jobserver): Use is_valid_fd.
13889 * lto-wrapper.c (jobserver_active_p): Likewise.
13891 2019-08-08 Martin Liska <mliska@suse.cz>
13893 * cgraphclones.c (set_new_clone_decl_and_node_flags): Drop
13894 IS_OPERATOR_NEW and IS_OPERATOR_DELETE.
13895 (create_version_clone_with_body): Likewise.
13897 2019-08-08 Jakub Jelinek <jakub@redhat.com>
13899 * gimplify.c (omp_add_variable): Use GOVD_PRIVATE | GOVD_EXPLICIT
13900 for VLA helper variables on target data even if not GOVD_FIRSTPRIVATE.
13901 (gimplify_scan_omp_clauses): For OMP_CLAUSE_USE_DEVICE_* use just
13902 GOVD_EXPLICIT flags.
13903 (gimplify_omp_workshare): For OMP_TARGET_DATA move all
13904 OMP_CLAUSE_USE_DEVICE_* clauses to the end of clauses chain.
13905 * omp-low.c (scan_sharing_clauses): For OMP_CLAUSE_USE_DEVICE_*
13906 call install_var_field with mask 11 instead of 3.
13907 (lower_omp_target): For OMP_CLAUSE_USE_DEVICE_* use pass
13908 (splay_tree_key) &DECL_UID (var) to build_sender_ref instead of var.
13910 2019-08-07 Richard Sandiford <richard.sandiford@arm.com>
13912 * config/aarch64/constraints.md (Z): Handle floating-point zeros too.
13913 * config/aarch64/predicates.md (aarch64_reg_or_zero): Likewise.
13915 2019-08-07 Richard Sandiford <richard.sandiford@arm.com>
13917 * config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): Add
13918 MOVPRFX alternatives. Make the GPR alternatives more expensive
13921 2019-08-07 Richard Sandiford <richard.sandiford@arm.com>
13923 * config/aarch64/aarch64-sve.md (fold_extract_last_<mode>):
13924 Disparage the GPR alternative relative to the FPR one.
13925 Fix handling of 8-bit and 16-bit FPR values.
13927 2019-08-07 Richard Sandiford <richard.sandiford@arm.com>
13929 * config/aarch64/iterators.md (BITWISEV): Delete.
13930 (SVE_INT_REDUCTION, SVE_FP_REDUCTION): New int iterators.
13931 (optab): Handle UNSPEC_UMAXV, UNSPEC_UMINV, UNSPEC_SMAXV,
13932 UNSPEC_SMINV, UNSPEC_FADDV, UNSPEC_FMAXNMV, UNSPEC_FMAXV,
13933 UNSPEC_FMINNMV, UNSPEC_FMINV.
13934 (bit_reduc_op): Delete.
13935 (sve_int_op): New int attribute.
13936 (sve_fp_op): Handle UNSPEC_FADDV, UNSPEC_FMAXNMV, UNSPEC_FMAXV,
13937 UNSPEC_FMINNMV, UNSPEC_FMINV.
13938 * config/aarch64/aarch64-sve.md
13939 (reduc_<MAXMINV:maxmin_uns>_scal_<SVE_I:mode>)
13940 (*reduc_<MAXMINV:maxmin_uns>_scal_<SVE_I:mode>)
13941 (reduc_<BITWISEV:optab>_scal_<SVE_I:mode>)
13942 (*reduc_<BITWISEV:optab>_scal_<SVE_I:mode>): Merge into...
13943 (reduc_<SVE_INT_REDUCTION:optab>_scal_<SVE_I:mode>)
13944 (*reduc_<SVE_INT_REDUCTION:optab>_scal_<SVE_I:mode>): ...these
13946 (reduc_plus_scal_<SVE_F:mode>, *reduc_plus_scal_<SVE_I:mode>)
13947 (reduc_<FMAXMINV:optab>_scal_<SVE_F:mode>)
13948 (*reduc_<FMAXMINV:optab>_scal_<SVE_F:mode>): Merge into...
13949 (reduc_<SVE_FP_REDUCTION:optab>_scal_<SVE_F:mode>)
13950 (*reduc_<SVE_FP_REDUCTION:optab>_scal_<SVE_F:mode>): ...these
13953 2019-08-07 Richard Sandiford <richard.sandiford@arm.com>
13955 * config/aarch64/aarch64-sve.md (fma<mode>4, *fma<mode>4)
13956 (fnma<mode>4, *fnma<mode>4, fnms<mode>4, *fnms<mode>4)
13957 (fms<mode>4, *fms<mode>4): Replace with...
13958 (<SVE_COND_FP_TERNARY:optab><SVE_F:mode>4)
13959 (*<SVE_COND_FP_TERNARY:optab><SVE_F:mode>4): ...these new patterns.
13960 Use unspecs instead of rtx codes.
13961 (cond_<optab><mode>, *cond_<optab><mode>_2, *cond_<optab><mode>_4)
13962 (*cond_<optab><mode>_any): Add the predicate to SVE_COND_FP_TERNARY.
13964 2019-08-07 Richard Sandiford <richard.sandiford@arm.com>
13966 * config/aarch64/iterators.md (SVE_COND_FP_MAXMIN_PUBLIC): New
13968 (maxmin_uns_op): Handle UNSPEC_COND_FMAXNM and UNSPEC_COND_FMINNM.
13969 * config/aarch64/aarch64-sve.md
13970 (<FMAXMIN:su><FMAXMIN:maxmin><SVE_F:mode>3): Rename to...
13971 (<SVE_COND_FP_MAXMIN_PUBLIC:optab><SVE_F:mode>3): ...this and
13972 use a single unspec for the rhs.
13973 (*<su><maxmin><mode>3): Delete.
13974 (<maxmin_uns><SVE_F:mode>3): Use a single unspec for the rhs.
13976 2019-08-07 Richard Sandiford <richard.sandiford@arm.com>
13978 * config/aarch64/iterators.md (UNSPEC_COND_FABS, UNSPEC_COND_FNEG)
13979 (UNSPEC_COND_FRINTA, UNSPEC_COND_FRINTI, UNSPEC_COND_FRINTM)
13980 (UNSPEC_COND_FRINTN, UNSPEC_COND_FRINTP, UNSPEC_COND_FRINTX)
13981 (UNSPEC_COND_FRINTZ, UNSPEC_COND_FSQRT): New unspecs.
13982 (optab, sve_fp_op): Handle them.
13983 (SVE_FP_UNARY): Delete.
13984 (optab): Remove sqrt entry.
13985 (sve_fp_op): Remove neg, abs and sqrt entries.
13986 (SVE_COND_FP_UNARY): New int iterator.
13987 * config/aarch64/aarch64-sve.md (<frint_pattern><mode>2)
13988 (*<frint_pattern><mode>2): Delete.
13989 (<SVE_FP_UNARY:optab><SVE_F:mode>2): Replace with...
13990 (<SVE_COND_FP_UNARY:optab><SVE_F:mode>2): ...this.
13991 (*<SVE_FP_UNARY:optab><SVE_F:mode>2): Replace with...
13992 (*<SVE_COND_FP_UNARY:optab><SVE_F:mode>2): ...this.
13994 2019-08-07 Richard Sandiford <richard.sandiford@arm.com>
13996 * config/aarch64/aarch64-sve.md (*pred_fold_left_plus_<mode>): Delete.
13998 2019-08-07 Richard Sandiford <richard.sandiford@arm.com>
14000 * config/aarch64/iterators.md (UNSPEC_COND_ADD): Rename to...
14001 (UNSPEC_COND_FADD): ...this.
14002 (UNSPEC_COND_SUB): Rename to...
14003 (UNSPEC_COND_FSUB): ...this.
14004 (UNSPEC_COND_MUL): Rename to...
14005 (UNSPEC_COND_FMUL): ...this.
14006 (UNSPEC_COND_DIV): Rename to...
14007 (UNSPEC_COND_FDIV): ...this.
14008 (UNSPEC_COND_MAX): Rename to...
14009 (UNSPEC_COND_FMAXNM): ...this.
14010 (UNSPEC_COND_MIN): Rename to...
14011 (UNSPEC_COND_FMINNM): ...this.
14012 (UNSPEC_COND_LT): Rename to...
14013 (UNSPEC_COND_FCMLT): ...this.
14014 (UNSPEC_COND_LE): Rename to...
14015 (UNSPEC_COND_FCMLE): ...this.
14016 (UNSPEC_COND_EQ): Rename to...
14017 (UNSPEC_COND_FCMEQ): ...this.
14018 (UNSPEC_COND_NE): Rename to...
14019 (UNSPEC_COND_FCMNE): ...this.
14020 (UNSPEC_COND_GE): Rename to...
14021 (UNSPEC_COND_FCMGE): ...this.
14022 (UNSPEC_COND_GT): Rename to...
14023 (UNSPEC_COND_FCMGT): ...this.
14024 (SVE_COND_FP_BINARY, SVE_COND_FP_CMP, optab, cmp_op, sve_fp_op)
14025 (sve_fp_op_rev): Update accordingly.
14026 * config/aarch64/aarch64.c (aarch64_unspec_cond_code): Likewise.
14028 2019-08-07 Richard Sandiford <richard.sandiford@arm.com>
14030 * config/aarch64/aarch64-sve.md: Reorganize contents and add
14032 * config/aarch64/check-sve-md.awk: New file.
14033 * config/aarch64/t-aarch64 (s-check-sve-md): New rule.
14034 (insn-conditions.md): Depend on it.
14036 2019-08-07 Uroš Bizjak <ubizjak@gmail.com>
14039 * config/i386/sse.md (*negsi2_1_zext): Simplify insn pattern.
14040 (*negsi2_cmpz_zext): Ditto.
14042 2019-08-07 Richard Sandiford <richard.sandiford@arm.com>
14044 * config/aarch64/iterators.md (commutative): Remove.
14046 2019-08-07 Richard Earnshaw <rearnsha@arm.com>
14049 * lto-wrapper.c (find_and_merge_options): Use CL_DRIVER when
14050 processing COLLECT_GCC_OPTIONS.
14051 (run_gcc): Likewise.
14053 2019-08-07 Bernd Edlinger <bernd.edlinger@hotmail.de>
14055 PR tree-optimization/91109
14056 * lra-remat.c (update_scratch_ops): Remove assignment of the
14059 2019-08-07 Richard Sandiford <richard.sandiford@arm.com>
14061 * data-streamer.h (streamer_write_poly_uint64): Declare.
14062 (streamer_read_poly_uint64): Likewise.
14063 * data-streamer-in.c (streamer_read_poly_uint64): New function.
14064 * data-streamer-out.c (streamer_write_poly_uint64): Likewise.
14065 * ipa-predicate.h (condition::size): Turn into a poly_int64.
14066 (add_condition): Take a poly_int64 size.
14067 * ipa-predicate.c (add_condition): Likewise.
14068 * ipa-prop.h (ipa_load_from_parm_agg): Take a poly_int64 size pointer.
14069 * ipa-prop.c (ipa_load_from_parm_agg): Likewise.
14070 (ipcp_modif_dom_walker::before_dom_children): Update accordingly.
14071 * ipa-fnsummary.c (evaluate_conditions_for_known_args): Handle
14072 condition::size as a poly_int64.
14073 (unmodified_parm_1): Take a poly_int64 size pointer.
14074 (unmodified_parm): Likewise.
14075 (unmodified_parm_or_parm_agg_item): Likewise.
14076 (set_cond_stmt_execution_predicate): Update accordingly.
14077 (set_switch_stmt_execution_predicate): Likewise.
14078 (will_be_nonconstant_expr_predicate): Likewise.
14079 (will_be_nonconstant_predicate): Likewise.
14080 (inline_read_section): Stream condition::size as a poly_int.
14081 (ipa_fn_summary_write): Likewise.
14083 2019-08-07 Martin Liska <mliska@suse.cz>
14085 * fold-const.c (twoval_comparison_p): Replace int
14086 with bool as a return type.
14087 (simple_operand_p): Likewise.
14088 (operand_equal_p): Replace int with bool as a return type.
14089 * fold-const.h (operand_equal_p): Likewise.
14091 2019-08-07 Jakub Jelinek <jakub@redhat.com>
14093 * tree-core.h (enum omp_clause_code): Adjust OMP_CLAUSE_USE_DEVICE_PTR
14094 OpenMP description. Add OMP_CLAUSE_USE_DEVICE_ADDR clause.
14095 * tree.c (omp_clause_num_ops, omp_clause_code_name): Add entries
14096 for OMP_CLAUSE_USE_DEVICE_ADDR clause.
14097 (walk_tree_1): Handle OMP_CLAUSE_USE_DEVICE_ADDR.
14098 * tree-pretty-print.c (dump_omp_clause): Likewise.
14099 * tree-nested.c (convert_nonlocal_omp_clauses,
14100 convert_local_omp_clauses): Likewise.
14101 * gimplify.c (gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses):
14103 * omp-low.c (scan_sharing_clauses, lower_omp_target): Likewise.
14104 Treat OMP_CLAUSE_USE_DEVICE_ADDR like OMP_CLAUSE_USE_DEVICE_PTR
14105 clause with array or reference to array types, no matter what type
14106 except for reference it has.
14108 2019-08-07 Kewen Lin <linkw@gcc.gnu.org>
14110 * config/rs6000/vector.md (vrotr<mode>3): New define_expand.
14112 2019-08-07 Kito Cheng <kito.cheng@sifive.com>
14114 * config/riscv/multilib-generator: (canonical_order): Add 'g'.
14115 (arch_canonicalize): Support rv32g and rv64g and fix error
14118 2019-08-06 Martin Liska <mliska@suse.cz>
14120 * cgraph.c (cgraph_node::dump): Dump DECL_IS_OPERATOR_NEW_P
14121 and DECL_IS_OPERATOR_DELETE_P.
14123 2019-08-06 Jakub Jelinek <jakub@redhat.com>
14125 * tree.h (OMP_CLAUSE_LASTPRIVATE_TASKLOOP_IV): Rename to ...
14126 (OMP_CLAUSE_LASTPRIVATE_LOOP_IV): ... this. Adjust comment.
14127 * gimplify.c (gimple_add_tmp_var): In SIMD contexts, turn addressable
14128 new vars into GOVD_PRIVATE rather than GOVD_LOCAL.
14129 (gimplify_omp_for): Don't do C++ random access iterator clause
14130 adjustments on combined constructs from OMP_LOOP. For OMP_LOOP,
14131 don't predetermine the artificial iterator in case of C++ random
14132 access iterators as lastprivate, but private. For OMP_LOOP, force
14133 bind expr around simd body and force for_pre_body before the
14134 construct. Use OMP_CLAUSE_LASTPRIVATE_LOOP_IV instead of
14135 OMP_CLAUSE_LASTPRIVATE_TASKLOOP_IV.
14136 (gimplify_omp_loop): Add firstprivate clauses on OMP_PARALLEL for
14137 diff var of C++ random access iterators. Handle
14138 OMP_CLAUSE_FIRSTPRIVATE. For OMP_CLAUSE_LASTPRIVATE_LOOP_IV, if
14139 not outermost also add OMP_CLAUSE_FIRSTPRIVATE, and in both cases
14140 clear OMP_CLAUSE_LASTPRIVATE_LOOP_IV on the lastprivate clause
14141 on the OMP_FOR and OMP_DISTRIBUTE constructs if any.
14142 * omp-low.c (lower_rec_input_clauses): For
14143 OMP_CLAUSE_LASTPRIVATE_LOOP_IV on simd copy construct the private
14144 variables instead of default constructing them.
14145 (lower_lastprivate_clauses): Use OMP_CLAUSE_LASTPRIVATE_LOOP_IV
14146 instead of OMP_CLAUSE_LASTPRIVATE_TASKLOOP_IV and move the
14147 is_taskloop_ctx check from the assert to the guarding condition.
14149 2019-08-06 Kito Cheng <kito.cheng@sifive.com>
14151 * config/riscv/multilib-generator: (canonical_order): New.
14152 (arch_canonicalize): Dito.
14153 Apply arch_canonicalize for alts.
14155 2019-08-05 Martin Sebor <msebor@redhat.com>
14157 * doc/extend.texi (Common Variable Attributes): Document alias
14160 2019-08-05 Marek Polacek <polacek@redhat.com>
14162 PR c++/91338 - Implement P1161R3: Deprecate a[b,c].
14163 * doc/invoke.texi: Document -Wcomma-subscript.
14165 2019-08-05 Richard Sandiford <richard.sandiford@arm.com>
14167 * tree-core.h (tree_function_decl): Make function_code an
14168 independent field. Group the remaining bitfields into bytes
14169 and move decl_type so that it contines to be at a byte boundary.
14170 Leave 12 bits for future expansion.
14172 2019-08-05 Richard Sandiford <richard.sandiford@arm.com>
14174 * gimple-fold.c (gimple_fold_mask_load_store_mem_ref)
14175 (gimple_fold_mask_load, gimple_fold_mask_store): New functions.
14176 (gimple_fold_call): Use them to fold IFN_MASK_LOAD and
14179 2019-08-05 Richard Sandiford <richard.sandiford@arm.com>
14181 * gimple.h (gimple_move_vops): Declare.
14182 * gimple.c (gimple_move_vops): New function
14183 * gimple-fold.c (replace_call_with_call_and_fold)
14184 (gimple_fold_builtin_memory_op, gimple_fold_builtin_memset)
14185 (gimple_fold_builtin_stpcpy, fold_builtin_atomic_compare_exchange)
14186 (gimple_fold_call): Use it.
14187 * ipa-param-manipulation.c (ipa_modify_call_arguments): Likewise.
14188 * tree-call-cdce.c (use_internal_fn): Likewise.
14189 * tree-if-conv.c (predicate_load_or_store): Likewise.
14190 * tree-ssa-ccp.c (optimize_atomic_bit_test_and): Likewise.
14191 * tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise.
14192 * tree-ssa-propagate.c (finish_update_gimple_call): Likewise.
14193 (update_call_from_tree): Likewise.
14194 * tree-vect-stmts.c (vectorizable_load): Likewise.
14195 * tree-vectorizer.c (adjust_simduid_builtins): Likewise.
14197 2019-08-05 Martin Liska <mliska@suse.cz>
14200 * tree-ssa-dce.c (propagate_necessity): Handle new operators
14201 with not arguments.
14202 (eliminate_unnecessary_stmts): Likewise.
14204 2019-08-05 Richard Biener <rguenther@suse.de>
14206 PR middle-end/91169
14207 * fold-const.c (get_array_ctor_element_at_index): Create
14208 offset_ints according to the sign of the index type and treat
14209 that as signed if it is obviously so.
14211 2019-08-05 Jakub Jelinek <jakub@redhat.com>
14214 * config/i386/avxintrin.h (_mm256_loadu2_m128, _mm256_storeu2_m128,
14215 _mm256_loadu2_m128d, _mm256_storeu2_m128d, _mm256_loadu2_m128i,
14216 _mm256_storeu2_m128i): New function.
14218 2019-08-05 Kito Cheng <kito.cheng@sifive.com>
14220 * config/riscv/riscv.c (riscv_promote_function_mode): New.
14221 (TARGET_PROMOTE_FUNCTION_MODE): Use riscv_promote_function_mode.
14223 2019-08-05 Alan Modra <amodra@gmail.com>
14226 * config/rs6000/freebsd64.h (CPLUSPLUS_CPP_SPEC),
14227 (LINK_GCC_C_SEQUENCE_SPEC): Undef.
14229 2019-08-04 Gerald Pfeifer <gerald@pfeifer.com>
14231 * doc/install.texi (Prerequisites): Remove reference to Tcl 8.6
14232 bug that was fixed in Tcl 8.6.1.
14234 2019-08-02 Michael Meissner <meissner@linux.ibm.com>
14236 * config/rs6000/future.md: New file.
14237 * config/rs6000/rs6000.md: Include future.md.
14238 * config/rs6000/t-rs6000 (MD_INCLUDES): Add future.md.
14240 2019-08-02 Bernd Edlinger <bernd.edlinger@hotmail.de>
14242 * function.c (assign_parm_adjust_stack_rtl): Revise STRICT_ALIGNMENT
14243 check to use targetm.slow_unaligned_access instead.
14245 * function.c (assign_param_data_one): Remove unused data members.
14247 2019-08-02 Steve Ellcey <sellcey@marvell.com>
14249 * omp-simd-clone.c (simd_clone_adjust_return_type): Remove call to
14250 build_distinct_type_copy.
14251 (simd_clone_adjust_argument_types): Ditto.
14252 (simd_clone_adjust): Call build_distinct_type_copy here.
14253 (expand_simd_clones): Ditto.
14255 2019-08-02 Uroš Bizjak <ubizjak@gmail.com>
14258 * config/i386/sse.md (*vec_extractv16qi_zext): New insn pattern.
14260 2019-08-02 Alexander Monakov <amonakov@ispras.ru>
14262 * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Simplify casts
14263 from 'const void *'.
14264 (sort_locs_in_loop_postorder_cmp): Likewise.
14266 2019-08-02 Eric Botcazou <ebotcazou@adacore.com>
14268 * doc/invoke.texi (hot-bb-count-fraction): Rework description.
14269 (hot-bb-count-ws-permille): Likewise.
14270 (hot-bb-frequency-fraction): Likewise.
14271 (unlikely-bb-count-fraction): Likewise.
14272 * params.def (hot-bb-count-fraction): Rework description.
14273 (hot-bb-count-ws-permille): Likewise.
14274 (hot-bb-frequency-fraction): Likewise.
14275 (unlikely-bb-count-fraction): Likewise. Remove min and max values.
14276 * predict.c (get_hot_bb_threshold): Deal with 0 HOT_BB_COUNT_FRACTION.
14278 2019-08-02 Uroš Bizjak <ubizjak@gmail.com>
14281 * config/i386/i386-expand.c (ix86_unordered_fp_compare) <case LTGT>:
14284 2019-08-02 Richard Biener <rguenther@suse.de>
14286 * vec.h (vec::sort): Add gcc_qsort_r support.
14287 (vec::bsearch): Add an overload with gcc_qsort_r style callbacks.
14288 * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Adjust
14289 to gcc_qsort_r style callback.
14290 (sort_locs_in_loop_postorder_cmp): Likewise.
14291 (analyze_memory_references): Use gcc_sort_r interfaces.
14292 (find_ref_loc_in_loop_cmp): Use new bsearch overload.
14294 2019-08-02 Martin Liska <mliska@suse.cz>
14297 * gcc.c (driver::maybe_run_linker): Call detect_jobserver
14298 to detect working job server.
14299 (driver::detect_jobserver): Test whether jobserver
14300 is active from GCC driver. That will prevent situation where
14301 GCC is invoked from a LD plugin and the linker already uses
14302 file descriptors suggested by make. That leads to a wrong
14304 * gcc.h (driver): Add detect_jobserver.
14305 * lto-wrapper.c (jobserver_active_p): Simplify sscanf by
14306 not scanning for --jobserver-auth prefix.
14308 2019-08-02 Jakub Jelinek <jakub@redhat.com>
14310 PR tree-optimization/91201
14311 * config/i386/i386-expand.c (ix86_expand_vector_extract): For elt == 0
14312 V16QImode extraction without sse4.1 try to use V4SImode lowpart
14315 2019-08-01 Martin Sebor <msebor@redhat.com>
14318 * tree.c (type_initializer_zero_p): Define.
14319 * tree.h (type_initializer_zero_p): New function.
14321 2019-08-01 Eric Botcazou <ebotcazou@adacore.com>
14323 * cfgrtl.c (relink_block_chain): Add line returns in dump file.
14325 2019-08-01 Eric Botcazou <ebotcazou@adacore.com>
14327 * cgraph.h (cgraph_edge::maybe_hot_p): Tweak comment.
14328 * cgraph.c (cgraph_edge::maybe_hot_p): Likewise. Remove useless test.
14329 * predict.c (maybe_hot_count_p): Likewise.
14330 (maybe_hot_bb_p): Tweak comment.
14331 (maybe_hot_edge_p): Likewise.
14332 (probably_never_executed): Likewise. Minor tweak.
14333 (probably_never_executed_bb_p): Likewise.
14334 (unlikely_executed_edge_p): Likewise.
14335 (probably_never_executed_edge_p): Likewise.
14336 (optimize_function_for_size_p): Likewise.
14337 (optimize_function_for_speed_p): Likewise.
14338 (function_optimization_type): Likewise.
14339 (optimize_bb_for_size_p): Likewise.
14340 (optimize_bb_for_speed_p): Likewise.
14341 (bb_optimization_type): Likewise.
14342 (optimize_edge_for_size_p): Likewise.
14343 (optimize_edge_for_speed_p): Likewise.
14344 (optimize_insn_for_size_p): Likewise.
14345 (optimize_insn_for_speed_p): Likewise.
14346 (optimize_loop_for_size_p): Likewise.
14347 (optimize_loop_for_speed_p): Likewise.
14348 (optimize_loop_nest_for_speed_p): Likewise.
14349 (optimize_loop_nest_for_size_p): Likewise.
14350 (predictable_edge_p): Likewise.
14351 (handle_missing_profiles): Minor tweak.
14353 2019-08-01 Michael Meissner <meissner@linux.ibm.com>
14355 * config/rs6000/predicates.md (pcrel_external_address): Update
14358 2019-08-01 Uroš Bizjak <ubizjak@gmail.com>
14361 * config/i386/mmx.md (usadv8qi): New expander.
14363 2019-08-01 Matthew Beliveau <mbelivea@redhat.com>
14366 * c-warn.c (c_do_switch_warnings): Suppress warning for enumerators
14367 with reserved names that are in a system header.
14369 2019-08-01 Uroš Bizjak <ubizjak@gmail.com>
14371 * config/i386/mmx.md (vec_extractv2si_0): Add (r,x) alternative.
14372 (*vec_extractv2si_0_zext_sse4): New insn pattern.
14373 (*vec_extractv2si_0_zext): Ditto.
14374 (*vec_extractv2si_1): Add (rm,x) alternative.
14375 (*vec_extractv2si_1_zext): New insn pattern.
14376 (*vec_extractv2si_zext_mem): Add "TARGET_MMX || TARGET_MMX_WITH_SSE"
14379 2019-08-01 Richard Biener <rguenther@suse.de>
14381 * domwalk.c (bb_postorder): Remove static variable.
14382 (cmp_bb_postorder): Adjust.
14383 (sort_bbs_postorder): Adjust and use gcc_sort_r.
14384 (dom_walker::walk): Adjust.
14386 2019-08-01 Alexander Monakov <amonakov@ispras.ru>
14388 * sort.cc (sort_r_ctx): New struct.
14389 (reorder23): Make templated on context type.
14390 (reorder45): Ditto.
14391 (cmp1): Ditto. Adjust signature.
14393 (mergesort): Ditto.
14394 [CHECKING_P] (cmp2to3): New static function. Use it...
14395 (gcc_qsort) [CHECKING_P]: ...here.
14396 (gcc_sort_r): New function.
14397 * system.h (sort_r_cmp_fn): New function typedef.
14398 (qsort_chk): Adjust signature.
14399 (gcc_sort_r): Declare.
14400 * vec.c (qsort_chk_error): Adjust.
14401 (qsort_chk): Adjust.
14403 2019-08-01 Richard Biener <rguenther@suse.de>
14405 * tree-ssa-pre.c (has_abnormal_preds): Remove global var.
14406 (compute_antic): Localize it here.
14408 2019-07-31 Maxim Blinov <maxim.blinov@embecosm.com>
14410 * common/config/riscv/riscv-common.c: Check -march string ends
14413 2019-07-31 Alexander Monakov <amonakov@ispras.ru>
14415 * ipa-devirt.c (type_warning_cmp): Make static.
14416 (decl_warning_cmp): Ditto.
14418 2019-07-31 Peter Bergner <bergner@linux.ibm.com>
14421 * config/rs6000/rs6000.opt (mdejagnu-cpu=): Delete option.
14422 * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
14423 use of deleted rs6000_dejagnu_cpu_index variable.
14424 * config/rs6000/rs6000.h (DRIVER_SELF_SPECS): Define.
14425 (SUBTARGET_DRIVER_SELF_SPECS): Likewise.
14426 * config/darwin.h (DRIVER_SELF_SPECS): Rename from this ...
14427 (SUBTARGET_DRIVER_SELF_SPECS): ...to this.
14428 * config/i386/i386.h (DRIVER_SELF_SPECS): Define.
14429 (SUBTARGET_DRIVER_SELF_SPECS): Likewise.
14431 2019-07-31 Richard Biener <rguenther@suse.de>
14433 PR tree-optimization/91280
14434 * tree-ssa-structalias.c (get_constraint_for_component_ref):
14435 Decompose MEM_REF manually for offset handling.
14437 2019-07-31 Richard Biener <rguenther@suse.de>
14439 PR tree-optimization/91293
14440 * tree-vect-slp.c (vect_build_slp_tree_2): Do not swap operands
14441 of reduction stmts.
14443 2019-07-31 Matt Thomas <matt@3am-software.com>
14444 Nick Hudson <nick@nthcliff.demon.co.uk>
14445 Matthew Green <mrg@eterna.com.au>
14446 Maya Rashish <coypu@sdf.org>
14448 * config.gcc (hppa*-*-netbsd*): New target.
14449 * config/pa/pa-netbsd.h: New file.
14450 * config/pa/pa32-netbsd.h: New file.
14452 2019-07-31 Jakub Jelinek <jakub@redhat.com>
14454 PR tree-optimization/91201
14455 * config/i386/mmx.md (reduc_plus_scal_v8qi): New expander.
14457 2019-07-31 Andrew Stubbs <ams@codesourcery.com>
14459 * config/gcn/gcn-valu.md
14460 (scatter<mode>_insn_1offset<exec_scatter>): Remove s_waitcnt.
14461 (scatter<mode>_insn_1offset_ds<exec_scatter>): Likewise.
14462 (scatter<mode>_insn_2offsets<exec_scatter>): Likewise.
14463 * config/gcn/gcn.c (gcn_md_reorg): Add delayeduse and reads to
14464 struct ilist. Add nops for delayeduse insns.
14465 * config/gcn/gcn.md (delayeduse): New attribute.
14466 (*movbi): Remove s_waitcnt from stores.
14467 (*mov<mode>_insn): Likewise.
14468 (*movti_insn): Likewise. Add delayeduse attribute.
14469 (sync_compare_and_swap<mode>_insn): Add delayeduse attribute.
14470 (atomic_store<mode>): Remove or adjust s_waitcnt.
14472 2019-07-31 Richard Biener <rguenther@suse.de>
14474 * vr-values.h (vr_values::swap_vr_value): New.
14475 (vr_values::free_value_range): likewise.
14476 * vr-values.c (vr_values::swap_vr_value): Implement.
14477 * gimple-ssa-evrp-analyze.h (evrp_range_analyzer::pop_value_range):
14478 Do not return a range or take a var.
14479 (evrp_range_analyzer::stack): Change back to recording a non-const
14481 * gimple-ssa-evrp-analyze.c
14482 (evrp_range_analyzer::record_ranges_from_stmt): Free unused
14484 (evrp_range_analyzer::pop_to_marker): Adjust.
14485 (evrp_range_analyzer::push_value_range): Use new swap_vr_value.
14486 (evrp_range_analyzer::pop_value_range): Likewise. Free the
14487 no longer needed value-range.
14489 2019-07-31 Martin Liska <mliska@suse.cz>
14491 * tree-ssa-dce.c (propagate_necessity): Delete operator can
14492 have size and (or) alignment as 2nd and later arguments.
14493 Mark all of them as necessary.
14495 2019-07-31 Richard Biener <rguenther@suse.de>
14497 PR tree-optimization/91178
14498 * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address):
14499 Use tail-recursion.
14501 2019-07-31 Jakub Jelinek <jakub@redhat.com>
14503 PR tree-optimization/91201
14504 * config/i386/sse.md (reduc_plus_scal_v16qi): New expander.
14505 (REDUC_PLUS_MODE): Add V32QImode for TARGET_AVX and V64QImode for
14507 (reduc_plus_scal_<mode>): Improve formatting by introducing
14510 2019-07-31 Sudakshina Das <sudi.das@arm.com>
14512 * config/aarch64/aarch64-builtins.c (enum aarch64_builtins): Add
14513 AARCH64_TME_BUILTIN_TSTART, AARCH64_TME_BUILTIN_TCOMMIT,
14514 AARCH64_TME_BUILTIN_TTEST and AARCH64_TME_BUILTIN_TCANCEL.
14515 (aarch64_init_tme_builtins): New.
14516 (aarch64_init_builtins): Call aarch64_init_tme_builtins.
14517 (aarch64_expand_builtin_tme): New.
14518 (aarch64_expand_builtin): Handle TME builtins.
14519 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Define
14520 __ARM_FEATURE_TME when enabled.
14521 * config/aarch64/aarch64-option-extensions.def: Add "tme".
14522 * config/aarch64/aarch64.h (AARCH64_FL_TME, AARCH64_ISA_TME): New.
14524 * config/aarch64/aarch64.md (define_c_enum "unspec"): Add UNSPEC_TTEST.
14525 (define_c_enum "unspecv"): Add UNSPECV_TSTART, UNSPECV_TCOMMIT and
14527 (tstart, ttest, tcommit, tcancel): New instructions.
14528 * config/aarch64/arm_acle.h (__tstart, __tcommit): New.
14529 (__tcancel, __ttest): New.
14530 (_TMFAILURE_REASON, _TMFAILURE_RTRY, _TMFAILURE_CNCL): New macro.
14531 (_TMFAILURE_MEM, _TMFAILURE_IMP, _TMFAILURE_ERR): Likewise.
14532 (_TMFAILURE_SIZE, _TMFAILURE_NEST, _TMFAILURE_DBG): Likewise.
14533 (_TMFAILURE_INT, _TMFAILURE_TRIVIAL): Likewise.
14534 * config/arm/types.md: Add new tme type attr.
14535 * doc/invoke.texi: Document "tme".
14537 2019-07-31 Joel Hutton <Joel.Hutton@arm.com>
14539 * config/arm/arm_cmse.h (cmse_nonsecure_caller): Add
14540 warn_unused_result attribute.
14541 (cmse_check_address_range): Add warn_unused_result attribute.
14543 2019-07-31 Richard Biener <rguenther@suse.de>
14545 PR tree-optimization/91257
14546 * tree-vrp.c (union_ranges): Unify equality and less tests
14547 by using compare_values. Re-order cheap tests first.
14549 2019-07-31 Jakub Jelinek <jakub@redhat.com>
14551 PR middle-end/91301
14552 * gimplify.c (gimplify_omp_for): If for class iterator on
14553 distribute parallel for there is no data sharing clause
14554 on inner_for_stmt, look for private clause on combined
14555 parallel too and if found, move it to inner_for_stmt.
14557 2019-07-31 Richard Sandiford <richard.sandiford@arm.com>
14559 * lra-int.h (lra_operand_data): Remove early_clobber field.
14560 (lra_insn_reg): Likewise.
14561 * lra.c (debug_operand_data): Update accordingly.
14562 (setup_operand_alternative): Likewise.
14563 (new_insn_reg): Likewise. Remove early_clobber parameter.
14564 (collect_non_operand_hard_regs): Update call accordingly.
14565 Don't assign to lra_insn_reg::early_clobber.
14566 (add_regs_to_insn_regno_info): Remove early_clobber parameter
14567 and update calls to new_insn_reg.
14568 (lra_update_insn_regno_info): Update calls accordingly.
14569 * lra-constraints.c (update_and_check_small_class_inputs): Take the
14570 alternative number as a parameter and test whether the operand
14571 is earlyclobbered in that particular alternative.
14572 (process_alt_operands): Update call accordingly. Use per-alternative
14573 checks for earyclobber here too.
14574 * lra-lives.c (reg_early_clobber_p): Check early_clobber_alts
14575 against zero for IRA_UNKNOWN_ALT.
14577 2019-07-30 Uroš Bizjak <ubizjak@gmail.com>
14579 * config/alpha/alpha.c (alpha_option_override): Quote a C type.
14581 2019-07-30 Wilco Dijkstra <wdijkstr@arm.com>
14583 * config/arm/thumb2.md (thumb2_movsi_insn): Adjust literal offset.
14584 * config/arm/vfp.md (thumb2_movsi_vfp): Likewise.
14586 2019-07-30 Martin Liska <mliska@suse.cz>
14589 * cgraph.c (cgraph_edge::make_direct): Use
14590 edge->indirect_unknown_callee as edge->resolve_speculation can
14591 deallocate edge which is this pointer.
14593 2019-07-30 Richard Biener <rguenther@suse.de>
14595 PR tree-optimization/91257
14596 * bitmap.c (bitmap_ior_and_compl_into): Open-code.
14598 2019-07-30 Martin Liska <mliska@suse.cz>
14600 * doc/invoke.texi: Document new behavior.
14601 * lto-wrapper.c (cpuset_popcount): New function
14602 is a copy of libgomp/config/linux/proc.c.
14603 (init_num_threads): Likewise.
14604 (run_gcc): Automatically detect core count for -flto.
14605 (jobserver_active_p): New function.
14607 2019-07-30 Richard Biener <rguenther@suse.de>
14609 PR tree-optimization/91257
14610 * bitmap.h (bitmap_ior_into_and_free): Declare.
14611 * bitmap.c (bitmap_list_unlink_element): Add defaulted param
14612 whether to add the unliked element to the freelist.
14613 (bitmap_list_insert_element_after): Add defaulted param for
14614 an already allocated element.
14615 (bitmap_ior_into_and_free): New function.
14616 * tree-ssa-structalias.c (condense_visit): Reduce the
14617 ponts-to and edge bitmaps of the SCC members in a
14618 logarithmic fashion rather than all to one.
14620 2019-07-30 Richard Sandiford <richard.sandiford@arm.com>
14622 * tree-ssa-math-opts.c (convert_mult_to_fma): Add a mul_cond
14623 parameter. When nonnull, make sure that the addition or subtraction
14624 has the same condition.
14625 (math_opts_dom_walker::after_dom_children): Try convert_mult_to_fma
14626 for CFN_COND_MUL too.
14628 2019-07-30 Richard Biener <rguenther@suse.de>
14630 PR tree-optimization/91291
14631 * tree-ssa-sccvn.c (rpo_elim::eliminate_push_avail): Ignore
14634 2019-07-30 Jakub Jelinek <jakub@redhat.com>
14636 PR middle-end/91216
14637 * omp-low.c (global_nonaddressable_vars): New variable.
14638 (use_pointer_for_field): For global decls, if they are non-addressable,
14639 remember it in the global_nonaddressable_vars bitmap, if they are
14640 addressable and in the global_nonaddressable_vars bitmap, ignore their
14641 TREE_ADDRESSABLE bit.
14642 (omp_copy_decl_2): Clear TREE_ADDRESSABLE also on private copies of
14643 vars in global_nonaddressable_vars bitmap.
14644 (execute_lower_omp): Free global_nonaddressable_vars bitmap.
14647 * config/i386/i386-expand.c (expand_vec_perm_blend): Change mask type
14648 from unsigned to unsigned HOST_WIDE_INT. For E_V64QImode cast
14649 comparison to unsigned HOST_WIDE_INT before shifting it left.
14651 2019-07-30 Uroš Bizjak <ubizjak@gmail.com>
14653 * config/i386/i386.md (movstrict<mode>): Use register_operand
14654 predicate for operand 0. Add expander condition. Assert that
14655 operand 0 is a SUBREG RTX.
14656 (*movstrict<mode>_1): Use register_operand predicate for operand 0.
14657 Update operand constraints and insn condition.
14658 (zero_extend<mode>si2_and): Do not call gen_movstrict<mode>.
14659 (zero_extendqihi2_and): Do not call gen_movstrictqi.
14660 (*setcc_qi_slp): Use register_operand predicate for operand 0.
14661 Update operand 0 constraints.
14662 (setcc_qi_slp splitters): Use register_operand predicate for operand 0.
14664 2019-07-29 Jozef Lawrynowicz <jozef.l@mittosystems.com>
14666 * config/msp430/msp430.h (DRIVER_SELF_SPECS): Define and emit errors
14667 when -m{code,data}-region are used without -mlarge.
14668 * config/msp430/msp430.c (msp430_option_override): Error when a
14669 non-default code or data region is used without -mlarge.
14670 (msp430_section_attr): Emit a warning and do not add upper/lower/either
14671 attributes when they are used without -mlarge.
14673 2019-07-29 Jozef Lawrynowicz <jozef.l@mittosystems.com>
14676 * config/msp430/msp430.h: Define ADDITIONAL_REGISTER_NAMES.
14678 2019-07-29 Richard Sandiford <richard.sandiford@arm.com>
14680 PR middle-end/91242
14681 * wide-int.h (generic_wide_int::sext_elt): New function.
14682 * inchash.h (hash::add_wide_int): Use it instead of elt.
14684 2019-07-29 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14686 * config/arm/arm-builtins.c (acle_builtin_data): Expand VAR1 to
14688 * config/arm/arm.md (<crc_variant>): Rename to...
14689 (arm_<crc_variant>): ... This.
14690 (<cdp>): Rename to...
14691 (arm_<cdp>): ... This.
14692 (<ldc>): Rename to...
14693 (arm_<ldc>): ... This.
14694 (<stc>): Rename to...
14695 (arm_<stc>): ... This.
14696 (<mcr>): Rename to...
14697 (arm_<mcr>): ... This.
14698 (<mrc>): Rename to...
14699 (arm_<mrc>): ... This.
14700 (<mcrr>): Rename to...
14701 (arm_<mcrr>): ... This.
14702 (<mrrc>): Rename to...
14703 (arm_<mrrc>): ... This.
14705 2019-07-29 Richard Biener <rguenther@suse.de>
14707 PR tree-optimization/91257
14708 * tree-ssa-sccvn.h (struct vn_avail): New.
14709 (struct vn_ssa_aux): Add avail member.
14710 * tree-ssa-sccvn.c (class rpo_elim): Remove m_rpo_avail
14711 member, add m_avail_freelist one.
14712 (rpo_elim::~rpo_elim): Remove.
14713 (rpo_elim::eliminate_avail): Adjust to new avail tracking
14715 (rpo_elim::eliminate_push_avail): Likewise.
14716 (do_unwind): Likewise.
14717 (do_rpo_vn): Likewise.
14719 2019-07-29 Richard Biener <rguenther@suse.de>
14721 PR tree-optimization/91257
14722 * tree-vrp.c (operand_less_p): Avoid dispatching to fold for
14723 most cases, instead call compare_values which handles the
14724 symbolic ranges we handle specially.
14725 (compare_values_warnv): Do not call operand_less_p but open-code
14726 the effective fold calls. Avoid converting so much.
14728 2019-07-29 Martin Liska <mliska@suse.cz>
14730 * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not
14731 remove LHS of operator new call. It's handled latter.
14733 2019-07-29 Richard Biener <rguenther@suse.de>
14735 PR tree-optimization/91267
14736 * vr-values.c (vr_values::update_value_range): Add early return
14737 for effectively VARYING lattice entry.
14739 2019-07-29 Richard Sandiford <richard.sandiford@arm.com>
14742 * tree-ssa-dce.c (keep_all_vdefs_p): New function.
14743 (mark_stmt_if_obviously_necessary): Mark all stmts with vdefs as
14744 necessary if keep_all_vdefs_p is true.
14745 (mark_aliased_reaching_defs_necessary): Add a gcc_checking_assert
14746 that keep_all_vdefs_p is false.
14747 (mark_all_reaching_defs_necessary): Likewise.
14748 (propagate_necessity): Skip the vuse scan if keep_all_vdefs_p is true.
14750 2019-07-29 Richard Sandiford <richard.sandiford@arm.com>
14752 * common.opt (Og): Change the initial value of flag_dse to 0.
14753 * opts.c (default_options_table): Move OPT_ftree_dse from
14754 OPT_LEVELS_1_PLUS to OPT_LEVELS_1_PLUS_NOT_DEBUG. Also add
14755 OPT_fdse to OPT_LEVELS_1_PLUS_NOT_DEBUG. Put the OPT_ftree_pta
14756 entry before the OPT_ftree_sra entry.
14757 * doc/invoke.texi (Og): Add -fdse and -ftree-dse to the list
14758 of flags disabled by Og.
14760 2019-07-29 Richard Sandiford <richard.sandiford@arm.com>
14762 * tree-cfg.c (execute_fixup_cfg): Don't delete stores to write-only
14765 2019-07-29 Richard Sandiford <richard.sandiford@arm.com>
14767 * doc/sourcebuild.texi (check-function-bodies): Document.
14769 2019-07-29 Richard Sandiford <richard.sandiford@arm.com>
14771 * simplify-rtx.c (simplify_const_unary_operation): Fold a
14772 VEC_DUPLICATE of a fixed-length vector even if the result
14773 is variable-length. Likewise fold a duplicate of a
14774 variable-length vector if the variable-length vector is
14775 itself a duplicate of a fixed-length sequence.
14776 (test_vector_ops_duplicate): Test more cases.
14778 2019-07-29 Richard Sandiford <richard.sandiford@arm.com>
14780 * vector-builder.h (vector_builder): Add a shape template parameter.
14781 (vector_builder::new_unary_operation): New function, generalizing
14782 the old tree_vector_builder function.
14783 (vector_builder::new_binary_operation): Likewise.
14784 (vector_builder::binary_encoded_nelts): Likewise.
14785 * int-vector-builder.h (int_vector_builder): Update template
14786 parameters to vector_builder.
14787 (int_vector_builder::shape_nelts): New function.
14788 * rtx-vector-builder.h (rtx_vector_builder): Update template
14789 parameters to vector_builder.
14790 (rtx_vector_builder::shape_nelts): New function.
14791 (rtx_vector_builder::nelts_of): Likewise.
14792 (rtx_vector_builder::npatterns_of): Likewise.
14793 (rtx_vector_builder::nelts_per_pattern_of): Likewise.
14794 * tree-vector-builder.h (tree_vector_builder): Update template
14795 parameters to vector_builder.
14796 (tree_vector_builder::shape_nelts): New function.
14797 (tree_vector_builder::nelts_of): Likewise.
14798 (tree_vector_builder::npatterns_of): Likewise.
14799 (tree_vector_builder::nelts_per_pattern_of): Likewise.
14800 * tree-vector-builder.c (tree_vector_builder::new_unary_operation)
14801 (tree_vector_builder::new_binary_operation): Delete.
14802 (tree_vector_builder::binary_encoded_nelts): Likewise.
14803 * simplify-rtx.c: Include rtx-vector-builder.h.
14804 (distributes_over_addition_p): New function.
14805 (simplify_const_unary_operation)
14806 (simplify_const_binary_operation): Generalize handling of vector
14807 constants to include variable-length vectors.
14808 (test_vector_ops_series): Add more tests.
14810 2019-07-28 Jan Hubicka <hubicka@ucw.cz>
14813 * ipa-devirt.c (warn_types_mismatch): Compare indentifiers
14814 than INDENTIFIER_POINTER.
14816 2019-07-28 Martin Liska <mliska@suse.cz>
14819 * cgraph.c (symbol_table::create_edge): Always allocate
14821 (symbol_table::free_edge): Store summary_id to
14822 edge_released_summary_ids if != -1;
14823 * cgraph.h (NEXT_FREE_NODE): Remove.
14824 (SET_NEXT_FREE_NODE): Likewise.
14825 (NEXT_FREE_EDGE): Likewise.
14826 (symbol_table::release_symbol): Store summary_id to
14827 cgraph_released_summary_ids if != -1;
14828 (symbol_table::allocate_cgraph_symbol): Always allocate
14831 2019-07-28 Alan Modra <amodra@gmail.com>
14833 * config/rs6000/rs6000-call.c (rs6000_output_mi_thunk): Use
14836 2019-07-28 Alan Modra <amodra@gmail.com>
14839 * config/rs6000/linux.h (GNU_USER_TARGET_D_OS_VERSIONS): Don't
14841 * config/rs6000/linux64.h (TARGET_OS_CPP_BUILTINS): Invoke
14842 GNU_USER_TARGET_OS_CPP_BUILTINS for aixdesc abi.
14843 (GNU_USER_TARGET_D_OS_VERSIONS): Don't define.
14845 2019-07-28 Alan Modra <amodra@gmail.com>
14848 * config/rs6000/sysv4.h (ASM_DEFAULT_SPEC): Modify if -m64.
14849 * config/rs6000/default64.h (ASM_DEFAULT_SPEC): Define.
14850 * config/rs6000/freebsd64.h (ASM_DEFAULT_SPEC): Don't define.
14851 * config/rs6000/linux64.h (ASM_DEFAULT_SPEC): Likewise.
14852 * config/rs6000/rtems.h (ASM_DEFAULT_SPEC): Likewise.
14853 * config/rs6000/rs6000.h (ASM_DEFAULT_EXTRA): Define and use
14854 in asm_default spec.
14855 * config/rs6000/eabialtivec.h (ASM_DEFAULT_EXTRA): Redefine.
14856 * config/rs6000/linuxaltivec.h (ASM_DEFAULT_EXTRA): Redefine.
14858 2019-07-28 Gerald Pfeifer <gerald@pfeifer.com>
14860 * doc/include/gpl_v3.texi (Copying): Use https for www.gnu.org.
14862 2019-07-26 Tamar Christina <tamar.christina@arm.com>
14865 * config.gcc: Relax parsing of AARCH64_OPT_EXTENSION.
14866 * config/aarch64/aarch64-option-extensions.def: Add new comments
14867 and restore easier to read options.
14869 2019-07-26 Tamar Christina <tamar.christina@arm.com>
14871 * convert.c (convert_to_real_1): Move part of conversion code...
14872 * match.pd: ...To here.
14874 2019-07-26 Martin Jambor <mjambor@suse.cz>
14877 * ipa-inline-transform.c (check_speculations_1): New function.
14878 (push_all_edges_in_set_to_vec): Likewise.
14879 (check_speculations): Use check_speculations_1, new parameter
14881 (inline_call): Pass new_edges to check_speculations.
14882 * ipa-inline.c (add_new_edges_to_heap): Assert edge_callee is not
14884 (speculation_useful_p): Early return true if edge is inlined, remove
14885 later checks for inline_failed.
14887 2019-07-25 Vladimir Makarov <vmakarov@redhat.com>
14889 PR rtl-optimization/91223
14890 * lra-constraints.c (process_alt_operands): Fail for unsuccessful
14891 matching with INOUT operand.
14893 2019-07-25 Eric Botcazou <ebotcazou@adacore.com>
14895 * stmt.c (expand_case): Try to narrow the index type if it's larger
14896 than a word. Tidy up.
14898 2019-07-25 Eric Botcazou <ebotcazou@adacore.com>
14900 * cif-code.def (NEVER_CALL): New code.
14901 * ipa-inline.c (want_inline_small_function_p): Fix formatting issues.
14902 Set the failure to CIF_NEVER_CALL if the IPA count is zero.
14904 2019-07-25 Wilco Dijkstra <wdijkstr@arm.com>
14906 * config/arm/thumb2.md (thumb2_movsi_insn): Fix load/store low reg.
14907 * config/arm/vfp.md (thumb2_movsi_vfp): Likewise.
14909 2019-07-23 Jan Hubicka <hubicka@ucw.cz>
14911 * ipa-devirt.c (add_type_duplicate): Fix return value.
14913 2019-07-25 Richard Biener <rguenther@suse.de>
14915 * tree-vrp.c (extract_range_from_multiplicative_op): Add
14916 type parameter and use it instead of guessing expression
14917 type from the first operand.
14918 (extract_range_from_binary_expr): Pass expr_type down.
14920 2019-07-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14922 * config/arm/arm.md (SATrev): Change to code attribute.
14923 (*satsi_<SAT:code>): Adjust for the above.
14924 (*satsi_<SAT:code>_shift): Likewise.
14926 2019-07-25 Richard Biener <rguenther@suse.de>
14928 * gimple-loop-versioning.cc (loop_versioning::prune_loop_conditions):
14929 Make value_range * temporary const.
14930 * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::try_find_new_range):
14932 (evrp_range_analyzer::record_ranges_from_): Likewise.
14933 (evrp_range_analyzer::pop_value_range): Return a const value_range *,
14934 deal with having recorded a const one.
14935 * gimple-ssa-evrp-analyze.h (evrp_range_analyzer::get_value_range):
14936 Return a const value_range *.
14937 (evrp_range_analyzer::pop_value_range): Likewise.
14938 (evrp_range_analyzer::stack): Record const value_range *s.
14939 * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children):
14941 * gimple-ssa-sprintf.c (get_int_range): Likewise.
14942 (format_integer): Likewise.
14943 (sprintf_dom_walker::handle_gimple_call): Likewise.
14944 * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Likewise.
14945 * tree-vrp.c (vrp_prop::set_def_to_varying): Add.
14946 (vrp_prop::get_value_range): Adjust.
14947 (vrp_prop::vrp_initialize): Use set_def_to_varying instead of
14948 modifying the lattice in-place.
14949 (vrp_prop::visit_stmt): Likewise.
14950 * vr-values.c (vr_values::get_lattice_entry): New private method.
14951 (vr_values::get_value_range): Wrap it and return a const
14953 (vr_values::set_def_to_varying): New.
14954 (vr_values::set_defs_to_varying): Use it.
14955 (vr_values::update_value_range): Likewise.
14956 (vr_values::vrp_stmt_computes_nonzero): Adjust.
14957 (values::op_with_constant_singleton_va): Likewise.
14958 (vr_values::extract_range_for_var_from_co): Likewise.
14959 (vr_values::extract_range_from_ssa_name): Likewise.
14960 (vr_values::extract_range_from_cond_expr): Likewise.
14961 (vr_values::extract_range_basic): Likewise.
14962 (compare_ranges): Take const value_range *, adjust.
14963 (compare_range_with_value): Likewise.
14964 (vrp_valueize): Adjust.
14965 (vrp_valueize_1): Likewise.
14966 (vr_values::get_vr_for_comparison): Return a const value_range *.
14967 (vr_values::compare_name_with_value): Adjust.
14968 (vr_values::compare_names): Likewise.
14969 (vr_values::vrp_evaluate_conditional_warnv_with_ops_using_ranges):
14971 (vr_values::vrp_evaluate_conditional): Likewise.
14972 (find_case_label_ranges): Take a const value_range *.
14973 (vr_values::vrp_visit_switch_stmt): Adjust.
14974 (vr_values::extract_range_from_phi_node): Likewise.
14975 (vr_values::simplify_div_or_mod_using_ran): Likewise.
14976 (vr_values::simplify_abs_using_ranges): Likewise.
14977 (test_for_singularity): Take a const value_range *.
14978 (range_fits_type_p): Likewise.
14979 (vr_values::simplify_cond_using_ranges_1): Adjust.
14980 (vr_values::simplify_cond_using_ranges_2): Likewise.
14981 (vr_values::simplify_switch_using_ranges): Likewise.
14982 (vr_values::simplify_float_conversion_usi): Likewise.
14983 (vr_values::two_valued_val_range_p): Likewise.
14984 * vr-values.h (vr_values::get_value_range): Return a const
14986 (vr_values::set_def_to_varying): New.
14987 (vr_values::get_lattice_entry): New private method.
14988 (vr_values::get_vr_for_comparison): Return a const value_range *.
14990 2019-07-25 Martin Liska <mliska@suse.cz>
14991 Dominik Infuhr <dominik.infuehr@theobroma-systems.com>
14994 * common.opt: Add -fallocation-dce
14995 * gimple.c (gimple_call_operator_delete_p): New.
14996 * gimple.h (gimple_call_operator_delete_p): Likewise.
14997 * tree-core.h (enum function_decl_type): Add OPERATOR_DELETE.
14998 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Handle
14999 DECL_IS_OPERATOR_DELETE_P.
15000 (mark_all_reaching_defs_necessary_1): Likewise.
15001 (propagate_necessity): Likewise.
15002 (eliminate_unnecessary_stmts): Handle
15003 gimple_call_operator_delete_p.
15004 * tree-streamer-in.c (unpack_ts_function_decl_value_fields):
15005 Add packing of OPERATOR_DELETE.
15006 * tree-streamer-out.c (pack_ts_function_decl_value_fields):
15008 * tree.h (DECL_IS_OPERATOR_DELETE_P): New.
15009 (DECL_SET_IS_OPERATOR_DELETE): New.
15010 (DECL_IS_REPLACEABLE_OPERATOR_NEW_P): Likewise.
15012 2019-07-25 Martin Liska <mliska@suse.cz>
15014 * calls.c (maybe_warn_alloc_args_overflow): Use new macros
15015 (e.g. DECL_SET_LAMBDA_FUNCTION and DECL_LAMBDA_FUNCTION_P).
15016 * coverage.c (coverage_begin_function): Likewise.
15017 * fold-const.c (tree_expr_nonzero_warnv_p): Likewise.
15018 * gimple.c (gimple_call_nonnull_result_p): Likewise.
15019 * ipa-icf.c (sem_item::compare_referenced_symbol_properties): Likewise.
15020 (sem_item::hash_referenced_symbol_properties): Likewise.
15021 * lto-streamer-out.c (hash_tree): Likewise.
15022 * predict.c (expr_expected_value_1): Likewise.
15023 * tree-inline.c (expand_call_inline): Likewise.
15024 * tree-streamer-in.c (unpack_ts_function_decl_value_fields): Likewise.
15025 * tree-streamer-out.c (pack_ts_function_decl_value_fields): Likewise.
15026 * tree-core.h (enum function_decl_type): New enum.
15027 (struct tree_function_decl): Remove operator_new_flag and lambda_function.
15028 * tree.h (FUNCTION_DECL_DECL_TYPE): New.
15029 (set_function_decl_type): Likewise.
15030 (DECL_IS_OPERATOR_NEW_P): New.
15031 (DECL_SET_IS_OPERATOR_NEW): Likewise.
15032 (DECL_LAMBDA_FUNCTION): Likewise.
15033 (DECL_LAMBDA_FUNCTION_P): Likewise.
15034 (DECL_IS_OPERATOR_NEW): Remove.
15035 (DECL_SET_LAMBDA_FUNCTION): Likewise.
15037 2019-07-25 Xiong Hu Luo <luoxhu@linux.ibm.com>
15039 * ipa-profile.c (get_most_common_single_value): Use
15040 get_nth_most_common_value.
15041 * profile.c (sort_hist_value): New function.
15042 (compute_value_histograms): Call sort_hist_value to sort the
15043 values after loading from disk.
15044 * value-prof.c (get_most_common_single_value): Rename to ...
15045 get_nth_most_common_value. Add input params n, return
15046 the n_th value and count.
15047 (gimple_divmod_fixed_value_transform): Use
15048 get_nth_most_common_value.
15049 (gimple_ic_transform): Likewise.
15050 (gimple_stringops_transform): Likewise.
15051 * value-prof.h (get_most_common_single_value): Add input params
15054 2019-07-25 Richard Biener <rguenther@suse.de>
15056 PR tree-optimization/91236
15057 * tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Fix
15058 size of CONSTRUCTOR write. Fix buffer size we pass to
15059 native_encode_expr.
15061 2019-07-24 Jozef Lawrynowicz <jozef.l@mittosystems.com>
15063 * config.gcc (msp430*-*-*): Fix non-GNU style in r273774.
15064 * config/msp430/msp430.h (ENDFILE_SPEC): Fix non-GNU style in
15067 2019-07-24 Jozef Lawrynowicz <jozef.l@mittosystems.com>
15069 * config.gcc (msp430*-*-*): Enable initfini_array by default unless
15070 explicitly disabled with --disable-initfini-array.
15072 2019-07-24 Jozef Lawrynowicz <jozef.l@mittosystems.com>
15074 * config/msp430/msp430.h (ENDFILE_SPEC): Wrap uses of crtn*.o in
15077 2019-07-24 Martin Sebor <msebor@redhat.com>
15079 PR tree-optimization/91183
15080 PR tree-optimization/86688
15081 * builtins.c (compute_objsize): Handle MEM_REF.
15082 * tree-ssa-strlen.c (class ssa_name_limit_t): New.
15083 (get_min_string_length): Remove.
15084 (count_nonzero_bytes): New function.
15085 (handle_char_store): Rename...
15086 (handle_store): to this. Handle multibyte stores via integer types.
15087 (strlen_check_and_optimize_stmt): Adjust conditional and the called
15090 2019-07-24 Martin Sebor <msebor@redhat.com>
15093 * diagnostic.c (diagnostic_classify_diagnostic): Use lang_mask.
15094 (diagnostic_report_diagnostic): Same.
15095 * diagnostic.h (diagnostic_context::option_enabled): Add an argument.
15096 (diagnostic_context::lang_mask): New data member.
15097 * ipa-pure-const.c (suggest_attribute): Use
15098 lang_hooks.option_lang_mask ().
15099 * opts-common.c (option_enabled): Handle new argument.
15100 (get_option_state): Pass an additional argument.
15101 * opts.c (print_filtered_help): Print supported languages for
15102 unsupported options. Adjust printing of current state.
15103 * opts.h (option_enabled): Add argument.
15104 * toplev.c (print_switch_values): Use lang_mask.
15105 (general_init): Set global_dc->lang_mask.
15107 2019-07-24 Iain Sandoe <iain@sandoe.co.uk>
15110 * config/i386/darwin.h (REAL_LIBGCC_SPEC): Revert change from r273749.
15112 2019-07-24 Giuliano Belinassi <giuliano.belinassi@usp.br>
15114 * cgraphunit.c (symbol_table::compile): Start and stop
15115 TV_CGRAPH_IPA_PASSES and TV_CGRAPH_FUNC_EXPANSION timers.
15116 * timevar.def (TV_CGRAPH_IPA_PASSES, TV_CGRAPH_FUNC_EXPANSION): New.
15118 2019-07-24 Oliver Browne <oliverbrowne62@gmail.com>
15120 * gimplify.c (flag_instrument_functions_exclude_p): Include
15121 namespace/class information in the printable name.
15122 * opts.c (add_comma_separated_to_vector): Add NUL terminator
15123 to tokens entered into the vector.
15125 2019-07-24 Eric Botcazou <ebotcazou@adacore.com>
15127 * tree-nested.c (build_simple_mem_ref_notrap): New function.
15128 (get_static_chain): Call it instead of build_simple_mem_ref.
15129 (get_frame_field): Likewise.
15130 (get_nonlocal_debug_decl): Likewise.
15131 (convert_nonlocal_reference_op): Likewise.
15133 2019-07-24 Claudiu Zissulescu <claziss@synopsys.com>
15135 * config/arc/arc-protos.h (arc_output_function_epilogue): Delete
15137 (arc_compute_frame_size): Millicode is disabled when compiling
15139 (arc_return_address_register): Likewise.
15140 (arc_compute_function_type): Likewise.
15141 (arc_compute_frame_size): Likewise.
15142 (secondary_reload_info): Likewise.
15143 (arc_get_unalign): Likewise.
15144 (arc_can_use_return_insn): Declare.
15145 * config/arc/arc.c (AUX_LP_START): Define
15146 (AUX_LP_END): Likewise.
15147 (arc_frame_info): Update gmask member to 64-bit datum.
15148 (GMASK_LEN): Update.
15149 (arc_compute_function_type): Make it static, move it forward.
15150 (arc_must_save_register): Update, consider the extra regs.
15151 (arc_compute_millicode_save_restore_regs): Update to use the 64
15153 (arc_compute_frame_size): Likewise.
15154 (arc_enter_leave_p): Likewise.
15155 (arc_save_callee_saves): Likewise.
15156 (arc_restore_callee_saves): Likewise.
15157 (arc_save_callee_enter): Likewise.
15158 (arc_restore_callee_leave): Likewise.
15159 (arc_save_callee_milli): Likewise.
15160 (arc_restore_callee_milli): Likewise.
15161 (arc_expand_prologue): Add new interrupt handling.
15162 (arc_return_address_register): Make it static, move it forward.
15163 (arc_expand_epilogue): Add new interrupt handling.
15164 (arc_get_unalign): Delete.
15165 (arc_epilogue_uses): Make sure we do not remove the extra
15166 saved/restored registers when interrupt.
15167 (arc_can_use_return_insn): New function.
15168 (push_reg): Likewise.
15169 (pop_reg): Likewise.
15170 (arc_save_callee_saves): Add ZOL and FPX aux registers saving
15172 (arc_restore_callee_saves): Likewise, but restoring.
15173 * config/arc/arc.md (VUNSPEC_ARC_ARC600_RTIE): Define.
15174 (R33_REG): Likewise.
15175 (R34_REG): Likewise.
15176 (R35_REG): Likewise.
15177 (R36_REG): Likewise.
15178 (R37_REG): Likewise.
15179 (R38_REG): Likewise.
15180 (R39_REG): Likewise.
15181 (R45_REG): Likewise.
15182 (R46_REG): Likewise.
15183 (R47_REG): Likewise.
15184 (R48_REG): Likewise.
15185 (R49_REG): Likewise.
15186 (R50_REG): Likewise.
15187 (R51_REG): Likewise.
15188 (R52_REG): Likewise.
15189 (R53_REG): Likewise.
15190 (R54_REG): Likewise.
15191 (R55_REG): Likewise.
15192 (R56_REG): Likewise.
15193 (R58_REG): Likewise.
15194 (type): Add rtie attribute.
15195 (in_call_delay_slot): Use RETURN_ADDR_REGNUM.
15196 (movsi_insn): Accept moves to lp_count.
15197 (rtie): Update pattern.
15198 (simple_return): Simplify it, don't use this pattern as a return
15200 (arc600_rtie): New pattern.
15201 (p_return_i): Clean up.
15202 (return): Likewise.
15203 * config/arc/builtins.def (rtie): Only available for non ARC6xx
15205 * config/arc/predicates.md (move_src_operand): Consider lp_count
15208 2019-07-24 Andreas Krebbel <krebbel@linux.ibm.com>
15210 * config/s390/predicates.md (addv_const_operand): New predicate.
15211 * config/s390/s390-modes.def (CCO): New condition code mode.
15212 * config/s390/s390.c (s390_match_ccmode_set): Handle E_CCOmode.
15213 (s390_branch_condition_mask): Likewise.
15214 * config/s390/s390.md ("addv<mode>4", "subv<mode>4")
15215 ("mulv<mode>4"): New expanders.
15216 ("*addv<mode>3_ccoverflow", "*addv<mode>3_ccoverflow_const")
15217 ("*subv<mode>3_ccoverflow", "*mulv<mode>3_ccoverflow"): New
15218 pattern definitions.
15220 2019-07-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
15222 PR middle-end/91166
15223 * match.pd (vec_perm_expr(v, v, mask) -> v): New pattern.
15224 (define_predicates): Add entry for uniform_vector_p.
15225 (vec_same_elem_p): New match pattern.
15227 2019-07-24 Iain Sandoe <iain@sandoe.co.uk>
15230 * config/i386/darwin.h (REAL_LIBGCC_SPEC): Move from here...
15231 * config/i386/darwin32-biarch.h .. to here.
15232 * config/i386/darwin64-biarch.h: Adjust comments.
15233 * config/rs6000/darwin32-biarch.h: Likewise.
15234 * config/rs6000/darwin64-biarch.h: Likewise.
15235 * config.gcc: Missed commit from r273746
15236 (*-*-darwin*): Don't include CPU t-darwin here.
15237 (i[34567]86-*-darwin*): Adjust to use biarch files. Produce
15238 an error message if i686-darwin configuration is attempted for
15241 2019-07-23 Iain Sandoe <iain@sandoe.co.uk>
15244 * config.gcc (*-*-darwin*): Don't include CPU t-darwin here.
15245 (i[34567]86-*-darwin*): Adjust to use biarch files. Produce
15246 an error message if i686-darwin configuration is attempted for
15248 (x86_64-*-darwin*): Switch to single multilib for Darwin >= 18.
15249 (powerpc-*-darwin*): Use biarch files where needed.
15250 (powerpc64-*-darwin*): Likewise.
15251 * config/i386/darwin.h (REAL_LIBGCC_SPEC): Move to new biarch file.
15252 (DARWIN_ARCH_SPEC, DARWIN_SUBARCH_SPEC): Revise for default single
15254 * config/i386/darwin32-biarch.h: New.
15255 * config/i386/darwin64.h: Rename.
15256 * config/i386/darwin64-biarch.h: To this.
15257 * config/i386/t-darwin: Rename.
15258 * config/i386/t-darwin32-biarch: To this.
15259 * config/i386/t-darwin64: Rename.
15260 * config/i386/t-darwin64-biarch: To this.
15261 * config/rs6000/darwin32-biarch.h: New.
15262 * config/rs6000/darwin64.h: Rename.
15263 * config/rs6000/darwin64-biarch.h: To this.
15264 (DARWIN_ARCH_SPEC, DARWIN_SUBARCH_SPEC): Revise for default single
15266 * config/rs6000/t-darwin8: Rename.
15267 * config/rs6000/t-darwin32-biarch: To this.
15268 * config/rs6000/t-darwin64 Rename.
15269 * config/rs6000/t-darwin64-biarch: To this.
15271 2019-07-23 Martin Sebor <msebor@redhat.com>
15273 * configure.ac (ACX_PROG_CXX_WARNING_OPTS): Revert r273311.
15275 2019-07-23 Vladislav Ivanishin <vlad@ispras.ru>
15277 * gdbinit.in (reload-gdbhooks): New command with an attached doc string.
15278 (rh): New alias for it.
15280 2019-07-23 Vladislav Ivanishin <vlad@ispras.ru>
15282 * gdbhooks.py: Pass replace=True to
15283 gdb.printing.register_pretty_printer.
15285 2019-07-23 Richard Biener <rguenther@suse.de>
15288 * lto-streamer-in.c (input_function): Drop inline-entry markers
15289 that ended up with an unknown location block.
15291 2019-07-23 Richard Biener <rguenther@suse.de>
15293 PR tree-optimization/83518
15294 * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle aggregate
15295 init from a constant even when partial defs are already recorded.
15297 2019-07-23 Jan Hubicka <hubicka@ucw.cz>
15299 * i386-common.c: Use PROCESSOR_ZNVER2 scheduler for znver2.
15300 * config/i386/znver1.md: Enable patterns for znver2 and add store
15301 variants which use extra AGU unit.
15303 2019-07-23 Jan Hubicka <hubicka@ucw.cz>
15305 * config/i386/i386-options.c (ix86_option_override_internal): Default
15306 PARAM_AVOID_FMA_MAX_BITS to 256 for znver2.
15307 * config/i386/x86-tune.def (X86_TUNE_AVOID_256FMA_CHAINS): Set
15310 2019-07-23 Jan Hubicka <hubicka@ucw.cz>
15312 * config/i386/x86-tune-costs.h (znver2_memcpy): Update.
15313 (znver2_costs): Update 256 bit SSE costs and multiplication.
15315 2019-07-23 Jan Beulich <jbeulich@suse.com>
15317 * config/i386/sse.md (<avx512>_cvtmask2<ssemodesuffix><mode>):
15318 Require only AVX512F.
15319 (*<avx512>_cvtmask2<ssemodesuffix><mode>): Likewise. Add
15320 alternative expanding to vpternlog.
15322 2019-07-23 Martin Liska <mliska@suse.cz>
15324 * dwarf2out.c (gen_producer_string): Canonize -flto=N
15325 to -flto in dwarf producer string.
15327 2019-07-23 Richard Biener <rguenther@suse.de>
15329 * tree-cfg.c (label_for_bb): Remove global var.
15330 (main_block_label): Take label_for_bb as argument.
15331 (cleanup_dead_labels_eh): Likewise, adjust.
15332 (cleanup_dead_labels): Adjust.
15334 2019-07-22 Paul A. Clarke <pc@us.ibm.com>
15336 * doc/extend.texi (Basic PowerPC Built-in Functions Available on all
15337 Configurations): Add documentation for __builtin_mtfsf.
15339 2019-07-22 Ilia Diachkov <ilia.diachkov@optimitech.com>
15341 * config/riscv/riscv-opts.h (struct riscv_align_data): New.
15342 * config/riscv/riscv.c (riscv_constant_alignment): Use
15343 riscv_align_data_type.
15344 * config/riscv/riscv.h (RISCV_EXPAND_ALIGNMENT): New.
15345 (DATA_ALIGNMENT): Use RISCV_EXPAND_ALIGNMENT.
15346 (LOCAL_ALIGNMENT): Use RISCV_EXPAND_ALIGNMENT.
15347 * config/riscv/riscv.opt (malign-data): New.
15348 * doc/invoke.texi (RISC-V Options): Document -malign-data=.
15350 2019-07-02 Giuliano Belinassi <giuliano.belinassi@usp.br>
15352 * cgraph.c (dump_graphviz): New function.
15353 * cgraph.h (dump_graphviz): New function.
15354 * symtab.c (dump_graphviz): New function.
15356 2019-07-22 Sylvia Taylor <sylvia.taylor@arm.com>
15358 * config/aarch64/aarch64-simd.md
15359 (*aarch64_simd_sra<mode>): New.
15360 * config/aarch64/iterators.md
15361 (SHIFTRT): New iterator.
15362 (sra_op): New attribute.
15364 2019-07-22 Jozef Lawrynowicz <jozef.l@mittosystems.com>
15366 * config/msp430/msp430.c (msp430_preserve_reg_p): Don't save
15367 callee-saved regs R4->R10 in an interrupt function that calls another
15370 2019-07-22 Paul A. Clarke <pc@us.ibm.com>
15372 * config/rs6000/smmintrin.h (_mm_blend_epi16): New.
15373 (_mm_blendv_epi8): New.
15375 2019-07-22 Richard Biener <rguenther@suse.de>
15377 PR tree-optimization/91221
15378 * tree-ssa-sccvn.c (vn_reference_lookup_3): Appropriately
15379 restrict partial-def handling of empty constructors and
15380 memset to refs with known offset.
15382 2019-07-22 Jan Beulich <jbeulich@suse.com>
15384 * config/i386/sse.md (ternlogsuffix): New.
15385 (one_cmpl<mode>2): Don't force CONSTM1_RTX into a register when
15387 (<mask_codefor>one_cmpl<mode>2<mask_name>): New.
15389 2019-07-22 Martin Liska <mliska@suse.cz>
15391 * config/avr/avr.c (avr_asm_output_aligned_decl_common): Update
15393 * toplev.c (compile_file): Do not emit __gnu_lto_v1 symbol.
15395 2019-07-22 Martin Liska <mliska@suse.cz>
15397 * lto-section-in.c (lto_get_section_data):
15398 Use new function get_compression.
15399 * lto-streamer-out.c (produce_lto_section): Use
15400 set_compression to encode compression algorithm.
15401 * lto-streamer.h (struct lto_section): Do not
15402 use bitfields in the format.
15404 2019-07-22 Martin Liska <mliska@suse.cz>
15407 * opts-common.c (decode_cmdline_option): Decode
15408 argument of -Werror and check it for a wrong language.
15409 * opts-global.c (complain_wrong_lang): Remove such case.
15411 2019-07-22 Claudiu Zissulescu <claziss@synopsys.com>
15413 * config/arc/arc.c (prepare_move_operands): Always use an
15414 intermediate register when storing a TLS symbols.
15416 2019-07-22 Stafford Horne <shorne@gmail.com>
15418 * config/or1k/or1k.c (or1k_expand_compare): Check for int before
15421 2019-07-22 Stafford Horne <shorne@gmail.com>
15423 * config.gcc (or1k*-*-*): Add mhard-float, mdouble-float, msoft-float
15424 and munordered-float validations.
15425 * config/or1k/constraints.md (d): New register constraint.
15426 * config/or1k/predicates.md (fp_comparison_operator): New.
15427 * config/or1k/or1k.c (or1k_print_operand): Add support for printing 'd'
15429 (or1k_expand_compare): Normalize unordered comparisons.
15430 * config/or1k/or1k.h (reg_class): Define DOUBLE_REGS.
15431 (REG_CLASS_NAMES): Add "DOUBLE_REGS".
15432 (REG_CLASS_CONTENTS): Add contents for DOUBLE_REGS.
15433 * config/or1k/or1k.md (type): Add fpu.
15434 (fpu): New instruction reservation.
15435 (F, f, fr, fi, FI, FOP, fop): New.
15436 (<fop><F:mode>3): New ALU instruction definition.
15437 (float<fi><F:mode>2): New conversion instruction definition.
15438 (fix_trunc<F:mode><fi>2): New conversion instruction definition.
15439 (fpcmpcc): New code iterator.
15440 (*sf_fp_insn): New instruction definition.
15441 (cstore<F:mode>4): New expand definition.
15442 (cbranch<F:mode>4): New expand definition.
15443 * config/or1k/or1k.opt (msoft-float, mhard-float, mdouble-float,
15444 munordered-float): New options.
15445 * doc/invoke.texi: Document msoft-float, mhard-float, mdouble-float and
15448 2019-07-22 Stafford Horne <shorne@gmail.com>
15450 * config.gcc (or1k*-*-*): Add mrori and mror to validation.
15451 * doc/invoke.texi (OpenRISC Options): Add mrori option, rewrite all
15452 documenation to be more clear.
15453 * config/or1k/elf.opt (mboard=, mnewlib): Rewrite documentation to be
15455 * config/or1k/or1k.opt (mrori): New option.
15456 (mhard-div, msoft-div, mhard-mul, msoft-mul, mcmov, mror, msext,
15457 msfimm, mshftimm): Rewrite documentation to be more clear.
15458 * config/or1k/or1k.md (insn_support): Add ror and rori.
15459 (enabled): Add conditions for ror and rori.
15460 (rotrsi3): Replace condition for shftimm with ror and rori.
15462 2019-07-22 Stafford Horne <shorne@gmail.com>
15465 * config/or1k/or1k.md (zero_extend<mode>si2): Update predicate.
15466 (extend<mode>si2): Update predicate.
15467 * config/or1k/predicates.md (volatile_mem_operand): New.
15468 (reg_or_mem_operand): New.
15470 2019-07-21 Iain Sandoe <iain@sandoe.co.uk>
15472 * config/rs6000/rs6000.c (TARGET_NO_PROTOTYPE): Move from here...
15473 * config/rs6000/rs6000-call.c: ... to here.
15475 2019-07-20 Segher Boessenkool <segher@kernel.crashing.org>
15477 * config/rs6000/predicates.md (offsettable_mem_operand): Allow volatile
15480 2019-07-20 Segher Boessenkool <segher@kernel.crashing.org>
15482 * config/rs6000/predicates.md (input_operand): Allow volatile memory.
15484 2019-07-20 Segher Boessenkool <segher@kernel.crashing.org>
15486 * config/rs6000/predicates.md (lwa_operand): Allow volatile memory.
15488 2019-07-20 Segher Boessenkool <segher@kernel.crashing.org>
15490 * config/rs6000/predicates.md (volatile_mem_operand): Modernize syntax.
15491 (any_memory_operand): New predicate.
15492 (reg_or_mem_operand): Use it.
15494 2019-07-20 Jakub Jelinek <jakub@redhat.com>
15497 * optabs.c (expand_unop): As fallback, expand ~op0 as op0 ^ -1.
15499 2019-07-20 John David Anglin <danglin@gcc.gnu.org>
15501 * config/pa/pa.h (hppa_profile_hook): Delete declaration.
15502 * config/pa/pa-protos.h (hppa_profile_hook): Add declaration.
15504 2019-07-20 Jakub Jelinek <jakub@redhat.com>
15506 * tree.def (OMP_LOOP): New tree code.
15507 * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_BIND.
15508 (enum omp_clause_bind_kind): New enum.
15509 (struct tree_omp_clause): Add subcode.bind_kind.
15510 * tree.h (OMP_LOOP_CHECK): Rename to ...
15511 (OMP_LOOPING_CHECK): ... this.
15512 (OMP_FOR_BODY, OMP_FOR_CLAUSES, OMP_FOR_INIT, OMP_FOR_COND,
15513 OMP_FOR_INCR, OMP_FOR_PRE_BODY, OMP_FOR_ORIG_DECLS): Use
15514 OMP_LOOPING_CHECK instead of OMP_LOOP_CHECK.
15515 (OMP_CLAUSE_BIND_KIND): Define.
15516 * tree.c (omp_clause_num_ops, omp_clause_code_name): Add
15517 bind clause entries.
15518 (walk_tree_1): Handle OMP_CLAUSE_BIND.
15519 * tree-pretty-print.c (dump_omp_clause): Likewise.
15520 (dump_generic_node): Handle OMP_LOOP.
15521 * gimplify.c (enum omp_region_type): Add ORT_IMPLICIT_TARGET.
15522 (in_omp_construct): New variable.
15523 (is_gimple_stmt): Handle OMP_LOOP.
15524 (gimplify_scan_omp_clauses): For lastprivate don't set
15525 check_non_private if code == OMP_LOOP. For reduction clause
15526 on OMP_LOOP combined with parallel or teams propagate as shared
15527 on the combined construct. Handle OMP_CLAUSE_BIND.
15528 (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_BIND.
15529 (gimplify_omp_for): Pass OMP_LOOP instead of OMP_{FOR,DISTRIBUTE}
15530 for constructs from a loop construct to gimplify_scan_omp_clauses.
15531 Don't predetermine iterator linear on OMP_SIMD from loop construct.
15532 (replace_reduction_placeholders, gimplify_omp_loop): New functions.
15533 (gimplify_omp_workshare): Use ORT_IMPLICIT_TARGET instead of trying
15534 to match the implicit ORT_TARGET construct around whole body.
15535 Temporarily clear in_omp_construct when processing body.
15536 (gimplify_expr): Handle OMP_LOOP. For OMP_MASTER, OMP_TASKGROUP
15537 etc. temporarily set in_omp_construct when processing body.
15538 (gimplify_body): Create ORT_IMPLICIT_TARGET instead of ORT_TARGET.
15539 * omp-low.c (struct omp_context): Add loop_p.
15540 (build_outer_var_ref): Treat ctx->loop_p similarly to simd construct
15541 in that the original var might be private.
15542 (scan_sharing_clauses): Handle OMP_CLAUSE_BIND.
15543 (check_omp_nesting_restrictions): Adjust nesting restrictions for
15544 addition of loop construct.
15545 (scan_omp_1_stmt): Allow setjmp inside of loop construct.
15547 * omp-low.c (lower_rec_input_clauses): Don't force simd arrays for
15548 lastprivate non-addressable iterator of a collapse(1) simd.
15550 2019-07-17 Bill Seurer <seurer@linux.vnet.ibm.com>
15552 * config/rs6000/rs6000-call.c (HAVE_AS_GNU_ATTRIBUTE): define value
15555 2019-07-19 Iain Sandoe <iain@sandoe.co.uk>
15557 * config/darwin.h (DRIVER_SELF_SPECS): Ignore X and Mach specs which
15558 refer to default conditions. Warn for the 'y' spec which is ignored
15559 by current linkers.
15561 2019-07-19 Bill Seurer <seurer@linux.vnet.ibm.com>
15563 * config/rs6000/rs6000.c (builtin_description, cpu_is_info,
15564 cpu_supports_info, builtin_hash_struct, builtin_hasher,
15565 builtin_hash_table, rs6000_builtin_info_type, rs6000_builtin_info,
15566 rs6000_aggregate_candidate, rs6000_discover_homogeneous_aggregate,
15567 rs6000_return_in_memory, rs6000_return_in_msb, call_ABI_of_interest,
15568 init_cumulative_args, rs6000_promote_function_mode,
15569 rs6000_must_pass_in_stack, is_complex_IBM_long_double,
15570 abi_v4_pass_in_fpr, rs6000_function_arg_padding,
15571 rs6000_function_arg_boundary, rs6000_parm_offset,
15572 rs6000_parm_start, rs6000_arg_size,
15573 rs6000_darwin64_record_arg_advance_flush,
15574 rs6000_darwin64_record_arg_advance_recurse,
15575 rs6000_darwin64_struct_check_p, rs6000_function_arg_advance_1,
15576 rs6000_function_arg_advance, rs6000_darwin64_record_arg_flush,
15577 rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
15578 rs6000_mixed_function_arg, rs6000_psave_function_arg,
15579 rs6000_finish_function_arg, rs6000_function_arg,
15580 rs6000_arg_partial_bytes, rs6000_pass_by_reference,
15581 rs6000_parm_needs_stack, rs6000_function_parms_need_stack,
15582 rs6000_reg_parm_stack_space, rs6000_move_block_from_reg,
15583 setup_incoming_varargs, rs6000_build_builtin_va_list, rs6000_va_start,
15584 rs6000_gimplify_va_arg, def_builtin, bdesc_3arg, bdesc_dst,
15585 bdesc_2arg, bdesc_altivec_preds, bdesc_abs, bdesc_1arg, bdesc_0arg,
15586 bdesc_htm, rs6000_overloaded_builtin_p, rs6000_overloaded_builtin_name,
15587 rs6000_expand_zeroop_builtin, rs6000_expand_mtfsf_builtin,
15588 rs6000_expand_mtfsb_builtin, rs6000_expand_set_fpscr_rn_builtin,
15589 rs6000_expand_set_fpscr_drn_builtin, rs6000_expand_unop_builtin,
15590 altivec_expand_abs_builtin, rs6000_expand_binop_builtin,
15591 altivec_expand_predicate_builtin, swap_endian_selector_for_mode,
15592 altivec_expand_lv_builtin, altivec_expand_stxvl_builtin,
15593 altivec_expand_stv_builtin, htm_spr_num, rs6000_htm_spr_icode,
15594 htm_expand_builtin, cpu_expand_builtin, rs6000_expand_ternop_builtin,
15595 altivec_expand_dst_builtin, altivec_expand_vec_init_builtin,
15596 get_element_number, altivec_expand_vec_set_builtin,
15597 altivec_expand_vec_ext_builtin, altivec_expand_builtin,
15598 rs6000_builtin_is_supported_p, rs6000_invalid_builtin,
15599 rs6000_fold_builtin, rs6000_builtin_valid_without_lhs,
15600 fold_build_vec_cmp, fold_compare_helper, fold_mergehl_helper,
15601 fold_mergeeo_helper, rs6000_gimple_fold_builtin,
15602 rs6000_expand_builtin, rs6000_vector_type,
15603 rs6000_init_builtins, rs6000_builtin_decl, altivec_init_builtins,
15604 htm_init_builtins, builtin_function_type, rs6000_common_init_builtins,
15605 rs6000_internal_arg_pointer, rs6000_output_mi_thunk): Move
15607 * config/rs6000/rs6000-call.c (builtin_description, cpu_is_info,
15608 cpu_supports_info, builtin_hash_struct, builtin_hasher,
15609 builtin_hash_table, rs6000_builtin_info_type, rs6000_builtin_info,
15610 rs6000_aggregate_candidate, rs6000_discover_homogeneous_aggregate,
15611 rs6000_return_in_memory, rs6000_return_in_msb, call_ABI_of_interest,
15612 init_cumulative_args, rs6000_promote_function_mode,
15613 rs6000_must_pass_in_stack, is_complex_IBM_long_double,
15614 abi_v4_pass_in_fpr, rs6000_function_arg_padding,
15615 rs6000_function_arg_boundary, rs6000_parm_offset,
15616 rs6000_parm_start, rs6000_arg_size,
15617 rs6000_darwin64_record_arg_advance_flush,
15618 rs6000_darwin64_record_arg_advance_recurse,
15619 rs6000_darwin64_struct_check_p, rs6000_function_arg_advance_1,
15620 rs6000_function_arg_advance, rs6000_darwin64_record_arg_flush,
15621 rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
15622 rs6000_mixed_function_arg, rs6000_psave_function_arg,
15623 rs6000_finish_function_arg, rs6000_function_arg,
15624 rs6000_arg_partial_bytes, rs6000_pass_by_reference,
15625 rs6000_parm_needs_stack, rs6000_function_parms_need_stack,
15626 rs6000_reg_parm_stack_space, rs6000_move_block_from_reg,
15627 setup_incoming_varargs, rs6000_build_builtin_va_list, rs6000_va_start,
15628 rs6000_gimplify_va_arg, def_builtin, bdesc_3arg, bdesc_dst,
15629 bdesc_2arg, bdesc_altivec_preds, bdesc_abs, bdesc_1arg, bdesc_0arg,
15630 bdesc_htm, rs6000_overloaded_builtin_p, rs6000_overloaded_builtin_name,
15631 rs6000_expand_zeroop_builtin, rs6000_expand_mtfsf_builtin,
15632 rs6000_expand_mtfsb_builtin, rs6000_expand_set_fpscr_rn_builtin,
15633 rs6000_expand_set_fpscr_drn_builtin, rs6000_expand_unop_builtin,
15634 altivec_expand_abs_builtin, rs6000_expand_binop_builtin,
15635 altivec_expand_predicate_builtin, swap_endian_selector_for_mode,
15636 altivec_expand_lv_builtin, altivec_expand_stxvl_builtin,
15637 altivec_expand_stv_builtin, htm_spr_num, rs6000_htm_spr_icode,
15638 htm_expand_builtin, cpu_expand_builtin, rs6000_expand_ternop_builtin,
15639 altivec_expand_dst_builtin, altivec_expand_vec_init_builtin,
15640 get_element_number, altivec_expand_vec_set_builtin,
15641 altivec_expand_vec_ext_builtin, altivec_expand_builtin,
15642 rs6000_builtin_is_supported_p, rs6000_invalid_builtin,
15643 rs6000_fold_builtin, rs6000_builtin_valid_without_lhs,
15644 fold_build_vec_cmp, fold_compare_helper, fold_mergehl_helper,
15645 fold_mergeeo_helper, rs6000_gimple_fold_builtin,
15646 rs6000_expand_builtin, rs6000_vector_type,
15647 rs6000_init_builtins, rs6000_builtin_decl, altivec_init_builtins,
15648 htm_init_builtins, builtin_function_type, rs6000_common_init_builtins,
15649 rs6000_internal_arg_pointer, rs6000_output_mi_thunk: Move
15650 to here from rs6000.c.
15651 * config/rs6000/rs6000-internal.h: (rs6000_darwin64_struct_check_p,
15652 rs6000_discover_homogeneous_aggregate, rs6000_output_mi_thunk,
15653 rs6000_output_addr_const_extra, rs6000_gimple_fold_builtin,
15654 rs6000_invalid_builtin, rs6000_build_builtin_va_list, rs6000_va_start,
15655 rs6000_gimplify_va_arg, rs6000_promote_function_mode,
15656 rs6000_return_in_memory, rs6000_return_in_msb,
15657 rs6000_pass_by_reference, setup_incoming_varargs,
15658 rs6000_function_arg_boundary, rs6000_must_pass_in_stack,
15659 rs6000_arg_partial_bytes, rs6000_function_arg_advance,
15660 rs6000_function_arg_padding, rs6000_function_arg,
15661 rs6000_darwin64_record_arg, rs6000_internal_arg_pointer,
15662 rs6000_init_builtins, rs6000_builtin_decl, rs6000_expand_builtin,
15663 rs6000_fold_builtin, rs6000_passes_ieee128, rs6000_passes_float,
15664 rs6000_passes_long_double, rs6000_passes_vector,
15665 rs6000_returns_struct, cpu_builtin_p, tree builtin_mode_to_type,
15666 altivec_builtin_mask_for_load) Add declarations.
15667 * config/rs6000/t-rs6000: Add new source file rs6000-call.c.
15668 * config/config.gcc: Add new source file rs6000-call.c to garbage
15669 collector and extra_objs.
15671 2019-07-19 Jeff Law <law@redhat.com>
15673 PR tree-optimization/86061
15674 * tree-ssa-dse.c (initialize_ao_ref_for_dse): Handle
15675 strncpy. Drop some trivial dead code.
15676 (maybe_trim_memstar_call): Handle strncpy.
15678 2019-07-19 Richard Biener <rguenther@suse.de>
15680 PR tree-optimization/91211
15681 * tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Fix
15682 memset encoding size.
15684 2019-07-19 Uroš Bizjak <ubizjak@gmail.com>
15687 * config/i386/mmx.md (one_cmpl<mode>2): New expander.
15689 2019-07-19 Jan Hubicka <hubicka@ucw.cz>
15692 * ipa-inline.c (recursive_inlining): Fix limits check.
15694 2019-07-19 Richard Biener <rguenther@suse.de>
15696 PR tree-optimization/91200
15697 * tree-ssa-phiopt.c (cond_store_replacement): Check we have
15698 no PHI nodes in middle-bb.
15700 2019-07-19 Richard Sandiford <richard.sandiford@arm.com>
15702 * doc/invoke.texi: Rename the AArch64 +bitperm extension flag
15704 * config/aarch64/aarch64-option-extensions.def: Likewise.
15706 2019-07-19 Jakub Jelinek <jakub@redhat.com>
15708 PR middle-end/91190
15709 * function.c (insert_temp_slot_address): Store into the hash table
15710 a copy of address to avoid RTL sharing issues.
15712 2019-07-19 Richard Biener <rguenther@suse.de>
15714 PR tree-optimization/91207
15716 2019-07-17 Richard Biener <rguenther@suse.de>
15718 PR tree-optimization/91178
15719 * tree-vect-stmts.c (get_group_load_store_type): For SLP
15720 loads with a gap larger than the vector size always use
15722 (vectorizable_load): For VMAT_STRIDED_SLP with a permutation
15723 avoid loading vectors that are only contained in the gap
15724 and thus are not needed.
15726 2019-07-18 Uroš Bizjak <ubizjak@gmail.com>
15728 * config/i386/i386.md (*addqi_2_slp): Remove.
15729 (*<code>qi_2_slp): Ditto.
15731 2019-07-18 Michael Meissner <meissner@linux.ibm.com>
15733 * config/rs6000/predicates.md (prefixed_mem_operand): Call
15734 rs6000_prefixed_address_mode_p instead of rs6000_prefixed_address.
15735 * config/rs6000/rs6000-protos.h (rs6000_prefixed_address_mode_p):
15736 Rename function from rs6000_prefixed_address.
15737 * config/rs6000/aix.h (TARGET_HAS_TOC): Rename TARGET_TOC to
15739 (TARGET_TOC): Likewise.
15740 (TARGET_NO_TOC): Delete here, define TARGET_NO_TOC_OR_PCREL in
15742 * config/rs6000/darwin.h (TARGET_HAS_TOC): Rename TARGET_TOC to
15744 (TARGET_TOC): Likewise.
15745 (TARGET_NO_TOC): Delete here, define TARGET_NO_TOC_OR_PCREL in
15747 * config/rs6000/linux64.h (TARGET_HAS_TOC): Rename TARGET_TOC to
15749 (TARGET_TOC): Likewise.
15750 * config/rs6000/rs6000.c (rs6000_option_override_internal): Add
15751 check to require -mcmodel=medium for pc-relative addressing.
15752 (create_TOC_reference): Add assertion for TARGET_TOC.
15753 (rs6000_legitimize_address): Use TARGET_NO_TOC_OR_PCREL instead of
15755 (rs6000_emit_move): Likewise.
15756 (TOC_alias_set): Rename TOC alias set static variable from 'set'
15757 to 'TOC_alias_set'.
15758 (get_TOC_alias_set): Likewise.
15759 (output_toc): Use TARGET_NO_TOC_OR_PCREL instead of
15761 (rs6000_can_eliminate): Likewise.
15762 (rs6000_prefixed_address_mode_p): Rename function from
15763 rs6000_prefixed_address.
15764 * config/rs6000/rs6000.h (TARGET_TOC): Define in terms of
15765 TARGET_HAS_TOC and not pc-relative.
15766 (TARGET_NO_TOC_OR_PCREL): New macro to replace TARGET_NO_TOC.
15767 * config/rs6000/sysv4.h (TARGET_HAS_TOC): Rename TARGET_TOC to
15769 (TARGET_TOC): Likewise.
15770 (TARGET_NO_TOC): Delete here, define TARGET_NO_TOC_OR_PCREL in
15773 2019-07-18 Uroš Bizjak <ubizjak@gmail.com>
15776 * config/i386/i386.md (*addqi_1_slp): Use register_operand predicate
15777 for operand 0. Do not use (match_dup) to match operand 1 with
15778 operand 0. Add check in insn constraint that either input operand
15779 matches operand 0. Use SWI12 mode iterator to also handle
15781 (*and<mode>_1_slp): Ditto.
15782 (*<code>qi_1_slp): Ditto.
15783 (*sub<mode>_1_slp): Use register_operand predicate for operand 0.
15784 Do not use (match_dup) to match operand 1 with operand 0. Add
15785 check in insn constraint that operand 1 matches operand 0.
15786 Use SWI12 mode iterator to also handle HImode operands.
15787 (*ashl<mode>3_1_slp): Ditto.
15788 (*<shift_insn><mode>3_1_slp): Ditto.
15789 (*<rotate_insn><mode>3_1_slp): Ditto.
15791 2019-07-18 Sylvia Taylor <sylvia.taylor@arm.com>
15793 * config/arm/arm-builtins.c
15794 (arm_expand_ternop_builtin): Remove explicit sha1 builtin handling.
15795 (arm_expand_unop_builtin): Likewise.
15796 * config/arm/crypto.md
15797 (crypto_sha1h): Convert from define_insn to define_expand.
15798 (crypto_<crypto_pattern>): Likewise.
15799 (crypto_sha1h_lb): New define_insn.
15800 (crypto_<crypto_pattern>_lb): Likewise.
15802 2019-07-18 Sylvia Taylor <sylvia.taylor@arm.com>
15805 * config/arm/arm_neon.h (vsha1h_u32): Refactor.
15806 (vsha1cq_u32): Likewise.
15807 (vsha1pq_u32): Likewise.
15808 (vsha1mq_u32): Likewise.
15809 * config/arm/crypto.md (crypto_sha1h): Remove zero extend, correct
15811 (crypto_sha1c): Correct vec select.
15812 (crypto_sha1m): Likewise.
15813 (crypto_sha1p): Likewise.
15815 2019-07-18 Richard Earnshaw <rearnsha@arm.com>
15817 * config/arm/predicates.md (arm_borrow_operation): New predicate.
15818 * config/arm/arm.c (subdi3_compare1): Use CCmode for the split.
15819 (arm_subdi3, subdi_di_zesidi, subdi_di_sesidi): Likewise.
15820 (subdi_zesidi_zesidi): Likewise.
15821 (negdi2_compare, negdi2_insn): Likewise.
15822 (negdi_extensidi): Likewise.
15823 (negdi_zero_extendsidi): Likewise.
15824 (arm_cmpdi_insn): Likewise.
15825 (subsi3_carryin): Use arm_borrow_operation.
15826 (subsi3_carryin_const): Likewise.
15827 (subsi3_carryin_const0): Likewise.
15828 (subsi3_carryin_compare): Likewise.
15829 (subsi3_carryin_compare_const): Likewise.
15830 (subsi3_carryin_compare_const0): Likewise.
15831 (subsi3_carryin_shift): Likewise.
15832 (rsbsi3_carryin_shift): Likewise.
15833 (negsi2_carryin_compare): Likewise.
15835 2019-07-18 Bin Cheng <bin.cheng@linux.alibaba.com>
15837 PR tree-optimization/91137
15838 * tree-ssa-loop-ivopts.c (struct ivopts_data): New field.
15839 (tree_ssa_iv_optimize_init, alloc_iv, tree_ssa_iv_optimize_finalize):
15840 Init, use and fini the above new field.
15841 (determine_base_object_1): New function.
15842 (determine_base_object): Reimplement using walk_tree.
15844 2019-07-18 Richard Sandiford <richard.sandiford@arm.com>
15846 * basic-block.h (CLEANUP_FORCE_FAST_DCE): New macro.
15847 * cfgcleanup.c (cleanup_cfg): Call run_fast_dce if
15848 CLEANUP_FORCE_FAST_DCE is set.
15849 * ifcvt.c (rest_of_handle_if_conversion): Pass
15850 CLEANUP_FORCE_FAST_DCE to the final cleanup_cfg call if
15851 if-conversion succeeded.
15853 2019-07-18 Richard Biener <rguenther@suse.de>
15855 * tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Refactor
15856 branches to make code less indented.
15858 2019-07-17 Alexandre Oliva <oliva@adacore.com>
15860 PR middle-end/81824
15861 * attribs.c (decls_mismatched_attributes): Simplify the logic
15862 that avoids duplicates and false positives.
15864 2019-07-17 John David Anglin <danglin@gcc.gnu.org>
15866 * config/pa/pa.c (pa_som_asm_init_sections): Don't force all constant
15867 data into data section when generating PIC code.
15868 (pa_select_section): Use pa_reloc_rw_mask() to qualify relocs.
15869 (pa_reloc_rw_mask): Return 3 when generating PIC code and when
15870 generating code for SOM targets earlier than HP-UX 11. Otherwise,
15871 return 2 for SOM and 0 for other targets.
15873 2019-07-17 Jeff Law <law@redhat.com>
15875 * tree-ssa-dse.c (initialize_ao_ref_for_dse): Fix formatting.
15876 (dse_walker::dse_optimize_stmt): Likewise. Add missing return to
15877 avoid unexpected switch statement fallthru.
15879 2019-07-17 Uroš Bizjak <ubizjak@gmail.com>
15881 * config/i386/i386.md (*add<dwi>3_doubleword):
15882 Remove redundant constraints.
15883 (*add<mode>_1): Ditto.
15886 (*addqi_1_slp): Ditto.
15887 (*add<mode>_2): Ditto.
15888 (*addv<mode>4): Ditto.
15889 (*sub<dwi>3_doubleword): Ditto.
15890 (*sub<mode>_1): Ditto.
15891 (*subqi_1_slp): Ditto.
15892 (*sub<mode>_2): Ditto.
15893 (*subv<mode>4): Ditto.
15894 (*sub<mode>_3): Ditto.
15895 (@add<mode>3_carry): Ditto.
15896 (@sub<mode>3_carry): Ditto.
15897 (*add<mode>3_cc_overflow_1): Ditto.
15898 (*add<mode>3_zext_cc_overflow_2): Ditto.
15900 (*and<mode>_1): Ditto.
15902 (*andqi_1_slp): Ditto.
15904 (*andqi_2_maybe_si): Ditto.
15905 (*and<mode>_2): Ditto.
15906 (*andqi_2_slp): Ditto.
15907 (*<code><mode>_1): Ditto.
15908 (*<code>qi_1): Ditto.
15909 (*<code>qi_1_slp): Ditto.
15910 (*<code><mode>_2): Ditto.
15911 (*<code>qi_2_slp): Ditto.
15913 2019-07-17 Jan Hubicka <hubicka@ucw.cz>
15915 * alias.c (record_component_aliases): Do not simplify pointed-to
15916 types of ODR types.
15918 2019-07-17 Uroš Bizjak <ubizjak@gmail.com>
15920 * config/i386/i386.md (*andqi_2_maybe_si): Handle potential
15921 partial reg stall on alternative 2.
15923 2019-07-17 Richard Biener <rguenther@suse.de>
15925 PR tree-optimization/91178
15926 * tree-ssa.c (release_defs_bitset): Iterate from higher to
15927 lower SSA names to avoid quadratic behavior in the common case.
15928 * tree-data-ref.c (split_constant_offset): Add limit argument
15929 and pass it down. Initialize it from PARAM_SSA_NAME_DEF_CHAIN_LIMIT.
15930 (split_constant_offset_1): Add limit argument and use it to
15931 limit SSA def walking. Optimize the common plus/minus case.
15933 2019-07-17 Richard Biener <rguenther@suse.de>
15935 PR tree-optimization/91178
15936 * tree-vect-stmts.c (get_group_load_store_type): For SLP
15937 loads with a gap larger than the vector size always use
15939 (vectorizable_load): For VMAT_STRIDED_SLP with a permutation
15940 avoid loading vectors that are only contained in the gap
15941 and thus are not needed.
15943 2019-07-17 Richard Biener <rguenther@suse.de>
15945 PR tree-optimization/91180
15946 * tree-ssa-sccvn.c (vn_reference_lookup_3): Fix offset
15947 computation for memset partial defs.
15949 2019-07-17 Jakub Jelinek <jakub@redhat.com>
15951 * gimple.h (enum gf_mask): Remove GF_OMP_FOR_SIMD, change
15952 GF_OMP_FOR_KIND_SIMD to a value serially after other kinds,
15953 divide GF_OMP_FOR_KIND_MASK, GF_OMP_FOR_COMBINED,
15954 GF_OMP_FOR_COMBINED_INTO, GF_OMP_FOR_GRID_PHONY,
15955 GF_OMP_FOR_GRID_INTRA_GROUP and GF_OMP_FOR_GRID_GROUP_ITER by two.
15956 * omp-grid.c (grid_process_grid_body,
15957 grid_eliminate_combined_simd_part): Use GF_OMP_FOR_KIND_SIMD instead
15958 of GF_OMP_FOR_SIMD, don't test & GF_OMP_FOR_SIMD but
15959 == GF_OMP_FOR_KIND_SIMD.
15960 * omp-low.c (build_outer_var_ref, scan_sharing_clauses,
15961 check_omp_nesting_restrictions, scan_omp_1_stmt,
15962 lower_rec_input_clauses, lower_lastprivate_conditional_clauses,
15963 lower_lastprivate_clauses, lower_reduction_clauses, lower_omp_scan,
15964 omp_find_scan): Likewise.
15965 * omp-expand.c (expand_omp_for): Likewise.
15966 * omp-general.c (omp_extract_for_data): Likewise.
15968 PR tree-optimization/91157
15969 * tree-vect-generic.c (expand_vector_comparison): Handle lhs being
15970 a vector boolean with scalar mode.
15971 (expand_vector_condition): Handle first operand being a vector boolean
15973 (expand_vector_operations_1): For comparisons, don't bail out early
15974 if the return type is vector boolean with scalar mode, but comparison
15975 operand type is not.
15977 2019-07-17 Richard Biener <rguenther@suse.de>
15979 PR tree-optimization/91181
15980 * tree-vect-slp.c (vect_build_slp_tree_1): Do not compare
15981 IFN_LOADs as calls.
15983 2019-07-16 Uroš Bizjak <ubizjak@gmail.com>
15985 * config/i386/i386.md (*testdi_1): Match CCZmode for
15986 constants that might have the SImode sign bit set.
15987 (*testqi_1_maybe_si): Remove "!" constraint modifier.
15988 Use correct constraints for pentium pairing.
15989 (*test<mode>_1): Ditto.
15991 2019-07-16 Jeff Law <law@redhat.com>
15993 PR rtl-optimization/91173
15994 * tree-ssa-address.c (addr_for_mem_ref): If the base is an
15995 SSA_NAME with a constant value, fold its value into the offset
15996 and clear the base before calling gen_addr_rtx.
15998 2019-07-16 Jakub Jelinek <jakub@redhat.com>
16000 PR rtl-optimization/91164
16001 * dse.c (rest_of_handle_dse): If dead edges have been purged,
16002 invalidate dominance info.
16004 2019-07-16 Richard Sandiford <richard.sandiford@arm.com>
16006 * read-md.h (md_reader::record_potential_iterator_use): Add a
16007 file_location parameter.
16008 * read-rtl.c (attribute_use::loc): New field.
16009 (map_attr_string): Take a file_location parameter. Report cases
16010 in which attributes map to multiple distinct values.
16011 (apply_attribute_uses): Update call accordingly.
16012 (md_reader::handle_overloaded_name): Likewise.
16013 (md_reader::apply_iterator_to_string): Likewise. Skip empty
16015 (record_attribute_use): Take a file_location parameter.
16016 Initialize attribute_use::loc.
16017 (md_reader::record_potential_iterator_use): Take a file_location
16018 parameter. Update call to record_attribute_use.
16019 (rtx_reader::rtx_alloc_for_name): Update call accordingly.
16020 (rtx_reader::read_rtx_code): Likewise.
16021 (rtx_reader::read_rtx_operand): Likewise. Record a location
16022 for implicitly-expanded empty strings.
16024 2019-07-16 Richard Sandiford <richard.sandiford@arm.com>
16026 * read-md.h (md_reader::ptr_loc): Moved from read-md.c.
16027 Use file_location instead of separate fields.
16028 (md_reader::set_md_ptr_loc): Take a file_location instead of a
16029 separate filename and line number.
16030 * read-md.c (ptr_loc): As above.
16031 (md_reader::copy_md_ptr_loc): Update for new ptr_loc layout.
16032 (md_reader::fprint_md_ptr_loc): Likewise.
16033 (md_reader::set_md_ptr_loc): Likewise. Take a file_location
16034 instead of a separate filename and line number.
16035 (md_reader::read_string): Update call accordingly.
16037 2019-07-16 Richard Sandiford <richard.sandiford@arm.com>
16039 * config/rs6000/rs6000.md (*mov<mode>_update1): Explicitly
16040 use <SFDF:mode>, <SFDF:MODE>, <SFDF:Ff> and <SFDF:bits> rather than
16041 leaving the choice between SFDF and P implicit.
16042 (*mov<mode>_update2): Likewise.
16043 (*cmp<IBM128:mode>_internal2): Explicitly use <IBM128:MODE>
16044 rather than leaving the choice betweem IBM128 and GPR implicit.
16045 (*fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Explicitly use
16046 <IEEE128:MODE> rather than leaving the choice between IEEE128 and
16048 (AltiVec define_peephole2s): Explicitly use <ALTIVEC_DFORM:MODE>
16049 rather than leaving the choice between ALTIVEC_DFORM and P implicit.
16050 * config/rs6000/vsx.md
16051 (*vsx_ext_<VSX_EXTRACT_I:VS_scalar>_fl_<FL_CONV:mode>)
16052 (*vsx_ext_<VSX_EXTRACT_I:VS_scalar>_ufl_<FL_CONV:mode>): Explicitly
16053 use <FL_CONV:VSisa> rather than leaving the choice between FL_CONV
16054 and VSX_EXTRACT_I implicit.
16056 2019-07-16 Richard Sandiford <richard.sandiford@arm.com>
16058 * config/mips/micromips.md (*movep<MOVEP1:mode><MOVEP2:mode>):
16059 Explicitly use <MOVEP1:MODE> for the mode attribute.
16061 2019-07-16 Jan Hubicka <hubicka@ucw.cz>
16064 * ipa-fnsummary.c (analyze_function_body): Skip debug stmts
16066 2019-07-15 Segher Boessenkool <segher@kernel.crashing.org>
16069 * config/rs6000/rs6000.c (rs6000_file_start): Never skip emitting a
16070 .machine directive.
16072 2019-07-15 Uroš Bizjak <ubizjak@gmail.com>
16074 * config/i386/i386.md (@test<mode>_ccno_1):
16075 Rename from test<mode>_ccno_1.
16076 (*testdi_1): Remove redundant alternatives. Remove modrm attribute.
16077 (*testqi_1_maybe_si): Remove modrm attribute.
16078 (*test<mode>_1): Ditto.
16079 * config/i386/i386-expand.c (ix86_split_idivmod): Use
16080 gen_test_ccno_1 and gen_extend_insn.
16082 2019-07-15 Jan Hubicka <hubicka@ucw.cz>
16084 * tree-ssa-alias.c (aliasing_component_refs_walk): Initialize same_p
16087 2019-07-15 Richard Biener <rguenther@suse.de>
16089 PR middle-end/91162
16090 * tree-cfg.c (move_block_to_fn): When releasing a virtual PHI
16091 node make sure to replace all uses with something valid.
16093 2019-07-15 Kewen Lin <linkw@gcc.gnu.org>
16095 PR tree-optimization/88497
16096 * tree-ssa-reassoc.c (reassociate_bb): Swap the positions of
16097 GIMPLE_BINARY_RHS check and gimple_visited_p check, call new
16098 function undistribute_bitref_for_vector.
16099 (undistribute_bitref_for_vector): New function.
16100 (cleanup_vinfo_map): Likewise.
16101 (sort_by_mach_mode): Likewise.
16103 2019-07-14 Uroš Bizjak <ubizjak@gmail.com>
16105 * config/i386/i386.md (nonmemory_szext_operand): New mode attribute.
16106 (test<mode>_ccno_1): Macroize insn pattern from testsi_ccno_1
16107 and testdi_ccno_1 using SWI48 mode attribute.
16108 (*testdi_1): Use x86_64_szext_nonmemory_operand instead of
16109 x86_64_szext_general_operand.
16110 (*testqi_1_maybe_si): Use nonmemory_operand instead of general_operand.
16111 (*test<mode>_1): Use nonmemory_szext_operand mode attribute
16112 instead of genera_operand mode attribute.
16114 2019-07-14 Vladislav Ivanishin <vlad@ispras.ru>
16116 * gdbhooks.py (DumpFn.invoke): Add explicit casts of return values of
16117 fopen and fclose to their respective types.
16118 (DotFn.invoke): Ditto.
16120 2019-07-14 Jan Hubicka <hubicka@ucw.cz>
16122 * ipa-fnsummary.c (ipa_dump_hints): Do not dump array_index.
16123 (ipa_fn_summary::~ipa_fn_summary): Do not destroy array_index.
16124 (ipa_fn_summary_t::duplicate): Do not duplicate array_index.
16125 (array_index_predicate): Remove.
16126 (analyze_function_body): Account cost for variable ofsetted array
16128 (estimate_node_size_and_time): Do not compute array index hint.
16129 (ipa_merge_fn_summary_after_inlining): Do not merge array index hint.
16130 (inline_read_section): Do not read array index hint.
16131 (ipa_fn_summary_write): Do not write array index hint.
16132 * doc/invoke.texi (ipa-cp-array-index-hint-bonus): Remove.
16133 * ipa-cp.c (hint_time_bonus): Remove.
16134 * ipa-fnsummary.h (ipa_hints_vals): Remove array_index.
16135 (ipa_fnsummary): Remove array_index.
16136 * ipa-inline.c (want_inline_small_function_p): Do not use
16138 (edge_badness): Likewise.
16139 * params.def (PARAM_IPA_CP_ARRAY_INDEX_HINT_BONUS): Remove.
16141 2019-07-14 Segher Boessenkool <segher@kernel.crashing.org>
16144 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Remove
16145 superfluous "builtin function" phrasing.
16147 2019-07-13 Jan Hubicka <hubicka@ucw.cz>
16149 * tree-ssa-alias.c (component_ref_to_zero_sized_trailing_array_p):
16151 (aliasing_component_refs_walk): Break out from ...
16152 (aliasing_component_refs_p): ... here.
16154 2019-07-13 Segher Boessenkool <segher@kernel.crashing.org>
16157 * config/rs6000/rs6000.c (rs6000_invalid_builtin): Remove superfluous
16158 "builtin function" phrasing.
16160 2019-07-13 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
16163 * recog.h (temporary_volatile_ok): New class.
16164 * config/aarch64/aarch64.c (aarch64_emit_sve_pred_move): Set
16165 volatile_ok temporarily to true using temporary_volatile_ok.
16166 * expr.c (emit_block_move_via_cpymem): Likewise.
16167 * optabs.c (maybe_legitimize_operand): Likewise.
16169 2019-07-13 Jakub Jelinek <jakub@redhat.com>
16171 * gimplify.c (struct gimplify_omp_ctx): Add order_concurrent member.
16172 (omp_notice_threadprivate_variable): Diagnose threadprivate variable
16173 uses inside of order(concurrent) constructs.
16174 (gimplify_scan_omp_clauses): Set ctx->order_concurrent if
16175 OMP_CLAUSE_ORDER is seen.
16176 * omp-low.c (struct omp_context): Add order_concurrent member.
16177 (scan_sharing_clauses): Set ctx->order_concurrent if
16178 OMP_CLAUSE_ORDER is seen.
16179 (check_omp_nesting_restrictions): Diagnose ordered or atomic inside
16180 of simd order(concurrent). Diagnose constructs not allowed inside of
16181 for order(concurrent).
16182 (setjmp_or_longjmp_p): Add a context and TREE_PUBLIC check to avoid
16183 complaining about static double setjmp (double); or class static
16184 methods or non-global namespace setjmps.
16185 (omp_runtime_api_call): New function.
16186 (scan_omp_1_stmt): Diagnose OpenMP runtime API calls inside of
16187 order(concurrent) loops.
16189 2019-07-12 Martin Sebor <msebor@redhat.com>
16191 * doc/invoke.texi (ssa-name-def-chain-limit): Document new --param.
16192 * params.def (PARAM_SSA_NAME_DEF_CHAIN_LIMIT): Add new --param.
16193 * tree-vrp.c (vrp_prop::check_mem_ref): Use
16194 PARAM_SSA_NAME_DEF_CHAIN_LIMIT.
16196 2019-07-12 Jan Hubicka <jh@suse.cz>
16198 * tree-ssa-alias.c (same_tmr_indexing_p): Break out from ...
16199 (indirect_refs_may_alias_p): ... here.
16200 (nonoverlapping_component_refs_since_match_p): Support also non-trivial
16201 mem refs in the access paths.
16203 2019-07-12 Jiangning Liu <jiangning.liu@amperecomputing.com>
16205 PR tree-optimization/89430
16206 * tree-ssa-phiopt.c (cond_store_replacement): Support conditional
16207 store elimination for local variable without address escape.
16209 2019-07-12 Jeff Law <law@redhat.com>
16211 * config/c6x/c6x.c (c6x_section_type): Clear SECTION_NOTYPE
16212 for the ".far" section.
16214 2019-07-12 Richard Biener <rguenther@suse.de>
16216 PR tree-optimization/91145
16217 * tree-vect-slp.c (vect_build_slp_tree_2): Fix reduction
16220 2019-07-12 Alexandre Oliva <oliva@adacore.com>
16222 * tree-eh.c (honor_protect_cleanup_actions): Use outer_
16223 rather than this_state as the lowering context for the ELSE
16224 seq in a GIMPLE_EH_ELSE.
16226 2019-07-12 Richard Sandiford <richard.sandiford@arm.com>
16228 * vector-builder.h (vector_builder::elt): Allow already-supplied
16229 elements to be read back before building is complete.
16231 2019-07-12 Eric Botcazou <ebotcazou@adacore.com>
16233 PR rtl-optimization/91136
16234 * df-core.c (ACCESSING REFS): Fix typos in comment.
16235 * resource.c (mark_target_live_reg): Add artificial defs that occur at
16236 the beginning of the block to the initial set of live registers.
16238 2019-07-12 Richard Biener <rguenther@suse.de>
16240 * fold-const.h (get_array_ctor_element_at_index): Adjust.
16241 * fold-const.c (get_array_ctor_element_at_index): Add
16242 ctor_idx output parameter informing the caller where in
16243 the constructor the element was (not) found. Add early exit
16244 for when the ctor is sorted.
16245 * gimple-fold.c (fold_array_ctor_reference): Support constant
16246 folding across multiple array elements.
16248 2019-07-12 Eric Botcazou <ebotcazou@adacore.com>
16250 * cfgexpand.c (expand_gimple_stmt_1) <GIMPLE_RETURN>: If the statement
16251 doesn't have location, set the current location to the function's end.
16253 2019-07-12 Richard Sandiford <richard.sandiford@arm.com>
16255 * config/aarch64/aarch64.md (*compare_condjump<mode>)
16256 (loadwb_pair<GPI:mode>_<P:mode>, loadwb_pair<GPF:mode>_<P:mode>)
16257 (storewb_pair<GPI:mode>_<P:mode>, storewb_pair<GPF:mode>_<P:mode>)
16258 (*ands<mode>_compare0): Fix ambiguous uses of .md attributes.
16259 * config/aarch64/aarch64-simd.md
16260 (*aarch64_get_lane_extend<GPI:mode><VDQQH:mode>): Likewise.
16261 (*aarch64_get_lane_zero_extend<GPI:mode><VDQQH:mode>): Likewise.
16262 * config/aarch64/aarch64-sve.md
16263 (while_ult<GPI:mode><PRED_ALL:mode>): Likewise.
16264 (*cond_<optab><mode>_any): Fix SVE_I/SVE_SDI typo.
16266 2019-07-12 Richard Sandiford <richard.sandiford@arm.com>
16268 * doc/md.texi: Document that @ patterns can have different
16269 numbers of operands.
16270 * genemit.c (handle_overloaded_gen): Handle this case.
16271 * genopinit.c (handle_overloaded_gen): Likewise.
16272 * gensupport.c (replace_operands_with_dups): Iterate over
16273 the new rtx's format rather than the old one's.
16275 2019-07-12 Jakub Jelinek <jakub@redhat.com>
16277 * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_ORDER.
16278 * tree.c (omp_clause_num_ops, omp_clause_code_name): Add
16279 order clause entries.
16280 (walk_tree_1): Handle OMP_CLAUSE_ORDER.
16281 * tree-pretty-print.c (dump_omp_clause): Likewise.
16282 * gimplify.c (gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses):
16284 * omp-low.c (scan_sharing_clauses): Likewise.
16285 * tree-nested.c (convert_nonlocal_omp_clauses,
16286 convert_local_omp_clauses): Likewise.
16288 2019-07-12 Kewen Lin <linkw@gcc.gnu.org>
16290 * cfgrtl.c (print_rtl_with_bb): Emit a hint if the
16291 fallthrough target of current basic block isn't the placed
16294 2019-07-11 Sunil K Pandey <sunil.k.pandey@intel.com>
16297 * config/i386/avx512fintrin.h (_mm512_loadu_epi64): New.
16298 (_mm512_storeu_epi64): Likewise.
16299 (_mm512_loadu_epi32): Likewise.
16300 (_mm512_storeu_epi32): Likewise.
16301 * config/i386/avx512vlintrin.h (_mm256_storeu_epi64): New.
16302 (_mm_storeu_epi64): Likewise.
16303 (_mm256_storeu_epi32): Likewise.
16304 (_mm_storeu_epi32): Likewise.
16306 2019-07-11 Segher Boessenkool <segher@kernel.crashing.org>
16308 * config/rs6000/rs6000-logue.c: Add Modula-2 to comment.
16310 2019-07-11 Segher Boessenkool <segher@kernel.crashing.org>
16312 * config/rs6000/rs6000-logue.c (rs6000_output_function_epilogue):
16315 2019-07-11 Jakub Jelinek <jakub@redhat.com>
16318 * config/i386/sse.md (sse2_cvtpd2dq<mask_name>): Change into ...
16319 (sse2_cvtpd2dq): ... this. Remove mask substitution macros.
16320 (sse2_cvtpd2dq_mask, sse2_cvtpd2dq_mask_1): New define_insns.
16321 (ufix_notruncv2dfv2si2<mask_name>): Change into ...
16322 (ufix_notruncv2dfv2si2): ... this. Remove mask substitution macros.
16323 (ufix_notruncv2dfv2si2_mask, ufix_notruncv2dfv2si2_mask_1): New
16325 (ufix_truncv2dfv2si2<mask_name>): Change into ...
16326 (ufix_truncv2dfv2si2): ... this. Remove mask substitution macros.
16327 (ufix_truncv2dfv2si2_mask, ufix_truncv2dfv2si2_mask_1): New
16329 (sse2_cvttpd2dq<mask_name>): Change into ...
16330 (sse2_cvttpd2dq): ... this. Remove mask substitution macros.
16331 (sse2_cvttpd2dq_mask, sse2_cvttpd2dq_mask_1): New define_insns.
16332 (*sse2_cvtpd2dq<mask_name>): Change into ...
16333 (*sse2_cvtpd2dq): ... this. Remove mask substitution macros.
16334 Add "C" constraint to const0_operand.
16335 (*sse2_cvtpd2dq_mask, *sse2_cvtpd2dq_mask_1): New define_insns.
16336 (sse2_cvtpd2ps_mask): Adjust expand to match *sse2_cvtpd2ps_mask
16340 * config/i386/i386-builtin-types.def
16341 (V32HI_FTYPE_V32HI_V32HI_V32HI_INT,
16342 V16HI_FTYPE_V16HI_V16HI_V16HI_INT, V8HI_FTYPE_V8HI_V8HI_V8HI_INT,
16343 V8SI_FTYPE_V8SI_V8SI_V8SI_INT, V4DI_FTYPE_V4DI_V4DI_V4DI_INT,
16344 V8DI_FTYPE_V8DI_V8DI_V8DI_INT, V16SI_FTYPE_V16SI_V16SI_V16SI_INT,
16345 V2DI_FTYPE_V2DI_V2DI_V2DI_INT, V4SI_FTYPE_V4SI_V4SI_V4SI_INT): Remove.
16346 * config/i386/i386-builtin.def (__builtin_ia32_vpshrdv_v32hi_mask,
16347 __builtin_ia32_vpshrdv_v32hi_maskz, __builtin_ia32_vpshrdv_v16hi_mask,
16348 __builtin_ia32_vpshrdv_v16hi_maskz, __builtin_ia32_vpshrdv_v8hi_mask,
16349 __builtin_ia32_vpshrdv_v8hi_maskz, __builtin_ia32_vpshrdv_v16si_mask,
16350 __builtin_ia32_vpshrdv_v16si_maskz, __builtin_ia32_vpshrdv_v8si_mask,
16351 __builtin_ia32_vpshrdv_v8si_maskz, __builtin_ia32_vpshrdv_v4si_mask,
16352 __builtin_ia32_vpshrdv_v4si_maskz, __builtin_ia32_vpshrdv_v8di_mask,
16353 __builtin_ia32_vpshrdv_v8di_maskz, __builtin_ia32_vpshrdv_v4di_mask,
16354 __builtin_ia32_vpshrdv_v4di_maskz, __builtin_ia32_vpshrdv_v2di_mask,
16355 __builtin_ia32_vpshrdv_v2di_maskz, __builtin_ia32_vpshldv_v32hi_mask,
16356 __builtin_ia32_vpshldv_v32hi_maskz, __builtin_ia32_vpshldv_v16hi_mask,
16357 __builtin_ia32_vpshldv_v16hi_maskz, __builtin_ia32_vpshldv_v8hi_mask,
16358 __builtin_ia32_vpshldv_v8hi_maskz, __builtin_ia32_vpshldv_v16si_mask,
16359 __builtin_ia32_vpshldv_v16si_maskz, __builtin_ia32_vpshldv_v8si_mask,
16360 __builtin_ia32_vpshldv_v8si_maskz, __builtin_ia32_vpshldv_v4si_mask,
16361 __builtin_ia32_vpshldv_v4si_maskz, __builtin_ia32_vpshldv_v8di_mask,
16362 __builtin_ia32_vpshldv_v8di_maskz, __builtin_ia32_vpshldv_v4di_mask,
16363 __builtin_ia32_vpshldv_v4di_maskz, __builtin_ia32_vpshldv_v2di_mask,
16364 __builtin_ia32_vpshldv_v2di_maskz, __builtin_ia32_vpdpbusd_v16si_mask,
16365 __builtin_ia32_vpdpbusd_v16si_maskz, __builtin_ia32_vpdpbusd_v8si_mask,
16366 __builtin_ia32_vpdpbusd_v8si_maskz, __builtin_ia32_vpdpbusd_v4si_mask,
16367 __builtin_ia32_vpdpbusd_v4si_maskz,
16368 __builtin_ia32_vpdpbusds_v16si_mask,
16369 __builtin_ia32_vpdpbusds_v16si_maskz,
16370 __builtin_ia32_vpdpbusds_v8si_mask,
16371 __builtin_ia32_vpdpbusds_v8si_maskz,
16372 __builtin_ia32_vpdpbusds_v4si_mask,
16373 __builtin_ia32_vpdpbusds_v4si_maskz,
16374 __builtin_ia32_vpdpwssd_v16si_mask,
16375 __builtin_ia32_vpdpwssd_v16si_maskz, __builtin_ia32_vpdpwssd_v8si_mask,
16376 __builtin_ia32_vpdpwssd_v8si_maskz, __builtin_ia32_vpdpwssd_v4si_mask,
16377 __builtin_ia32_vpdpwssd_v4si_maskz,
16378 __builtin_ia32_vpdpwssds_v16si_mask,
16379 __builtin_ia32_vpdpwssds_v16si_maskz,
16380 __builtin_ia32_vpdpwssds_v8si_mask,
16381 __builtin_ia32_vpdpwssds_v8si_maskz,
16382 __builtin_ia32_vpdpwssds_v4si_mask,
16383 __builtin_ia32_vpdpwssds_v4si_maskz): Use *_USI, *_UHI or *_UQI
16384 suffixed types rather than *_INT.
16385 * config/i386/i386-expand.c (ix86_expand_args_builtin): Don't handle
16386 V32HI_FTYPE_V32HI_V32HI_V32HI_INT, V16HI_FTYPE_V16HI_V16HI_V16HI_INT,
16387 V8HI_FTYPE_V8HI_V8HI_V8HI_INT, V8SI_FTYPE_V8SI_V8SI_V8SI_INT,
16388 V4DI_FTYPE_V4DI_V4DI_V4DI_INT, V8DI_FTYPE_V8DI_V8DI_V8DI_INT,
16389 V16SI_FTYPE_V16SI_V16SI_V16SI_INT, V2DI_FTYPE_V2DI_V2DI_V2DI_INT
16390 and V4SI_FTYPE_V4SI_V4SI_V4SI_INT.
16392 2019-07-11 Aldy Hernandez <aldyh@redhat.com>
16394 * tree-vrp.c (intersect_ranges): If we know the intersection is
16395 empty, there is no need to conservatively add anything else to
16398 2019-07-11 Richard Biener <rguenther@suse.de>
16400 PR middle-end/91131
16401 * gimplify.c (gimplify_compound_literal_expr): Force a temporary
16402 when the object is volatile and we have not cleared it even though
16403 there are no nonzero elements.
16405 2019-07-10 Michael Meissner <meissner@linux.ibm.com>
16407 * config/rs6000/predicates.md (cint34_operand): Update
16408 SIGNED_34BIT_OFFSET_P call.
16409 (pcrel_address): Update SIGNED_34BIT_OFFSET_P call.
16410 (pcrel_external_address): Update SIGNED_34BIT_OFFSET_P call.
16411 * config/rs6000/rs6000.c (rs6000_prefixed_address): Update
16412 SIGNED_16BIT_OFFSET_P and SIGNED_34BIT_OFFSET_P calls.
16413 * config/rs6000/rs6000.h (SIGNED_16BIT_OFFSET_P): Remove EXTRA
16415 (SIGNED_34BIT_OFFSET_P): Remove EXTRA argument.
16416 (SIGNED_16BIT_OFFSET_EXTRA_P): New macro, like
16417 SIGNED_16BIT_OFFSET_P with an EXTRA argument.
16418 (SIGNED_34BIT_OFFSET_EXTRA_P): New macro, like
16419 SIGNED_34BIT_OFFSET_P with an EXTRA argument.
16421 2019-07-10 Iain Sandoe <iain@sandoe.co.uk>
16423 * config/rs6000/darwin.h (LIB_SPEC): Collate this spec here.
16424 * config/rs6000/darwin7.h (LIB_SPEC): Remove.
16425 * config/rs6000/darwin8.h (LIB_SPEC): Remove.
16426 (DEF_MIN_OSX_VERSION): New.
16428 2019-07-10 Richard Sandiford <richard.sandiford@arm.com>
16430 * fold-const.c (fold_relational_const): Fix folding of
16431 vector-to-scalar NE_EXPRs.
16432 (test_vector_folding): Add more tests.
16434 2019-07-10 Richard Sandiford <richard.sandiford@arm.com>
16437 * config/arm/iterators.md (V2DI_ONLY): New mode iterator.
16438 * config/arm/neon.md (vec_set<mode>_internal): Add a '@' prefix.
16439 (vec_setv2di_internal): Reexpress as...
16440 (@vec_set<V2DI_ONLY:mode>_internal): ...this.
16441 * config/arm/arm.c (neon_expand_vector_init): Use gen_vec_set_internal
16442 rather than gen_neon_vset_lane<mode>.
16444 2019-07-10 Vladimir Makarov <vmakarov@redhat.com>
16447 * lra-constraints.c (process_alt_operands): Don't match user
16448 defined regs only if they are early clobbers.
16450 2019-07-10 Marc Glisse <marc.glisse@inria.fr>
16452 * wide-int.h (wi::lshift): Reject negative values for the fast path.
16454 2019-07-10 Richard Biener <rguenther@suse.de>
16456 PR tree-optimization/91126
16457 * tree-ssa-sccvn.c (n_walk_cb_data::push_partial_def): Adjust
16458 native encoding offset for BYTES_BIG_ENDIAN.
16459 (vn_reference_lookup_3): Likewise.
16461 2019-07-10 Richard Biener <rguenther@suse.de>
16463 * tree-ssa-sccvn.c (vn_reference_lookup_3): Look at valueized
16464 LHS whenever possible.
16466 2019-07-09 Jan Hubicka <hubicka@ucw.cz>
16468 * tree-ssa-alias.c (nonoverlapping_component_refs_p_1): Break out
16469 from ...; work also on duplicated types.
16470 (nonoverlapping_component_refs_since_match): ... here
16471 (ncr_type_uid): Break out from ...
16472 (ncr_compar): ... here; look for TYPE_UID of canonical type if
16474 (nonoverlapping_component_refs_p): Use same_type_for_tbaa to match
16475 the types and nonoverlapping_component_refs_p_1 to disambiguate.
16477 2019-07-09 Martin Sebor <msebor@redhat.com>
16479 PR tree-optimization/90989
16480 * tree-ssa-strlen.c (handle_char_store): Constrain a single character
16481 optimization to just single character stores.
16483 2019-07-09 Joern Rennecke <joern.rennecke@riscy-ip.com>
16485 * tree-vect-stmts.c (vectorizable_comparison) <!slp_node>:
16486 Swap operands only once.
16488 2019-07-09 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
16490 * cfgcleanup.c (old_insns_match_p): Check if used hard regs set is equal
16491 for both call instructions.
16493 2019-07-09 John Darrington <john@darrington.wattle.id.au>
16495 * simplify-rtx.c (simplify_unary_operation_1): Use GET_MODE_PRECISION
16496 rather than GET_MODE_BITSIZE to better handle partial integer modes.
16498 2019-07-09 Michael Meissner <meissner@linux.ibm.com>
16500 * config/rs6000/rs6000-internal.h (create_TOC_reference): Delete.
16501 * config/rs6000/rs6000-logue.c (create_TOC_reference): Move
16502 function from rs6000-logue.c back to rs6000.c.
16503 * config/rs6000/rs6000.c (create_TOC_reference): Likewise.
16505 2019-07-09 Martin Sebor <msebor@redhat.com>
16508 * auto-profile.c: Change class-key of PODs to struct and others
16510 * basic-block.h: Same.
16511 * bitmap.c (bitmap_alloc): Same.
16513 * builtins.c (expand_builtin_prefetch): Same.
16514 (expand_builtin_interclass_mathfn): Same.
16515 (expand_builtin_strlen): Same.
16516 (expand_builtin_mempcpy_args): Same.
16517 (expand_cmpstr): Same.
16518 (expand_builtin___clear_cache): Same.
16519 (expand_ifn_atomic_bit_test_and): Same.
16520 (expand_builtin_thread_pointer): Same.
16521 (expand_builtin_set_thread_pointer): Same.
16522 * caller-save.c (setup_save_areas): Same.
16523 (replace_reg_with_saved_mem): Same.
16524 (insert_restore): Same.
16525 (insert_save): Same.
16526 (add_used_regs): Same.
16527 * cfg.c (get_bb_copy): Same.
16528 (set_loop_copy): Same.
16531 * cfgexpand.c (alloc_stack_frame_space): Same.
16532 (add_stack_var): Same.
16533 (add_stack_var_conflict): Same.
16534 (add_scope_conflicts_1): Same.
16535 (update_alias_info_with_stack_vars): Same.
16536 (expand_used_vars): Same.
16537 * cfghooks.c (redirect_edge_and_branch_force): Same.
16538 (delete_basic_block): Same.
16539 (split_edge): Same.
16540 (make_forwarder_block): Same.
16541 (force_nonfallthru): Same.
16542 (duplicate_block): Same.
16543 (lv_flush_pending_stmts): Same.
16544 * cfghooks.h: Same.
16545 * cfgloop.c (flow_loops_cfg_dump): Same.
16546 (flow_loop_nested_p): Same.
16547 (superloop_at_depth): Same.
16548 (get_loop_latch_edges): Same.
16549 (flow_loop_dump): Same.
16550 (flow_loops_dump): Same.
16551 (flow_loops_free): Same.
16552 (flow_loop_nodes_find): Same.
16553 (establish_preds): Same.
16554 (flow_loop_tree_node_add): Same.
16555 (flow_loop_tree_node_remove): Same.
16556 (flow_loops_find): Same.
16557 (find_subloop_latch_edge_by_profile): Same.
16558 (find_subloop_latch_edge_by_ivs): Same.
16559 (mfb_redirect_edges_in_set): Same.
16560 (form_subloop): Same.
16561 (merge_latch_edges): Same.
16562 (disambiguate_multiple_latches): Same.
16563 (disambiguate_loops_with_multiple_latches): Same.
16564 (flow_bb_inside_loop_p): Same.
16565 (glb_enum_p): Same.
16566 (get_loop_body_with_size): Same.
16567 (get_loop_body): Same.
16568 (fill_sons_in_loop): Same.
16569 (get_loop_body_in_dom_order): Same.
16570 (get_loop_body_in_custom_order): Same.
16571 (release_recorded_exits): Same.
16572 (get_loop_exit_edges): Same.
16573 (num_loop_branches): Same.
16574 (remove_bb_from_loops): Same.
16575 (find_common_loop): Same.
16576 (delete_loop): Same.
16577 (cancel_loop): Same.
16578 (verify_loop_structure): Same.
16579 (loop_preheader_edge): Same.
16580 (loop_exit_edge_p): Same.
16581 (single_exit): Same.
16582 (loop_exits_to_bb_p): Same.
16583 (loop_exits_from_bb_p): Same.
16584 (get_loop_location): Same.
16585 (record_niter_bound): Same.
16586 (get_estimated_loop_iterations_int): Same.
16587 (max_stmt_executions_int): Same.
16588 (likely_max_stmt_executions_int): Same.
16589 (get_estimated_loop_iterations): Same.
16590 (get_max_loop_iterations): Same.
16591 (get_max_loop_iterations_int): Same.
16592 (get_likely_max_loop_iterations): Same.
16593 * cfgloop.h (simple_loop_desc): Same.
16595 (loop_depth): Same.
16596 (loop_outer): Same.
16597 (loop_iterator::next): Same.
16598 (loop_outermost): Same.
16599 * cfgloopanal.c (mark_irreducible_loops): Same.
16600 (num_loop_insns): Same.
16601 (average_num_loop_insns): Same.
16602 (expected_loop_iterations_unbounded): Same.
16603 (expected_loop_iterations): Same.
16604 (mark_loop_exit_edges): Same.
16605 (single_likely_exit): Same.
16606 * cfgloopmanip.c (fix_bb_placement): Same.
16607 (fix_bb_placements): Same.
16608 (remove_path): Same.
16609 (place_new_loop): Same.
16611 (scale_loop_frequencies): Same.
16612 (scale_loop_profile): Same.
16613 (create_empty_if_region_on_edge): Same.
16614 (create_empty_loop_on_edge): Same.
16617 (fix_loop_placements): Same.
16618 (copy_loop_info): Same.
16619 (duplicate_loop): Same.
16620 (duplicate_subloops): Same.
16621 (loop_redirect_edge): Same.
16622 (can_duplicate_loop_p): Same.
16623 (duplicate_loop_to_header_edge): Same.
16624 (mfb_keep_just): Same.
16625 (has_preds_from_loop): Same.
16626 (create_preheader): Same.
16627 (create_preheaders): Same.
16628 (lv_adjust_loop_entry_edge): Same.
16629 (loop_version): Same.
16630 * cfgloopmanip.h: Same.
16632 * cgraphbuild.c: Same.
16633 * combine.c (make_extraction): Same.
16634 * config/i386/i386-features.c: Same.
16635 * config/i386/i386-features.h: Same.
16636 * config/i386/i386.c (ix86_emit_outlined_ms2sysv_save): Same.
16637 (ix86_emit_outlined_ms2sysv_restore): Same.
16638 (ix86_noce_conversion_profitable_p): Same.
16639 (ix86_init_cost): Same.
16640 (ix86_simd_clone_usable): Same.
16641 * configure.ac (ACX_PROG_CXX_WARNING_OPTS): Add -Wclass-is-pod and
16643 * coretypes.h: Same.
16644 * data-streamer-in.c (string_for_index): Change class-key of PODs
16645 to struct and others to class.
16646 (streamer_read_indexed_string): Same.
16647 (streamer_read_string): Same.
16648 (bp_unpack_indexed_string): Same.
16649 (bp_unpack_string): Same.
16650 (streamer_read_uhwi): Same.
16651 (streamer_read_hwi): Same.
16652 (streamer_read_gcov_count): Same.
16653 (streamer_read_wide_int): Same.
16654 * data-streamer.h (streamer_write_bitpack): Same.
16655 (bp_unpack_value): Same.
16656 (streamer_write_char_stream): Same.
16657 (streamer_write_hwi_in_range): Same.
16658 (streamer_write_record_start): Same.
16659 * ddg.c (create_ddg_dep_from_intra_loop_link): Same.
16660 (add_cross_iteration_register_deps): Same.
16661 (build_intra_loop_deps): Same.
16662 * df-core.c (df_analyze): Same.
16663 (loop_post_order_compute): Same.
16664 (loop_inverted_post_order_compute): Same.
16665 * df-problems.c (df_rd_alloc): Same.
16666 (df_rd_simulate_one_insn): Same.
16667 (df_rd_local_compute): Same.
16668 (df_rd_init_solution): Same.
16669 (df_rd_confluence_n): Same.
16670 (df_rd_transfer_function): Same.
16671 (df_rd_free): Same.
16672 (df_rd_dump_defs_set): Same.
16673 (df_rd_top_dump): Same.
16674 (df_lr_alloc): Same.
16675 (df_lr_reset): Same.
16676 (df_lr_local_compute): Same.
16677 (df_lr_init): Same.
16678 (df_lr_confluence_n): Same.
16679 (df_lr_free): Same.
16680 (df_lr_top_dump): Same.
16681 (df_lr_verify_transfer_functions): Same.
16682 (df_live_alloc): Same.
16683 (df_live_reset): Same.
16684 (df_live_init): Same.
16685 (df_live_confluence_n): Same.
16686 (df_live_finalize): Same.
16687 (df_live_free): Same.
16688 (df_live_top_dump): Same.
16689 (df_live_verify_transfer_functions): Same.
16690 (df_mir_alloc): Same.
16691 (df_mir_reset): Same.
16692 (df_mir_init): Same.
16693 (df_mir_confluence_n): Same.
16694 (df_mir_free): Same.
16695 (df_mir_top_dump): Same.
16696 (df_word_lr_alloc): Same.
16697 (df_word_lr_reset): Same.
16698 (df_word_lr_init): Same.
16699 (df_word_lr_confluence_n): Same.
16700 (df_word_lr_free): Same.
16701 (df_word_lr_top_dump): Same.
16702 (df_md_alloc): Same.
16703 (df_md_simulate_one_insn): Same.
16704 (df_md_reset): Same.
16705 (df_md_init): Same.
16706 (df_md_free): Same.
16707 (df_md_top_dump): Same.
16708 * df-scan.c (df_insn_delete): Same.
16709 (df_insn_rescan): Same.
16710 (df_notes_rescan): Same.
16711 (df_sort_and_compress_mws): Same.
16712 (df_install_mws): Same.
16713 (df_refs_add_to_chains): Same.
16714 (df_ref_create_structure): Same.
16715 (df_ref_record): Same.
16716 (df_def_record_1): Same.
16717 (df_find_hard_reg_defs): Same.
16718 (df_uses_record): Same.
16719 (df_get_conditional_uses): Same.
16720 (df_get_call_refs): Same.
16721 (df_recompute_luids): Same.
16722 (df_get_entry_block_def_set): Same.
16723 (df_entry_block_defs_collect): Same.
16724 (df_get_exit_block_use_set): Same.
16725 (df_exit_block_uses_collect): Same.
16726 (df_mws_verify): Same.
16727 (df_bb_verify): Same.
16728 * df.h (df_scan_get_bb_info): Same.
16729 * doc/tm.texi: Same.
16730 * dse.c (record_store): Same.
16731 * dumpfile.h: Same.
16732 * emit-rtl.c (const_fixed_hasher::equal): Same.
16733 (set_mem_attributes_minus_bitpos): Same.
16734 (change_address): Same.
16735 (adjust_address_1): Same.
16736 (offset_address): Same.
16737 * emit-rtl.h: Same.
16738 * except.c (dw2_build_landing_pads): Same.
16739 (sjlj_emit_dispatch_table): Same.
16740 * explow.c (allocate_dynamic_stack_space): Same.
16741 (emit_stack_probe): Same.
16742 (probe_stack_range): Same.
16743 * expmed.c (store_bit_field_using_insv): Same.
16744 (store_bit_field_1): Same.
16745 (store_integral_bit_field): Same.
16746 (extract_bit_field_using_extv): Same.
16747 (extract_bit_field_1): Same.
16748 (emit_cstore): Same.
16749 * expr.c (emit_block_move_via_cpymem): Same.
16750 (expand_cmpstrn_or_cmpmem): Same.
16751 (set_storage_via_setmem): Same.
16752 (emit_single_push_insn_1): Same.
16753 (expand_assignment): Same.
16754 (store_constructor): Same.
16755 (expand_expr_real_2): Same.
16756 (expand_expr_real_1): Same.
16757 (try_casesi): Same.
16759 * function.c (try_fit_stack_local): Same.
16760 (assign_stack_local_1): Same.
16761 (assign_stack_local): Same.
16762 (cut_slot_from_list): Same.
16763 (insert_slot_to_list): Same.
16764 (max_slot_level): Same.
16765 (move_slot_to_level): Same.
16766 (temp_address_hasher::equal): Same.
16767 (remove_unused_temp_slot_addresses): Same.
16768 (assign_temp): Same.
16769 (combine_temp_slots): Same.
16770 (update_temp_slot_address): Same.
16771 (preserve_temp_slots): Same.
16772 * function.h: Same.
16774 * gcc-rich-location.h: Same.
16776 * genattrtab.c (check_attr_test): Same.
16777 (check_attr_value): Same.
16778 (convert_set_attr_alternative): Same.
16779 (convert_set_attr): Same.
16780 (check_defs): Same.
16781 (copy_boolean): Same.
16782 (get_attr_value): Same.
16783 (expand_delays): Same.
16784 (make_length_attrs): Same.
16786 (make_alternative_compare): Same.
16787 (simplify_test_exp): Same.
16788 (tests_attr_p): Same.
16789 (get_attr_order): Same.
16790 (clear_struct_flag): Same.
16792 (compares_alternatives_p): Same.
16795 (find_attrs_to_cache): Same.
16796 (write_test_expr): Same.
16797 (walk_attr_value): Same.
16798 (write_attr_get): Same.
16799 (eliminate_known_true): Same.
16800 (write_insn_cases): Same.
16801 (write_attr_case): Same.
16802 (write_attr_valueq): Same.
16803 (write_attr_value): Same.
16804 (write_dummy_eligible_delay): Same.
16805 (next_comma_elt): Same.
16807 (make_internal_attr): Same.
16808 (copy_rtx_unchanging): Same.
16809 (gen_insn_reserv): Same.
16810 (check_tune_attr): Same.
16811 (make_automaton_attrs): Same.
16812 (handle_arg): Same.
16813 * genextract.c (gen_insn): Same.
16814 (VEC_char_to_string): Same.
16815 * genmatch.c (print_operand): Same.
16817 (parser::parse_operation): Same.
16818 (parser::parse_capture): Same.
16819 (parser::parse_c_expr): Same.
16820 (parser::parse_simplify): Same.
16822 * genoutput.c (output_operand_data): Same.
16823 (output_get_insn_name): Same.
16824 (compare_operands): Same.
16825 (place_operands): Same.
16826 (process_template): Same.
16827 (validate_insn_alternatives): Same.
16828 (validate_insn_operands): Same.
16829 (gen_expand): Same.
16830 (note_constraint): Same.
16831 * genpreds.c (write_one_predicate_function): Same.
16832 (add_constraint): Same.
16833 (process_define_register_constraint): Same.
16834 (write_lookup_constraint_1): Same.
16835 (write_lookup_constraint_array): Same.
16836 (write_insn_constraint_len): Same.
16837 (write_reg_class_for_constraint_1): Same.
16838 (write_constraint_satisfied_p_array): Same.
16839 * genrecog.c (optimize_subroutine_group): Same.
16840 * gensupport.c (process_define_predicate): Same.
16841 (queue_pattern): Same.
16842 (remove_from_queue): Same.
16843 (process_rtx): Same.
16844 (is_predicable): Same.
16845 (change_subst_attribute): Same.
16846 (subst_pattern_match): Same.
16847 (alter_constraints): Same.
16848 (alter_attrs_for_insn): Same.
16849 (shift_output_template): Same.
16850 (alter_output_for_subst_insn): Same.
16851 (process_one_cond_exec): Same.
16853 (process_define_cond_exec): Same.
16854 (mnemonic_htab_callback): Same.
16855 (gen_mnemonic_attr): Same.
16856 (read_md_rtx): Same.
16857 * ggc-page.c: Same.
16858 * gimple-loop-interchange.cc (dump_reduction): Same.
16859 (dump_induction): Same.
16860 (loop_cand::~loop_cand): Same.
16861 (free_data_refs_with_aux): Same.
16862 (tree_loop_interchange::interchange_loops): Same.
16863 (tree_loop_interchange::map_inductions_to_loop): Same.
16864 (tree_loop_interchange::move_code_to_inner_loop): Same.
16865 (compute_access_stride): Same.
16866 (compute_access_strides): Same.
16867 (proper_loop_form_for_interchange): Same.
16868 (tree_loop_interchange_compute_ddrs): Same.
16869 (prune_datarefs_not_in_loop): Same.
16870 (prepare_data_references): Same.
16871 (pass_linterchange::execute): Same.
16872 * gimple-loop-jam.c (bb_prevents_fusion_p): Same.
16873 (unroll_jam_possible_p): Same.
16874 (fuse_loops): Same.
16875 (adjust_unroll_factor): Same.
16876 (tree_loop_unroll_and_jam): Same.
16877 * gimple-loop-versioning.cc (loop_versioning::~loop_versioning): Same.
16878 (loop_versioning::expensive_stmt_p): Same.
16879 (loop_versioning::version_for_unity): Same.
16880 (loop_versioning::dump_inner_likelihood): Same.
16881 (loop_versioning::find_per_loop_multiplication): Same.
16882 (loop_versioning::analyze_term_using_scevs): Same.
16883 (loop_versioning::record_address_fragment): Same.
16884 (loop_versioning::analyze_expr): Same.
16885 (loop_versioning::analyze_blocks): Same.
16886 (loop_versioning::prune_conditions): Same.
16887 (loop_versioning::merge_loop_info): Same.
16888 (loop_versioning::add_loop_to_queue): Same.
16889 (loop_versioning::decide_whether_loop_is_versionable): Same.
16890 (loop_versioning::make_versioning_decisions): Same.
16891 (loop_versioning::implement_versioning_decisions): Same.
16892 * gimple-ssa-evrp-analyze.c
16893 (evrp_range_analyzer::record_ranges_from_phis): Same.
16894 * gimple-ssa-store-merging.c (split_store::split_store): Same.
16895 (count_multiple_uses): Same.
16896 (split_group): Same.
16897 (imm_store_chain_info::output_merged_store): Same.
16898 (pass_store_merging::process_store): Same.
16899 * gimple-ssa-strength-reduction.c (slsr_process_phi): Same.
16900 * gimple-ssa-warn-alloca.c (adjusted_warn_limit): Same.
16902 (alloca_call_type): Same.
16903 (pass_walloca::execute): Same.
16904 * gimple-streamer-in.c (input_phi): Same.
16905 (input_gimple_stmt): Same.
16906 * gimple-streamer.h: Same.
16907 * godump.c (go_force_record_alignment): Same.
16908 (go_format_type): Same.
16909 (go_output_type): Same.
16910 (go_output_fndecl): Same.
16911 (go_output_typedef): Same.
16912 (keyword_hash_init): Same.
16913 (find_dummy_types): Same.
16914 * graph.c (draw_cfg_nodes_no_loops): Same.
16915 (draw_cfg_nodes_for_loop): Same.
16916 * hard-reg-set.h (hard_reg_set_iter_next): Same.
16917 * hsa-brig.c: Same.
16918 * hsa-common.h (hsa_internal_fn_hasher::equal): Same.
16919 * hsa-dump.c (dump_hsa_cfun): Same.
16920 * hsa-gen.c (gen_function_def_parameters): Same.
16921 * hsa-regalloc.c (dump_hsa_cfun_regalloc): Same.
16922 * input.c (dump_line_table_statistics): Same.
16923 (test_lexer): Same.
16925 * internal-fn.c (get_multi_vector_move): Same.
16926 (expand_load_lanes_optab_fn): Same.
16927 (expand_GOMP_SIMT_ENTER_ALLOC): Same.
16928 (expand_GOMP_SIMT_EXIT): Same.
16929 (expand_GOMP_SIMT_LAST_LANE): Same.
16930 (expand_GOMP_SIMT_ORDERED_PRED): Same.
16931 (expand_GOMP_SIMT_VOTE_ANY): Same.
16932 (expand_GOMP_SIMT_XCHG_BFLY): Same.
16933 (expand_GOMP_SIMT_XCHG_IDX): Same.
16934 (expand_addsub_overflow): Same.
16935 (expand_neg_overflow): Same.
16936 (expand_mul_overflow): Same.
16937 (expand_call_mem_ref): Same.
16938 (expand_mask_load_optab_fn): Same.
16939 (expand_scatter_store_optab_fn): Same.
16940 (expand_gather_load_optab_fn): Same.
16941 * ipa-cp.c (ipa_get_parm_lattices): Same.
16942 (print_all_lattices): Same.
16943 (ignore_edge_p): Same.
16944 (build_toporder_info): Same.
16945 (free_toporder_info): Same.
16946 (push_node_to_stack): Same.
16947 (ipcp_lattice<valtype>::set_contains_variable): Same.
16948 (set_agg_lats_to_bottom): Same.
16949 (ipcp_bits_lattice::meet_with): Same.
16950 (set_single_call_flag): Same.
16951 (initialize_node_lattices): Same.
16952 (ipa_get_jf_ancestor_result): Same.
16953 (ipcp_verify_propagated_values): Same.
16954 (propagate_scalar_across_jump_function): Same.
16955 (propagate_context_across_jump_function): Same.
16956 (propagate_bits_across_jump_function): Same.
16957 (ipa_vr_operation_and_type_effects): Same.
16958 (propagate_vr_across_jump_function): Same.
16959 (set_check_aggs_by_ref): Same.
16960 (set_chain_of_aglats_contains_variable): Same.
16961 (merge_aggregate_lattices): Same.
16962 (agg_pass_through_permissible_p): Same.
16963 (propagate_aggs_across_jump_function): Same.
16964 (call_passes_through_thunk_p): Same.
16965 (propagate_constants_across_call): Same.
16966 (devirtualization_time_bonus): Same.
16967 (good_cloning_opportunity_p): Same.
16968 (context_independent_aggregate_values): Same.
16969 (gather_context_independent_values): Same.
16970 (perform_estimation_of_a_value): Same.
16971 (estimate_local_effects): Same.
16972 (value_topo_info<valtype>::add_val): Same.
16973 (add_all_node_vals_to_toposort): Same.
16974 (value_topo_info<valtype>::propagate_effects): Same.
16975 (ipcp_propagate_stage): Same.
16976 (ipcp_discover_new_direct_edges): Same.
16977 (same_node_or_its_all_contexts_clone_p): Same.
16978 (cgraph_edge_brings_value_p): Same.
16979 (gather_edges_for_value): Same.
16980 (create_specialized_node): Same.
16981 (find_more_scalar_values_for_callers_subset): Same.
16982 (find_more_contexts_for_caller_subset): Same.
16983 (copy_plats_to_inter): Same.
16984 (intersect_aggregates_with_edge): Same.
16985 (find_aggregate_values_for_callers_subset): Same.
16986 (cgraph_edge_brings_all_agg_vals_for_node): Same.
16987 (decide_about_value): Same.
16988 (decide_whether_version_node): Same.
16989 (spread_undeadness): Same.
16990 (identify_dead_nodes): Same.
16991 (ipcp_store_vr_results): Same.
16992 * ipa-devirt.c (final_warning_record::grow_type_warnings): Same.
16993 * ipa-fnsummary.c (ipa_fn_summary::account_size_time): Same.
16994 (redirect_to_unreachable): Same.
16995 (edge_set_predicate): Same.
16996 (evaluate_conditions_for_known_args): Same.
16997 (evaluate_properties_for_edge): Same.
16998 (ipa_fn_summary_t::duplicate): Same.
16999 (ipa_call_summary_t::duplicate): Same.
17000 (dump_ipa_call_summary): Same.
17001 (ipa_dump_fn_summary): Same.
17002 (eliminated_by_inlining_prob): Same.
17003 (set_cond_stmt_execution_predicate): Same.
17004 (set_switch_stmt_execution_predicate): Same.
17005 (compute_bb_predicates): Same.
17006 (will_be_nonconstant_expr_predicate): Same.
17007 (phi_result_unknown_predicate): Same.
17008 (analyze_function_body): Same.
17009 (compute_fn_summary): Same.
17010 (estimate_edge_devirt_benefit): Same.
17011 (estimate_edge_size_and_time): Same.
17012 (estimate_calls_size_and_time): Same.
17013 (estimate_node_size_and_time): Same.
17014 (remap_edge_change_prob): Same.
17015 (remap_edge_summaries): Same.
17016 (ipa_merge_fn_summary_after_inlining): Same.
17017 (ipa_fn_summary_generate): Same.
17018 (inline_read_section): Same.
17019 (ipa_fn_summary_read): Same.
17020 (ipa_fn_summary_write): Same.
17021 * ipa-fnsummary.h: Same.
17022 * ipa-hsa.c (ipa_hsa_read_section): Same.
17023 * ipa-icf-gimple.c (func_checker::compare_loops): Same.
17024 * ipa-icf.c (sem_function::param_used_p): Same.
17025 * ipa-inline-analysis.c (do_estimate_edge_time): Same.
17026 * ipa-inline.c (edge_badness): Same.
17027 (inline_small_functions): Same.
17028 * ipa-polymorphic-call.c
17029 (ipa_polymorphic_call_context::stream_out): Same.
17030 * ipa-predicate.c (predicate::remap_after_duplication): Same.
17031 (predicate::remap_after_inlining): Same.
17032 (predicate::stream_out): Same.
17033 * ipa-predicate.h: Same.
17034 * ipa-profile.c (ipa_profile_read_summary): Same.
17035 * ipa-prop.c (ipa_get_param_decl_index_1): Same.
17036 (count_formal_params): Same.
17037 (ipa_dump_param): Same.
17038 (ipa_alloc_node_params): Same.
17039 (ipa_print_node_jump_functions_for_edge): Same.
17040 (ipa_print_node_jump_functions): Same.
17041 (ipa_load_from_parm_agg): Same.
17042 (get_ancestor_addr_info): Same.
17043 (ipa_compute_jump_functions_for_edge): Same.
17044 (ipa_analyze_virtual_call_uses): Same.
17045 (ipa_analyze_stmt_uses): Same.
17046 (ipa_analyze_params_uses_in_bb): Same.
17047 (update_jump_functions_after_inlining): Same.
17048 (try_decrement_rdesc_refcount): Same.
17049 (ipa_impossible_devirt_target): Same.
17050 (update_indirect_edges_after_inlining): Same.
17051 (combine_controlled_uses_counters): Same.
17052 (ipa_edge_args_sum_t::duplicate): Same.
17053 (ipa_write_jump_function): Same.
17054 (ipa_write_indirect_edge_info): Same.
17055 (ipa_write_node_info): Same.
17056 (ipa_read_edge_info): Same.
17057 (ipa_prop_read_section): Same.
17058 (read_replacements_section): Same.
17059 * ipa-prop.h (ipa_get_param_count): Same.
17060 (ipa_get_param): Same.
17061 (ipa_get_type): Same.
17062 (ipa_get_param_move_cost): Same.
17063 (ipa_set_param_used): Same.
17064 (ipa_get_controlled_uses): Same.
17065 (ipa_set_controlled_uses): Same.
17066 (ipa_get_cs_argument_count): Same.
17067 * ipa-pure-const.c (analyze_function): Same.
17068 (pure_const_read_summary): Same.
17070 * ipa-reference.c (ipa_reference_read_optimization_summary): Same.
17071 * ipa-split.c (test_nonssa_use): Same.
17072 (dump_split_point): Same.
17073 (dominated_by_forbidden): Same.
17074 (split_part_set_ssa_name_p): Same.
17075 (find_split_points): Same.
17076 * ira-build.c (finish_loop_tree_nodes): Same.
17077 (low_pressure_loop_node_p): Same.
17078 * ira-color.c (ira_reuse_stack_slot): Same.
17080 * ira.c (setup_reg_equiv): Same.
17081 (print_insn_chain): Same.
17083 * loop-doloop.c (doloop_condition_get): Same.
17085 (record_reg_sets): Same.
17086 (doloop_optimize): Same.
17087 * loop-init.c (loop_optimizer_init): Same.
17088 (fix_loop_structure): Same.
17089 * loop-invariant.c (merge_identical_invariants): Same.
17090 (compute_always_reached): Same.
17091 (find_exits): Same.
17092 (may_assign_reg_p): Same.
17093 (find_invariants_bb): Same.
17094 (find_invariants_body): Same.
17095 (replace_uses): Same.
17096 (can_move_invariant_reg): Same.
17097 (free_inv_motion_data): Same.
17098 (move_single_loop_invariants): Same.
17099 (change_pressure): Same.
17100 (mark_ref_regs): Same.
17101 (calculate_loop_reg_pressure): Same.
17102 * loop-iv.c (biv_entry_hasher::equal): Same.
17103 (iv_extend_to_rtx_code): Same.
17104 (check_iv_ref_table_size): Same.
17105 (clear_iv_info): Same.
17106 (latch_dominating_def): Same.
17107 (iv_get_reaching_def): Same.
17108 (iv_constant): Same.
17114 (get_biv_step): Same.
17116 (analyzed_for_bivness_p): Same.
17117 (record_biv): Same.
17118 (iv_analyze_biv): Same.
17119 (iv_analyze_expr): Same.
17120 (iv_analyze_def): Same.
17121 (iv_analyze_op): Same.
17122 (iv_analyze): Same.
17123 (iv_analyze_result): Same.
17125 (eliminate_implied_conditions): Same.
17126 (simplify_using_initial_values): Same.
17127 (shorten_into_mode): Same.
17128 (canonicalize_iv_subregs): Same.
17129 (determine_max_iter): Same.
17130 (check_simple_exit): Same.
17131 (find_simple_exit): Same.
17132 (get_simple_loop_desc): Same.
17133 * loop-unroll.c (report_unroll): Same.
17134 (decide_unrolling): Same.
17135 (unroll_loops): Same.
17136 (loop_exit_at_end_p): Same.
17137 (decide_unroll_constant_iterations): Same.
17138 (unroll_loop_constant_iterations): Same.
17139 (compare_and_jump_seq): Same.
17140 (unroll_loop_runtime_iterations): Same.
17141 (decide_unroll_stupid): Same.
17142 (unroll_loop_stupid): Same.
17143 (referenced_in_one_insn_in_loop_p): Same.
17144 (reset_debug_uses_in_loop): Same.
17145 (analyze_iv_to_split_insn): Same.
17146 * lra-eliminations.c (lra_debug_elim_table): Same.
17147 (setup_can_eliminate): Same.
17149 (lra_get_elimination_hard_regno): Same.
17150 (lra_eliminate_regs_1): Same.
17151 (eliminate_regs_in_insn): Same.
17152 (update_reg_eliminate): Same.
17153 (init_elimination): Same.
17154 (lra_eliminate): Same.
17156 * lra-lives.c (initiate_live_solver): Same.
17157 * lra-remat.c (create_remat_bb_data): Same.
17158 * lra-spills.c (lra_spill): Same.
17159 * lra.c (lra_set_insn_recog_data): Same.
17160 (lra_set_used_insn_alternative_by_uid): Same.
17161 (init_reg_info): Same.
17162 (expand_reg_info): Same.
17163 * lto-cgraph.c (output_symtab): Same.
17164 (read_identifier): Same.
17165 (get_alias_symbol): Same.
17166 (input_node): Same.
17167 (input_varpool_node): Same.
17169 (input_edge): Same.
17170 (input_cgraph_1): Same.
17171 (input_refs): Same.
17172 (input_symtab): Same.
17173 (input_offload_tables): Same.
17174 (output_cgraph_opt_summary): Same.
17175 (input_edge_opt_summary): Same.
17176 (input_cgraph_opt_section): Same.
17177 * lto-section-in.c (lto_free_raw_section_data): Same.
17178 (lto_create_simple_input_block): Same.
17179 (lto_free_function_in_decl_state_for_node): Same.
17180 * lto-streamer-in.c (lto_tag_check_set): Same.
17181 (lto_location_cache::revert_location_cache): Same.
17182 (lto_location_cache::input_location): Same.
17183 (lto_input_location): Same.
17184 (stream_input_location_now): Same.
17185 (lto_input_tree_ref): Same.
17186 (lto_input_eh_catch_list): Same.
17187 (input_eh_region): Same.
17188 (lto_init_eh): Same.
17189 (make_new_block): Same.
17191 (fixup_call_stmt_edges): Same.
17192 (input_struct_function_base): Same.
17193 (input_function): Same.
17194 (lto_read_body_or_constructor): Same.
17195 (lto_read_tree_1): Same.
17196 (lto_read_tree): Same.
17197 (lto_input_scc): Same.
17198 (lto_input_tree_1): Same.
17199 (lto_input_toplevel_asms): Same.
17200 (lto_input_mode_table): Same.
17201 (lto_reader_init): Same.
17202 (lto_data_in_create): Same.
17203 * lto-streamer-out.c (output_cfg): Same.
17204 * lto-streamer.h: Same.
17205 * modulo-sched.c (duplicate_insns_of_cycles): Same.
17206 (generate_prolog_epilog): Same.
17207 (mark_loop_unsched): Same.
17208 (dump_insn_location): Same.
17209 (loop_canon_p): Same.
17210 (sms_schedule): Same.
17211 * omp-expand.c (expand_omp_for_ordered_loops): Same.
17212 (expand_omp_for_generic): Same.
17213 (expand_omp_for_static_nochunk): Same.
17214 (expand_omp_for_static_chunk): Same.
17215 (expand_omp_simd): Same.
17216 (expand_omp_taskloop_for_inner): Same.
17217 (expand_oacc_for): Same.
17218 (expand_omp_atomic_pipeline): Same.
17219 (mark_loops_in_oacc_kernels_region): Same.
17220 * omp-offload.c (oacc_xform_loop): Same.
17221 * omp-simd-clone.c (simd_clone_adjust): Same.
17222 * optabs-query.c (get_traditional_extraction_insn): Same.
17223 * optabs.c (expand_vector_broadcast): Same.
17224 (expand_binop_directly): Same.
17225 (expand_twoval_unop): Same.
17226 (expand_twoval_binop): Same.
17227 (expand_unop_direct): Same.
17228 (emit_indirect_jump): Same.
17229 (emit_conditional_move): Same.
17230 (emit_conditional_neg_or_complement): Same.
17231 (emit_conditional_add): Same.
17232 (vector_compare_rtx): Same.
17233 (expand_vec_perm_1): Same.
17234 (expand_vec_perm_const): Same.
17235 (expand_vec_cond_expr): Same.
17236 (expand_vec_series_expr): Same.
17237 (maybe_emit_atomic_exchange): Same.
17238 (maybe_emit_sync_lock_test_and_set): Same.
17239 (expand_atomic_compare_and_swap): Same.
17240 (expand_atomic_load): Same.
17241 (expand_atomic_store): Same.
17242 (maybe_emit_op): Same.
17243 (valid_multiword_target_p): Same.
17244 (create_integer_operand): Same.
17245 (maybe_legitimize_operand_same_code): Same.
17246 (maybe_legitimize_operand): Same.
17247 (create_convert_operand_from_type): Same.
17248 (can_reuse_operands_p): Same.
17249 (maybe_legitimize_operands): Same.
17250 (maybe_gen_insn): Same.
17251 (maybe_expand_insn): Same.
17252 (maybe_expand_jump_insn): Same.
17253 (expand_insn): Same.
17254 * optabs.h (create_expand_operand): Same.
17255 (create_fixed_operand): Same.
17256 (create_output_operand): Same.
17257 (create_input_operand): Same.
17258 (create_convert_operand_to): Same.
17259 (create_convert_operand_from): Same.
17261 * poly-int.h: Same.
17262 * predict.c (optimize_insn_for_speed_p): Same.
17263 (optimize_loop_for_size_p): Same.
17264 (optimize_loop_for_speed_p): Same.
17265 (optimize_loop_nest_for_speed_p): Same.
17266 (get_base_value): Same.
17267 (predicted_by_loop_heuristics_p): Same.
17268 (predict_extra_loop_exits): Same.
17269 (predict_loops): Same.
17270 (predict_paths_for_bb): Same.
17271 (predict_paths_leading_to): Same.
17272 (propagate_freq): Same.
17273 (pass_profile::execute): Same.
17275 * profile-count.c (profile_count::differs_from_p): Same.
17276 (profile_probability::differs_lot_from_p): Same.
17277 * profile-count.h: Same.
17278 * profile.c (branch_prob): Same.
17279 * regrename.c (free_chain_data): Same.
17280 (mark_conflict): Same.
17281 (create_new_chain): Same.
17282 (merge_overlapping_regs): Same.
17283 (init_rename_info): Same.
17284 (merge_chains): Same.
17285 (regrename_analyze): Same.
17286 (regrename_do_replace): Same.
17287 (scan_rtx_reg): Same.
17288 (record_out_operands): Same.
17289 (build_def_use): Same.
17290 * regrename.h: Same.
17292 * reload1.c (init_reload): Same.
17293 (maybe_fix_stack_asms): Same.
17294 (copy_reloads): Same.
17295 (count_pseudo): Same.
17296 (count_spilled_pseudo): Same.
17298 (find_reload_regs): Same.
17299 (select_reload_regs): Same.
17300 (spill_hard_reg): Same.
17301 (fixup_eh_region_note): Same.
17302 (set_reload_reg): Same.
17303 (allocate_reload_reg): Same.
17304 (compute_reload_subreg_offset): Same.
17305 (reload_adjust_reg_for_icode): Same.
17306 (emit_input_reload_insns): Same.
17307 (emit_output_reload_insns): Same.
17308 (do_input_reload): Same.
17309 (inherit_piecemeal_p): Same.
17311 * sanopt.c (maybe_get_dominating_check): Same.
17312 (maybe_optimize_ubsan_ptr_ifn): Same.
17313 (can_remove_asan_check): Same.
17314 (maybe_optimize_asan_check_ifn): Same.
17315 (sanopt_optimize_walker): Same.
17316 * sched-deps.c (add_dependence_list): Same.
17317 (chain_to_prev_insn): Same.
17318 (add_insn_mem_dependence): Same.
17319 (create_insn_reg_set): Same.
17320 (maybe_extend_reg_info_p): Same.
17321 (sched_analyze_reg): Same.
17322 (sched_analyze_1): Same.
17323 (get_implicit_reg_pending_clobbers): Same.
17324 (chain_to_prev_insn_p): Same.
17325 (deps_analyze_insn): Same.
17326 (deps_start_bb): Same.
17327 (sched_free_deps): Same.
17329 (init_deps_reg_last): Same.
17331 * sched-ebb.c: Same.
17332 * sched-int.h: Same.
17333 * sched-rgn.c (add_branch_dependences): Same.
17334 (concat_insn_mem_list): Same.
17336 (sched_rgn_compute_dependencies): Same.
17337 * sel-sched-ir.c (reset_target_context): Same.
17338 (copy_deps_context): Same.
17339 (init_id_from_df): Same.
17340 (has_dependence_p): Same.
17341 (change_loops_latches): Same.
17342 (bb_top_order_comparator): Same.
17343 (make_region_from_loop_preheader): Same.
17344 (sel_init_pipelining): Same.
17345 (get_loop_nest_for_rgn): Same.
17346 (make_regions_from_the_rest): Same.
17347 (sel_is_loop_preheader_p): Same.
17348 * sel-sched-ir.h (inner_loop_header_p): Same.
17349 (get_all_loop_exits): Same.
17350 * selftest.h: Same.
17351 * sese.c (sese_build_liveouts): Same.
17352 (sese_insert_phis_for_liveouts): Same.
17353 * sese.h (defined_in_sese_p): Same.
17354 * sreal.c (sreal::stream_out): Same.
17356 * streamer-hooks.h: Same.
17357 * target-globals.c (save_target_globals): Same.
17358 * target-globals.h: Same.
17359 * target.def: Same.
17361 * targhooks.c (default_has_ifunc_p): Same.
17362 (default_empty_mask_is_expensive): Same.
17363 (default_init_cost): Same.
17364 * targhooks.h: Same.
17366 * tree-affine.c (aff_combination_mult): Same.
17367 (aff_combination_expand): Same.
17368 (aff_combination_constant_multiple_p): Same.
17369 * tree-affine.h: Same.
17370 * tree-cfg.c (build_gimple_cfg): Same.
17371 (replace_loop_annotate_in_block): Same.
17372 (replace_uses_by): Same.
17374 (dump_cfg_stats): Same.
17375 (gimple_duplicate_sese_region): Same.
17376 (gimple_duplicate_sese_tail): Same.
17377 (move_block_to_fn): Same.
17378 (replace_block_vars_by_duplicates): Same.
17379 (move_sese_region_to_fn): Same.
17380 (print_loops_bb): Same.
17381 (print_loop): Same.
17382 (print_loops): Same.
17384 (debug_loops): Same.
17385 * tree-cfg.h: Same.
17386 * tree-chrec.c (chrec_fold_plus_poly_poly): Same.
17387 (chrec_fold_multiply_poly_poly): Same.
17388 (chrec_evaluate): Same.
17389 (chrec_component_in_loop_num): Same.
17390 (reset_evolution_in_loop): Same.
17391 (is_multivariate_chrec): Same.
17392 (chrec_contains_symbols): Same.
17393 (nb_vars_in_chrec): Same.
17394 (chrec_convert_1): Same.
17395 (chrec_convert_aggressive): Same.
17396 * tree-chrec.h: Same.
17397 * tree-core.h: Same.
17398 * tree-data-ref.c (dump_data_dependence_relation): Same.
17399 (canonicalize_base_object_address): Same.
17400 (data_ref_compare_tree): Same.
17401 (prune_runtime_alias_test_list): Same.
17402 (get_segment_min_max): Same.
17403 (create_intersect_range_checks): Same.
17404 (conflict_fn_no_dependence): Same.
17405 (object_address_invariant_in_loop_p): Same.
17406 (analyze_ziv_subscript): Same.
17407 (analyze_siv_subscript_cst_affine): Same.
17408 (analyze_miv_subscript): Same.
17409 (analyze_overlapping_iterations): Same.
17410 (build_classic_dist_vector_1): Same.
17411 (add_other_self_distances): Same.
17412 (same_access_functions): Same.
17413 (build_classic_dir_vector): Same.
17414 (subscript_dependence_tester_1): Same.
17415 (subscript_dependence_tester): Same.
17416 (access_functions_are_affine_or_constant_p): Same.
17417 (get_references_in_stmt): Same.
17418 (loop_nest_has_data_refs): Same.
17419 (graphite_find_data_references_in_stmt): Same.
17420 (find_data_references_in_bb): Same.
17421 (get_base_for_alignment): Same.
17422 (find_loop_nest_1): Same.
17423 (find_loop_nest): Same.
17424 * tree-data-ref.h (dr_alignment): Same.
17425 (ddr_dependence_level): Same.
17426 * tree-if-conv.c (fold_build_cond_expr): Same.
17427 (add_to_predicate_list): Same.
17428 (add_to_dst_predicate_list): Same.
17429 (phi_convertible_by_degenerating_args): Same.
17430 (idx_within_array_bound): Same.
17431 (all_preds_critical_p): Same.
17432 (pred_blocks_visited_p): Same.
17433 (predicate_bbs): Same.
17434 (build_region): Same.
17435 (if_convertible_loop_p_1): Same.
17436 (is_cond_scalar_reduction): Same.
17437 (predicate_scalar_phi): Same.
17438 (remove_conditions_and_labels): Same.
17439 (combine_blocks): Same.
17440 (version_loop_for_if_conversion): Same.
17441 (versionable_outer_loop_p): Same.
17442 (ifcvt_local_dce): Same.
17443 (tree_if_conversion): Same.
17444 (pass_if_conversion::gate): Same.
17445 * tree-if-conv.h: Same.
17446 * tree-inline.c (maybe_move_debug_stmts_to_successors): Same.
17447 * tree-loop-distribution.c (bb_top_order_cmp): Same.
17449 (stmt_has_scalar_dependences_outside_loop): Same.
17450 (copy_loop_before): Same.
17451 (create_bb_after_loop): Same.
17452 (const_with_all_bytes_same): Same.
17453 (generate_memset_builtin): Same.
17454 (generate_memcpy_builtin): Same.
17455 (destroy_loop): Same.
17456 (build_rdg_partition_for_vertex): Same.
17457 (compute_access_range): Same.
17458 (data_ref_segment_size): Same.
17459 (latch_dominated_by_data_ref): Same.
17460 (compute_alias_check_pairs): Same.
17461 (fuse_memset_builtins): Same.
17462 (finalize_partitions): Same.
17463 (find_seed_stmts_for_distribution): Same.
17464 (prepare_perfect_loop_nest): Same.
17465 * tree-parloops.c (lambda_transform_legal_p): Same.
17466 (loop_parallel_p): Same.
17467 (reduc_stmt_res): Same.
17468 (add_field_for_name): Same.
17469 (create_call_for_reduction_1): Same.
17470 (replace_uses_in_bb_by): Same.
17471 (transform_to_exit_first_loop_alt): Same.
17472 (try_transform_to_exit_first_loop_alt): Same.
17473 (transform_to_exit_first_loop): Same.
17475 (gen_parallel_loop): Same.
17476 (gather_scalar_reductions): Same.
17477 (get_omp_data_i_param): Same.
17478 (try_create_reduction_list): Same.
17479 (oacc_entry_exit_single_gang): Same.
17480 (parallelize_loops): Same.
17481 * tree-pass.h: Same.
17482 * tree-predcom.c (determine_offset): Same.
17483 (last_always_executed_block): Same.
17484 (split_data_refs_to_components): Same.
17485 (suitable_component_p): Same.
17486 (valid_initializer_p): Same.
17487 (find_looparound_phi): Same.
17488 (insert_looparound_copy): Same.
17489 (add_looparound_copies): Same.
17490 (determine_roots_comp): Same.
17491 (predcom_tmp_var): Same.
17492 (initialize_root_vars): Same.
17493 (initialize_root_vars_store_elim_1): Same.
17494 (initialize_root_vars_store_elim_2): Same.
17495 (finalize_eliminated_stores): Same.
17496 (initialize_root_vars_lm): Same.
17497 (remove_stmt): Same.
17498 (determine_unroll_factor): Same.
17499 (execute_pred_commoning_cbck): Same.
17500 (base_names_in_chain_on): Same.
17501 (combine_chains): Same.
17502 (pcom_stmt_dominates_stmt_p): Same.
17503 (try_combine_chains): Same.
17504 (prepare_initializers_chain_store_elim): Same.
17505 (prepare_initializers_chain): Same.
17506 (prepare_initializers): Same.
17507 (prepare_finalizers_chain): Same.
17508 (prepare_finalizers): Same.
17509 (insert_init_seqs): Same.
17510 * tree-scalar-evolution.c (loop_phi_node_p): Same.
17511 (compute_overall_effect_of_inner_loop): Same.
17512 (add_to_evolution_1): Same.
17513 (add_to_evolution): Same.
17514 (follow_ssa_edge_binary): Same.
17515 (follow_ssa_edge_expr): Same.
17516 (backedge_phi_arg_p): Same.
17517 (follow_ssa_edge_in_condition_phi_branch): Same.
17518 (follow_ssa_edge_in_condition_phi): Same.
17519 (follow_ssa_edge_inner_loop_phi): Same.
17520 (follow_ssa_edge): Same.
17521 (analyze_evolution_in_loop): Same.
17522 (analyze_initial_condition): Same.
17523 (interpret_loop_phi): Same.
17524 (interpret_condition_phi): Same.
17525 (interpret_rhs_expr): Same.
17526 (interpret_expr): Same.
17527 (interpret_gimple_assign): Same.
17528 (analyze_scalar_evolution_1): Same.
17529 (analyze_scalar_evolution): Same.
17530 (analyze_scalar_evolution_for_address_of): Same.
17531 (get_instantiated_value_entry): Same.
17532 (loop_closed_phi_def): Same.
17533 (instantiate_scev_name): Same.
17534 (instantiate_scev_poly): Same.
17535 (instantiate_scev_binary): Same.
17536 (instantiate_scev_convert): Same.
17537 (instantiate_scev_not): Same.
17538 (instantiate_scev_r): Same.
17539 (instantiate_scev): Same.
17540 (resolve_mixers): Same.
17541 (initialize_scalar_evolutions_analyzer): Same.
17542 (scev_reset_htab): Same.
17543 (scev_reset): Same.
17544 (derive_simple_iv_with_niters): Same.
17545 (simple_iv_with_niters): Same.
17546 (expression_expensive_p): Same.
17547 (final_value_replacement_loop): Same.
17548 * tree-scalar-evolution.h (block_before_loop): Same.
17549 * tree-ssa-address.h: Same.
17550 * tree-ssa-dce.c (find_obviously_necessary_stmts): Same.
17551 * tree-ssa-dom.c (edge_info::record_simple_equiv): Same.
17552 (record_edge_info): Same.
17553 * tree-ssa-live.c (var_map_base_fini): Same.
17554 (remove_unused_locals): Same.
17555 * tree-ssa-live.h: Same.
17556 * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Same.
17557 (pass_ch_vect::execute): Same.
17558 (pass_ch::process_loop_p): Same.
17559 * tree-ssa-loop-im.c (mem_ref_hasher::hash): Same.
17560 (movement_possibility): Same.
17561 (outermost_invariant_loop): Same.
17563 (determine_max_movement): Same.
17564 (invariantness_dom_walker::before_dom_children): Same.
17565 (move_computations): Same.
17566 (may_move_till): Same.
17567 (force_move_till_op): Same.
17568 (force_move_till): Same.
17569 (memref_free): Same.
17570 (record_mem_ref_loc): Same.
17571 (set_ref_stored_in_loop): Same.
17572 (mark_ref_stored): Same.
17573 (sort_bbs_in_loop_postorder_cmp): Same.
17574 (sort_locs_in_loop_postorder_cmp): Same.
17575 (analyze_memory_references): Same.
17576 (mem_refs_may_alias_p): Same.
17577 (find_ref_loc_in_loop_cmp): Same.
17578 (rewrite_mem_ref_loc::operator): Same.
17579 (first_mem_ref_loc_1::operator): Same.
17580 (sm_set_flag_if_changed::operator): Same.
17581 (execute_sm_if_changed_flag_set): Same.
17582 (execute_sm): Same.
17583 (hoist_memory_references): Same.
17584 (ref_always_accessed::operator): Same.
17585 (refs_independent_p): Same.
17586 (record_dep_loop): Same.
17587 (ref_indep_loop_p_1): Same.
17588 (ref_indep_loop_p): Same.
17589 (can_sm_ref_p): Same.
17590 (find_refs_for_sm): Same.
17591 (loop_suitable_for_sm): Same.
17592 (store_motion_loop): Same.
17593 (store_motion): Same.
17594 (fill_always_executed_in): Same.
17595 * tree-ssa-loop-ivcanon.c (constant_after_peeling): Same.
17596 (estimated_unrolled_size): Same.
17597 (loop_edge_to_cancel): Same.
17598 (remove_exits_and_undefined_stmts): Same.
17599 (remove_redundant_iv_tests): Same.
17600 (unloop_loops): Same.
17601 (estimated_peeled_sequence_size): Same.
17602 (try_peel_loop): Same.
17603 (canonicalize_loop_induction_variables): Same.
17604 (canonicalize_induction_variables): Same.
17605 * tree-ssa-loop-ivopts.c (iv_inv_expr_hasher::equal): Same.
17607 (stmt_after_inc_pos): Same.
17608 (contains_abnormal_ssa_name_p): Same.
17609 (niter_for_exit): Same.
17612 (find_givs_in_bb): Same.
17613 (find_induction_variables): Same.
17614 (find_interesting_uses_cond): Same.
17615 (outermost_invariant_loop_for_expr): Same.
17616 (idx_find_step): Same.
17617 (add_candidate_1): Same.
17618 (add_iv_candidate_derived_from_uses): Same.
17619 (alloc_use_cost_map): Same.
17620 (prepare_decl_rtl): Same.
17621 (generic_predict_doloop_p): Same.
17622 (computation_cost): Same.
17623 (determine_common_wider_type): Same.
17624 (get_computation_aff_1): Same.
17625 (get_use_type): Same.
17626 (determine_group_iv_cost_address): Same.
17628 (difference_cannot_overflow_p): Same.
17629 (may_eliminate_iv): Same.
17630 (determine_set_costs): Same.
17631 (cheaper_cost_pair): Same.
17632 (compare_cost_pair): Same.
17633 (iv_ca_cand_for_group): Same.
17634 (iv_ca_recount_cost): Same.
17635 (iv_ca_set_remove_invs): Same.
17636 (iv_ca_set_no_cp): Same.
17637 (iv_ca_set_add_invs): Same.
17638 (iv_ca_set_cp): Same.
17639 (iv_ca_add_group): Same.
17640 (iv_ca_cost): Same.
17641 (iv_ca_compare_deps): Same.
17642 (iv_ca_delta_reverse): Same.
17643 (iv_ca_delta_commit): Same.
17644 (iv_ca_cand_used_p): Same.
17645 (iv_ca_delta_free): Same.
17647 (iv_ca_free): Same.
17648 (iv_ca_dump): Same.
17649 (iv_ca_extend): Same.
17650 (iv_ca_narrow): Same.
17651 (iv_ca_prune): Same.
17652 (cheaper_cost_with_cand): Same.
17653 (iv_ca_replace): Same.
17654 (try_add_cand_for): Same.
17655 (get_initial_solution): Same.
17656 (try_improve_iv_set): Same.
17657 (find_optimal_iv_set_1): Same.
17658 (create_new_iv): Same.
17659 (rewrite_use_compare): Same.
17660 (remove_unused_ivs): Same.
17661 (determine_scaling_factor): Same.
17662 * tree-ssa-loop-ivopts.h: Same.
17663 * tree-ssa-loop-manip.c (create_iv): Same.
17664 (compute_live_loop_exits): Same.
17665 (add_exit_phi): Same.
17666 (add_exit_phis): Same.
17667 (find_uses_to_rename_use): Same.
17668 (find_uses_to_rename_def): Same.
17669 (find_uses_to_rename_in_loop): Same.
17670 (rewrite_into_loop_closed_ssa): Same.
17671 (check_loop_closed_ssa_bb): Same.
17672 (split_loop_exit_edge): Same.
17673 (ip_end_pos): Same.
17674 (ip_normal_pos): Same.
17675 (copy_phi_node_args): Same.
17676 (gimple_duplicate_loop_to_header_edge): Same.
17677 (can_unroll_loop_p): Same.
17678 (determine_exit_conditions): Same.
17679 (scale_dominated_blocks_in_loop): Same.
17680 (niter_for_unrolled_loop): Same.
17681 (tree_transform_and_unroll_loop): Same.
17682 (rewrite_all_phi_nodes_with_iv): Same.
17683 * tree-ssa-loop-manip.h: Same.
17684 * tree-ssa-loop-niter.c (number_of_iterations_ne_max): Same.
17685 (number_of_iterations_ne): Same.
17686 (assert_no_overflow_lt): Same.
17687 (assert_loop_rolls_lt): Same.
17688 (number_of_iterations_lt): Same.
17689 (adjust_cond_for_loop_until_wrap): Same.
17690 (tree_simplify_using_condition): Same.
17691 (simplify_using_initial_conditions): Same.
17692 (simplify_using_outer_evolutions): Same.
17693 (loop_only_exit_p): Same.
17694 (ssa_defined_by_minus_one_stmt_p): Same.
17695 (number_of_iterations_popcount): Same.
17696 (number_of_iterations_exit): Same.
17697 (find_loop_niter): Same.
17698 (finite_loop_p): Same.
17699 (chain_of_csts_start): Same.
17700 (get_val_for): Same.
17701 (loop_niter_by_eval): Same.
17702 (derive_constant_upper_bound_ops): Same.
17703 (do_warn_aggressive_loop_optimizations): Same.
17704 (record_estimate): Same.
17705 (get_cst_init_from_scev): Same.
17706 (record_nonwrapping_iv): Same.
17707 (idx_infer_loop_bounds): Same.
17708 (infer_loop_bounds_from_ref): Same.
17709 (infer_loop_bounds_from_array): Same.
17710 (infer_loop_bounds_from_pointer_arith): Same.
17711 (infer_loop_bounds_from_signedness): Same.
17712 (bound_index): Same.
17713 (discover_iteration_bound_by_body_walk): Same.
17714 (maybe_lower_iteration_bound): Same.
17715 (estimate_numbers_of_iterations): Same.
17716 (estimated_loop_iterations): Same.
17717 (estimated_loop_iterations_int): Same.
17718 (max_loop_iterations): Same.
17719 (max_loop_iterations_int): Same.
17720 (likely_max_loop_iterations): Same.
17721 (likely_max_loop_iterations_int): Same.
17722 (estimated_stmt_executions_int): Same.
17723 (max_stmt_executions): Same.
17724 (likely_max_stmt_executions): Same.
17725 (estimated_stmt_executions): Same.
17726 (stmt_dominates_stmt_p): Same.
17727 (nowrap_type_p): Same.
17728 (loop_exits_before_overflow): Same.
17729 (scev_var_range_cant_overflow): Same.
17730 (scev_probably_wraps_p): Same.
17731 (free_numbers_of_iterations_estimates): Same.
17732 * tree-ssa-loop-niter.h: Same.
17733 * tree-ssa-loop-prefetch.c (release_mem_refs): Same.
17734 (idx_analyze_ref): Same.
17735 (analyze_ref): Same.
17736 (gather_memory_references_ref): Same.
17737 (mark_nontemporal_store): Same.
17738 (emit_mfence_after_loop): Same.
17739 (may_use_storent_in_loop_p): Same.
17740 (mark_nontemporal_stores): Same.
17741 (should_unroll_loop_p): Same.
17742 (volume_of_dist_vector): Same.
17743 (add_subscript_strides): Same.
17744 (self_reuse_distance): Same.
17745 (insn_to_prefetch_ratio_too_small_p): Same.
17746 * tree-ssa-loop-split.c (split_at_bb_p): Same.
17747 (patch_loop_exit): Same.
17748 (find_or_create_guard_phi): Same.
17749 (easy_exit_values): Same.
17750 (connect_loop_phis): Same.
17751 (connect_loops): Same.
17752 (compute_new_first_bound): Same.
17753 (split_loop): Same.
17754 (tree_ssa_split_loops): Same.
17755 * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Same.
17756 (is_maybe_undefined): Same.
17757 (tree_may_unswitch_on): Same.
17758 (simplify_using_entry_checks): Same.
17759 (tree_unswitch_single_loop): Same.
17760 (tree_unswitch_loop): Same.
17761 (tree_unswitch_outer_loop): Same.
17762 (empty_bb_without_guard_p): Same.
17763 (used_outside_loop_p): Same.
17764 (get_vop_from_header): Same.
17765 (hoist_guard): Same.
17766 * tree-ssa-loop.c (gate_oacc_kernels): Same.
17767 (get_lsm_tmp_name): Same.
17768 * tree-ssa-loop.h: Same.
17769 * tree-ssa-reassoc.c (add_repeat_to_ops_vec): Same.
17770 (build_and_add_sum): Same.
17771 (no_side_effect_bb): Same.
17773 (linearize_expr): Same.
17774 (should_break_up_subtract): Same.
17775 (linearize_expr_tree): Same.
17776 * tree-ssa-scopedtables.c: Same.
17777 * tree-ssa-scopedtables.h: Same.
17778 * tree-ssa-structalias.c (condense_visit): Same.
17779 (label_visit): Same.
17780 (dump_pred_graph): Same.
17781 (perform_var_substitution): Same.
17782 (move_complex_constraints): Same.
17783 (remove_preds_and_fake_succs): Same.
17784 * tree-ssa-threadupdate.c (dbds_continue_enumeration_p): Same.
17785 (determine_bb_domination_status): Same.
17786 (duplicate_thread_path): Same.
17787 (thread_through_all_blocks): Same.
17788 * tree-ssa-threadupdate.h: Same.
17789 * tree-streamer-in.c (streamer_read_string_cst): Same.
17790 (input_identifier): Same.
17791 (unpack_ts_type_common_value_fields): Same.
17792 (unpack_ts_block_value_fields): Same.
17793 (unpack_ts_translation_unit_decl_value_fields): Same.
17794 (unpack_ts_omp_clause_value_fields): Same.
17795 (streamer_read_tree_bitfields): Same.
17796 (streamer_alloc_tree): Same.
17797 (lto_input_ts_common_tree_pointers): Same.
17798 (lto_input_ts_vector_tree_pointers): Same.
17799 (lto_input_ts_poly_tree_pointers): Same.
17800 (lto_input_ts_complex_tree_pointers): Same.
17801 (lto_input_ts_decl_minimal_tree_pointers): Same.
17802 (lto_input_ts_decl_common_tree_pointers): Same.
17803 (lto_input_ts_decl_non_common_tree_pointers): Same.
17804 (lto_input_ts_decl_with_vis_tree_pointers): Same.
17805 (lto_input_ts_field_decl_tree_pointers): Same.
17806 (lto_input_ts_function_decl_tree_pointers): Same.
17807 (lto_input_ts_type_common_tree_pointers): Same.
17808 (lto_input_ts_type_non_common_tree_pointers): Same.
17809 (lto_input_ts_list_tree_pointers): Same.
17810 (lto_input_ts_vec_tree_pointers): Same.
17811 (lto_input_ts_exp_tree_pointers): Same.
17812 (lto_input_ts_block_tree_pointers): Same.
17813 (lto_input_ts_binfo_tree_pointers): Same.
17814 (lto_input_ts_constructor_tree_pointers): Same.
17815 (lto_input_ts_omp_clause_tree_pointers): Same.
17816 (streamer_read_tree_body): Same.
17817 * tree-streamer.h: Same.
17818 * tree-switch-conversion.c (bit_test_cluster::is_beneficial): Same.
17819 * tree-vect-data-refs.c (vect_get_smallest_scalar_type): Same.
17820 (vect_analyze_possibly_independent_ddr): Same.
17821 (vect_analyze_data_ref_dependence): Same.
17822 (vect_compute_data_ref_alignment): Same.
17823 (vect_enhance_data_refs_alignment): Same.
17824 (vect_analyze_data_ref_access): Same.
17825 (vect_check_gather_scatter): Same.
17826 (vect_find_stmt_data_reference): Same.
17827 (vect_create_addr_base_for_vector_ref): Same.
17828 (vect_setup_realignment): Same.
17829 (vect_supportable_dr_alignment): Same.
17830 * tree-vect-loop-manip.c (rename_variables_in_bb): Same.
17831 (adjust_phi_and_debug_stmts): Same.
17832 (vect_set_loop_mask): Same.
17833 (add_preheader_seq): Same.
17834 (vect_maybe_permute_loop_masks): Same.
17835 (vect_set_loop_masks_directly): Same.
17836 (vect_set_loop_condition_masked): Same.
17837 (vect_set_loop_condition_unmasked): Same.
17838 (slpeel_duplicate_current_defs_from_edges): Same.
17839 (slpeel_add_loop_guard): Same.
17840 (slpeel_can_duplicate_loop_p): Same.
17841 (create_lcssa_for_virtual_phi): Same.
17843 (vect_update_ivs_after_vectorizer): Same.
17844 (vect_gen_vector_loop_niters_mult_vf): Same.
17845 (slpeel_update_phi_nodes_for_loops): Same.
17846 (slpeel_update_phi_nodes_for_guard1): Same.
17847 (find_guard_arg): Same.
17848 (slpeel_update_phi_nodes_for_guard2): Same.
17849 (slpeel_update_phi_nodes_for_lcssa): Same.
17850 (vect_do_peeling): Same.
17851 (vect_create_cond_for_alias_checks): Same.
17852 (vect_loop_versioning): Same.
17853 * tree-vect-loop.c (vect_determine_vf_for_stmt): Same.
17854 (vect_inner_phi_in_double_reduction_p): Same.
17855 (vect_analyze_scalar_cycles_1): Same.
17856 (vect_fixup_scalar_cycles_with_patterns): Same.
17857 (vect_get_loop_niters): Same.
17858 (bb_in_loop_p): Same.
17859 (vect_get_max_nscalars_per_iter): Same.
17860 (vect_verify_full_masking): Same.
17861 (vect_compute_single_scalar_iteration_cost): Same.
17862 (vect_analyze_loop_form_1): Same.
17863 (vect_analyze_loop_form): Same.
17864 (vect_active_double_reduction_p): Same.
17865 (vect_analyze_loop_operations): Same.
17866 (neutral_op_for_slp_reduction): Same.
17867 (vect_is_simple_reduction): Same.
17868 (vect_model_reduction_cost): Same.
17869 (get_initial_def_for_reduction): Same.
17870 (get_initial_defs_for_reduction): Same.
17871 (vect_create_epilog_for_reduction): Same.
17872 (vectorize_fold_left_reduction): Same.
17873 (vectorizable_reduction): Same.
17874 (vectorizable_induction): Same.
17875 (vectorizable_live_operation): Same.
17876 (loop_niters_no_overflow): Same.
17877 (vect_get_loop_mask): Same.
17878 (vect_transform_loop_stmt): Same.
17879 (vect_transform_loop): Same.
17880 * tree-vect-patterns.c (vect_reassociating_reduction_p): Same.
17881 (vect_determine_precisions): Same.
17882 (vect_pattern_recog_1): Same.
17883 * tree-vect-slp.c (vect_analyze_slp_instance): Same.
17884 * tree-vect-stmts.c (stmt_vectype): Same.
17885 (process_use): Same.
17886 (vect_init_vector_1): Same.
17887 (vect_truncate_gather_scatter_offset): Same.
17888 (get_group_load_store_type): Same.
17889 (vect_build_gather_load_calls): Same.
17890 (vect_get_strided_load_store_ops): Same.
17891 (vectorizable_simd_clone_call): Same.
17892 (vectorizable_store): Same.
17893 (permute_vec_elements): Same.
17894 (vectorizable_load): Same.
17895 (vect_transform_stmt): Same.
17896 (supportable_widening_operation): Same.
17897 * tree-vectorizer.c (vec_info::replace_stmt): Same.
17898 (vec_info::free_stmt_vec_info): Same.
17899 (vect_free_loop_info_assumptions): Same.
17900 (vect_loop_vectorized_call): Same.
17901 (set_uid_loop_bbs): Same.
17902 (vectorize_loops): Same.
17903 * tree-vectorizer.h (STMT_VINFO_BB_VINFO): Same.
17904 * tree.c (add_tree_to_fld_list): Same.
17905 (fld_type_variant_equal_p): Same.
17906 (fld_decl_context): Same.
17907 (fld_incomplete_type_of): Same.
17908 (free_lang_data_in_binfo): Same.
17909 (need_assembler_name_p): Same.
17910 (find_decls_types_r): Same.
17911 (get_eh_types_for_runtime): Same.
17912 (find_decls_types_in_eh_region): Same.
17913 (find_decls_types_in_node): Same.
17914 (assign_assembler_name_if_needed): Same.
17915 * value-prof.c (stream_out_histogram_value): Same.
17916 * value-prof.h: Same.
17917 * var-tracking.c (use_narrower_mode): Same.
17918 (prepare_call_arguments): Same.
17919 (vt_expand_loc_callback): Same.
17920 (resolve_expansions_pending_recursion): Same.
17921 (vt_expand_loc): Same.
17922 * varasm.c (const_hash_1): Same.
17923 (compare_constant): Same.
17924 (tree_output_constant_def): Same.
17925 (simplify_subtraction): Same.
17926 (get_pool_constant): Same.
17927 (output_constant_pool_2): Same.
17928 (output_constant_pool_1): Same.
17929 (mark_constants_in_pattern): Same.
17930 (mark_constant_pool): Same.
17931 (get_section_anchor): Same.
17932 * vr-values.c (compare_range_with_value): Same.
17933 (vr_values::extract_range_from_phi_node): Same.
17934 * vr-values.h: Same.
17935 * web.c (unionfind_union): Same.
17936 * wide-int.h: Same.
17938 2019-07-09 Martin Sebor <msebor@redhat.com>
17941 * align.h: Change class-key from class to struct and vice versa
17942 to match convention and avoid -Wclass-is-pod and -Wstruct-no-pod.
17943 * alloc-pool.h: Same.
17944 * asan.c (shadow_mem_size): Same.
17945 * auto-profile.c: Same.
17946 * basic-block.h: Same.
17948 * cfgexpand.c (set_rtl): Same.
17949 (expand_one_stack_var_at): Same.
17950 * cfghooks.h: Same.
17953 * config/i386/i386.h: Same.
17954 * df-problems.c (df_print_bb_index): Same.
17956 * df.h (df_single_use): Same.
17957 * diagnostic-show-locus.c (layout::print_annotation_line): Same.
17958 (layout::annotation_line_showed_range_p): Same.
17959 (get_printed_columns): Same.
17960 (correction::ensure_terminated): Same.
17961 (line_corrections::~line_corrections): Same.
17964 * dump-context.h: Same.
17965 * dumpfile.h: Same.
17966 * dwarf2out.c: Same.
17967 * edit-context.c: Same.
17968 * fibonacci_heap.c (test_union_of_equal_heaps): Same.
17970 * function.c (assign_stack_local): Same.
17971 * function.h: Same.
17973 * gcov.c (block_info::block_info): Same.
17974 * genattrtab.c: Same.
17975 * genextract.c: Same.
17976 * genmatch.c (comparison_code_p): Same.
17977 (id_base::id_base): Same.
17978 (decision_tree::print): Same.
17979 * genoutput.c: Same.
17980 * genpreds.c (write_one_predicate_function): Same.
17981 * genrecog.c (validate_pattern): Same.
17982 (find_operand_positions): Same.
17983 (optimize_subroutine_group): Same.
17984 (merge_pattern_transition::merge_pattern_transition): Same.
17985 (merge_pattern_info::merge_pattern_info): Same.
17986 (merge_state_result::merge_state_result): Same.
17987 (merge_into_state): Same.
17988 * gensupport.c: Same.
17989 * gensupport.h: Same.
17990 * ggc-common.c (init_ggc_heuristics): Same.
17991 * ggc-tests.c (test_union): Same.
17992 * gimple-loop-interchange.cc (dump_induction): Same.
17993 * gimple-loop-versioning.cc: Same.
17994 * gimple-match.h (gimple_match_cond::any_else): Same.
17995 * gimple-ssa-backprop.c: Same.
17996 * gimple-ssa-sprintf.c: Same.
17997 * gimple-ssa-store-merging.c (store_operand_info::store_operand_info):
17999 (store_immediate_info::store_immediate_info): Same.
18000 (merged_store_group::apply_stores): Same.
18001 (get_location_for_stmts): Same.
18002 * gimple-ssa-strength-reduction.c: Same.
18003 * gimple-ssa-warn-alloca.c: Same.
18004 * gimple-ssa-warn-restrict.c (pass_wrestrict::execute): Same.
18005 * godump.c (go_type_decl): Same.
18006 * hash-map-tests.c (test_map_of_strings_to_int): Same.
18007 * hash-map.h: Same.
18008 * hash-set-tests.c (test_set_of_strings): Same.
18009 * hsa-brig.c: Same.
18010 * hsa-common.h: Same.
18011 * hsa-gen.c (transformable_switch_to_sbr_p): Same.
18012 * input.c (assert_loceq): Same.
18015 * ipa-devirt.c (possible_polymorphic_call_targets_1): Same.
18016 * ipa-fnsummary.h: Same.
18017 * ipa-inline.h: Same.
18018 * ipa-prop.h: Same.
18019 * ipa-split.c (visit_bb): Same.
18020 * ira-int.h (minmax_set_iter_next): Same.
18021 * loop-invariant.c: Same.
18023 * lra-eliminations.c: Same.
18025 * lra-lives.c (mark_regno_dead): Same.
18026 * lra-remat.c: Same.
18027 * lra-spills.c: Same.
18028 * lto-streamer.h: Same.
18029 * mem-stats.h: Same.
18030 * omp-grid.c (omp_grid_lastprivate_predicate): Same.
18031 * omp-low.c (omp_clause_aligned_alignment): Same.
18032 * optabs-query.h (get_vcond_eq_icode): Same.
18034 * opts.c (wrap_help): Same.
18035 * poly-int.h: Same.
18036 * predict.c (predict_paths_leading_to_edge): Same.
18037 * pretty-print.h: Same.
18038 * profile-count.h: Same.
18040 * read-rtl-function.c: Same.
18043 * regrename.c: Same.
18044 * regrename.h: Same.
18046 * rtl-iter.h: Same.
18047 * rtl.h (costs_add_n_insns): Same.
18049 * sched-int.h: Same.
18050 * sel-sched-ir.h: Same.
18051 * selftest.h: Same.
18052 * sese.h (vec_find): Same.
18054 * target-globals.h: Same.
18055 * tree-affine.c (aff_combination_find_elt): Same.
18056 * tree-affine.h: Same.
18057 * tree-data-ref.h: Same.
18058 * tree-outof-ssa.c (ssa_is_replaceable_p): Same.
18059 * tree-predcom.c: Same.
18060 * tree-scalar-evolution.c (find_var_scev_info): Same.
18061 * tree-ssa-alias.h: Same.
18062 * tree-ssa-ccp.c: Same.
18063 * tree-ssa-coalesce.c (ssa_conflicts_dump): Same.
18064 * tree-ssa-loop-im.c (for_all_locs_in_loop): Same.
18065 (rewrite_mem_refs): Same.
18066 (execute_sm_if_changed): Same.
18067 (hoist_memory_references): Same.
18068 * tree-ssa-loop-ivopts.c (operator<=): Same.
18069 * tree-ssa-loop.h: Same.
18070 * tree-ssa-pre.c (get_or_alloc_expr_for_name): Same.
18071 * tree-ssa-structalias.c: Same.
18072 * tree-switch-conversion.h (cluster::cluster): Same.
18073 (simple_cluster::simple_cluster): Same.
18074 * tree-vect-patterns.c (type_conversion_p): Same.
18075 * tree-vectorizer.c (dump_stmt_cost): Same.
18076 * tree-vectorizer.h (loop_vec_info_for_loop): Same.
18077 * tree.c (protected_set_expr_location): Same.
18078 * tree.h (desired_pro_or_demotion_p): Same.
18079 (fndecl_built_in_p): Same.
18080 * unique-ptr-tests.cc: Same.
18081 * var-tracking.c (delete_variable_part): Same.
18082 * varasm.c (assemble_real): Same.
18083 (tree_output_constant_def): Same.
18085 * wide-int-bitmask.h: Same.
18086 * wide-int.h (decompose): Same.
18088 2019-07-09 Richard Biener <rguenther@suse.de>
18090 PR tree-optimization/91114
18091 * tree-vect-data-refs.c (vect_analyze_data_refs): Failure to
18092 find a vector type isn't fatal.
18094 2019-07-09 Sylvia Taylor <sylvia.taylor@arm.com>
18096 * config/aarch64/aarch64-simd.md
18097 (aarch64_crypto_aes<aes_op>v16qi): Redefine pattern with xor.
18098 (aarch64_crypto_aes<aesmc_op>v16qi): Remove attribute enabled.
18099 (*aarch64_crypto_aes<aes_op>v16qi_xor_combine): Remove both.
18100 (*aarch64_crypto_aese_fused,
18101 *aarch64_crypto_aesd_fused): Update to new definition.
18102 * config/aarch64/aarch64.c
18103 (aarch_macro_fusion_pair_p): Remove aese/aesmc fusion check.
18105 2019-07-09 Richard Biener <rguenther@suse.de>
18107 * gimple-match.h (gimple_match_op::resimplify): New.
18108 (gimple_resimplify1, gimple_resimplify2, gimple_resimplify3,
18109 gimple_resimplify4, gimple_resimplify5): Remove.
18110 * gimple-match-head.c (gimple_resimplify1, gimple_resimplify2,
18111 gimple_resimplify3, gimple_resimplify4, gimple_resimplify5):
18113 (gimple_match_op::resimplify): New.
18114 * tree-ssa-sccvn.c (vn_nary_build_or_lookup_1): Valueize
18115 according to availability. Use gimple_match_op::resimplify.
18117 2019-07-09 Eric Botcazou <ebotcazou@adacore.com>
18119 * ira-emit.c (emit_moves): Skip DEBUG_INSNs when setting the location.
18121 2019-07-09 Sylvia Taylor <sylvia.taylor@arm.com>
18123 * config/arm/crypto.md:
18124 (crypto_<crypto_pattern>): Redefine aese/aesd pattern with xor.
18125 (crypto_<crypto_pattern>): Remove attribute enabled for aesmc.
18126 (crypto_<crypto_pattern>): Split CRYPTO_BINARY into 2 patterns.
18127 (*aarch32_crypto_aese_fused, *aarch32_crypto_aesd_fused): New.
18129 (aarch_macro_fusion_pair_p): Remove aes/aesmc fusion check.
18130 * config/arm/aarch-common-protos.h
18131 (aarch_crypto_can_dual_issue): Remove.
18132 * config/arm/aarch-common.c
18133 (aarch_crypto_can_dual_issue): Likewise.
18134 * config/arm/exynos-m1.md: Remove aese/aesmc fusion.
18135 * config/arm/cortex-a53.md: Likewise.
18136 * config/arm/cortex-a57.md: Likewise.
18137 * config/arm/iterators.md:
18138 (CRYPTO_BINARY): Redefine.
18139 (CRYPTO_UNARY): Removed.
18140 (CRYPTO_AES, CRYPTO_AESMC): New.
18142 2019-07-09 Richard Biener <rguenther@suse.de>
18144 * tree-ssa-sccvn.c (struct vn_walk_cb_data): Add orig_ref member.
18145 (vn_reference_lookup_3): If the main ref has no access path recorded
18146 but orig_ref has use it to do access-path based disambiguation.
18147 (vn_reference_lookup_pieces): Adjust.
18148 (vn_reference_lookup): Pass down original ref if we valueized.
18150 2019-07-09 Martin Liska <mliska@suse.cz>
18152 * doc/extend.texi: Document influence on loop
18155 2019-07-09 Martin Liska <mliska@suse.cz>
18157 * lto-compress.c (lto_normalized_zstd_level): Do not use
18158 ZSTD_CLEVEL_DEFAULT as it is not default in old releases
18159 of libzstd. One can use 0 as a default compression level.
18161 2019-07-09 Martin Liska <mliska@suse.cz>
18163 * doc/invoke.texi: Add link from -fprofile-dir option.
18164 Use better wording for 'gcno filename'.
18166 2019-07-08 Martin Sebor <msebor@redhat.com>
18168 PR middle-end/71924
18169 PR middle-end/90549
18170 * gimple-ssa-isolate-paths.c (isolate_path): Add attribute. Update
18172 (args_loc_t): New type.
18173 (args_loc_t, locmap_t): same.
18174 (diag_returned_locals): New function.
18175 (is_addr_local): Same.
18176 (handle_return_addr_local_phi_arg, warn_return_addr_local): Same.
18177 (find_implicit_erroneous_behavior): Call warn_return_addr_local_phi_arg.
18178 (find_explicit_erroneous_behavior): Call warn_return_addr_local.
18180 2019-07-08 Jakub Jelinek <jakub@redhat.com>
18182 * tree-vect-stmts.c (scan_operand_equal_p): Look through MEM_REF
18183 with SSA_NAME address of POINTER_PLUS_EXPR. Handle MULT_EXPR
18184 and casts in offset when different, both through gimple stmts
18185 and through trees. Rewritten using loops to minimize code duplication
18188 2019-07-08 Eric Botcazou <ebotcazou@adacore.com>
18190 * emit-rtl.c (set_insn_locations): New function moved from...
18191 * function.c (set_insn_locations): ...here.
18192 * ira-emit.c (emit_moves): Propagate location of the first instruction
18193 to the inserted move instructions.
18194 * reg-stack.c (compensate_edge): Set the location if the sequence is
18195 inserted on the edge.
18196 * rtl.h (set_insn_locations): Declare.
18198 2019-07-08 Segher Boessenkool <segher@kernel.crashing.org>
18200 * config/rs6000/rs6000.c (rs6000_machine_from_flags): Ignore
18201 OPTION_MASK_PPC_GFXOPT and OPTION_MASK_PPC_GPOPT for selecting the
18204 2019-07-08 Segher Boessenkool <segher@kernel.crashing.org>
18206 PR rtl-optimization/88233
18207 * common.opt (fsplit-wide-types-early): New option.
18208 * common/config/rs6000/rs6000-common.c
18209 (rs6000_option_optimization_table): Add OPT_fsplit_wide_types_early for
18211 * doc/invoke.texi (Optimization Options): Add -fsplit-wide-types-early.
18212 * lower-subreg.c (pass_lower_subreg2::gate): Add test for
18213 flag_split_wide_types_early.
18214 (pass_data_lower_subreg3): New.
18215 (pass_lower_subreg3): New.
18216 (make_pass_lower_subreg3): New.
18217 * passes.def (pass_lower_subreg2): Move after the loop passes.
18218 (pass_lower_subreg3): New, inserted where pass_lower_subreg2 was.
18219 * tree-pass.h (make_pass_lower_subreg2): Move up, to its new place in
18220 the pass pipeline; its previous place is taken by ...
18221 (make_pass_lower_subreg3): ... this.
18223 2019-07-08 Robin Dapp <rdapp@linux.ibm.com>
18225 * config/s390/s390.c (s390_shift_truncation_mask): Define.
18226 (TARGET_SHIFT_TRUNCATION_MASK): Define.
18228 2019-07-08 Robin Dapp <rdapp@linux.ibm.com>
18230 * config/s390/constraints.md: Add new jsc constraint.
18231 * config/s390/predicates.md: New predicates.
18232 * config/s390/s390-protos.h (s390_valid_shift_count): New function.
18233 * config/s390/s390.c (s390_valid_shift_count): New function.
18234 (print_shift_count_operand): Use s390_valid_shift_count.
18235 (print_operand): Likewise.
18236 * config/s390/s390.md: Use new predicate.
18237 * config/s390/subst.md: Remove addr_style_op and masked_op substs.
18238 * config/s390/vector.md: Use new predicate.
18240 2019-07-08 Andrew Waterman <andrew@sifive.com>
18241 Jim Wilson <jimw@sifive.com>
18243 * config/riscv/riscv.md (lshrsi3_zero_extend_3+1): Use operands[1]
18244 bitsize instead of BITS_PER_WORD.
18246 2019-07-08 Martin Liska <mliska@suse.cz>
18248 * collect2.c (defined): Revert to before r254460.
18249 (scan_prog_file): Revert to before r254460.
18251 2019-07-08 Richard Biener <rguenther@suse.de>
18253 PR tree-optimization/83518
18254 * tree-ssa-sccvn.c: Include splay-tree.h.
18255 (struct pd_range, struct pd_data): New.
18256 (struct vn_walk_cb_data): Add data to track partial definitions.
18257 (vn_walk_cb_data::~vn_walk_cb_data): New.
18258 (vn_walk_cb_data::push_partial_def): New.
18259 (pd_tree_alloc, pd_tree_dealloc, pd_range_compare): New.
18260 (vn_reference_lookup_2): When partial defs are registered give up.
18261 (vn_reference_lookup_3): Track partial defs for memset and
18262 constructor zeroing and for defs from constants.
18264 2019-07-08 Richard Sandiford <richard.sandiford@arm.com>
18266 * doc/install.texi (bootstrap-Og): Document.
18268 2019-07-08 Richard Sandiford <richard.sandiford@arm.com>
18270 * config/riscv/pic.md (*local_pic_load_s<mode>)
18271 (*local_pic_load_u<mode>): Explicitly specify the mode iterator
18272 referenced by <mode>, giving...
18273 (*local_pic_load_s<SUBX:mode>, *local_pic_load_u<SUBX:mode>): ...these.
18274 * config/riscv/riscv.md (*sge<u>_<X:mode><GPR:mode>)
18275 (*slt<u>_<X:mode><GPR:mode>, *sle<u>_<X:mode><GPR:mode>): Explicitly
18276 use <X:MODE> for the mode attribute.
18278 2019-07-07 Jeff Law <law@redhat.com>
18280 PR tree-optimization/91090
18281 * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Fix logic error
18282 in handling of ranges to simplify switch statements.
18284 2019-07-07 Iain Sandoe <iain@sandoe.co.uk>
18286 * config/darwin.c (darwin_override_options): Make a final check on PIC
18289 2019-07-07 Iain Sandoe <iain@sandoe.co.uk>
18291 * config/darwin.c (darwin_override_options): Don't jam symbol stubs
18292 on for kernel code.
18294 2019-07-07 Richard Sandiford <richard.sandiford@arm.com>
18297 * config/mips/mips.md (*mul_acc_si, *mul_acc_si_r3900, *macc)
18298 (*msac, *msac_using_macc, *mul_sub_si): Use "l" for input operands
18299 instead of matching them to "l" output operands.
18301 2019-07-07 Richard Sandiford <richard.sandiford@arm.com>
18303 * config/mips/mips.c (mips_split_move): Zero-initialize addr
18304 and check whether addr.reg is nonnull before using it.
18306 2019-07-06 Jakub Jelinek <jakub@redhat.com>
18308 * omp-low.c (lower_rec_input_clauses): For lastprivate clauses in
18309 ctx->for_simd_scan_phase simd copy the outer var to the privatized
18310 variable(s). For conditional lastprivate look through outer
18311 GIMPLE_OMP_SCAN context.
18312 (lower_omp_1): For conditional lastprivate look through outer
18313 GIMPLE_OMP_SCAN context.
18315 * omp-low.c (struct omp_context): Rename combined_into_simd_safelen0
18316 member to combined_into_simd_safelen1.
18317 (lower_rec_input_clauses, lower_omp_1): Adjust uses.
18318 (lower_lastprivate_clauses): Likewise. For conditional lastprivate
18319 clauses if ctx->combined_into_simd_safelen1 put statements after the
18320 predicate conditionalized block rather than into it.
18322 2019-07-06 Richard Sandiford <richard.sandiford@arm.com>
18324 * config/s390/s390.md (*negabs<FP:mode>2_nocc): Use FP for
18326 * config/s390/vx-builtins.md (*vec_cmp<insn_cmp><mode>_cconly):
18327 Make the choice of <mode> explicit, giving...
18328 (*vec_cmp<insn_cmp><VF_HW:mode>_cconly): ...this.
18330 2019-07-06 Richard Sandiford <richard.sandiford@arm.com>
18332 * config/i386/i386.md (*fop_<X87MODEF:mode>_3_i387)
18333 (l<rounding_insn><MODEF:mode><SWI48:mode>2): Fix ambiguous uses
18335 * config/i386/sse.md (*avx512pf_gatherpf<mode>sf_mask)
18336 (*avx512pf_gatherpf<mode>df_mask, *avx512pf_scatterpf<mode>sf_mask)
18337 (*avx512pf_scatterpf<mode>df_mask, *avx2_gathersi<mode>)
18338 (*avx2_gathersi<mode>_2, *avx2_gatherdi<mode>)
18339 (*avx2_gatherdi<mode>_2, *avx2_gatherdi<mode>_3): Likewise.
18340 (*avx2_gatherdi<mode>_4, *avx512f_gathersi<mode>): Likewise.
18341 (*avx512f_gathersi<mode>_2, *avx512f_gatherdi<mode>): Likewise.
18342 (*avx512f_gatherdi<mode>_2, *avx512f_scattersi<mode>): Likewise.
18343 (*avx512f_scatterdi<mode>): Likewise.
18344 (*andnot<mode>3_bcst): Fix VI/VI48_AVX512VL typo.
18346 2019-07-06 Richard Sandiford <richard.sandiford@arm.com>
18348 * config/h8300/h8300.md (*push1_h8300hs_<mode>): Explicitly
18349 specify the mode iterator referenced by <mode>, giving...
18350 (*push1_h8300hs_<QHI:mode>): ...this.
18352 2019-07-06 Richard Sandiford <richard.sandiford@arm.com>
18354 * config/gcn/gcn-valu.md
18355 (vcond<VEC_1REG_MODE:mode><VEC_1REG_ALT:mode>): Use
18356 gen_vec_cmp<VEC_1REG_ALT:mode>di rather than (implicitly)
18357 gen_vec_cmp<VEC_1REG_MODE:mode>di. Explicitly use
18358 gen_vcond_mask_<VEC_1REG_MODE:mode>di.
18359 (vcond<VEC_1REG_MODE:mode><VEC_1REG_ALT:mode>_exec): Likewise,
18360 but using the _exec comparison patterns.
18361 (vcondu<VEC_1REG_INT_MODE:mode><VEC_1REG_INT_ALT:mode>): Use
18362 gen_vec_cmp<VEC_1REG_INT_ALT:mode>di rather than (implicitly)
18363 gen_vec_cmp<VEC_1REG_INT_MODE:mode>di. Explicitly use
18364 gen_vcond_mask_<VEC_1REG_INT_MODE:mode>di.
18365 (vcondu<VEC_1REG_INT_MODE:mode><VEC_1REG_INT_ALT:mode>_exec): Likewise,
18366 but using the _exec comparison patterns.
18368 2019-07-06 Richard Sandiford <richard.sandiford@arm.com>
18370 * config/arm/sync.md
18371 (@atomic_compare_and_swap<CCSI:arch><NARROW:mode>_1): Use
18372 <NARROW:sync_predtab> instead of (implicitly) <CCSI:sync_predtab>.
18373 (@atomic_compare_and_swap<CCSI:arch><SIDI:mode>_1): Likewise use
18374 <SIDI:sync_predtab>. Use <SIDI:cas_cmp_operand> and
18375 <SIDI:cas_cmp_str>.
18377 2019-07-06 Jakub Jelinek <jakub@redhat.com>
18379 * omp-low.c (struct omp_context): Add for_simd_scan_phase member.
18380 (maybe_lookup_ctx): Add forward declaration.
18381 (omp_find_scan): Likewise. Walk into body of simd if composited
18382 with worksharing loop.
18383 (scan_omp_simd_scan): New function.
18384 (scan_omp_1_stmt): Call it.
18385 (lower_rec_simd_input_clauses): Don't create rvar nor rvar2 if
18386 ctx->for_simd_scan_phase.
18387 (lower_rec_input_clauses): Do much less work for inscan reductions
18388 in ctx->for_simd_scan_phase is_simd regions.
18389 (lower_omp_scan): Set is_simd also on simd constructs composited
18390 with worksharing loop, unless ctx->for_simd_scan_phase. Never emit
18391 a sorry message. Don't change GIMPLE_OMP_SCAN stmts into nops and
18392 emit their body after in simd constructs composited with worksharing
18394 (lower_omp_for_scan): Handle worksharing loop composited with simd.
18396 * omp-low.c (omp_find_scan): Make static.
18397 (lower_omp_for_scan): Fix order of merge arguments in input phase of
18398 the second loop, var2 represents the first partial sum and so needs
18399 to go before rprivb[ivar].
18401 2019-07-05 Iain Sandoe <iain@sandoe.co.uk>
18403 * config/rs6000/rs6000-logue.c: Remove unused code.
18405 2019-07-05 Eric Botcazou <ebotcazou@adacore.com>
18407 * tree-ssa-loop-manip.c (create_iv): Add missing guard for gsi_end_p.
18409 2019-07-05 Sam Tebbs <sam.tebbs@arm.com>
18412 * config/aarch64/aarch64.c (aarch64_post_cfi_startproc): Replace thunk
18413 check with a frame laid out check.
18415 2019-07-05 Richard Biener <rguenther@suse.de>
18417 * tree-ssa-sccvn.c (vn_reference_lookup_3): Valueize RHS
18418 when comparing against a store with possibly the same value.
18420 2019-07-05 Richard Biener <rguenther@suse.de>
18422 PR tree-optimization/91091
18423 * tree-ssa-alias.h (get_continuation_for_phi): Add tbaa_p parameter.
18424 (walk_non_aliased_vuses): Likewise.
18425 * tree-ssa-alias.c (maybe_skip_until): Pass down tbaa_p.
18426 (get_continuation_for_phi): New tbaa_p parameter and pass
18428 (walk_non_aliased_vuses): Likewise.
18429 * ipa-prop.c (determine_known_aggregate_parts): Adjust.
18430 * tree-ssa-pre.c (translate_vuse_through_block): Likewise.
18431 * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr):
18433 * tree-ssa-sccvn.c (struct vn_walk_cb_data): Add tbaa_p flag.
18434 (adjust_offsets_for_equal_base_address): New function.
18435 (vn_reference_lookup_3): Use it to catch more base equivalences.
18436 Handle and pass down tbaa_p flag.
18437 (vn_reference_lookup_pieces): Adjust.
18438 (vn_reference_lookup): Remove alias-set altering, instead pass
18439 down false as tbaa_p.
18441 2019-07-05 Richard Biener <rguenther@suse.de>
18443 PR tree-optimization/91091
18444 * tree-ssa-sccvn.c (vn_reference_lookup_3): Overlap of
18445 accesses can happen with -fno-strict-aliasing.
18447 2019-07-05 Jan Hubicka <hubicka@ucw.cz>
18449 * tree-ssa-alias.c (alias_stats): Add
18450 nonoverlapping_component_refs_since_match_p_must_overlap.
18451 (dump_alias_stats): Print it.
18452 (nonoverlapping_component_refs_since_match_p): Add early exit.
18453 (nonoverlapping_component_refs_p): Do not account early exit.
18455 2019-07-05 Eric Botcazou <ebotcazou@adacore.com>
18457 * except.c (emit_to_new_bb_before): Make sure to put a location on SEQ.
18458 * tree-eh.c (replace_goto_queue_1) <GIMPLE_GOTO>: Propagate location.
18459 (emit_eh_dispatch): Delete.
18460 (lower_catch): Emit the eh_dispatch manually and set the location of
18461 the first catch statement onto it.
18462 (lower_eh_filter): Emit the eh_dispatch manually and set location.
18463 (lower_eh_dispatch): Propagate location.
18464 * tree-outof-ssa.c (set_location_for_edge): Handle EH edges specially.
18465 (eliminate_build): Likewise.
18467 2019-07-05 Eric Botcazou <ebotcazou@adacore.com>
18469 * tree-cfg.c (gimple_make_forwarder_block): Propagate location info on
18470 phi nodes if possible.
18471 * tree-scalar-evolution.c (final_value_replacement_loop): Propagate
18472 location info on the newly created statement.
18473 * tree-ssa-loop-manip.c (create_iv): Propagate location info on the
18474 newly created increment if needed.
18476 2019-07-04 Jakub Jelinek <jakub@redhat.com>
18478 PR middle-end/78884
18479 * gimplify.c (struct gimplify_omp_ctx): Add add_safelen1 member.
18480 (gimplify_bind_expr): If seeing TREE_ADDRESSABLE VLA inside of simd
18481 loop body, set ctx->add_safelen1 instead of making it GOVD_PRIVATE.
18482 (gimplify_adjust_omp_clauses): Add safelen (1) clause if
18483 ctx->add_safelen1 is set.
18485 * omp-expand.c (expand_omp_for_static_nochunk): Don't emit
18486 GOMP_loop_start at the start of second worksharing loop in a scan.
18487 For nowait, don't emit GOMP_loop_end_nowait at the end of first
18488 worksharing loop in a scan even if there are conditional lastprivates,
18489 and do emit GOMP_loop_end_nowait at the end of second worksharing loop.
18491 2019-07-04 Jan Hubicka <jh@suse.cz>
18493 * tree-ssa-alias.c (nonoverlapping_component_refs_since_match_p):
18494 Fix check for match in the ref walk.
18496 2019-07-04 Martin Liska <mliska@suse.cz>
18498 * tree-ssa-loop-niter.c
18499 (get_upper_bound_based_on_builtin_expr_with_prob): New function.
18500 (estimate_numbers_of_iterations):
18501 Support __builtin_expect_with_probability for analysis
18502 of # of loop iterations.
18504 2019-07-04 Alexandre Oliva <oliva@adacore.com>
18506 * doc/generic.texi (Cleanups): Document EH_ELSE_EXPR.
18507 * except.c: Likewise.
18508 * expr.c (expand_expr_real_1): Reject it.
18509 * gimplify.c (gimplify_expr): Gimplify it, within
18511 * tree-dump.c (dequeue_and_dump): Dump it.
18512 * tree-pretty-print.c (dump_generic_node): Likewise.
18513 * tree.c (block_may_fallthru): Handle it.
18514 * tree.def (EH_ELSE_EXPR): Introduce it.
18515 * gimple-pretty-print.c (dump_gimple_try): Dump TRY_FINALLY
18516 with GIMPLE_EH_ELSE as try/finally/else.
18518 2019-07-04 Richard Biener <rguenther@suse.de>
18521 * tree-pass.h (execute_all_ipa_transforms): Add a flag
18522 parameter whether to disable GC collection.
18523 * passes.c (execute_one_ipa_transform_pass): Likewise, and
18525 (execute_all_ipa_transforms): Likewise and pass it down.
18526 * cgraph.c (cgraph_node::get_body): Do not invoke garbage
18527 collection from applying IPA transforms.
18528 * cgraphunit.c (cgraph_node::expand): Allow garbage collection
18529 from applying IPA transforms.
18531 2019-07-04 Richard Biener <rguenther@suse.de>
18533 PR tree-optimization/90911
18534 * tree-vectorizer.h (_loop_vec_info::scalar_loop_scaling): New field.
18535 (LOOP_VINFO_SCALAR_LOOP_SCALING): new.
18536 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
18537 scalar_loop_scaling.
18538 (vect_transform_loop): Scale scalar loop profile if needed.
18539 * tree-vect-loop-manip.c (vect_loop_versioning): When re-using
18540 the loop copy from if-conversion adjust edge probabilities
18541 and scale the vectorized loop body profile, queue the scalar
18542 profile for updating after peeling.
18544 2019-07-04 Jan Hubicka <jh@suse.cz>
18546 * tree-ssa-alias.c (decl_refs_may_alias_p): Add size1 and size2
18547 parameters; return early for must-alias.
18548 (indirect_ref_may_alias_decl_p): Likewise; when establishing
18549 outer types match, try nonoverlapping_component_refs
18550 if must-alias is not obvious.
18551 (indirect_refs_may_alias_p): Likewise.
18552 (refs_may_alias_p_2): Likewise.
18554 2019-07-04 Richard Biener <rguenther@suse.de>
18556 * tree-ssa-sccvn.h (vn_reference_lookup): Add last_vuse_ptr
18558 * tree-ssa-sccvn.c (last_vuse_ptr, vn_walk_kind): Move
18560 (struct vn_walk_cb_data): New callback data struct.
18561 (vn_reference_lookup_2): Adjust.
18562 (vn_reference_lookup_3): Likewise.
18563 (vn_reference_lookup_pieces): Likewise.
18564 (vn_reference_lookup): Likewise, get last_vuse_ptr argument.
18565 (visit_reference_op_load): Adjust.
18567 2019-07-04 Jakub Jelinek <jakub@redhat.com>
18569 PR tree-optimization/91063
18570 * tree-vect-stmts.c (vect_init_vector): Call gsi_remove to remove
18571 stmt from stmts sequence before calling vect_init_vector_1.
18574 2019-07-04 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
18577 * fwprop.c (reg_single_def_p): New function.
18578 (propagate_rtx_1): Add unconditional else inside RTX_EXTRA case.
18579 (forward_propagate_into): New parameter reg_prop_only
18580 with default value false.
18581 Propagate def's src into loop only if SET_SRC and SET_DEST
18582 of def_set have single definitions.
18583 Likewise if reg_prop_only is set to true.
18584 (fwprop): New param fwprop_addr_p.
18585 Integrate fwprop_addr into fwprop.
18586 (fwprop_addr): Remove.
18587 (pass_rtl_fwprop_addr::execute): Call fwprop with arg set
18589 (pass_rtl_fwprop::execute): Call fwprop with arg set to false.
18590 * simplify-rtx.c (simplify_subreg): Add case for vector comparison.
18591 * config/i386/sse.md (UNSPEC_BLENDV): Adjust pattern.
18593 2019-07-04 Jakub Jelinek <jakub@redhat.com>
18595 * omp-low.c (lower_omp_scan): Call lower_omp on stmt's body
18596 in worksharing loop scans.
18598 PR tree-optimization/91074
18599 * omp-low.c (lower_omp_for_scan): Set DECL_GIMPLE_REG_P on cplx
18602 PR rtl-optimization/90756
18603 * explow.c (promote_ssa_mode): Always use TYPE_MODE, don't bypass it
18606 2019-07-03 Dennis Zhang <dennis.zhang@arm.com>
18608 * config/aarch64/aarch64.md: Remove redundant constraints from
18609 define_expand but keep some patterns untouched if they are
18610 specially selected by TARGET_SECONDARY_RELOAD hook.
18611 * config/aarch64/aarch64-sve.md: Likewise.
18612 * config/aarch64/atomics.md: Remove redundant constraints from
18614 * config/aarch64/aarch64-simd.md: Likewise.
18616 2019-07-03 Iain Sandoe <iain@sandoe.co.uk>
18618 * config/darwin.h (DRIVER_SELF_SPECS): Remove the linker cases.
18619 (RDYNAMIC): Rename to, DARWIN_RDYNAMIC.
18620 (DARWIN_PIE_SPEC, DARWIN_NOPIE_SPEC): Adjust to remove the Xlinker
18622 (LINK_COMMAND_SPEC_A): Add DARWIN_RDYNAMIC, DARWIN_PIE_SPEC and
18625 2019-07-03 Iain Sandoe <iain@sandoe.co.uk>
18627 * config/darwin.h (REAL_LIBGCC_SPEC): Adjust for earlier Darwin.
18628 (STARTFILE_SPEC): Split crt3 into a separate spec.
18629 (DARWIN_EXTRA_SPECS): Add crt2 and crt3 spec.
18630 (DARWIN_CRT2_SPEC): New.
18631 (DARWIN_CRT3_SPEC): New.
18632 (MIN_LD64_OMIT_STUBS): Revise to 62.1.
18633 * config/rs6000/darwin.h (DARWIN_CRT2_SPEC): Revise conditions.
18634 (DARWIN_CRT3_SPEC): New.
18636 2019-07-03 Michael Meissner <meissner@linux.ibm.com>
18638 * config/rs6000/altivec.md (altivec_mov<mode>, VM2 iterator):
18639 Change the RTL attribute "length" from "4" to "*" to allow the
18640 length attribute to be adjusted automatically for prefixed load,
18641 store, and add immediate instructions.
18642 * config/rs6000/rs6000.md (extendhi<mode>2, EXTHI iterator):
18644 (extendsi<mode>2, EXTSI iterator): Likewise.
18645 (movsi_internal1): Likewise.
18646 (movsi_from_sf): Likewise.
18647 (movdi_from_sf_zero_ext): Likewise.
18648 (mov<mode>_internal): Likewise.
18649 (movcc_internal1, QHI iterator): Likewise.
18650 (mov<mode>_softfloat, FMOVE32 iterator): Likewise.
18651 (movsf_from_si): Likewise.
18652 (mov<mode>_hardfloat32, FMOVE64 iterator): Likewise.
18653 (mov<mode>_softfloat64, FMOVE64 iterator): Likewise.
18654 (mov<mode>, FMOVE128 iterator): Likewise.
18655 (movdi_internal64): Likewise.
18656 * config/rs6000/vsx.md (vsx_le_permute_<mode>, VSX_TI iterator):
18658 (vsx_le_undo_permute_<mode>, VSX_TI iterator): Likewise.
18659 (vsx_mov<mode>_64bit, VSX_M iterator): Likewise.
18660 (vsx_mov<mode>_32bit, VSX_M iterator): Likewise.
18661 (vsx_splat_v4sf): Likewise.
18663 2019-07-03 Mark Wielaard <mark@klomp.org>
18666 * dwarf2out.c (add_top_level_skeleton_die_attrs): Only add
18667 DW_AT_addr_base if there is actually a .debug_addr section with
18669 (output_addr_table): Add DWARF5 table header generation here after
18670 checking there are actually any addresses from...
18671 (dwarf2out_finish): ...here.
18673 2019-07-03 Richard Biener <rguenther@suse.de>
18675 PR middle-end/91069
18676 * match.pd (vec_perm -> bit_insert): Fix element read from
18679 2019-07-03 Martin Liska <mliska@suse.cz>
18681 * dbgcnt.def (DEBUG_COUNTER): Add match debug counter.
18682 * genmatch.c (dt_simplify::gen_1): Generate dbgcnt
18684 * generic-match-head.c: Include dbgcnt.h.
18685 * gimple-match-head.c: Likewise.
18687 2019-07-03 Martin Liska <mliska@suse.cz>
18689 * gcov-counter.def (GCOV_COUNTER_V_SINGLE): Remove.
18690 (GCOV_COUNTER_V_TOPN): New.
18691 (GCOV_COUNTER_V_INDIR): Use _topn.
18692 * gcov-io.h (GCOV_DISK_SINGLE_VALUES): Remove.
18693 (GCOV_TOPN_VALUES): New.
18694 (GCOV_SINGLE_VALUE_COUNTERS): Remove.
18695 (GCOV_TOPN_VALUES_COUNTERS): New.
18696 * profile.c (instrument_values): Use HIST_TYPE_TOPN_VALUES.
18698 (gimple_init_gcov_profiler): Rename variables from one_value
18700 (gimple_gen_one_value_profiler): Remove.
18701 (gimple_gen_topn_values_profiler): New function.
18702 * value-prof.c (dump_histogram_value): Use TOPN_VALUES
18703 names instead of SINGLE_VALUE.
18704 (stream_out_histogram_value): Likewise.
18705 (stream_in_histogram_value): Likewise.
18706 (get_most_common_single_value): Likewise.
18707 (gimple_divmod_fixed_value_transform): Likewise.
18708 (gimple_stringops_transform): Likewise.
18709 (gimple_divmod_values_to_profile): Likewise.
18710 (gimple_stringops_values_to_profile): Likewise.
18711 (gimple_find_values_to_profile): Likewise.
18712 * value-prof.h (enum hist_type): Rename to TOPN.
18713 (gimple_gen_one_value_profiler): Remove.
18714 (gimple_gen_topn_values_profiler): New.
18716 2019-07-03 Eric Botcazou <ebotcazou@adacore.com>
18718 * dwarf2out.c (add_scalar_info): Add back refererence to existing DIE
18719 if it has the DW_AT_data_member_location attribute.
18721 2019-07-03 Richard Biener <rguenther@suse.de>
18723 * gimple-pretty-print.c (dump_ternary_rhs): Fix BIT_INSERT_EXPR
18726 2019-07-03 Sylvia Taylor <sylvia.taylor@arm.com>
18728 * config/aarch64/aarch64.md (FP_REGNUM): New constant.
18729 (tlsdesc_small_advsimd_<mode>): Add use of FP_REGNUM.
18730 (tlsdesc_small_sve_<mode>): Likewise.
18732 2019-07-03 Martin Liska <mliska@suse.cz>
18734 * Makefile.in: Define ZSTD_LIB.
18735 * common.opt: Adjust compression level
18736 to support also zstd levels.
18737 * config.in: Regenerate.
18738 * configure: Likewise.
18739 * configure.ac: Add --with-zstd and --with-zstd-include options
18741 * doc/install.texi: Mention zstd dependency.
18742 * gcc.c: Print supported LTO compression algorithms.
18743 * lto-compress.c (lto_normalized_zstd_level): Likewise.
18744 (lto_compression_zstd): Likewise.
18745 (lto_uncompression_zstd): Likewise.
18746 (lto_end_compression): Dispatch in between zlib and zstd.
18747 (lto_compression_zlib): Mark with ATTRIBUTE_UNUSED.
18748 (lto_uncompression_zlib): Make it static.
18749 * lto-compress.h (lto_end_uncompression): Fix GNU coding style.
18750 * lto-section-in.c (lto_get_section_data): Pass info
18751 about used compression.
18752 * lto-streamer-out.c: By default use zstd when possible.
18753 * timevar.def (TV_IPA_LTO_DECOMPRESS): Rename to decompression
18754 (TV_IPA_LTO_COMPRESS): Likewise for compression.
18756 2019-07-03 Martin Liska <mliska@suse.cz>
18758 * lto-section-in.c (lto_get_section_data): Add "lto" section.
18759 * lto-section-out.c (lto_destroy_simple_output_block): Never
18760 compress LTO_section_lto section.
18761 * lto-streamer-out.c (produce_asm): Do not set major_version
18763 (lto_output_toplevel_asms): Likewise.
18764 (produce_lto_section): New function.
18765 (lto_output): Call produce_lto_section.
18766 (lto_write_mode_table): Do not set major_version and
18768 (produce_asm_for_decls): Likewise.
18769 * lto-streamer.h (enum lto_section_type): Add LTO_section_lto
18771 (struct lto_header): Remove.
18772 (struct lto_section): New struct.
18773 (struct lto_simple_header): Do not inherit from lto_header.
18774 (struct lto_file_decl_data): Add lto_section_header field.
18776 2019-07-03 Martin Liska <mliska@suse.cz>
18778 * lra-eliminations.c (eliminate_regs_in_insn): Remove
18780 * reg-stack.c (check_asm_stack_operands): Likewise.
18781 * tree-ssa-structalias.c (create_function_info_for): Likewise.
18782 * tree-vect-generic.c (expand_vector_operations_1): Likewise.
18783 * config/i386/i386-expand.c (ix86_expand_sse2_mulvxdi3): Use
18784 force_expand_binop.
18786 2019-07-03 Martin Liska <mliska@suse.cz>
18788 PR tree-optimization/90892
18789 * builtins.c (inline_expand_builtin_string_cmp): Handle '\0'
18790 in string constants.
18792 2019-07-03 Martin Liska <mliska@suse.cz>
18794 PR middle-end/90899
18795 * multiple_target.c (create_dispatcher_calls): Add to comdat
18796 group only if set for ifunc.
18798 2019-07-03 Martin Liska <mliska@suse.cz>
18801 * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
18802 Define local_object_name in outer scope in order to handle
18803 use-after-scope issue.
18805 2019-07-03 Martin Liska <mliska@suse.cz>
18807 * common.opt: Add fprofile-note.
18808 * coverage.c (coverage_init): Append the option
18810 * doc/invoke.texi: Document -fprofile-note.
18812 2019-07-03 Jakub Jelinek <jakub@redhat.com>
18814 PR tree-optimization/91033
18815 * tree-vectorizer.h (vect_mark_stmts_to_be_vectorized,
18816 vect_analyze_data_refs): Add bool * arguments.
18817 * tree-vect-data-refs.c (vect_analyze_data_refs): Add fatal argument,
18818 if failure is due to scatter/gather, set *fatal to false if non-NULL.
18819 * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Likewise.
18820 * tree-vect-loop.c (vect_analyze_loop_2): Adjust
18821 vect_mark_stmts_to_be_vectorized and vect_analyze_data_refs callers.
18822 * tree-vect-slp.c (vect_slp_analyze_bb_1): Adjust
18823 vect_analyze_data_refs caller.
18825 * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE__SCANTEMP_
18827 * tree.h (OMP_CLAUSE_DECL): Use OMP_CLAUSE__SCANTEMP_ instead of
18828 OMP_CLAUSE__CONDTEMP_ as range's upper bound.
18829 (OMP_CLAUSE__SCANTEMP__ALLOC, OMP_CLAUSE__SCANTEMP__CONTROL): Define.
18830 * tree.c (omp_clause_num_ops, omp_clause_code_name): Add
18831 OMP_CLAUSE__SCANTEMP_ entry.
18832 (walk_tree_1): Handle OMP_CLAUSE__SCANTEMP_.
18833 * tree-pretty-print.c (dump_omp_clause): Likewise.
18834 * tree-nested.c (convert_nonlocal_omp_clauses,
18835 convert_local_omp_clauses): Likewise.
18836 * omp-general.h (struct omp_for_data): Add have_scantemp and
18837 have_nonctrl_scantemp members.
18838 * omp-general.c (omp_extract_for_data): Initialize them.
18839 * omp-low.c (struct omp_context): Add scan_exclusive member.
18840 (scan_omp_1_stmt): Don't unnecessarily mask gimple_omp_for_kind
18841 result again with GF_OMP_FOR_KIND_MASK. Initialize also
18842 ctx->scan_exclusive.
18843 (lower_rec_simd_input_clauses): Use ctx->scan_exclusive instead
18844 of !ctx->scan_inclusive.
18845 (lower_rec_input_clauses): Simplify gimplification of dtors using
18846 gimplify_and_add. For non-is_simd test OMP_CLAUSE_REDUCTION_INSCAN
18847 rather than rvarp. Handle OMP_CLAUSE_REDUCTION_INSCAN in worksharing
18848 loops. Don't add barrier for reduction_omp_orig_ref if
18849 ctx->scan_??xclusive.
18850 (lower_reduction_clauses): Don't do anything for ctx->scan_??xclusive.
18851 (lower_omp_scan): Use ctx->scan_exclusive instead
18852 of !ctx->scan_inclusive. Handle worksharing loops with inscan
18853 reductions. Use new_vard != new_var instead of repeated
18854 omp_is_reference calls.
18855 (omp_find_scan, lower_omp_for_scan): New functions.
18856 (lower_omp_for): Call lower_omp_for_scan for worksharing loops with
18858 * omp-expand.c (expand_omp_scantemp_alloc): New function.
18859 (expand_omp_for_static_nochunk): Handle fd->have_nonctrl_scantemp
18860 and fd->have_scantemp.
18862 * gimplify.c (gimplify_scan_omp_clauses): For inscan reductions
18863 on worksharing loop propagate it as shared clause to containing
18866 * omp-expand.c (expand_omp_for_static_nochunk,
18867 expand_omp_for_static_chunk): For nowait worksharing loop with
18868 conditional lastprivate clause(s), emit GOMP_loop_end_nowait call
18871 2019-07-02 qing zhao <qing.zhao@oracle.com>
18873 PR preprocessor/90581
18874 * doc/cppopts.texi: Add document for -fmax-include-depth.
18875 * doc/invoke.texi (Preprocessor Options): List -fmax-include-depth.
18877 2019-07-02 Uroš Bizjak <ubizjak@gmail.com>
18879 * config/i386/mmx.md (mmx_pack<s_trunsuffix>swb):
18880 Use TARGET_SSE2 && SSE_REGNO_P in split condition.
18881 (mmx_packssdw): Ditto.
18882 (mmx_punpckhbw): Ditto.
18883 (mmx_punpcklbw): Ditto.
18884 (mmx_punpckhwd): Ditto.
18885 (mmx_punpcklwd): Ditto.
18886 (mmx_punpckhdq): Ditto.
18887 (mmx_punpckldq): Ditto.
18888 (*vec_dupv4hi): Ditto.
18889 (*vec_dupv2si): Ditto.
18890 (mmx_pmovmskb): Ditto.
18891 * config/i386/sse.md (sse_cvtpi2ps): Use
18892 TARGET_SSE2 && SSE_REG_P in split condition.
18893 (ssse3_ph<plusminus_mnemonic>wv4hi3): Use
18894 TARGET_SSSE3 && SSE_REGNO_P in split condition.
18895 (ssse3_ph<plusminus_mnemonic>dv2si3): Ditto.
18896 (ssse3_pshufbv8qi3): Ditto.
18897 (ssse3_palignrdi): Ditto.
18899 2019-07-02 Andrew Stubbs <ams@codesourcery.com>
18901 * config/gcn/gcn.md (movdi_symbol_save_scc): Convert to define_insn
18902 with inlined save and restore.
18904 2019-07-02 Eric Botcazou <ebotcazou@adacore.com>
18906 * cfgexpand.c (pass_expand::execute): Deal specially with instructions
18907 to be inserted on single successor edge of the entry block. Then call
18908 commit_edge_insertions instead of inserting the instructions manually.
18909 * cfgrtl.c (commit_edge_insertions): Do not verify flow info during
18910 RTL expansion and rebuild jump labels chain.
18912 2019-07-02 Richard Biener <rguenther@suse.de>
18914 * tree-core.h (enum tree_index): Add TI_CHREC_DONT_KNOW and
18916 * tree.h (chrec_not_analyzed_yet, chrec_dont_know, chrec_known):
18918 * tree.c (build_common_tree_nodes): Initialize them.
18919 * tree-chrec.h (chrec_not_analyzed_yet, chrec_dont_know, chrec_known):
18920 Make declarations comments.
18921 * tree-scalar-evolution.c (chrec_not_analyzed_yet, chrec_dont_know,
18922 chrec_known): Remove definitions.
18923 (initialize_scalar_evolutions_analyzer): Remove.
18924 (scev_initialize): Do not call initialize_scalar_evolutions_analyzer.
18925 * tree-streamer.c (preload_common_nodes): Do not preload
18926 TI_CHREC_DONT_KNOW or TI_CHREC_KNOWN.
18928 2019-07-02 Jan Hubicka <jh@suse.cz>
18930 * tree-ssa-alias.c (aliasing_component_refs_p): Remove forgotten
18933 2019-07-02 Jan Hubicka <jh@suse.cz>
18935 * tree-ssa-alias.c (nonoverlapping_component_refs_for_decl_p): Rename
18937 (nonoverlapping_component_refs_since_match_p): ... this one;
18938 handle also non-decl bases; return -1 if search gave up.
18939 (alias_stats): Rename nonoverlapping_component_refs_of_decl_p_may_alias,
18940 nonoverlapping_component_refs_of_decl_p_no_alias to
18941 nonoverlapping_component_refs_since_match_p_may_alias,
18942 nonoverlapping_component_refs_since_match_p_no_alias.
18943 (dump_alias_stats): Update dumping.
18944 (aliasing_matching_component_refs_p): Break out from ...;
18945 dispatch to nonoverlapping_component_refs_for_decl_p
18946 and nonoverlapping_component_refs_since_match_p.
18947 (aliasing_component_refs_p): ... here; call
18948 nonoverlapping_component_refs_p in scenarios where we can not
18949 precisely determine base match.
18950 (decl_refs_may_alias_p): Use
18951 nonoverlapping_component_refs_since_match_p.
18952 (indirect_ref_may_alias_decl_p): Do not call
18953 nonoverlapping_component_refs_p.
18954 (indirect_refs_may_alias_p): Likewise.
18956 2019-07-02 Jan Hubicka <jh@suse.cz>
18958 * tree-inline.c (remap_gimple_stmt): Do not subtitute handled components
18959 to clobber of return value.
18961 2019-07-02 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18963 * config/arm/cortex-a57.md (cortex_a57_neon_type): Use neon_arith_basic
18964 for is_neon_type instructions that have not already been categorized.
18966 2019-07-02 Richard Biener <rguenther@suse.de>
18968 PR tree-optimization/58483
18969 * tree-ssa-scopedtables.c (avail_expr_hash): Use OEP_ADDRESS_OF
18970 for MEM_REF base hashing.
18971 (equal_mem_array_ref_p): Likewise for base comparison.
18973 2019-07-01 Segher Boessenkool <segher@kernel.crashing.org>
18975 * config/rs6000/rs6000.md (signbit<mode>2_dm): Make this a
18976 parameterized name.
18977 (signbit<mode>2): Use that name. Simplify.
18979 2019-07-01 Joern Rennecke <joern.rennecke@riscy-ip.com>
18981 PR middle-end/66726
18982 * tree-ssa-phiopt.c (factor_out_conditional_conversion):
18983 Tune heuristic from PR71016 to allow MIN / MAX.
18985 2019-07-01 Segher Boessenkool <segher@kernel.crashing.org>
18987 * config/rs6000/rs6000.md (ieee_128bit_vsx_abs<mode>2): Make this a
18988 parameterized name.
18989 (abs<mode>2): Use that name. Simplify.
18991 2019-07-01 Segher Boessenkool <segher@kernel.crashing.org>
18993 * config/rs6000/rs6000.md (ieee_128bit_vsx_neg<mode>2): Make this a
18994 parameterized name.
18995 (neg<mode>2): Use that name. Simplify.
18997 2019-07-01 Segher Boessenkool <segher@kernel.crashing.org>
18999 * config/rs6000/rs6000.md (abs<mode>2_hw): Make this a parameterized
19001 (abs<mode>2): Use that name. Simplify.
19003 2019-07-01 Segher Boessenkool <segher@kernel.crashing.org>
19005 * config/rs6000/rs6000.md (neg<mode>2_hw): Make this a parameterized
19007 (neg<mode>2): Use that name. Simplify.
19009 2019-07-01 Uroš Bizjak <ubizjak@gmail.com>
19011 * config/i386/i386.md ("isa" attribute): Add sse_noavx.
19012 ("enabled" attribute): Handle sse_noavx isa attribute.
19013 * config/i386/mmx.md (*vec_dupv2sf): Add "isa" attribute.
19014 Use TARGET_SSE && SSE_REGNO_P in split condition.
19015 (*vec_dupv2sf): Ditto.
19017 2019-07-01 Segher Boessenkool <segher@kernel.crashing.org>
19019 * config/rs6000/rs6000.md (extenddf<mode>2): Make this a parameterized
19021 (floatsi<mode>2): Use that name. Simplify.
19023 2019-07-01 Segher Boessenkool <segher@kernel.crashing.org>
19025 * config/rs6000/rs6000.md (extenddf<mode>2_fprs): Make this a
19026 parameterized name.
19027 (extenddf<mode>2_vsx): Make this a parameterized name.
19028 (extenddf<mode>2): Use those names. Simplify.
19030 2019-07-01 Segher Boessenkool <segher@kernel.crashing.org>
19032 * config/rs6000/rs6000.md (eh_set_lr_<mode>): Make this a parameterized
19034 (eh_return): Use that name. Simplify.
19036 2019-07-01 Segher Boessenkool <segher@kernel.crashing.org>
19038 * config/rs6000/rs6000.md (ctr<mode>): Make this a parameterized name.
19039 (doloop_end): Use that name. Simplify.
19041 2019-07-01 Segher Boessenkool <segher@kernel.crashing.org>
19043 * config/rs6000/rs6000.md (indirect_jump<mode>_nospec): Make this a
19044 parameterized name.
19045 (indirect_jump): Use that name. Simplify.
19047 2019-07-01 Segher Boessenkool <segher@kernel.crashing.org>
19049 * config/rs6000/rs6000.md (abs<mode>2_internal): Make this a
19050 parameterized name.
19051 (abs<mode>2): Use that name. Simplify.
19053 2019-07-01 Segher Boessenkool <segher@kernel.crashing.org>
19055 * config/rs6000/rs6000.md (fix_trunc<mode>si2_fprs): Make this a
19056 parameterized name.
19057 (fix_trunc<mode>si2): Use that name. Simplify.
19059 2019-07-01 Segher Boessenkool <segher@kernel.crashing.org>
19061 * config/rs6000/rs6000.md (neg<mode>2): Make this a parameterized name.
19062 (allocate_stack): Use that name. Simplify.
19064 2019-07-01 Martin Sebor <msebor@redhat.com>
19066 PR middle-end/90923
19067 * hash-map.h (hash_map::put): On insertion invoke element ctor.
19068 (hash_map::get_or_insert): Same. Reformat comment.
19069 * hash-set.h (hash_set::add): On insertion invoke element ctor.
19070 * hash-map-tests.c (test_map_of_type_with_ctor_and_dtor): New.
19071 * hash-set-tests.c (test_map_of_type_with_ctor_and_dtor): New.
19072 * hash-table.h (hash_table::operator=): Prevent copy assignment.
19073 (hash_table::hash_table (const hash_table&)): Use copy ctor
19074 instead of assignment to copy elements.
19076 2019-07-01 Wilco Dijkstra <wdijkstr@arm.com>
19077 John David Anglin <danglin@gcc.gnu.org>
19080 * config/pa/pa.md (builtin_longjmp): Restore hard_frame_pointer_rtx
19081 using saved frame pointer.
19083 2019-07-01 Eric Botcazou <ebotcazou@adacore.com>
19085 PR middle-end/64242
19086 * config/sparc/sparc.md (nonlocal_goto): Restore frame pointer last.
19087 Add frame clobber and schedule blockage.
19089 2019-07-01 Sandra Loosemore <sandra@codesourcery.com>
19091 * doc/invoke.texi (Link Options): Further editorial changes to
19092 -flinker-output docs.
19094 2019-07-01 Segher Boessenkool <segher@kernel.crashing.org>
19096 * config/rs6000/rs6000.c (rs6000_force_indexed_or_indirect_mem):
19097 Load both operands of a PLUS into registers separately.
19099 2019-07-01 Andreas Krebbel <krebbel@linux.ibm.com>
19101 * config/s390/vector.md: Fix shift count operand printing.
19103 2019-07-01 Richard Sandiford <richard.sandiford@arm.com>
19105 * ira-lives.c (process_bb_node_lives): Use ira_setup_alts.
19107 2019-07-01 Richard Sandiford <richard.sandiford@arm.com>
19109 * ira.c (ira_get_dup_out_num): Don't punt for earlyclobbers.
19110 Use recog_data to test for an output operand.
19112 2019-07-01 Richard Sandiford <richard.sandiford@arm.com>
19114 * ira.c (ira_setup_alts): If any valid alternatives have zero cost,
19115 exclude any others that are disparaged or that are bound to need
19117 (ira_get_dup_out_num): Expand comment.
19119 2019-07-01 Richard Sandiford <richard.sandiford@arm.com>
19121 * ira.c (ira_setup_alts): Use preprocess_constraints to get the
19122 constraint string for each operand/alternative combo. Only handle
19123 '%' at the start of constraint strings, and look for it outside
19126 2019-07-01 Richard Sandiford <richard.sandiford@arm.com>
19128 * ira-int.h (ira_setup_alts, ira_get_dup_out_num): Use
19129 alternative_mask instead of HARD_REG_SET to represent a
19130 bitmask of alternatives.
19131 * ira.c (ira_setup_alts, ira_get_dup_out_num): Likewise.
19132 * ira-conflicts.c (add_insn_allocno_copies): Likewise.
19134 2019-07-01 Martin Liska <mliska@suse.cz>
19136 * edit-context.c (test_applying_fixits_unreadable_file): Do not
19137 use () for a constructor call.
19138 (test_applying_fixits_line_out_of_range): Likewise.
19139 * ggc-page.c (alloc_page): Use (void *) for %p printf format
19141 (free_page): Likewise.
19143 2019-07-01 Vladislav Ivanishin <vlad@ispras.ru>
19145 * gdbhooks.py (GdbPrettyPrinters.add_printer_for_types): Reorder
19146 parameter names to match usage (no functional change).
19147 (GdbPrettyPrinters.add_printer_for_regex): Ditto.
19149 2019-07-01 Richard Biener <rguenther@suse.de>
19151 * tree-ssa-sccvn.c (class pass_fre): Add may_iterate
19153 (pass_fre::execute): Honor it.
19154 * passes.def: Adjust pass_fre invocations to allow iterating,
19155 add non-iterating pass_fre before late threading/dom.
19157 2019-07-01 Richard Biener <rguenther@suse.de>
19159 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Adjust
19160 TARGET_MEM_REF handling to also handle address-taken ones.
19162 2019-07-01 Hongtao Liu <hongtao.liu@intel.com>
19164 * doc/sourcebuild.texi (Effective-Target Keywords, Other
19165 hardware attributes): Document avx512vp2intersect.
19167 2019-06-30 Uroš Bizjak <ubizjak@gmail.com>
19169 * config/i386/sse.md (ssse3_abs<mode>2): Rename from abs<mode>2.
19170 (abs<mode>2): New expander.
19171 * config/i386/i386-builtin.def (__builtin_ia32_pabsb):
19172 Use CODE_FOR_ssse3_absv8qi2.
19173 (__builtin_ia32_pabsw): Use CODE_FOR_ssse3_absv4hi2.
19174 (__builtin_ia32_pabsd): Use CODE_FOR_ssse3_absv2si2.
19176 2019-06-30 Uroš Bizjak <ubizjak@gmail.com>
19178 * config/i386/i386.md (mmx_isa): Rename x64, x64_noavx and x64_avx
19179 to sse, sse_noavx and avx. Update all uses.
19181 2019-06-30 Uroš Bizjak <ubizjak@gmail.com>
19183 * config/i386/mmx.md (sse_movntq): Add "isa" attribute.
19184 (*mmx_<plusminus_insn><mode>3): Ditto.
19185 (*mmx_mulv4hi3"): Ditto.
19186 (*mmx_smulv4hi3_highpart): Ditto.
19187 (*mmx_umulv4hi3_highpart): Ditto.
19188 (*mmx_pmaddwd): Ditto.
19189 (*sse2_umulv1siv1di3): Ditto.
19190 (*mmx_<code>v4hi3): Ditto.
19191 (*mmx_<code>v8qi3): Ditto.
19192 (mmx_ashr<mode>3): Ditto.
19193 ("mmx_<shift_insn><mode>3): Ditto.
19194 (*mmx_eq<mode>3): Ditto.
19195 (mmx_gt<mode>3): Ditto.
19196 (mmx_andnot<mode>3): Ditto.
19197 (*mmx_<code><mode>3): Ditto.
19198 (*mmx_pinsrw): Ditto.
19199 (*mmx_pextrw): Ditto.
19200 (mmx_pshufw_1): Ditto.
19201 (*mmx_uavgv8qi3): Ditto.
19202 (*mmx_uavgv4hi3): Ditto.
19203 ("mmx_psadbw): Ditto.
19204 * config/i386/sse.md (sse_cvtps2pi): Ditto.
19205 (sse_cvttps2pi): Ditto.
19206 (ssse3_pmaddubsw): Ditto.
19207 (*ssse3_pmulhrswv4hi3): Ditto.
19208 (ssse3_psign<mode>3): Ditto.
19210 2019-06-29 Eric Botcazou <ebotcazou@adacore.com>
19212 * expr.c (expand_expr_real_1) <BIT_FIELD_REF>: Apply the big-endian
19213 adjustment for bit-fields to all aggregate types.
19215 2019-06-28 Michael Meissner <meissner@linux.ibm.com>
19217 * config/rs6000/predicates.md (pcrel_address): Use
19218 SYMBOL_REF_LOCAL_P to determine if a label is local.
19219 (pcrel_external_address): New predicate.
19220 (non_prefixed_mem_operand): Delete, predicate not used.
19221 * config/rs6000/rs6000.h (SYMBOL_FLAG_PCREL_P): Delete, we now use
19222 SYMBOL_REF_LOCAL_P to determine if we can use pc-relative
19224 (SYMBOL_REF_PCREL_P): Likewise.
19227 * config/rs6000/rs6000.md (floatsi<mode>2_lfiwax): Add non-VSX
19229 (floatsi<mode>2_lfiwax_mem): Add non-VSX alternative.
19230 (floatunssi<mode>2_lfiwzx): Add non-VSX alternative.
19231 (floatunssi<mode>2_lfiwzx_mem): Add non-VSX alternative.
19233 2019-06-28 Iain Sandoe <iain@sandoe.co.uk>
19235 * config.gcc (powerpc-*-darwin*, powerpc64-*-darwin*): Remove
19236 override on extra_headers.
19238 2019-06-28 Iain Sandoe <iain@sandoe.co.uk>
19240 * config/darwin-c.c (pop_field_alignment): Quote #pragma options.
19241 * config/darwin-driver.c (darwin_default_min_version): Remove newline
19243 (darwin_driver_init): Likewise.
19245 2019-06-28 Jan Beulich <jbeulich@suse.com>
19247 * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
19248 vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
19249 Eliminate redundant alternative.
19251 2019-06-28 Jan Beulich <jbeulich@suse.com>
19253 * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
19254 vgf2p8affineqb_<mode><mask_name>): Drop % constraint modifier.
19255 Use vector_operand.
19257 2019-06-28 Claudiu Zissulescu <claziss@synopsys.com>
19259 * config/arc/arc.c (arc_rtx_costs): All short instructions are
19260 having a lower cost regardless of the speed option.
19262 2019-06-28 Jan Beulich <jbeulich@suse.com>
19264 * config/i386/sse.md (sse2_cvtpd2pi, sse2_cvttpd2pi): Use
19265 vector_operand plus, on both alternatives, "Bm" constraint.
19267 2019-06-28 Dennis Zhang <dennis.zhang@arm.com>
19269 * config/arm/arm.md: Remove redundant constraints from
19270 define_expand but leave reload_inm and reload_outm patterns
19271 untouched since they need special constraints to work.
19272 * config/arm/arm-fixed.md: Remove redundant constraints from
19274 * config/arm/iwmmxt.md: Likewise.
19275 * config/arm/neon.md: Likewise.
19276 * config/arm/sync.md: Likewise.
19277 * config/arm/thumb1.md: Likewise.
19278 * config/arm/vec-common.md: Likewise.
19280 2019-06-27 Ilia Diachkov <ilia.diachkov@optimitech.com>
19282 * doc/install.texi: Document --disable-tm-clone-registry.
19284 2019-06-27 Jakub Jelinek <jakub@redhat.com>
19287 * gimplify.c (collect_fallthrough_labels): Ignore GIMPLE_PREDICT
19290 PR tree-optimization/91010
19291 * tree-vect-stmts.c (scan_operand_equal_p): If offset1 == offset2,
19292 return true. Otherwise, don't call operand_equal_p if offset1 or
19293 offset2 is NULL and just return false.
19295 2019-06-27 Iain Sandoe <iain@sandoe.co.uk>
19297 * config/rs6000/rs6000.c (darwin_rs6000_override_options): Honour
19298 user-specified float mode choice for kernel mode code.
19300 2019-06-27 Iain Sandoe <iain@sandoe.co.uk>
19302 * config/rs6000/darwin.h (ENDFILE_SPEC): Correct whitespace in the
19305 2019-06-27 Iain Sandoe <iain@sandoe.co.uk>
19307 * config/rs6000/rs6000.c (darwin_rs6000_override_options): Do not
19308 use longcall for 64b code.
19310 2019-06-27 Aaron Sawdey <acsawdey@linux.ibm.com>
19312 * builtins.c (get_memory_rtx): Fix comment.
19313 * optabs.def (movmem_optab): Change to cpymem_optab.
19314 * expr.c (emit_block_move_via_cpymem): Change movmem to cpymem.
19315 (emit_block_move_hints): Change movmem to cpymem.
19316 * defaults.h: Change movmem to cpymem.
19317 * targhooks.c (get_move_ratio): Change movmem to cpymem.
19318 (default_use_by_pieces_infrastructure_p): Ditto.
19319 * config/aarch64/aarch64-protos.h: Change movmem to cpymem.
19320 * config/aarch64/aarch64.c (aarch64_expand_movmem): Change movmem
19322 * config/aarch64/aarch64.h: Change movmem to cpymem.
19323 * config/aarch64/aarch64.md (movmemdi): Change name to cpymemdi.
19324 * config/alpha/alpha.h: Change movmem to cpymem in comment.
19325 * config/alpha/alpha.md (movmemqi, movmemdi, *movmemdi_1): Change
19327 * config/arc/arc-protos.h: Change movmem to cpymem.
19328 * config/arc/arc.c (arc_expand_movmem): Change movmem to cpymem.
19329 * config/arc/arc.h: Change movmem to cpymem in comment.
19330 * config/arc/arc.md (movmemsi): Change movmem to cpymem.
19331 * config/arm/arm-protos.h: Change movmem to cpymem in names.
19332 * config/arm/arm.c (arm_movmemqi_unaligned, arm_gen_movmemqi,
19333 gen_movmem_ldrd_strd, thumb_expand_movmemqi) Change movmem to cpymem.
19334 * config/arm/arm.md (movmemqi): Change movmem to cpymem.
19335 * config/arm/thumb1.md (movmem12b, movmem8b): Change movmem to cpymem.
19336 * config/avr/avr-protos.h: Change movmem to cpymem.
19337 * config/avr/avr.c (avr_adjust_insn_length, avr_emit_movmemhi,
19338 avr_out_movmem): Change movmem to cpymem.
19339 * config/avr/avr.md (movmemhi, movmem_<mode>, movmemx_<mode>):
19340 Change movmem to cpymem.
19341 * config/bfin/bfin-protos.h: Change movmem to cpymem.
19342 * config/bfin/bfin.c (single_move_for_movmem, bfin_expand_movmem):
19343 Change movmem to cpymem.
19344 * config/bfin/bfin.h: Change movmem to cpymem in comment.
19345 * config/bfin/bfin.md (movmemsi): Change name to cpymemsi.
19346 * config/c6x/c6x-protos.h: Change movmem to cpymem.
19347 * config/c6x/c6x.c (c6x_expand_movmem): Change movmem to cpymem.
19348 * config/c6x/c6x.md (movmemsi): Change name to cpymemsi.
19349 * config/frv/frv.md (movmemsi): Change name to cpymemsi.
19350 * config/ft32/ft32.md (movmemsi): Change name to cpymemsi.
19351 * config/h8300/h8300.md (movmemsi): Change name to cpymemsi.
19352 * config/i386/i386-expand.c (expand_set_or_movmem_via_loop,
19353 expand_set_or_movmem_via_rep, expand_movmem_epilogue,
19354 expand_setmem_epilogue_via_loop, expand_set_or_cpymem_prologue,
19355 expand_small_cpymem_or_setmem,
19356 expand_set_or_cpymem_prologue_epilogue_by_misaligned_moves,
19357 expand_set_or_cpymem_constant_prologue,
19358 ix86_expand_set_or_cpymem): Change movmem to cpymem.
19359 * config/i386/i386-protos.h: Change movmem to cpymem.
19360 * config/i386/i386.h: Change movmem to cpymem in comment.
19361 * config/i386/i386.md (movmem<mode>): Change name to cpymem.
19362 (setmem<mode>): Change expansion function name.
19363 * config/lm32/lm32.md (movmemsi): Change name to cpymemsi.
19364 * config/m32c/blkmov.md (movmemhi, movmemhi_bhi_op, movmemhi_bpsi_op,
19365 movmemhi_whi_op, movmemhi_wpsi_op): Change movmem to cpymem.
19366 * config/m32c/m32c-protos.h: Change movmem to cpymem.
19367 * config/m32c/m32c.c (m32c_expand_movmemhi): Change movmem to cpymem.
19368 * config/m32r/m32r.c (m32r_expand_block_move): Change movmem to cpymem.
19369 * config/m32r/m32r.md (movmemsi, movmemsi_internal): Change movmem
19371 * config/mcore/mcore.md (movmemsi): Change name to cpymemsi.
19372 * config/microblaze/microblaze.c: Change movmem to cpymem in comment.
19373 * config/microblaze/microblaze.md (movmemsi): Change name to cpymemsi.
19374 * config/mips/mips.c (mips_use_by_pieces_infrastructure_p):
19375 Change movmem to cpymem.
19376 * config/mips/mips.h: Change movmem to cpymem.
19377 * config/mips/mips.md (movmemsi): Change name to cpymemsi.
19378 * config/nds32/nds32-memory-manipulation.c
19379 (nds32_expand_movmemsi_loop_unknown_size,
19380 nds32_expand_movmemsi_loop_known_size, nds32_expand_movmemsi_loop,
19381 nds32_expand_movmemsi_unroll,
19382 nds32_expand_movmemsi): Change movmem to cpymem.
19383 * config/nds32/nds32-multiple.md (movmemsi): Change name to cpymemsi.
19384 * config/nds32/nds32-protos.h: Change movmem to cpymem.
19385 * config/pa/pa.c (compute_movmem_length): Change movmem to cpymem.
19386 (pa_adjust_insn_length): Change call to compute_movmem_length.
19387 * config/pa/pa.md (movmemsi, movmemsi_prereload, movmemsi_postreload,
19388 movmemdi, movmemdi_prereload,
19389 movmemdi_postreload): Change movmem to cpymem.
19390 * config/pdp11/pdp11.md (movmemhi, movmemhi1,
19391 movmemhi_nocc, UNSPEC_MOVMEM): Change movmem to cpymem.
19392 * config/riscv/riscv.c: Change movmem to cpymem in comment.
19393 * config/riscv/riscv.h: Change movmem to cpymem.
19394 * config/riscv/riscv.md: (movmemsi) Change name to cpymemsi.
19395 * config/rs6000/rs6000.md: (movmemsi) Change name to cpymemsi.
19396 * config/rx/rx.md: (UNSPEC_MOVMEM, movmemsi, rx_movmem): Change
19398 * config/s390/s390-protos.h: Change movmem to cpymem.
19399 * config/s390/s390.c (s390_expand_movmem, s390_expand_setmem,
19400 s390_expand_insv): Change movmem to cpymem.
19401 * config/s390/s390.md (movmem<mode>, movmem_short, *movmem_short,
19402 movmem_long, *movmem_long, *movmem_long_31z): Change movmem to cpymem.
19403 * config/sh/sh.md (movmemsi): Change name to cpymemsi.
19404 * config/sparc/sparc.h: Change movmem to cpymem in comment.
19405 * config/vax/vax-protos.h (vax_output_movmemsi): Remove prototype
19406 for nonexistent function.
19407 * config/vax/vax.h: Change movmem to cpymem in comment.
19408 * config/vax/vax.md (movmemhi, movmemhi1): Change movmem to cpymem.
19409 * config/visium/visium.h: Change movmem to cpymem in comment.
19410 * config/visium/visium.md (movmemsi): Change name to cpymemsi.
19411 * config/xtensa/xtensa.md (movmemsi): Change name to cpymemsi.
19412 * doc/md.texi: Change movmem to cpymem and update description to match.
19413 * doc/rtl.texi: Change movmem to cpymem.
19414 * target.def (use_by_pieces_infrastructure_p): Change movmem to cpymem.
19415 * doc/tm.texi: Regenerate.
19417 2019-06-27 Bill Schmidt <wschmidt@linux.ibm.com>
19419 * config/rs6000/rs6000.c (rs6000_option_override_internal): Enable
19420 -fvariable-expansion-in-unroller by default.
19421 * doc/invoke.texi (-fvariable-expansion-in-unroller): Document new
19424 2019-06-27 David Edelsohn <dje.gcc@gmail.com>
19427 2019-06-26 David Edelsohn <dje.gcc@gmail.com>
19428 * config.gcc (powerpc-ibm-aix*): Define target_gtfiles.
19430 * config.gcc(rs6000-*-*): Define target_gtfiles.
19432 2019-06-27 Jan Hubicka <jh@suse.cz>
19434 * ipa-devirt.c (odr_type_d): Add tbaa_enabled flag.
19435 (add_type_duplicate): When odr hash is not allocated, to nothing.
19436 (odr_based_tbaa_p): New function.
19437 (set_type_canonical_for_odr_type): New function.
19438 * ipa-utils.h (enable_odr_based_tbaa, odr_based_tbaa_p,
19439 set_type_canonical_for_odr_type): New.
19440 * tree.c (gimple_canonical_types_compatible_p): ODR types with
19441 ODR based TBAA are not equivalent to non-ODR types.
19443 2019-06-27 Martin Liska <mliska@suse.cz>
19445 PR tree-optimization/90974
19446 PR rtl-optimization/90975
19447 PR rtl-optimization/90976
19449 PR tree-optimization/91017
19450 * config/i386/i386-expand.c (ix86_expand_rounddf_32): Remove
19452 * lra.c (lra_set_insn_recog_data): Remove a leftover from
19453 initial commit of IRA.
19454 * optabs.c (expand_twoval_binop): Use xop0 and xop1 instead
19456 * tree-vect-loop.c (vect_create_epilog_for_reduction):
19457 Remove unused mode1.
19458 * tree-vect-stmts.c (vectorizable_call): Remove dead assignment
19461 2019-06-27 Jakub Jelinek <jakub@redhat.com>
19464 * config/i386/sse.md (avx_vec_concat<mode>): Use nonimmediate_operand
19465 instead of register_operand for operands[1], add m to its constraints
19466 if operands[2] uses "C" constraint. Ensure in condition that if
19467 operands[2] is not 0, then operands[1] is not a MEM. For last two
19468 alternatives, use unaligned loads instead of aligned if operands[1] is
19469 misaligned_operand.
19471 2019-06-27 Martin Liska <mliska@suse.cz>
19473 * asan.c (asan_emit_allocas_unpoison): Remove obviously
19475 * bt-load.c (move_btr_def): Likewise.
19476 * builtins.c (expand_builtin_apply_args_1): Likewise.
19477 (expand_builtin_apply): Likewise.
19478 * cfgexpand.c (expand_asm_stmt): Likewise.
19479 (construct_init_block): Likewise.
19480 * cfghooks.c (verify_flow_info): Likewise.
19481 * cfgloopmanip.c (remove_path): Likewise.
19482 * cfgrtl.c (rtl_verify_bb_layout): Likewise.
19483 * cgraph.c (cgraph_node::set_pure_flag): Likewise.
19484 * combine.c (simplify_if_then_else): Likewise.
19485 * config/i386/i386.c (ix86_setup_incoming_vararg_bounds): Likewise.
19486 (choose_basereg): Likewise.
19487 (ix86_expand_prologue): Likewise.
19488 (ix86_preferred_output_reload_class): Likewise.
19489 * cselib.c (cselib_record_sets): Likewise.
19490 * df-scan.c (df_scan_alloc): Likewise.
19491 * dojump.c (do_jump_by_parts_greater_rtx): Likewise.
19492 * early-remat.c (early_remat::record_equiv_candidates): Likewise.
19493 * emit-rtl.c (try_split): Likewise.
19494 * graphite-scop-detection.c (assign_parameter_index_in_region):
19496 * ipa-cp.c (cgraph_edge_brings_all_agg_vals_for_node): Likewise.
19497 * ira-color.c (setup_profitable_hard_regs): Likewise.
19498 * ira.c (rtx_moveable_p): Likewise.
19499 * lra-eliminations.c (eliminate_regs_in_insn): Likewise.
19500 * read-rtl.c (read_subst_mapping): Likewise.
19501 * regrename.c (scan_rtx): Likewise.
19502 * reorg.c (fill_slots_from_thread): Likewise.
19503 * tree-inline.c (tree_function_versioning): Likewise.
19504 * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
19505 * tree-ssa-sink.c (statement_sink_location): Likewise.
19506 * tree-ssa-threadedge.c (thread_across_edge): Likewise.
19507 * tree-vect-loop.c (vect_get_loop_niters): Likewise.
19508 (vect_create_epilog_for_reduction): Likewise.
19509 * tree.c (build_nonstandard_integer_type): Likewise.
19511 2019-06-27 Richard Biener <rguenther@suse.de>
19513 * tree-ssa-sccvn.c (vn_reference_lookup_3): Encode valueized RHS.
19515 2019-06-27 Jun Ma <JunMa@linux.alibaba.com>
19517 PR tree-optimization/89772
19518 * gimple-fold.c (gimple_fold_builtin_memchr): consider trailing nuls in
19519 out-of-bound accesses checking.
19521 2019-06-27 Martin Liska <mliska@suse.cz>
19523 PR tree-optimization/91014
19524 * tree-ssa-dse.c (initialize_ao_ref_for_dse): Bail out
19525 when LHS is NULL_TREE.
19527 2019-06-27 Martin Liska <mliska@suse.cz>
19529 * symbol-summary.h (traverse): Pass
19530 argument a to the call of callback.
19531 (gt_ggc_mx): Mark arguments as unused.
19532 (gt_pch_nx): Likewise.
19534 2019-06-27 Kewen Lin <linkw@gcc.gnu.org>
19537 * loop-iv.c (find_simple_exit): Call finite_loop_p to update
19540 2019-06-26 Jeff Law <law@redhat.com>
19542 PR tree-optimization/90883
19543 * tree-ssa-dse.c (delete_dead_or_redundant_call): Fix signature.
19544 (delete_dead_or_redundant_assignment): Likewise.
19546 PR tree-optimization/90883
19547 * tree-ssa-alias.c (stmt_kills_ref_p): Handle BUILT_IN_CALLOC.
19548 * tree-ssa-dse.c: Update various comments to distinguish between
19549 dead and redundant stores.
19550 (initialize_ao_ref_for_dse): Handle BUILT_IN_CALLOC.
19551 (dse_optimize_redundant_stores): New function.
19552 (delete_dead_or_redundant_call): Renamed from delete_dead_call.
19553 Distinguish between dead and redundant calls in dump output. All
19555 (delete_dead_or_redundant_assignment): Similarly for assignments.
19556 (dse_optimize_stmt): Handle _CHK variants. For statements which
19557 store 0 into multiple memory locations, try to prove a subsequent
19558 store is redundant.
19560 2019-06-26 Uroš Bizjak <ubizjak@gmail.com>
19563 * config/i386/i386.c (ix86_autovectorize_vector_sizes):
19564 Autovectorize 8-byte vectors for TARGET_MMX_WITH_SSE.
19566 2019-06-26 Iain Sandoe <iain@sandoe.co.uk>
19568 * config/rs6000/rs6000-internal.h (branch_island): New typedef.
19569 (branch_islands): New extern.
19570 * config/rs6000/rs6000-logue.c (macho_branch_islands): Moved from
19571 * config/rs6000/rs6000.c: .. here.
19573 2019-06-26 Iain Sandoe <iain@sandoe.co.uk>
19575 * config.gcc (powerpc*-*-linux*): Move target_gtfiles from here..
19576 (powerpc*-*-*) ... to here.
19578 2019-06-26 Jeff Law <law@redhat.com>
19580 * tree-ssa-dse.c (initialize_ao_ref_for_dse): Handle _chk variants of
19581 memcpy, memmove and memset builtins.
19582 (maybe_trim_memstar_call): Likewise.
19584 2019-06-26 David Edelsohn <dje.gcc@gmail.com>
19586 * config/rs6000/rs6000-logue.c: Add #ifndef TARGET_PROFILE_KERNEL.
19588 2019-06-26 David Edelsohn <dje.gcc@gmail.com>
19590 * config.gcc (powerpc-ibm-aix*): Define target_gtfiles.
19592 2019-06-26 Segher Boessenkool <segher@kernel.crashing.org>
19594 * config/rs6000/rs6000-internal.h (rs6000_keep_leaf_when_profiled): New
19596 * config/rs6000/rs6000-logue.c (rs6000_keep_leaf_when_profiled): Remove
19598 * config/rs6000/rs6000-logue.c (rs6000_keep_leaf_when_profiled): Delete
19601 2019-06-26 Segher Boessenkool <segher@kernel.crashing.org>
19603 * config/rs6000/rs6000.c: Fix previous commit, it missed some changes.
19605 2019-06-26 Richard Biener <rguenther@suse.de>
19608 * tree-inline.c (remap_ssa_name): Copy SSA range info.
19610 2019-06-26 Richard Biener <rguenther@suse.de>
19612 * lto-streamer.h (lto_bitmap_alloc): Remove.
19613 (lto_bitmap_free): Likewise.
19614 * lto-streamer.c (lto_bitmap_alloc): Remove.
19615 (lto_bitmap_free): Likewise.
19616 (lto_obstack): Likewise.
19617 (lto_obstack_initialized): Likewise.
19618 * lto-streamer-out.c (lto_output): Use own obstack for local
19619 bitmap, free it consistently.
19621 2019-06-26 Jakub Jelinek <jakub@redhat.com>
19624 * config/i386/sse.md
19625 (*<extract_type>_vinsert<shuffletype><extract_suf>_0): Use vmovupd,
19626 vmovups, vmovdqu, vmovdqu32 or vmovdqu64 instead of the aligned
19627 insns if operands[2] is misaligned_operand.
19629 2019-06-26 Li Jia He <helijia@linux.ibm.com>
19631 * config/rs6000/rs6000.h (TARGET_MADDLD): Remove the restriction of
19633 * config/rs6000/rs6000.md (maddld): Change maddld match_operand from DI
19636 2019-06-26 Segher Boessenkool <segher@kernel.crashing.org>
19638 * doc/invoke.texi (Warning Options): Fix some @opindex syntax.
19640 2019-06-26 Martin Liska <mliska@suse.cz>
19642 PR tree-optimization/90973
19643 * tree-vect-loop.c (vect_get_known_peeling_cost): Use
19644 epilogue_cost_vec instead of prologue_cost_vec for
19647 2019-06-26 Martin Liska <mliska@suse.cz>
19649 * bb-reorder.c (connect_better_edge_p): Add missing else
19650 statement in the middle of if-else statements.
19652 2019-06-25 Hongtao Liu <hongtao.liu@intel.com>
19653 H.J. Lu <hongjiu.lu@intel.com>
19654 Olga Makhotina <olga.makhotina@intel.com>
19656 * common/config/i386/i386-common.c
19657 (OPTION_MASK_ISA_AVX512VP2INTERSECT_SET,
19658 OPTION_MASK_ISA_AVX512VP2INTERSECT_UNSET): New macros.
19659 (OPTION_MASK_ISA2_AVX512F_UNSET): Add
19660 OPTION_MASK_ISA_AVX512VP2INTERSECT_UNSET.
19661 (ix86_handle_option): Handle -mavx512vp2intersect.
19662 * config/i386/avx512vp2intersectintrin.h: New.
19663 * config/i386/avx512vp2intersectvlintrin.h: New.
19664 * config/i386/cpuid.h (bit_AVX512VP2INTERSECT): New.
19665 * config/i386/driver-i386.c (host_detect_local_cpu): Detect
19666 AVX512VP2INTERSECT.
19667 * config/i386/i386-builtin-types.def: Add new types.
19668 * config/i386/i386-builtin.def: Add new builtins.
19669 * config/i386/i386-builtins.c: (enum processor_features): Add
19670 F_AVX512VP2INTERSECT.
19671 (static const _isa_names_table isa_names_table): Ditto.
19672 * config/i386/i386-c.c (ix86_target_macros_internal): Define
19673 __AVX512VP2INTERSECT__.
19674 * config/i386/i386-expand.c (ix86_expand_builtin): Expand
19675 IX86_BUILTIN_2INTERSECTD512, IX86_BUILTIN_2INTERSECTQ512,
19676 IX86_BUILTIN_2INTERSECTD256, IX86_BUILTIN_2INTERSECTQ256,
19677 IX86_BUILTIN_2INTERSECTD128, IX86_BUILTIN_2INTERSECTQ128.
19678 * config/i386/i386-modes.def (P2QI, P2HI): New modes.
19679 * config/i386/i386-options.c (ix86_target_string): Add
19680 -mavx512vp2intersect.
19681 (ix86_option_override_internal): Handle AVX512VP2INTERSECT.
19682 * config/i386/i386.c (ix86_hard_regno_nregs): Allocate two regs for
19683 P2HImode and P2QImode.
19684 (ix86_hard_regno_mode_ok): Register pair only starts at even hardreg
19685 number for P2QImode and P2HImode.
19686 (ix86_regmode_natural_size): New function.
19687 * config/i386/i386.h (TARGET_AVX512VP2INTERSECT,
19688 TARGET_AVX512VP2INTERSECT_P, PTA_AVX512VP2INTERSECT
19689 REGMODE_NATURAL_SIZE, MASK_PAIR_REGNO_P): New.
19690 * config/i386/i386-protos.h (ix86_regmode_natural_size): Declare
19691 * config/i386/i386.opt: Add -mavx512vp2intersect.
19692 * config/i386/immintrin.h: Include avx512vp2intersectintrin.h and
19693 avx512vp2intersectvlintrin.h.
19694 * config/i386/sse.md (define_c_enum "unspec"): Add UNSPEC_VP2INTERSECT.
19695 (define_mode_iterator VI48_AVX512VP2VL): New.
19696 (avx512vp2intersect_2intersect<mode>,
19697 avx512vp2intersect_2intersectv16si): New define_insn patterns.
19698 * config.gcc: Add avx512vp2intersectvlintrin.h and
19699 avx512vp2intersectintrin.h to extra_headers.
19700 * doc/invoke.texi: Document -mavx512vp2intersect.
19702 2019-06-25 Iain Sandoe <iain@sandoe.co.uk>
19704 * config/rs6000/darwin.h (ENDFILE_SPEC): New.
19706 2019-06-25 Bill Seurer <seurer@linux.vnet.ibm.com>
19708 * config/rs6000/rs6000.c (stack_info, rs6000_pic_labelno,
19709 savres_routine_syms, savres_routine_name, morestack_ref,
19710 rs6000_init_machine_status, save_reg_p, first_reg_to_save,
19711 first_fp_reg_to_save, first_altivec_reg_to_save, compute_vrsave_mask,
19712 compute_save_world_info, is_altivec_return_reg, fixed_reg_p,
19713 rs6000_savres_strategy, rs6000_stack_info, debug_stack_info,
19714 rs6000_return_addr, rs6000_decl_ok_for_sibcall,
19715 rs6000_function_ok_for_sibcall, rs6000_ra_ever_killed,
19716 rs6000_emit_load_toc_table, rs6000_emit_eh_reg_restore, uses_TOC,
19717 create_TOC_reference, rs6000_aix_asm_output_dwarf_table_ref,
19718 rs6000_emit_stack_tie, rs6000_emit_allocate_stack_1,
19719 get_stack_clash_protection_probe_interval,
19720 get_stack_clash_protection_guard_size,
19721 rs6000_emit_probe_stack_range_stack_clash, rs6000_emit_allocate_stack,
19722 rs6000_emit_probe_stack_range, output_probe_stack_range_1,
19723 interesting_frame_related_regno, output_probe_stack_range_stack_clash,
19724 output_probe_stack_range, rs6000_frame_related, generate_set_vrsave,
19725 gen_frame_set, gen_frame_load, gen_frame_store, emit_frame_save,
19726 gen_frame_mem_offset, rs6000_savres_routine_name,
19727 rs6000_savres_routine_sym, rs6000_emit_stack_reset,
19728 ptr_regno_for_savres, rs6000_emit_savres_rtx,
19729 rs6000_emit_prologue_move_from_cr, split_stack_arg_pointer_used_p,
19730 rs6000_global_entry_point_prologue_needed_p,
19731 rs6000_get_separate_components, rs6000_components_for_bb,
19732 rs6000_disqualify_components, rs6000_emit_prologue_components,
19733 rs6000_emit_epilogue_components, rs6000_set_handled_components,
19734 emit_vrsave_prologue, emit_split_stack_prologue, rs6000_emit_prologue,
19735 rs6000_output_savres_externs, rs6000_output_function_prologue,
19736 rs6000_keep_leaf_when_profiled, load_cr_save, restore_saved_cr,
19737 load_lr_save, restore_saved_lr, add_crlr_cfa_restore,
19738 offset_below_red_zone_p, emit_cfa_restores, rs6000_emit_epilogue,
19739 rs6000_output_function_epilogue, gen_add3_const,
19740 rs6000_expand_split_stack_prologue, rs6000_live_on_entry,
19741 rs6000_split_stack_space_check, rs6000_save_toc_in_prologue_p): Moved
19743 (machine_function): Moved to rs6000.h.
19744 (rs6000_stack_t, ALTIVEC_REG_BIT, quad_address_offset_p) Moved to
19746 * config/rs6000/rs6000-logue.c(stack_info, rs6000_pic_labelno,
19747 savres_routine_syms, savres_routine_name, morestack_ref,
19748 rs6000_init_machine_status, save_reg_p, first_reg_to_save,
19749 first_fp_reg_to_save, first_altivec_reg_to_save, compute_vrsave_mask,
19750 compute_save_world_info, is_altivec_return_reg, fixed_reg_p,
19751 rs6000_savres_strategy, rs6000_stack_info, debug_stack_info,
19752 rs6000_return_addr, rs6000_decl_ok_for_sibcall,
19753 rs6000_function_ok_for_sibcall, rs6000_ra_ever_killed,
19754 rs6000_emit_load_toc_table, rs6000_emit_eh_reg_restore, uses_TOC,
19755 create_TOC_reference, rs6000_aix_asm_output_dwarf_table_ref,
19756 rs6000_emit_stack_tie, rs6000_emit_allocate_stack_1,
19757 get_stack_clash_protection_probe_interval,
19758 get_stack_clash_protection_guard_size,
19759 rs6000_emit_probe_stack_range_stack_clash, rs6000_emit_allocate_stack,
19760 rs6000_emit_probe_stack_range, output_probe_stack_range_1,
19761 interesting_frame_related_regno, output_probe_stack_range_stack_clash,
19762 output_probe_stack_range, rs6000_frame_related, generate_set_vrsave,
19763 gen_frame_set, gen_frame_load, gen_frame_store, emit_frame_save,
19764 gen_frame_mem_offset, rs6000_savres_routine_name,
19765 rs6000_savres_routine_sym, rs6000_emit_stack_reset,
19766 ptr_regno_for_savres, rs6000_emit_savres_rtx,
19767 rs6000_emit_prologue_move_from_cr, split_stack_arg_pointer_used_p,
19768 rs6000_global_entry_point_prologue_needed_p,
19769 rs6000_get_separate_components, rs6000_components_for_bb,
19770 rs6000_disqualify_components, rs6000_emit_prologue_components,
19771 rs6000_emit_epilogue_components, rs6000_set_handled_components,
19772 emit_vrsave_prologue, emit_split_stack_prologue, rs6000_emit_prologue,
19773 rs6000_output_savres_externs, rs6000_output_function_prologue,
19774 rs6000_keep_leaf_when_profiled, load_cr_save, restore_saved_cr,
19775 load_lr_save, restore_saved_lr, add_crlr_cfa_restore,
19776 offset_below_red_zone_p, emit_cfa_restores, rs6000_emit_epilogue,
19777 rs6000_output_function_epilogue, gen_add3_const,
19778 rs6000_expand_split_stack_prologue, rs6000_live_on_entry,
19779 rs6000_split_stack_space_check, rs6000_save_toc_in_prologue_p): Moved
19780 to here from rs6000.c.
19781 * config/rs6000/rs6000.h (machine_function): Moved to here from rs6000.c.
19782 * config/rs6000/rs6000-internal.h: (rs6000_stack_t, ALTIVEC_REG_BIT,
19783 quad_address_offset_p) Moved to here from rs6000.c.
19784 * config/rs6000/t-rs6000: Add new source file rs6000-logue.c.
19785 * config/config.gcc: Add new source file rs6000-logue.c to garbage
19788 2019-06-25 Martin Liska <mliska@suse.cz>
19790 * hash-table.c (hashtab_chk_error): Move here from ...
19791 * hash-table.h (hashtab_chk_error): ... here.
19793 2019-06-25 Martin Liska <mliska@suse.cz>
19795 PR tree-optimization/90978
19796 * df-scan.c (df_update_entry_block_defs): Remove dead else
19798 (df_update_exit_block_uses): Likewise.
19800 2019-06-25 Kwok Cheung Yeung <kcy@codesourcery.com>
19801 Andrew Stubbs <ams@codesourcery.com>
19803 * config.gcc (thread_file): Set to gcn for AMD GCN.
19804 * config/gcn/gcn.c (gcn_emutls_var_init): New function.
19805 (TARGET_EMUTLS_VAR_INIT): New hook.
19807 2019-06-25 Martin Jambor <mjambor@suse.cz>
19810 * ipa-cp.c (ipcp_bits_lattice::meet_with): Remove assert.
19812 2019-06-25 Richard Biener <rguenther@suse.de>
19814 PR tree-optimization/90930
19815 * tree-ssa-reassoc.c (reassociate_bb): Only rewrite expression
19816 into parallel form in the last pass instance.
19818 2019-06-25 Claudiu Zissulescu <claziss@synopsys.com>
19820 * config/arc/arc.c (arc_symbol_binds_local_p): New function.
19821 (arc_legitimize_pic_address): Simplify and cleanup the function.
19822 (SYMBOLIC_CONST): Remove.
19823 (prepare_pic_move): Likewise.
19824 (prepare_move_operands): Handle complex mov cases here.
19825 (arc_legitimize_address_0): Remove call to
19826 arc_legitimize_pic_address.
19827 (arc_legitimize_address): Remove call to
19828 arc_legitimize_tls_address.
19829 * config/arc/arc.md (movqi_insn): Allow Cm3 match.
19830 (movhi_insn): Likewise.
19832 2019-06-25 Jozef Lawrynowicz <jozef.l@mittosystems.com>
19834 * config/msp430/msp430.h: Use __int20__ for SIZE_TYPE and
19836 * gimple-ssa-sprintf.c (build_intmax_type_nodes): Accept "__intN__"
19837 format of "__intN" types for UINTMAX_TYPE.
19838 * stor-layout.c (initialize_sizetypes): Accept "__intN__"
19839 format of "__intN" types for SIZETYPE.
19840 * tree.c (build_common_tree_nodes): Accept "__intN__"
19841 format of "__intN" types for SIZE_TYPE and PTRDIFF_TYPE.
19842 * doc/invoke.texi: Document that __intN__ disables pedantic
19845 2019-06-25 Jan Hubicka <jh@suse.cz>
19847 * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Check that
19848 base2_alias_set is non-zero before doing TBAA based disambiguation.
19850 2019-06-25 Martin Liska <mliska@suse.cz>
19852 PR tree-optimization/90973
19853 * tree-vect-loop.c (vect_get_known_peeling_cost): Sum retval
19854 of prologue and epilogue.
19856 2019-06-24 Jan Hubicka <jh@suse.cz>
19858 * ipa-utils.h (type_with_linkage_p): Verify that type is
19860 (odr_type_p): Remove extra return.
19861 * lto-streamer-out.c (hash_tree): Hash TYPE_CXX_ODR_P;
19862 hash STRING_FLAG only for arrays and integers.
19863 * tree-stremaer-in.c (unpack_ts_type_common_value_fields):
19864 Update analogously.
19865 * tree-streamer-out.c (pack_ts_type_common_value_fields):
19867 * print-tree.c (print_node): Print cxx-odr-p
19869 * tree.c (need_assembler_name_p): Also check that type
19871 (verify_type_variant): Update verification of SRING_FLAG;
19872 also check CXX_ODR_P.
19873 * tree.h (ARRAY_OR_INTEGER_TYPE_CHECK): New macro.
19874 (TYPE_STRING_FLAG): Use it.
19875 (TYPE_CXX_ODR_P): New macro.
19876 * dwarf2out.c (gen_array_type_die): First check that type
19877 is an array and then test string flag.
19879 2019-06-24 Richard Biener <rguenther@suse.de>
19881 PR tree-optimization/90972
19882 * tree-vect-stmts.c (vect_init_vector): Handle CONSTANT_CLASS_P
19883 in common code, dealing with STRING_CST properly.
19885 2019-06-24 Richard Biener <rguenther@suse.de>
19887 PR tree-optimization/90930
19888 PR tree-optimization/90316
19889 * tree-ssa-alias.c (walk_non_aliased_vuses): Add missing
19890 decrement of limit.
19892 2019-06-24 Martin Sebor <msebor@redhat.com>
19894 * tree-pretty-print.h: Remove unnecessary punctuation characters
19896 * tree-ssa.c (release_defs_bitset): Correct preprocessor conditional.
19898 2019-06-24 Jonathan Wakely <jwakely@redhat.com>
19900 * ginclude/float.h (FLT_DECIMAL_DIG, DBL_DECIMAL_DIG, LDBL_DECIMAL_DIG)
19901 (FLT_HAS_SUBNORM, DBL_HAS_SUBNORM, LDBL_HAS_SUBNORM, FLT_TRUE_MIN)
19902 (DBL_TRUE_MIN, LDBL_TRUE_MIN): Also define for C++17.
19904 2019-06-23 Iain Sandoe <iain@sandoe.co.uk>
19906 * config/rs6000/darwin.h: Handle GCC target pragma.
19908 2019-06-23 Iain Sandoe <iain@sandoe.co.uk>
19910 * config/rs6000/darwin.h: (__PPC__, __PPC64__): New.
19912 2019-06-22 Jeff Law <law@redhat.com>
19914 * config/avr/avr.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Remove.
19916 2019-06-22 Jan Hubicka <jh@suse.cz>
19918 * tree-ssa-alias.c (nonoverlapping_component_refs_p): Do not
19919 give up on bitfields; continue searching for different refs
19922 2019-06-21 Jakub Jelinek <jakub@redhat.com>
19924 * tree-vect-data-refs.c (vect_find_stmt_data_reference): Handle
19925 even zero DR_OFFSET, but DR_BASE_ADDRESS of POINTER_PLUS_EXPR
19926 containing the offset as possible simd lane access. Look through
19927 widening conversion. Move the
19928 TREE_CODE (DR_INIT (newdr)) == INTEGER_CST test earlier and reindent.
19930 2019-06-21 Richard Biener <rguenther@suse.de>
19932 PR tree-optimization/90930
19933 * tree-ssa-reassoc.c (rewrite_expr_tree_parallel): Set visited
19934 flag on new stmts to avoid re-processing them.
19936 2019-06-21 Matthew Beliveau <mbelivea@redhat.com>
19938 PR c++/90875 - added -Wswitch-outside-range option
19939 * doc/invoke.texi (Wswitch-outside-range): Document.
19941 2019-06-21 Jeff Law <law@redhat.com>
19943 PR tree-optimization/90949
19944 * tree-ssa-copy.c (fini_copy_prop): Use reset_flow_sensitive_info.
19945 * tree-ssanames.c (reset_flow_sensitive_info): Reset non-null state.
19947 2019-06-21 Richard Biener <rguenther@suse.de>
19950 * dwarf2out.c (prune_unused_types_walk): Always consider
19951 function-local extern declarations as used.
19953 2019-06-21 Richard Biener <rguenther@suse.de>
19955 PR tree-optimization/90913
19956 * tree-vect-loop-manip.c (vect_loop_versioning): Do not re-use
19957 the scalar variant of if-conversion versioning.
19959 2019-06-21 Jakub Jelinek <jakub@redhat.com>
19961 * omp-low.c (lower_rec_simd_input_clauses): Add rvar2 argument,
19962 create another "omp scan inscan exclusive" array if
19963 !ctx->scan_inclusive.
19964 (lower_rec_input_clauses): Handle exclusive scan inscan reductions.
19965 (lower_omp_scan): Likewise.
19966 * tree-vectorizer.h (struct _stmt_vec_info): Use 3-bit instead of
19967 2-bit bitfield for simd_lane_access_p member.
19968 * tree-vect-data-refs.c (vect_analyze_data_refs): Also handle
19969 aux == (void *)-4 as simd lane access.
19970 * tree-vect-stmts.c (check_scan_store): Handle exclusive scan. Update
19971 comment with permutations to show the canonical permutation order.
19972 (vectorizable_scan_store): Handle exclusive scan.
19973 (vectorizable_store): Call vectorizable_scan_store even for
19974 STMT_VINFO_SIMD_LANE_ACCESS_P > 3.
19976 * tree-vect-data-refs.c (vect_find_stmt_data_reference): Handle
19977 "omp simd array" arrays with one byte elements.
19979 2019-06-20 Uroš Bizjak <ubizjak@gmail.com>
19981 * config/alpha/alpha.md (@unaligned_store<mode>):
19982 Rename from unaligned_store<mode>.
19983 (@reload_in<mode>_aligned): Rename from reload_in<mode>_aligned.
19984 * config/alpha/sync.md (@load_locked_<mode>): Rename
19985 from load_locked_<mode>.
19986 (@store_conditional_<mode>): Rename from store_conditional_<mode>.
19987 (@atomic_compare_and_swap<mode>_1): Rename
19988 from atomic_compare_and_swap<mode>_1.
19989 (@atomic_exchange<mode>_1): Rename from atomic_exchange<mode>_1.
19990 * config/alpha/alpha.c (alpha_expand_mov_nobwx):
19991 Use gen_reload_in_aligned and gen_unaligned_store.
19992 (emit_load_locked): Remove.
19993 (emit_store_conditional): Ditto.
19994 (alpha_split_atomic_op): Use gen_load_locked and gen_store_conditional.
19995 (alpha_split_compare_and_swap): Ditto.
19996 (alpha_expand_compare_and_swap_12): Use gen_atomic_compare_and_swap_1.
19997 (alpha_split_compare_and_swap_12): Use gen_load_locked
19998 and gen_store_conditional.
19999 (alpha_split_atomic_exchange): Ditto.
20000 (alpha_expand_atomic_exchange_12): Use gen_atomic_exchange_1.
20001 (alpha_split_atomic_exchange_12): Use gen_load_locked
20002 and gen_store_conditional.
20004 2019-06-20 Richard Earnshaw <rearnsha@arm.com>
20006 * config/aarch64/aarch64-errata.h: New file.
20007 * config/aarch64/aarch64-elf-raw.h (CA53_ERR_835769_SPEC): Delete.
20008 (CA53_ERR_843419_SPEC): Delete.
20009 (LINK_SPEC): Use AARCH64_ERRATA_LINK_SPEC instead of above.
20010 * config/aarch64/aarch64-linux.h: Likewise.
20011 * config/aarch64/aarch64-netbsd.h: Likewise.
20012 * config/aarch64/aarch64-freebsd.h: Likewise.
20014 2019-06-20 Marek Polacek <polacek@redhat.com>
20016 * config/sh/sh.c (sh2a_function_vector_p): Use get_attribute_name.
20018 2019-06-20 Michael Meissner <meissner@linux.ibm.com>
20020 * config/rs6000/rs6000.md (isa attribute): Add support for
20021 for a future processor.
20023 2019-06-20 H.J. Lu <hongjiu.lu@intel.com>
20026 * config/i386/i386-expand.c (ix86_expand_vector_set): Generate
20027 standard scalar operation pattern for V2DF.
20028 * config/i386/sse.md (*<sse>_vm<plusminus_insn><mode>3): New.
20029 (*<sse>_vm<multdiv_mnemonic><mode>3): Likewise.
20030 (*ieee_<ieee_maxmin><mode>3): Likewise.
20031 (vec_setv2df_0): Likewise.
20033 2019-06-20 Jan Hubicka <jh@suse.cz>
20035 * tree-ssa-alias.c (aliasing_component_refs_p): Remove ref2_is_decl
20036 parameter; it has no use in gimple memory model.
20037 (indirect_ref_may_alias_decl_p): Update.
20039 2019-06-20 Martin Liska <mliska@suse.cz>
20041 * params.def (PARAM_HASH_TABLE_VERIFICATION_LIMIT): Decrease
20044 2019-06-20 Jakub Jelinek <jakub@redhat.com>
20046 * tree-vect-stmts.c (enum scan_store_kind): New type.
20047 (scan_store_can_perm_p): Change last argument from int * to
20048 vec<enum scan_store_kind> *, record precisely which permutations
20049 need whole vector left shift or that plus VEC_COND_EXPR.
20050 (vectorizable_scan_store): Adjust caller, use whole vector left shift
20051 and additional VEC_COND_EXPR only for those iterations that need it.
20053 2019-06-20 Alexandre Oliva <oliva@adacore.com>
20055 * config.gcc: Fix ARM --with-fpu checking and error message.
20057 2019-06-19 Marek Polacek <polacek@redhat.com>
20059 PR c++/60364 - noreturn after first decl not diagnosed.
20060 * attribs.c (get_attribute_namespace): No longer static.
20061 (decl_attributes): Avoid shadowing. Preserve the C++11 form for C++11
20063 (attr_noreturn_exclusions): Make it extern.
20064 * attribs.h (get_attribute_namespace): Declare.
20065 * tree-inline.c (function_attribute_inlinable_p): Use
20066 get_attribute_name.
20068 2019-06-19 Martin Sebor <msebor@redhat.com>
20070 PR tree-optimization/90626
20071 * tree-ssa-strlen.c (strxcmp_unequal): Fix typos.
20073 PR tree-optimization/90626
20074 * tree-ssa-strlen.c (strxcmp_unequal): New function.
20075 (handle_builtin_string_cmp): Call it.
20077 2019-06-19 Iain Sandoe <iain@sandoe.co.uk>
20079 * config/darwin.h (DRIVER_SELF_SPECS): Add RDYNAMIC, DARWIN_PIE_SPEC
20080 and DARWIN_NOPIE_SPEC.
20081 (RDYNAMIC): New, modified from DARWIN_EXPORT_DYNAMIC.
20082 (DARWIN_PIE_SPEC): Collate from darwin.h and darwin9.h.
20083 (DARWIN_NOPIE_SPEC): Collate from darwin10.h.
20084 (DARWIN_NOCOMPACT_UNWIND): New from darwin10.h
20085 (DARWIN_EXPORT_DYNAMIC): Delete.
20086 * config/darwin10.h (LINK_GCC_C_SEQUENCE_SPEC): Move no_compact_unwind
20087 and pie options processing to darwin.h.
20088 * config/darwin9.h (DARWIN_PIE_SPEC): Move pie processing to darwin.h
20090 2019-06-19 Iain Sandoe <iain@sandoe.co.uk>
20092 * config/darwin-driver.c (darwin_driver_init): Fix off-by-one errors
20093 in computing the number of options to be moved.
20095 2019-06-19 Maya Rashish <coypu@sdf.org>
20097 * config/arm/netbsd-elf.h (SYSARCH_ARM_SYNC_ICACHE): New definition.
20098 (CLEAR_INSN_CACHE) Use it.
20100 2019-06-19 Uroš Bizjak <ubizjak@gmail.com>
20102 * config/i386/i386.md (cmpstrnsi): Remove dead code.
20104 2019-06-19 Wilco Dijkstra <wdijkstr@arm.com>
20106 PR middle-end/84521
20107 * builtins.c (expand_builtin_setjmp_setup): Save
20108 hard_frame_pointer_rtx.
20109 (expand_builtin_setjmp_receiver): Do not emit sfp = fp move since we
20111 * function.c (expand_function_start): Save hard_frame_pointer_rtx for
20113 * lra-eliminations.c (eliminate_regs_in_insn): Remove sfp = fp
20115 (remove_reg_equal_offset_note): Remove unused function.
20116 * reload1.c (eliminate_regs_in_insn): Remove sfp = hfp elimination
20118 * config/arc/arc.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Remove.
20119 (arc_builtin_setjmp_frame_value): Remove function.
20120 * config/avr/avr.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Remove.
20121 (avr_builtin_setjmp_frame_value): Remove function.
20122 * config/i386/i386.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Remove.
20123 (ix86_builtin_setjmp_frame_value): Remove function.
20124 * config/pa/pa.md (nonlocal_goto): Remove FP adjustment.
20125 * config/sparc/sparc.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Remove.
20126 (sparc_builtin_setjmp_frame_value): Remove function.
20127 * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Remove.
20128 (vax_builtin_setjmp_frame_value): Remove function.
20129 * config/xtensa/xtensa.c (xtensa_frame_pointer_required): Force frame
20130 pointer if has_nonlocal_label.
20132 2019-06-19 Jakub Jelinek <jakub@redhat.com>
20134 * doc/md.texi: Document vec_shl_<mode> pattern.
20135 * optabs.def (vec_shl_optab): New optab.
20136 * optabs.c (shift_amt_for_vec_perm_mask): Add shift_optab
20137 argument, if == vec_shl_optab, check for left whole vector shift
20138 pattern rather than right shift.
20139 (expand_vec_perm_const): Add vec_shl_optab support.
20140 * optabs-query.c (can_vec_perm_var_p): Mention also vec_shl optab
20142 * tree-vect-generic.c (lower_vec_perm): Support permutations which
20143 can be handled by vec_shl_optab.
20144 * tree-vect-stmts.c (scan_store_can_perm_p): New function.
20145 (check_scan_store): Use it.
20146 (vectorizable_scan_store): If target can't do normal permutations,
20147 try to use whole vector left shifts and if needed a VEC_COND_EXPR
20149 * config/i386/sse.md (vec_shl_<mode>): New expander.
20151 * omp-low.c (lower_rec_input_clauses): Handle references properly
20153 (lower_omp_scan): Likewise.
20155 2019-06-19 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
20157 * tree-ssa-address.c (preferred_mem_scale_factor): Handle when
20158 mem_mode is BLKmode.
20160 2019-06-18 Max Filippov <jcmvbkbc@gmail.com>
20163 * config/xtensa/xtensa.c (xtensa_expand_prologue): Add stack
20164 pointer adjustment for the case of no callee-saved registers and
20165 stack frame bigger than 128 bytes.
20167 2019-06-18 Thomas Schwinge <thomas@codesourcery.com>
20169 PR middle-end/90862
20170 * omp-low.c (check_omp_nesting_restrictions): Handle
20171 GF_OMP_TARGET_KIND_OACC_DECLARE.
20173 2019-06-18 Uroš Bizjak <ubizjak@gmail.com>
20175 * config/i386/i386.md (@cmp<mode>_1): Rename from cmp<mode>_1.
20176 (@add<mode>3_carry): Rename from add<mode>3_carry.
20177 (@sub<mode>3_carry_ccc): Rename from sub<mode>3_carry_ccc.
20178 (@sub<mode>3_carry_ccgz): Rename form sub<mode>3_carry_ccgz.
20179 (@copysign<mode>3_const): Rename from copysign<mode>3_const.
20180 (@copysign<mode>3_var): Rename from copysign<mode>3_var.
20181 (@xorsign<mode>3_1): Rename from xorsign<mode>3_1.
20182 (@x86_shift<mode>_adj_1): Rename from x86_shift<mode>_adj_1.
20183 (@x86_shift<mode>_adj_2): Rename from x86_shift<mode>_adj_2.
20184 (@x86_shift<mode>_adj_3): Rename from x86_shift<mode>_adj_3.
20185 (cmpstrnsi): Use gen_cmp_1.
20186 (lwp_slwpcb): Use gen_lwp_slwpcb_1.
20187 (@lwp_slwpcb<mode>_1): Rename from lwp_slwpcb<mode>_1.
20188 (@umonitor_<mode>): Rename from umonitor_<mode>.
20189 * config/i386/i386-expand.c (ix86_expand_copysign):
20190 Use gen_copysign3_const and gen_copysign3_var.
20191 (ix86_expand_xorsign): Use gen_xorsign3_1.
20192 (ix86_expand_branch): Use gen_sub3_carry_ccc,
20193 gen_sub3_carry_ccgz and gen_cmp1.
20194 (ix86_expand_int_addcc): Use gen_sub3_carry and gen_add3_carry.
20195 (ix86_split_ashl): Use gen_x86_shift_adj_1 and gen_x86_shift_adj_2.
20196 (ix86_split_ashr): Use gen_x86_shift_adj_1 and gen_x86_shift_adj_3.
20197 (ix86_split_lshr): Ditto.
20198 (ix86_expand_builtin) <case IX86_BUILTIN_UMONITOR>: Use gen_umonitor.
20200 2019-06-18 Jason Merrill <jason@redhat.com>
20202 * tree.c (build_constructor): Add MEM_STAT_DECL.
20204 2019-06-18 Richard Sandiford <richard.sandiford@arm.com>
20206 * config/aarch64/aarch64-modes.def (CC_NZC): New CC_MODE.
20207 * config/aarch64/aarch64-sve.md (*<optab><mode>3_cc)
20208 (ptest_ptrue<mode>, while_ult<GPI:mode><PRED_ALL:mode>)
20209 (*while_ult<GPI:mode><PRED_ALL:mode>_cc, *cmp<cmp_op><mode>)
20210 (*cmp<cmp_op><mode>_ptest, *cmp<cmp_op><mode>_cc)
20211 (*pred_cmp<cmp_op><mode>_combine, *pred_cmp<cmp_op><mode>)
20212 (vec_cmp<mode><vpred>, vec_cmpu<mode><vpred>, cbranch<mode>4):
20213 Use CC_NZC instead of CC.
20214 * config/aarch64/aarch64.md (condjump): Print a '.' in SVE conditions.
20215 * config/aarch64/aarch64.c (aarch64_sve_condition_codes): New variable.
20216 (aarch64_print_operand): Handle E_CC_NZCmode.
20217 (aarch64_emit_sve_ptrue_op_cc): Use gen_set_clobber_cc_nzc instead
20218 of gen_set_clobber_cc.
20220 2019-06-18 Richard Sandiford <richard.sandiford@arm.com>
20222 * config/aarch64/aarch64-sve.md: Tabify file.
20224 2019-06-18 Richard Sandiford <richard.sandiford@arm.com>
20226 * config/aarch64/aarch64-protos.h (aarch64_pfalse_reg): Declare.
20227 * config/aarch64/aarch64.c (aarch64_pfalse_reg): New function.
20228 * config/aarch64/aarch64-sve.md: Use it.
20230 2019-06-18 Richard Sandiford <richard.sandiford@arm.com>
20232 * config/aarch64/aarch64-protos.h (aarch64_ptrue_reg): Declare.
20233 * config/aarch64/aarch64.c (aarch64_ptrue_reg): New functions.
20234 (aarch64_expand_sve_widened_duplicate, aarch64_expand_sve_mem_move)
20235 (aarch64_maybe_expand_sve_subreg_move, aarch64_evpc_rev_local)
20236 (aarch64_expand_sve_vec_cmp_int): Use it.
20237 (aarch64_expand_sve_vec_cmp_float): Likewise.
20238 * config/aarch64/aarch64-sve.md: Likewise throughout.
20240 2019-06-18 Richard Sandiford <richard.sandiford@arm.com>
20241 Kugan Vivekanandarajah <kuganv@linaro.org>
20243 * config/aarch64/aarch64-sve.md (*cond_<optab><mode>_0): Delete.
20244 (*cond_<optab><mode>_z): Fold into...
20245 (*cond_<optab><mode>_any): ...here. Also handle cases in which
20246 operand 4 can be tied to operand 0 (either inherently or via RA).
20248 2019-06-18 Richard Biener <rguenther@suse.de>
20251 * cfgexpand.c (expand_debug_expr): Treat NOTE_P DECL_RTL
20252 as if optimized away.
20254 2019-06-18 Tom de Vries <tdevries@suse.de>
20256 * config/nvptx/nvptx-protos.h (gen_set_softstack_insn): Remove.
20257 * config/nvptx/nvptx.c (gen_set_softstack_insn): Remove.
20258 * config/nvptx/nvptx.md (define_insn "set_softstack_<mode>"):
20260 (define_insn "@set_softstack_<mode>"): ... this.
20261 (define_insn "omp_simt_enter_<mode>"): Rename to ...
20262 (define_insn "@omp_simt_enter_<mode>"): ... this.
20263 (define_insn "omp_simt_exit_<mode>"): Rename to ...
20264 (define_insn "@omp_simt_exit_<mode>"): ... this.
20266 2019-06-18 Richard Sandiford <richard.sandiford@arm.com>
20268 * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Remove
20269 vf parameter. Restore the previous iv step of nscalars_step,
20270 but give it iv_type rather than compare_type. Tweak code order
20271 to match the comments.
20272 (vect_set_loop_condition_masked): Update accordingly.
20273 * tree-vect-loop.c (vect_verify_full_masking): Use "unsigned int"
20274 for iv_precision. Tweak comment formatting.
20276 2019-06-18 Iain Sandoe <iain@sandoe.co.uk>
20278 * config/darwin.c: Strip trailing whitespace.
20280 2019-06-18 Iain Sandoe <iain@sandoe.co.uk>
20282 * config/darwin.c (darwin_emit_unwind_label): New default to false.
20283 (darwin_override_options): Set darwin_emit_unwind_label as needed.
20285 2019-06-18 Martin Jambor <mjambor@suse.cz>
20288 * ipa-cp.c (ignore_edge_p): Do not ignore edges when only the
20289 caller does not have flag_ipa_cp set.
20291 2019-06-18 Alejandro Martinez <alejandro.martinezvicente@arm.com>
20293 * config/aarch64/aarch64-sve.md (mask_fold_left_plus_<mode>): Renamed
20294 from "*fold_left_plus_<mode>", updated operands order.
20295 * doc/md.texi (mask_fold_left_plus_@var{m}): Documented new optab.
20296 * internal-fn.c (mask_fold_left_direct): New define.
20297 (expand_mask_fold_left_optab_fn): Likewise.
20298 (direct_mask_fold_left_optab_supported_p): Likewise.
20299 * internal-fn.def (MASK_FOLD_LEFT_PLUS): New internal function.
20300 * optabs.def (mask_fold_left_plus_optab): New optab.
20301 * tree-vect-loop.c (mask_fold_left_plus_optab): New function to get a
20302 masked internal_fn for a reduction ifn.
20303 (vectorize_fold_left_reduction): Add support for masking reductions.
20305 2019-06-18 Kewen Lin <linkw@gcc.gnu.org>
20307 PR middle-end/80791
20308 * target.def (predict_doloop_p): New hook.
20309 * targhooks.h (default_predict_doloop_p): New declaration.
20310 * targhooks.c (default_predict_doloop_p): New function.
20311 * doc/tm.texi.in (TARGET_PREDICT_DOLOOP_P): New hook.
20312 * doc/tm.texi: Regenerate.
20313 * config/rs6000/rs6000.c (rs6000_predict_doloop_p): New function.
20314 (TARGET_PREDICT_DOLOOP_P): New macro.
20315 * tree-ssa-loop-ivopts.c (generic_predict_doloop_p): New function.
20317 2019-06-17 Jakub Jelinek <jakub@redhat.com>
20319 * omp-low.c (struct omp_context): Add scan_inclusive field.
20320 (scan_omp_1_stmt) <case GIMPLE_OMP_SCAN>: Set ctx->scan_inclusive
20322 (struct omplow_simd_context): Add lastlane member.
20323 (lower_rec_simd_input_clauses): Add rvar argument, handle inscan
20324 reductions. Build 2 or 3 argument .GOMP_SIMD_LANE calls rather than
20326 (lower_rec_input_clauses): Handle inscan reductions in simd contexts.
20327 (lower_lastprivate_clauses): Set TREE_THIS_NOTRAP on the ARRAY_REF.
20328 (lower_omp_scan): New function.
20329 (lower_omp_1) <case GIMPLE_OMP_SCAN>: Use lower_omp_scan.
20330 * tree-ssa-dce.c (eliminate_unnecessary_stmts): For IFN_GOMP_SIMD_LANE
20331 check 3rd argument if present rather than 2nd.
20332 * tree-vectorizer.h (struct _loop_vec_info): Add scan_map member.
20333 (struct _stmt_vec_info): Change simd_lane_access_p from bool into
20335 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
20336 scan_map. For IFN_GOMP_SIMD_LANE check 3rd argument if present rather
20338 (_loop_vec_info::~_loop_vec_info): Delete scan_map.
20339 * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Allow two
20340 different STMT_VINFO_SIMD_LANE_ACCESS_P refs if they have the same
20342 (vect_find_stmt_data_reference): Encode in ->aux the 2nd
20343 IFN_GOMP_SIMD_LANE argument.
20344 (vect_analyze_data_refs): Set STMT_VINFO_SIMD_LANE_ACCESS_P from the
20345 encoded ->aux value.
20346 * tree-vect-stmts.c: Include attribs.h.
20347 (vectorizable_call): Adjust comment about IFN_GOMP_SIMD_LANE.
20348 (scan_operand_equal_p, check_scan_store, vectorizable_scan_store): New
20350 (vectorizable_load): For STMT_VINFO_SIMD_LANE_ACCESS_P tests use != 0.
20351 (vectorizable_store): Handle STMT_VINFO_SIMD_LANE_ACCESS_P > 1.
20353 2019-06-17 Uroš Bizjak <ubizjak@gmail.com>
20356 * config/i386/i386.md (*nabstf2_1): New insn pattern.
20357 (*nabs<mode>2_1): Ditto.
20358 (nabs sse-reg splitter): New splitter.
20359 * config/i386/sse.md (*nabs<mode>2): New insn_and_split pattern.
20361 2019-06-17 Jan Hubicka <hubicka@ucw.cz>
20363 PR bootstrap/90873.
20364 * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Fix
20367 2019-06-17 Tom de Vries <tdevries@suse.de>
20369 * config/nvptx/nvptx-protos.h (gen_set_softstack_insn): Declare.
20370 * config/nvptx/nvptx.c (gen_set_softstack_insn): New function.
20371 * config/nvptx/nvptx.md (define_insn "set_softstack_insn"): Rename to
20373 (define_insn "set_softstack_<mode>"): ... this. Use P iterator on
20375 (define_insn "omp_simt_enter_insn"): Rename to ...
20376 (define_insn "omp_simt_enter_<mode>"): ... this. Use P iterator on
20377 match_operand 0, 1 and 2, as well as the unspec_volatile result.
20378 (define_expand "omp_simt_enter): Use gen_omp_simt_enter_di and
20379 gen_omp_simt_enter_si.
20380 (define_expand "omp_simt_exit"): New.
20381 (define_insn "omp_simt_exit"): Rename to ...
20382 (define_insn "omp_simt_exit_<mode>"): ... this. Use P iterator on
20385 2019-06-17 Matthew Green <mrg@eterna.com.au>
20386 Maya Rashish <coypu@sdf.org>
20388 * config.gcc (aarch64*-*-netbsd*): New target.
20389 * config/aarch64/aarch64-netbsd.h: New file.
20390 * config/aarch64/t-aarch64-netbsd: Likewise.
20392 2019-06-17 Jan Hubicka <hubicka@ucw.cz>
20394 * tree-ssa-alias.c (aliasing_component_refs_p): Consider only
20395 the access path from base to first VIEW_CONVERT_EXPR or
20398 2019-06-17 Jan Hubicka <hubicka@ucw.cz>
20400 * tree-ssa-alias.c (nonoverlapping_component_refs_p): Also truncate
20401 access path on BIT_FIELD_REFs.
20403 2019-06-17 Martin Liska <mliska@suse.cz>
20406 * ipa-utils.h (odr_type_p): Remove dead code.
20408 2019-06-17 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
20410 * configure.ac (ld_vers) <*-*-solaris2*>: Remove support for
20411 alternative Solaris 11.4 format.
20412 * configure: Regenerate.
20414 2019-06-17 Tom de Vries <tdevries@suse.de>
20416 * config/nvptx/nvptx.md (define_insn "call_insn"): Rename to ...
20417 (define_insn "call_insn_<mode>"): ... this. Use P iterator on
20419 (define_insn "call_value_insn"): Rename to ...
20420 (define_insn "call_value_insn_<mode>"): this. Use P iterator on
20422 (define_insn "nvptx_red_partition"): Set unspec_volatile result mode to
20425 2019-06-16 John David Anglin <danglin@gcc.gnu.org>
20427 PR middle-end/64242
20428 * config/pa/pa.md (nonlocal_goto): Restore frame pointer last. Add
20429 frame clobbers and schedule block.
20430 (builtin_longjmp): Likewise.
20432 2019-06-16 Jozef Lawrynowicz <jozef.l@mittosystems.com>
20434 * config/msp430/msp430.c (msp430_expand_helper): Setup arguments which
20435 describe how to perform MSPABI compliant 64-bit shift.
20436 * config/msp430/msp430.md (ashldi3): New define_expand.
20437 (ashrdi3): New define_expand.
20438 (lshrdi3): New define_expand.
20440 2019-06-16 Jozef Lawrynowicz <jozef.l@mittosystems.com>
20442 * doc/sourcebuild.texi: Document new effective target keyword
20445 2019-06-16 Jan Hubicka <hubicka@ucw.cz>
20447 * tree-ssa-alias.c (indirect_ref_may_alias_decl_p,
20448 indirect_refs_may_alias_p): Revert accidental commits.
20450 * tree-ssa-alias.c (aliasing_component_refs_p): Watch for arrays
20451 at the end of structures.
20453 2019-06-16 Iain Sandoe <iain@sandoe.co.uk>
20455 * config/darwin.c (machopic_indirect_call_target): Use renamed
20456 darwin_picsymbol_stubs to decide on output.
20457 (darwin_override_options): Handle darwin_picsymbol_stubs.
20458 * config/darwin.h (MIN_LD64_OMIT_STUBS): New.
20459 (LD64_VERSION): Revise default.
20460 * config/darwin.opt: (mpic-symbol-stubs): New option.
20461 (darwin_picsymbol_stubs): New variable.
20462 * config/i386/darwin.h (TARGET_MACHO_BRANCH_ISLANDS):
20463 rename to TARGET_MACHO_PICSYM_STUBS.
20464 * config/i386/i386.c (output_pic_addr_const): Likewise.
20465 * config/i386/i386.h Likewise.
20466 * config/rs6000/darwin.h: Likewise.
20467 * config/rs6000/rs6000.c (rs6000_call_darwin_1): Use renamed
20468 darwin_picsymbol_stubs.
20470 2019-06-16 Iain Sandoe <iain@sandoe.co.uk>
20472 * config/darwin.opt (prebind, noprebind, seglinkedit,
20473 noseglinkedit): Add RejectNegative.
20475 2019-06-16 Jan Hubicka <hubicka@ucw.cz>
20477 * tree-ssa-alias.c (nonoverlapping_component_refs_p): Fix pasto
20478 in my previous patch.
20480 2019-06-16 Tom de Vries <tdevries@suse.de>
20482 PR tree-optimization/89376
20483 * tree-parloops.c (oacc_entry_exit_ok_1): Handle red == NULL.
20485 2019-06-15 Maya Rashish <coypu@sdf.org>
20487 * doc/invoke.texi (Spec Files): Update location of the
20490 2019-06-15 Gerald Pfeifer <gerald@pfeifer.com>
20492 * doc/extend.texi (Common Function Attributes): Clarify
20493 no_sanitize. Fix grammar.
20495 2019-06-15 Jan Hubicka <hubicka@ucw.cz>
20497 * tree-ssa-alias.c (alias_stats): Add
20498 nonoverlapping_component_refs_p_may_alias,
20499 nonoverlapping_component_refs_p_no_alias,
20500 nonoverlapping_component_refs_of_decl_p_may_alias,
20501 nonoverlapping_component_refs_of_decl_p_no_alias.
20502 (dump_alias_stats): Dump them.
20503 (nonoverlapping_component_refs_of_decl_p): Add stats.
20504 (nonoverlapping_component_refs_p): Add stats; do not stop on first
20507 2019-06-15 Uroš Bizjak <ubizjak@gmail.com>
20509 * config/i386/i386.md (and<mode>3): Generate zero-extends for
20510 TARGET_ZERO_EXTEND_WITH_AND && optimize_function_for_speed_p (cfun))
20512 (*anddi3_doubleword): Split before reload. Merge with
20513 anddi->zext pre-reload splitter.
20514 (*andndi3_doubleword): Split before reload.
20515 (*<code>di3_doubleword): Ditto.
20516 (*one_cmpldi2_doubleword): Ditto.
20518 2019-06-15 Jakub Jelinek <jakub@redhat.com>
20520 PR middle-end/90779
20521 * gimplify.c: Include omp-offload.h and context.h.
20522 (gimplify_bind_expr): Add "omp declare target" attributes
20523 to static block scope variables inside of target region or target
20526 2019-06-15 Tom de Vries <tdevries@suse.de>
20528 PR tree-optimization/90009
20529 * tree-ssa-threadbackward.c (thread_jumps::profitable_jump_thread_path):
20530 Return NULL if bb contains IFN_UNIQUE.
20532 2019-06-14 Segher Boessenkool <segher@kernel.crashing.org>
20534 * config/rs6000/rs6000.md (CCEITHER): New define_mode_iterator.
20535 (un): New define_mode_attr.
20536 (isel_signed_<mode>, isel_unsigned_<mode>): Delete, merge into ...
20537 (isel_<un>signed_<GPR:mode>): ... this. New define_insn.
20538 (isel_reversed_signed_<mode>, isel_reversed_unsigned_<mode>): Delete,
20540 (isel_reversed_<un>signed_<GPR:mode>): ... this. New define_insn.
20542 2019-06-14 Iain Sandoe <iain@sandoe.co.uk>
20544 * config/darwin.opt: Add RejectNegative where needed, reorder
20545 and add minimal functional descriptions.
20547 2019-06-14 H.J. Lu <hongjiu.lu@intel.com>
20549 PR rtl-optimization/90765
20550 * calls.c (update_stack_alignment_for_call): New function.
20551 (expand_call): Call update_stack_alignment_for_call when
20552 outgoing parameter is passed in the stack.
20553 (emit_library_call_value_1): Likewise.
20554 * function.c (locate_and_pad_parm): Don't update
20555 stack_alignment_needed and preferred_stack_boundary.
20557 2019-06-14 H.J. Lu <hongjiu.lu@intel.com>
20560 * config/i386/i386-features.c
20561 (dimode_scalar_chain::compute_convert_gain): Replace
20562 mmxsse_to_integer with sse_to_integer.
20563 * config/i386/i386.c (ix86_register_move_cost): Verify that
20564 moves between MMX and non-MMX units require secondary memory.
20565 Correct costs of moves between SSE and integer units.
20566 * config/i386/i386.h (processor_costs): Rename cost of moving
20567 SSE register to integer to sse_to_integer. Rename cost of
20569 2019-06-14 Matt Thomas <matt@3am-software.com>
20570 Matthew Green <mrg@eterna.com.au>
20571 Nick Hudson <skrll@netbsd.org>
20572 Maya Rashish <coypu@sdf.org>
20573 Richard Earnshaw <rearnsha@arm.com>
20575 * config.gcc (arm*-*-netbsdelf*) Add support for EABI configuration.
20576 * config.host (arm*-*-netbsd*): Use driver-arm.o on native NetBSD.
20577 * config/arm/netbsd-eabi.h: New file.
20578 * config/arm/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Undefine before
20580 (SUBTARGET_EXTRA_ASM_SPEC): Don't pass -matpcs to the assembler.
20581 * config/netbsd-elf.h (NETBSD_LINK_LD_ELF_SO_SPEC): New define.
20582 (NETBSD_SUBTARGET_EXTRA_SPECS): New define.
20583 (SUBTARGET_EXTRA_SPECS): Define to NETBSD_SUBTARGET_EXTRA_SPECS.
20585 2019-06-14 Richard Biener <rguenther@suse.de>
20587 * tree-loop-distribution.c (classify_partition): Return
20588 whether a reduction appeared in all partitions and do not
20589 stop builtin detection because of this.
20590 (distribute_loop): Sort a non-builtin partition last if
20591 there's a reduction in all partitions and make sure the
20592 partition prevailing as last is not a builtin.
20594 2019-06-14 Feng Xue <fxue@os.amperecomputing.com>
20597 * ipa-prop.c (add_to_agg_contents_list): New function.
20598 (clobber_by_agg_contents_list_p): Likewise.
20599 (extract_mem_content): Likewise.
20600 (get_place_in_agg_contents_list): Delete.
20601 (determine_known_aggregate_parts): Renamed from
20602 determine_locally_known_aggregate_parts. New parameter
20605 2019-06-13 Martin Sebor <msebor@redhat.com>
20607 PR tree-optimization/90662
20608 * tree-ssa-strlen.c (get_stridx): Convert fold_build2 operands
20611 2019-06-13 Jan Hubicka <hubicka@ucw.cz>
20614 * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Also check that
20615 dbase is not TARGET_MEM_REF.
20617 2019-06-13 Uroš Bizjak <ubizjak@gmail.com>
20619 * config/i386/i386.md (SWIM1248s): Rename from SWIM1248x.
20621 (and<mode>3): Use gen_extend_insn instead of indirect functions.
20622 Do not generate DImode extends for 32bit targets.
20623 (and->zext post-reload splitter): Use gen_extend_insn
20624 instead of indirect functions.
20625 (anddi->zext pre-reload splitter): New.
20626 (*zext<mode>_doubleword_and): Remove.
20627 (*zext<mode>_doubleword): Ditto.
20628 (*zextsi_doubleword): Dittto.
20630 2019-06-13 Uroš Bizjak <ubizjak@gmail.com>
20632 * config/i386/i386-expand.c (ix86_expand_int_sse_cmp):
20633 Use gen_sub3_insn instead of indirect function.
20634 (ix86_expand_ashl_const): Use gen_add2_insn instead of
20636 (ix86_adjust_counter): Ditto.
20638 2019-06-13 Jiufu Guo <guojiufu@linux.ibm.com>
20639 Lijia He <helijia@linux.ibm.com>
20641 PR tree-optimization/77820
20642 * tree-ssa-threadedge.c
20643 (edge_forwards_cmp_to_conditional_jump_through_empty_bb_p): New
20645 (thread_across_edge): Add call to
20646 edge_forwards_cmp_to_conditional_jump_through_empty_bb_p.
20648 2019-06-13 Iain Sandoe <iain@sandoe.co.uk>
20650 * config/darwin-driver.c (validate_macosx_version_min): New.
20651 (darwin_default_min_version): Cleanup and validate supplied version.
20652 (darwin_driver_init): Likewise and push cleaned version into opts.
20654 2019-06-13 Jan Hubicka <hubicka@ucw.cz>
20656 PR tree-optimization/90869
20657 * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Watch for view
20658 converts in MEM_REF referencing decl rather than view converts
20659 from decl type to MEM_REF type.
20661 2019-06-13 Richard Biener <rguenther@suse.de>
20663 PR tree-optimization/90856
20664 * tree-sra.c (build_ref_for_model): Only use
20665 build_reconstructed_reference when address-spaces are the same.
20667 2019-06-13 Jakub Jelinek <jakub@redhat.com>
20669 * config/nvptx/nvptx.c (nvptx_sese_number, nvptx_sese_pseudo): Don't
20670 wrap ei variable name in the declaration in ()s.
20671 (nvptx_single): Actually use mode_label variable. Formatting fix.
20673 2019-06-13 Richard Biener <rguenther@suse.de>
20675 * tree-vectorizer.h (vect_loop_vectorized_call): Declare.
20676 * tree-vectorizer.c (vect_loop_vectorized_call): Export and
20677 also return the condition stmt.
20678 * tree-vect-loop-manip.c (vect_loop_versioning): Compute outermost
20679 loop we can version and version that, reusing the loop version
20680 created by if-conversion instead of versioning again.
20682 2019-06-13 Aldy Hernandez <aldyh@redhat.com>
20684 * gimple-loop-versioning.cc (prune_loop_conditions): Use
20686 * tree-vrp (value_range_base::may_contain_p): Call into
20687 value_inside_range.
20688 (value_inside_range): Make private inside value_range_base class.
20689 Take min/max from *this.
20690 (range_includes_p): Remove.
20691 * tree-vrp.h (value_range_base): Add value_inside_range.
20692 (range_includes_p): Remove.
20693 (range_includes_zero_p): Call may_contain_p.
20694 * vr-values.c (compare_range_with_value): Same.
20696 2019-06-13 Claudiu Zissulescu <claziss@synopsys.com>
20698 * doc/extend.texi (ARC Function Attributes): Update info.
20700 2019-06-13 Feng Xue <fxue@os.amperecomputing.com>
20702 PR tree-optimization/89713
20703 * doc/invoke.texi (-ffinite-loops): Document new option.
20704 * common.opt (-ffinite-loops): New option.
20705 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark
20706 IFN_GOACC_LOOP calls as necessary.
20707 * tree-ssa-loop-niter.c (finite_loop_p): Assume loop with an exit
20709 * omp-offload.c (oacc_xform_loop): Skip lowering if return value of
20710 IFN_GOACC_LOOP call is not used.
20711 * opts.c (default_options_table): Enable -ffinite-loops at -O2+.
20713 2019-06-13 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
20716 * tree-vect-loop-manip.c (vect_set_loop_masks_directly): If the
20717 compare_type is not with Pmode size, we will create an IV with
20718 Pmode size with truncated use (i.e. converted to the correct type).
20719 * tree-vect-loop.c (vect_verify_full_masking): Find IV type.
20720 (vect_iv_limit_for_full_masking): New. Factored out of
20721 vect_set_loop_condition_masked.
20722 * tree-vectorizer.h (LOOP_VINFO_MASK_IV_TYPE): New.
20723 (vect_iv_limit_for_full_masking): Declare.
20725 2019-06-13 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
20728 * tree-ssa-loop-ivopts.c (get_mem_type_for_internal_fn): Handle
20729 IFN_MASK_LOAD_LANES and IFN_MASK_STORE_LANES.
20730 (get_alias_ptr_type_for_ptr_address): Likewise.
20731 (add_iv_candidate_for_use): Add scaled index candidate if useful.
20732 * tree-ssa-address.c (preferred_mem_scale_factor): New.
20733 * config/aarch64/aarch64.c (aarch64_classify_address): Relax
20736 2019-06-13 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
20738 * config/aarch64/iterators.md (ADDSUB): Fix typo in comment.
20740 2019-06-12 Dimitar Dimitrov <dimitar@dinux.eu>
20742 * common/config/pru/pru-common.c: New file.
20743 * config.gcc: Add PRU target.
20744 * config/pru/alu-zext.md: New file.
20745 * config/pru/constraints.md: New file.
20746 * config/pru/predicates.md: New file.
20747 * config/pru/pru-opts.h: New file.
20748 * config/pru/pru-passes.c: New file.
20749 * config/pru/pru-pragma.c: New file.
20750 * config/pru/pru-protos.h: New file.
20751 * config/pru/pru.c: New file.
20752 * config/pru/pru.h: New file.
20753 * config/pru/pru.md: New file.
20754 * config/pru/pru.opt: New file.
20755 * config/pru/t-pru: New file.
20756 * doc/extend.texi: Document PRU pragmas.
20757 * doc/invoke.texi: Document PRU-specific options.
20758 * doc/md.texi: Document PRU asm constraints.
20760 2019-06-12 Martin Sebor <msebor@redhat.com>
20762 PR middle-end/90676
20763 * tree-pretty-print.c (dump_mem_ref): New function. Include
20764 MEM_REF type in output when different size than operand.
20765 (dump_generic_node): Move code to dump_mem_ref and call it.
20767 2019-06-12 Martin Sebor <msebor@redhat.com>
20769 PR tree-optimization/90662
20770 * tree-ssa-strlen.c (get_stridx): Handle simple VLAs and pointers
20773 2019-06-12 Tom de Vries <tdevries@suse.de>
20775 PR tree-optimization/90009
20776 * config/nvptx/nvptx.c (nvptx_find_par): Assert fork has at most join.
20778 2019-06-12 Martin Liska <mliska@suse.cz>
20780 * ggc-common.c (ggc_prune_overhead_list): Do not sanitize
20782 * hash-map.h: Add sanitize_eq_and_hash into ::hash_map.
20783 * mem-stats.h (mem_alloc_description::mem_alloc_description):
20784 Do not sanitize created maps.
20786 2019-06-12 Aldy Hernandez <aldyh@redhat.com>
20788 * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Use
20789 value_range::singleton_p.
20790 * tree-vrp.c (value_range_constant_singleton): Remove.
20791 * tree-vrp.h (value_range_constant_singleton): Remove.
20792 * vr-values.c (vr_values::singleton): Use
20793 value_range::singleton_p.
20795 2019-06-12 Jakub Jelinek <jakub@redhat.com>
20798 * cfgexpand.c (align_local_variable): Add really_expand argument,
20799 don't SET_DECL_ALIGN if it is false.
20800 (add_stack_var): Add really_expand argument, pass it through to
20801 align_local_variable.
20802 (expand_one_stack_var_1): Pass true as really_expand to
20803 align_local_variable.
20804 (expand_one_ssa_partition): Pass true as really_expand to
20806 (expand_one_var): Pass really_expand through to add_stack_var.
20808 2019-06-12 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com>
20810 * config/arm/iterators.md (VABAL): New int iterator.
20811 * config/arm/neon.md (<sup>sadv16qi): New define_expand.
20812 * config/arm/unspecs.md ("unspec"): Define UNSPEC_VABAL_S,
20813 UNSPEC_VABAL_U values.
20815 2019-06-12 Martin Liska <mliska@suse.cz>
20817 * value-prof.c (stream_out_histogram_value): Only first value
20820 2019-06-12 Jakub Jelinek <jakub@redhat.com>
20823 * symtab.c (symtab_node::set_section): Allow being called on aliases
20824 as long as they aren't analyzed yet.
20826 2019-06-11 Faraz Shahbazker <fshahbazker@wavecomp.com>
20828 * config/mips/mips.c (mips_final_postscan_insn): Modify call
20829 to `mips_set_text_contents_type' to indicate whether a
20830 non-debug insn follows.
20832 2019-06-11 Michael Meissner <meissner@linux.ibm.com>
20834 * config/rs6000/rs6000-cpus.def (ISA_FUTURE_MASKS_SERVER): Delete
20835 enabling -mpcrel by default.
20836 * config/rs6000/rs6000.c (rs6000_option_override_internal): Update
20837 test for -mpcrel and/or -mprefixed-addr needing -mcpu=future, so
20838 that the test against -mcpu=future is done first. Then test if
20839 -mprefixed-addr is on for -mpcrel.
20840 (rs6000_disable_incompatible_switches): Add -mcpu=future support.
20842 2019-06-11 Jakub Jelinek <jakub@redhat.com>
20845 * config/nvptx/nvptx.c (nvptx_output_softstack_switch): Use and.b%d
20846 instead of and.u%d.
20848 2019-06-11 Marc Glisse <marc.glisse@inria.fr>
20850 * match.pd (X/[ex]4<Y/[ex]4): Handle conversions.
20852 2019-06-11 Matthew Beliveau <mbelivea@redhat.com>
20854 PR c++/90449 - add -Winaccessible-base option.
20855 * doc/invoke.texi (Winaccessible-base): Document.
20857 2019-06-11 Marc Glisse <marc.glisse@inria.fr>
20859 PR tree-optimization/62041
20860 * fold-const.c (fold_real_zero_addition_p): Handle vectors.
20862 2019-06-11 Jason Merrill <jason@redhat.com>
20864 * gdbhooks.py (TreePrinter.to_string): Recognize ggc_free'd memory.
20865 * tree.c (get_tree_code_name): Likewise.
20866 * print-tree.c (print_node): Only briefly print a node with an
20869 2019-06-11 Jakub Jelinek <jakub@redhat.com>
20872 * trans-mem.c (tm_memopt_compute_available): Add assertion
20873 that blocks is not empty. Formatting fix.
20875 2019-06-11 Martin Liska <mliska@suse.cz>
20878 * hash-table.h: Extend create_gcc, add one parameter
20879 that is passed into hash_table::hash_table.
20881 2019-06-10 Uroš Bizjak <ubizjak@gmail.com>
20883 * config/i386/i386-protos.h (ix86_split_fp_absneg_operator):
20885 * config/i386/i386-expand.c (ix86_expand_fp_absneg_operator):
20886 Emit clobber also for non-sse operations.
20887 (ix86_split_fp_absneg_operator): New function.
20888 * config/i386/i386.md (SSEMODEF): New mode iterator.
20889 (ssevecmodef): New mode attribute.
20890 (<code>tf2): Use absneg code iterator.
20891 (*<code>tf2_1): Rename from *absnegtf3_sse. Use absneg code iterator.
20892 Add three-operand AVX alternatives.
20893 (*<code><mode>2_i387_1): Rename from *absnegxf2_i387.
20894 Use absneg code iterator and X87MODEF mode iterator.
20895 (absneg fp_reg non-sse splitter): Call absneg code iterator
20896 and X87MODEF mode iterator.
20897 (absneg general_reg non-sse splitter): Use absneg code iterator
20898 and X87MODEF mode iterator. Use ix86_split_fp_absneg_operator.
20899 (*<code><mode>2_1): Rename from *absneg<mode>2. Use absneg
20900 code iterator. Add three-operand AVX alternative.
20901 (absneg sse_reg splitter): Use absneg code iterator
20902 and SSEMODEF mode iterator. Handle AVX operands.
20903 (absneg fp_reg splitter): Use absneg code iterator
20904 and MODEF mode iterator.
20905 (absneg general_reg splitter): Merge splitters using MODEF mode
20906 iterator. Use absneg code iterator. Call
20907 ix86_split_fp_absneg_operator.
20908 (*<code><mode>2_i387): Rename from *<code><mode>2_1.
20909 Do not enable for non-sse modes before reload.
20910 (CSGNMODE): Remove.
20911 (CSGNVMODE): Ditto.
20912 (copysing<mode>3): Use SSEMODEF instead of CSGNMODE and
20913 ssevecmodef mode attribute instaed of CSGNVMODE.
20914 (copysign<mode>3_const): Ditto.
20915 (copysign<mode>3_var): Ditto.
20916 * config/i386/i386.md (*<code><mode>2): Rename from *absneg<mode>2.
20917 Use absneg code iterator. Simplify code using std::swap.
20918 * config/i386/predicates.md (absneg_operator): Remove.
20920 2019-06-10 Martin Sebor <msebor@redhat.com>
20922 * gimple-fold.c (get_range_strlen): Update comment that didn't
20923 make it into r267503 or related commits.
20925 2019-06-10 Vladislav Ivanishin <vlad@ispras.ru>
20927 * gcov-tool.c (merge_usage, rewrite_usage): Mark with
20928 ATTRIBUTE_NORETURN thus making consistent with overlap_usage.
20930 2019-06-10 Jakub Jelinek <jakub@redhat.com>
20932 * tree.def (OMP_SCAN): New tree code.
20933 * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_INCLUSIVE and
20934 OMP_CLAUSE_EXCLUSIVE.
20935 * tree.h (OMP_CLAUSES): Use OMP_SCAN instead of OMP_TASKGROUP.
20936 (OMP_SCAN_BODY, OMP_SCAN_CLAUSES): Define.
20937 * tree.c (omp_clause_num_ops, omp_clause_code_name): Add entries for
20938 OMP_CLAUSE_{IN,EX}CLUSIVE.
20939 (walk_tree_1): Handle OMP_CLAUSE_{IN,EX}CLUSIVE.
20940 * tree-nested.c (convert_nonlocal_reference_stmt,
20941 convert_local_reference_stmt, convert_gimple_call): Handle
20943 * tree-pretty-print.c (dump_omp_clause): Handle
20944 OMP_CLAUSE_{IN,EX}CLUSIVE.
20945 (dump_generic_node): Handle OMP_SCAN.
20946 * gimple.def (GIMPLE_OMP_SCAN): New gimple code.
20947 * gimple.h (gomp_scan): New type.
20948 (is_a_helper <gomp_scan *>::test,
20949 is_a_helper <const gomp_scan *>::test): New templates.
20950 (gimple_build_omp_scan): Declare.
20951 (gimple_omp_scan_clauses, gimple_omp_scan_clauses_ptr,
20952 gimple_omp_scan_set_clauses): New inline functions.
20953 (CASE_GIMPLE_OMP): Add case GIMPLE_OMP_SCAN:.
20954 * gimple.c (gimple_build_omp_scan): New function.
20955 (gimple_copy): Handle GIMPLE_OMP_SCAN.
20956 * gimple-walk.c (walk_gimple_op, walk_gimple_stmt): Likewise.
20957 * gimple-pretty-print.c (dump_gimple_omp_block): Don't handle
20958 GIMPLE_OMP_TASKGROUP.
20959 (dump_gimple_omp_scan): New function.
20960 (pp_gimple_stmt_1): Handle GIMPLE_OMP_SCAN.
20961 * gimple-low.c (lower_stmt): Handle GIMPLE_OMP_SCAN.
20962 * tree-inline.c (remap_gimple_stmt, estimate_num_insns): Likewise.
20963 * gimplify.c (enum gimplify_omp_var_data): Add GOVD_REDUCTION_INSCAN.
20964 (is_gimple_stmt): Handle OMP_SCAN.
20965 (gimplify_scan_omp_clauses): Reject inscan reductions on constructs
20966 other than OMP_FOR or OMP_SIMD. Handle OMP_CLAUSE_{IN,EX}CLUSIVE.
20967 (gimplify_adjust_omp_clauses): Diagnose inscan reductions not
20968 mentioned in nested #pragma omp scan. Handle
20969 OMP_CLAUSE_{IN,EX}CLUSIVE.
20970 (gimplify_expr): Handle OMP_SCAN.
20971 * omp-low.c (check_omp_nesting_restrictions): For parent context,
20972 look through GIMPLE_OMP_SCAN context. Allow #pragma omp scan in
20974 (scan_omp_1_stmt, lower_omp_1, diagnose_sb_1, diagnose_sb_2): Handle
20977 2019-06-10 Martin Liska <mliska@suse.cz>
20979 * ipa-cp.c (ignore_edge_p): New function.
20980 (build_toporder_info): Use it.
20981 * ipa-inline.c (ignore_edge_p): New function.
20982 (inline_small_functions): Use it.
20983 * ipa-pure-const.c (ignore_edge_for_nothrow):
20984 Verify opt_for_fn for caller and callee.
20985 (ignore_edge_for_pure_const): Likewise.
20986 * ipa-reference.c (ignore_edge_p): Extend to check
20988 * ipa-utils.c (searchc): Refactor.
20989 * ipa-utils.h: Fix coding style.
20991 2019-06-10 Claudiu Zissulescu <claziss@synopsys.com>
20993 * config/arc/arc.c (arc_rtx_costs): Update costs.
20995 2019-06-10 Claudiu Zissulescu <claziss@synopsys.com>
20997 * config/arc/arc-protos.h (arc_check_ior_const): Declare.
20998 (arc_split_ior): Likewise.
20999 (arc_check_mov_const): Likewise.
21000 (arc_split_mov_const): Likewise.
21001 * config/arc/arc.c (arc_print_operand): Fix 'z' letter.
21002 (arc_rtx_costs): Replace check Crr with Cax constraint.
21003 (prepare_move_operands): Cleanup, remove unused code.
21004 (arc_split_ior): New function.
21005 (arc_check_ior_const): Likewise.
21006 (arc_split_mov_const): Likewise.
21007 (arc_check_mov_const): Likewise.
21008 * config/arc/arc.md (movsi_insn): Restructure it, and convert it
21009 in define_insn_and_split pattern.
21010 (iorsi3): Likewise.
21011 (mulsi3_v2): Add new matching variant.
21012 (andsi3_i): Cleanup pattern.
21013 (rotrsi3_cnt1): Update pattern.
21014 (rotrsi3_cnt8): New pattern.
21015 (ashlsi2_cnt8): Likewise.
21016 (ashlsi2_cnt16): Likewise.
21017 * config/arc/constraints.md (C0p): Update constraint.
21019 (C0x): New pattern.
21020 (Cax): New pattern.
21022 2019-06-10 Martin Liska <mliska@suse.cz>
21024 * ipa-icf.c (sem_item_optimizer::parse_nonsingleton_classes):
21025 Update coding style.
21026 (sem_item_optimizer::dump_cong_classes):
21027 Print how many items are in a non-singular class. Improve
21030 2019-06-10 Martin Liska <mliska@suse.cz>
21032 * value-prof.c (dump_histogram_value): Change dump format.
21033 (gimple_mod_subtract_transform): Remove legacy comment.
21035 2019-06-10 Martin Liska <mliska@suse.cz>
21037 * value-prof.c (dump_histogram_value): Print histogram values
21040 2019-06-10 Martin Liska <mliska@suse.cz>
21042 * gcov-io.h (GCOV_DISK_SINGLE_VALUES): New.
21043 (GCOV_SINGLE_VALUE_COUNTERS): Likewise.
21044 * ipa-profile.c (ipa_profile_generate_summary):
21045 Use get_most_common_single_value.
21046 * tree-profile.c (gimple_init_gcov_profiler):
21047 Instrument with __gcov_one_value_profiler_v2
21048 and __gcov_indirect_call_profiler_v4.
21049 * value-prof.c (dump_histogram_value):
21050 Print all values for HIST_TYPE_SINGLE_VALUE.
21051 (stream_out_histogram_value): Update assert for
21053 (stream_in_histogram_value): Set number of
21054 counters for HIST_TYPE_SINGLE_VALUE.
21055 (get_most_common_single_value): New.
21056 (gimple_divmod_fixed_value_transform):
21057 Use get_most_common_single_value.
21058 (gimple_ic_transform): Likewise.
21059 (gimple_stringops_transform): Likewise.
21060 (gimple_find_values_to_profile): Set number
21061 of counters for HIST_TYPE_SINGLE_VALUE.
21062 * value-prof.h (get_most_common_single_value): New.
21064 2019-06-10 Martin Liska <mliska@suse.cz>
21066 * hash-map.h: Pass default value to hash_table ctor.
21067 * hash-table.h: Add default value to call of a ctor.
21069 2019-06-08 Jonathan Wakely <jwakely@redhat.com>
21071 * doc/invoke.texi (C Dialect Options): Minor grammatical change.
21072 (x86 Options): Replace all uses of "PCL_MUL" with "PCLMUL"
21074 2019-06-07 John David Anglin <danglin@gcc.gnu.orig>
21077 * config/pa/pa-linux.h (ASM_DECLARE_FUNCTION_NAME): Update comment.
21078 Call pa_output_function_label.
21079 (TARGET_ASM_FUNCTION_PROLOGUE): define.
21080 * config/pa/pa-protos.h (pa_output_function_label): Declare.
21081 * config/pa/pa.c (pa_output_function_prologue): Add ATTRIBUTE_UNUSED
21083 (pa_linux_output_function_prologue): Declare.
21084 (TARGET_ASM_FUNCTION_PROLOGUE): Delete define.
21085 (pa_output_function_label): New.
21086 (pa_output_function_prologue): Revise to use pa_output_function_label.
21087 (pa_linux_output_function_prologue): New.
21088 * config/pa/pa.h (TARGET_ASM_FUNCTION_PROLOGUE): Define.
21090 2019-06-07 Aldy Hernandez <aldyh@redhat.com>
21092 * tree-vrp.h (value_range_base::intersect): New.
21093 (value_range::intersect_helper): Move from here...
21094 (value_range_base::intersect_helper): ...to here.
21095 * tree-vrp.c (value_range::intersect_helper): Rename to...
21096 (value_range_base::intersect_helper): ...this, and rewrite to
21097 return a value instead of modifying THIS in place.
21098 Also, move equivalence handling...
21099 (value_range::intersect): ...here, while calling intersect_helper.
21100 * gimple-fold.c (size_must_be_zero_p): Use value_range_base when
21102 * gimple-ssa-evrp-analyze.c (ecord_ranges_from_incoming_edge):
21104 * vr-values.c (vrp_evaluate_conditional_warnv_with_ops): Same.
21106 2019-06-07 Jakub Jelinek <jakub@redhat.com>
21108 * Makefile.in (genprogerr): Add condmd.
21109 (genprog): Remove it here.
21111 2019-06-07 Andrew Stubbs <ams@codesourcery.com>
21113 * doc/invoke.texi (AMD GCN Options): Add gfx906.
21115 2019-06-07 Richard Biener <rguenther@suse.de>
21118 * tree-cfg.c (stmt_starts_bb_p): Split blocks at labels
21119 that appear after user labels.
21121 2019-06-07 Martin Liska <mliska@suse.cz>
21123 * cselib.c (cselib_init): Disable hash table
21125 * hash-set.h: Pass new default argument to m_table.
21126 * hash-table.c: Add global variable with hash table
21127 sanitization limit.
21128 * hash-table.h (Allocator>::hash_table): Add new argument
21130 (hashtab_chk_error): New.
21131 * params.def (PARAM_HASH_TABLE_VERIFICATION_LIMIT): New.
21132 * toplev.c (process_options): Set hash_table_sanitize_eq_limit
21133 from the PARAM_HASH_TABLE_VERIFICATION_LIMIT value.
21135 2019-06-07 Jan Hubicka <hubicka@ucw.cz>
21137 * common.opt (flto-odr-type-merging): Ignore.
21138 * invoke.texi (-flto-odr-type-merging): Remove.
21139 * ipa-devirt.c (odr_vtable_hasher:odr_name_hasher): Remove.
21140 (can_be_vtable_hashed_p): Remove.
21141 (hash_odr_vtable): Remove.
21142 (odr_vtable_hasher::hash): Remove.
21143 (types_same_for_odr): Remove.
21144 (types_odr_comparable): Remove.
21145 (odr_vtable_hasher::equal): Remove.
21146 (odr_vtable_hash_type, odr_vtable_hash): Remove.
21147 (add_type_duplicate): Do not synchronize vtable and name hashtables.
21148 (get_odr_type): Do not use vtable hash.
21149 (dump_odr_type): Remove commented out code.
21150 (build_type_inheritance_graph): Do not allocate vtable hash.
21151 (rebuild_type_inheritance_graph): Do not delete vtable hash.
21152 * ipa-utils.h (type_with_linkage_p): Drop vtable hash path.
21153 (odr_type_p): Likewise.
21154 * tree.c (need_assembler_name_p): Remove flag_lto_odr_type_mering
21157 2019-06-07 Jan Hubicka <hubicka@ucw.cz>
21159 * tree-ssa-alias.c (aliasing_component_refs_p): Do not give up
21160 immediately after same_types_for_tbaa_p returns -1 and continue
21161 looking for possible exact match; if matching types are arrays
21162 watch for partial overlaps.
21163 (indirect_ref_may_alias_decl_p): Watch for partial array overlaps.
21164 (indirect_refs_may_alias_p): Do type based disambiguation first;
21167 2019-06-07 Richard Sandiford <richard.sandiford@arm.com>
21169 * fwprop.c (propagate_rtx): Fix call to paradoxical_subreg_p.
21171 2019-06-07 Martin Liska <mliska@suse.cz>
21173 * doc/invoke.texi: Remove param.
21174 * gcov-counter.def (GCOV_COUNTER_ICALL_TOPNV):
21176 * gcov-io.h (GCOV_ICALL_TOPN_VAL): Likewise.
21177 (GCOV_ICALL_TOPN_NCOUNTS): Likewise.
21178 * params.def (PARAM_INDIR_CALL_TOPN_PROFILE): Likewise.
21179 * profile.c (instrument_values): Remove
21180 HIST_TYPE_INDIR_CALL_TOPN.
21181 * tree-profile.c (init_ic_make_global_vars):
21182 Always build __gcov_indirect_call only.
21183 (gimple_init_gcov_profiler): Remove usage
21184 of PARAM_INDIR_CALL_TOPN_PROFILE.
21185 (gimple_gen_ic_profiler): Likewise.
21186 * value-prof.c (dump_histogram_value): Likewise.
21187 (stream_in_histogram_value): Likewise.
21188 (gimple_indirect_call_to_profile): Likewise.
21189 (gimple_find_values_to_profile): Likewise.
21190 * value-prof.h (enum hist_type): Likewise.
21192 2019-06-07 Martin Liska <mliska@suse.cz>
21194 * tree-ssa-loop.c (get_lsm_tmp_name): Return at the end of the
21197 2019-06-07 Martin Liska <mliska@suse.cz>
21199 PR tree-optimization/78902
21200 * builtin-attrs.def (ATTR_WARN_UNUSED_RESULT): New.
21201 (ATTR_MALLOC_NOTHROW_LEAF_LIST): Remove.
21202 (ATTR_WARN_UNUSED_RESULT_NOTHROW_LEAF_LIST): New.
21203 (ATTR_MALLOC_WARN_UNUSED_RESULT_NOTHROW_LEAF_LIST): New.
21204 (ATTR_ALLOC_SIZE_2_NOTHROW_LIST): Remove.
21205 (ATTR_MALLOC_SIZE_1_NOTHROW_LEAF_LIST): Remove.
21206 (ATTR_MALLOC_WARN_UNUSED_RESULT_NOTHROW_LIST): New.
21207 (ATTR_ALLOC_WARN_UNUSED_RESULT_SIZE_2_NOTHROW_LIST): New.
21208 (ATTR_MALLOC_WARN_UNUSED_RESULT_SIZE_1_NOTHROW_LEAF_LIST): New.
21209 (ATTR_ALLOCA_SIZE_1_NOTHROW_LEAF_LIST): Remove.
21210 (ATTR_ALLOCA_WARN_UNUSED_RESULT_SIZE_1_NOTHROW_LEAF_LIST): New.
21211 (ATTR_MALLOC_SIZE_1_2_NOTHROW_LEAF_LIST): Remove.
21212 (ATTR_MALLOC_WARN_UNUSED_RESULT_SIZE_1_2_NOTHROW_LEAF_LIST):
21214 (ATTR_ALLOC_SIZE_2_NOTHROW_LEAF_LIST): Remove.
21215 (ATTR_ALLOC_WARN_UNUSED_RESULT_SIZE_2_NOTHROW_LEAF_LIST): New.
21216 (ATTR_MALLOC_NOTHROW_NONNULL): Remove.
21217 (ATTR_WARN_UNUSED_RESULT_NOTHROW_NONNULL): New.
21218 (ATTR_MALLOC_WARN_UNUSED_RESULT_NOTHROW_NONNULL): New.
21219 (ATTR_MALLOC_NOTHROW_NONNULL_LEAF): Remove.
21220 (ATTR_WARN_UNUSED_RESULT_NOTHROW_NONNULL_LEAF): New.
21221 (ATTR_MALLOC_WARN_UNUSED_RESULT_NOTHROW_NONNULL_LEAF): New.
21222 * builtins.def (BUILT_IN_ALIGNED_ALLOC): Change to use
21223 warn_unused_result attribute.
21224 (BUILT_IN_STRDUP): Likewise.
21225 (BUILT_IN_STRNDUP): Likewise.
21226 (BUILT_IN_ALLOCA): Likewise.
21227 (BUILT_IN_CALLOC): Likewise.
21228 (BUILT_IN_MALLOC): Likewise.
21229 (BUILT_IN_REALLOC): Likewise.
21231 2019-06-06 Jim Wilson <jimw@sifive.com>
21234 * config/riscv/riscv.h (STARTFILE_PREFIX_SPEC): Deleted.
21235 * config/riscv/freebsd.h (STARTFILE_PREFIX_SPEC): Added.
21236 * config/riscv/linux.h (STARTFILE_PREFIX_SPEC): Added.
21238 2019-06-06 Martin Sebor <msebor@redhat.com>
21240 * tree-ssa-strlen.c (adjust_related_strinfos): Avoid trailing article.
21241 (handle_builtin_malloc): Remove trailing spaces.
21242 (handle_builtin_memset): Same.
21243 (handle_builtin_memcmp): Same.
21244 (compute_string_length): Same.
21245 (determine_min_objsize): Same.
21246 (handle_builtin_string_cmp): Same.
21247 (handle_char_store): Same. Break up excessively long line.
21249 2019-06-06 Martin Jambor <mjambor@suse.cz>
21251 * tree-sra.c (build_reconstructed_reference): Drop the alignment
21254 2019-06-06 Martin Jambor <mjambor@suse.cz>
21256 * tree-sra.c (struct access): New field grp_same_access_path.
21257 (dump_access): Dump it.
21258 (build_reconstructed_reference): New function.
21259 (build_ref_for_model): Use it if possible.
21260 (path_comparable_for_same_access): New function.
21261 (same_access_path_p): Likewise.
21262 (sort_and_splice_var_accesses): Set the new flag.
21263 (analyze_access_subtree): Likewise.
21264 (propagate_subaccesses_across_link): Propagate zero value of the new
21265 flag down the access tree.
21267 2019-06-06 Andrew Stubbs <ams@codesourcery.com>
21269 * config.gcc (amdgcn-*-*): Allow --with-arch=gfx906.
21270 * config/gcn/gcn.opt (gpu_type): Add gfx906.
21271 * config/gcn/t-gcn-hsa (MULTILIB_OPTIONS): Add gfx906 multilib.
21272 (MULTILIB_DIRNAMES): Rename gcn5 to gfx900.
21275 2019-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21277 PR tree-optimization/90332
21278 * config/aarch64/aarch64.c (aarch64_expand_vector_init):
21279 Handle VALS containing two vectors.
21280 * config/aarch64/aarch64-simd.md (*aarch64_combinez<mode>): Rename
21282 (@aarch64_combinez<mode>): ... This.
21283 (*aarch64_combinez_be<mode>): Rename to...
21284 (@aarch64_combinez_be<mode>): ... This.
21285 (vec_init<mode><Vhalf>): New define_expand.
21286 * config/aarch64/iterators.md (Vhalf): Handle V8HF.
21288 2019-06-06 Jozef Lawrynowicz <jozef.l@mittosystems.com>
21290 * config/msp430/msp430.md (ashlhi3): Use the const_variant of shift
21291 library functions only when not optimizing for size.
21292 (ashlsi3): Likewise.
21293 (ashrhi3): Likewise.
21294 (ashrsi3): Likewise.
21295 (lshrhi3): Likewise.
21296 (lshrsi3): Likewise.
21298 2019-06-06 Andreas Krebbel <krebbel@linux.ibm.com>
21300 PR rtl-optimization/88751
21301 * ira.c (ira): Use the number of the actually referenced registers
21302 when calculating the threshold.
21304 2019-06-06 Jakub Jelinek <jakub@redhat.com>
21306 * configure: Regenerate.
21308 2019-06-06 Jozef Lawrynowicz <jozef.l@mittosystems.com>
21310 * config/msp430/msp430.md (ashlhi3): Force shift src operand into a
21311 register if it is in memory, so the shift can be emulated with a rotate
21313 (ashrhi3): Likewise.
21314 (lshrhi3): Likewise.
21316 2019-06-06 Martin Liska <mliska@suse.cz>
21318 PR tree-optimization/87954
21319 * match.pd: Simplify mult where both arguments are 0 or 1.
21321 2019-06-06 Richard Biener <rguenther@suse.de>
21323 * vr-values.c (vr_values::extract_range_from_ssa_name): Do not
21324 put equivalences on UNDEFINED ranges.
21325 * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children):
21326 Make sure to drop defs of stmts added during simplification
21329 2019-06-06 Richard Biener <rguenther@suse.de>
21331 * tree-ssa-structalias.c: Include tree-cfg.h.
21332 (make_heapvar): Do not make heap vars artificial.
21333 (find_func_aliases_for_builtin_call): Handle stack allocation
21335 (find_func_aliases): Delay processing of simple enough returns
21337 (set_uids_in_ptset): Adjust.
21338 (find_what_var_points_to): Likewise.
21339 (solve_constraints): Do not dump points-to sets here.
21340 (compute_points_to_sets): Post-process return statements,
21341 amending the escaped solution. Dump points-to sets afterwards.
21342 (ipa_pta_execute): Dump points-to sets.
21344 2019-06-06 Martin Liska <mliska@suse.cz>
21347 * doc/install.texi: Fix HTML headers and
21348 titles for 'Installing GCC' pages.
21350 2019-06-06 Martin Liska <mliska@suse.cz>
21352 * ipa-icf-gimple.h (dump_message_1): Remove.
21353 (dump_message): Likewise.
21354 (return_false_with_message_1): Print also file.
21355 (return_false_with_msg): Likewise.
21356 (return_with_result): Likewise.
21357 (return_with_debug): Likewise.
21358 * ipa-icf.c (sem_function::equals_private): Remove call
21361 2019-06-05 Hongtao Liu <hongtao.liu@intel.com>
21363 * config/i386/sse.md (define_mode_suffix vecmemsuffix): New.
21364 (define_insn "avx512dq_fpclass<mode><mask_scalar_merge_name>"): Enable
21365 memory operand for it.
21366 (define_insn "avx512dq_vmfpclass<mode><mask_scalar_merge_name>"): Ditto.
21368 2019-06-05 Martin Sebor <msebor@redhat.com>
21370 * config/i386/i386-features.c (ix86_get_function_versions_dispatcher):
21371 Adjust quoting and hyphenation.
21372 * convert.c (convert_to_real_1): Same.
21373 * gcc.c (driver_wrong_lang_callback): Same.
21374 (driver::handle_unrecognized_options): Same.
21375 * gimple-ssa-nonnull-compare.c (do_warn_nonnull_compare): Same.
21376 * opts-common.c (cmdline_handle_error): Same.
21377 (read_cmdline_option): Same.
21378 * opts-global.c (complain_wrong_lang): Same.
21379 (print_ignored_options): Same.
21380 (handle_common_deferred_options): Same.
21381 * pretty-print.h: Same.
21382 * print-rtl.c (debug_bb_n_slim): Same.
21383 * sched-rgn.c (make_pass_sched_fusion): Same.
21384 * tree-cfg.c (verify_gimple_assign_unary): Same.
21385 (verify_gimple_label): Same.
21386 * tree-ssa-operands.c (verify_ssa_operands): Same.
21387 * varasm.c (do_assemble_alias): Same.
21388 (assemble_alias): Same.
21390 2019-06-05 Richard Henderson <rth@twiddle.net>
21392 * config/alpha/alpha.c (direct_return): Move down after
21393 struct machine_function definition; use saved frame_size;
21395 (struct machine_function): Add sa_mask, sa_size, frame_size.
21396 (alpha_sa_mask, alpha_sa_size, compute_frame_size): Merge into ...
21397 (alpha_compute_frame_layout): ... new function.
21398 (TARGET_COMPUTE_FRAME_LAYOUT): New.
21399 (alpha_initial_elimination_offset): Use saved sa_size.
21400 (alpha_vms_initial_elimination_offset): Likewise.
21401 (alpha_vms_can_eliminate): Remove alpha_sa_size call.
21402 (alpha_expand_prologue): Use saved frame data. Merge integer
21403 and fp register save loops.
21404 (alpha_expand_epilogue): Likewise.
21405 (alpha_start_function): Use saved frame data.
21406 * config/alpha/alpha-protos.h (direct_return): Update.
21407 (alpha_sa_size): Remove.
21409 2019-06-05 Eric Botcazou <ebotcazou@adacore.com>
21411 * fold-const.c (extract_muldiv_1) <PLUS_EXPR>: Do not distribute a
21412 multiplication by a power-of-two value.
21413 (fold_plusminus_mult_expr): Use pow2p_hwi to spot a power-of-two value
21414 and turn the modulo operation into a masking operation.
21416 2019-06-05 Jakub Jelinek <jakub@redhat.com>
21419 * var-tracking.c (vt_expand_loc_callback): Don't create raw subregs
21420 with VOIDmode inner operands.
21422 2019-06-05 Richard Biener <rguenther@suse.de>
21424 PR middle-end/90726
21425 * tree-ssa-loop-niter.c (expand_simple_operations): Do not
21426 turn an expression graph into a tree.
21428 2019-06-05 Jakub Jelinek <jakub@redhat.com>
21430 * omp-expand.c (struct omp_region): Add has_lastprivate_conditional
21432 (expand_parallel_call): If region->inner->has_lastprivate_conditional,
21433 treat it like explicit monotonic schedule modifier.
21434 (expand_omp_for): Initialize has_lastprivate_conditional.
21435 If fd.lastprivate_conditional != 0, treat it like explicit monotonic
21438 * omp-low.c (lower_rec_input_clauses): For lastprivate conditional
21439 references, lookup in in hash map MEM_REF operand instead of the
21441 (lower_omp_1): When looking for lastprivate conditional assignments,
21442 handle MEM_REFs with REFERENCE_TYPE operands.
21444 * omp-low.c (lower_rec_input_clauses): Force max_vf if is_simd and
21445 on privatization clauses OMP_CLAUSE_DECL is privatized by reference
21446 and references a VLA. Handle references to non-VLAs if is_simd
21447 all privatization clauses like reductions.
21448 (lower_rec_input_clauses) <case do_private, case do_firstprivate>:
21449 If omp_is_reference, use always omp simd arrays and set
21450 DECL_VALUE_EXPR in that case, if lower_rec_simd_input_clauses
21451 fails, emit reference initialization.
21453 2019-06-05 Hongtao Liu <hongtao.liu@intel.com>
21456 * config/i386/avx512dqintrin.h (_mm_mask_fpclass_ss_mask,
21457 _mm_mask_fpclass_sd_mask): New intrinsics.
21458 (_mm_fpclass_ss_mask, _mm_fpclass_sd_mask): Modified, use new builtins.
21459 * config/i386/i386-builtin.def
21460 (__builtin_ia32_fpclassss_mask, __builtin_ia32_fpclasssd_mask):
21462 (__builtin_ia32_fpclassss, __builtin_ia32_fpclasssd): Deleted.
21463 * config/i386/i386-builtin-types.def (DEF_FUNCTION_TYPE (QI, V2DF, INT),
21464 DEF_FUNCTION_TYPE (QI, V4SF, INT)): Deleted.
21465 * config/i386/i386-expand.c (case QI_FTYPE_V4SF_INT,
21466 case QI_FTYPE_V2SF_INT): Ditto.
21467 * config/i386/sse.md
21468 (define_insn "avx512dq_vmfpclass<mode><mask_scalar_merge_name>):
21469 Extended to insnstructions with mask operands.
21471 2019-06-04 Segher Boessenkool <segher@kernel.crashing.org>
21473 * config/rs6000/constraints.md (define_register_constraint "wp"):
21475 (define_register_constraint "wq"): Delete.
21476 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
21477 (rs6000_init_hard_regno_mode_ok): Adjust.
21478 * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
21479 RS6000_CONSTRAINT_wp and RS6000_CONSTRAINT_wq.
21480 * config/rs6000/vsx.md (define_mode_attr VSr3): Delete.
21481 (define_mode_attr VSa): Delete.
21482 (define_mode_attr VSisa): New.
21483 (rest of file): Adjust.
21484 * doc/md.texi (Machine Constraints): Adjust.
21486 2019-06-04 Segher Boessenkool <segher@kernel.crashing.org>
21488 * config/rs6000/rs6000.md (define_attr "isa"): Add p9kf and p9tf.
21489 (define_attr "enabled"): Handle those new isa values.
21491 2019-06-04 Segher Boessenkool <segher@kernel.crashing.org>
21493 * config/rs6000/vsx.md (define_mode_attr VSr4): Delete.
21494 (define_mode_attr VSr5): Delete.
21495 (define_mode_attr VStype_sqrt): Delete.
21496 (define_mode_iterator VSX_SPDP): Delete.
21497 (define_mode_attr VS_spdp_res): Delete.
21498 (define_mode_attr VS_spdp_insn): Delete.
21499 (define_mode_attr VS_spdp_type): Delete.
21500 (*vsx_sqrt<mode>2): Adjust.
21501 (vsx_<VS_spdp_insn>): Delete, split to...
21502 (vsx_xscvdpsp): ... this. New. And...
21503 (vsx_xvcvspdp): ... this. New. And...
21504 (vsx_xvcvdpsp): ... this. New.
21506 2019-06-04 Segher Boessenkool <segher@kernel.crashing.org>
21508 * config/rs6000/rs6000.md (define_mode_attr sd): Add values for V4SF
21510 * config/rs6000/vsx.md (define_mode_attr VSs): Delete.
21511 (rest of file): Adjust.
21513 2019-06-04 Segher Boessenkool <segher@kernel.crashing.org>
21515 * config/rs6000/vsx.md (vsx_<VS_spdp_insn>): Use wa instead of <VSa>.
21516 (vsx_extract_<mode>_var): Ditto.
21518 2019-06-04 Segher Boessenkool <segher@kernel.crashing.org>
21520 * config/rs6000/vsx.md: Replace all <VSa> that are used with VSX_TI
21523 2019-06-04 Segher Boessenkool <segher@kernel.crashing.org>
21525 * config/rs6000/constraints.md (define_register_constraint "ww"):
21527 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
21528 (rs6000_init_hard_regno_mode_ok): Adjust.
21529 * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
21530 RS6000_CONSTRAINT_ww.
21531 * config/rs6000/rs6000.md: Adjust.
21532 * config/rs6000/vsx.md: Adjust.
21533 * doc/md.texi (Machine Constraints): Adjust.
21535 2019-06-04 Segher Boessenkool <segher@kernel.crashing.org>
21537 * config/rs6000/rs6000.md (SFDF, SFDF2): Adjust comments.
21538 (define_mode_attr sd): New.
21539 (define_mode_attr s): New.
21540 (define_mode_attr Ftrad): Delete.
21541 (define_mode_attr Fvsx): Delete.
21542 (define_mode_attr Fs): Delete.
21543 (rest of file): Use the new mode attributes.
21544 * config.rs6000/vsx.md: Use the new mode attributes.
21546 2019-06-04 Segher Boessenkool <segher@kernel.crashing.org>
21548 * config/rs6000/vsx.md: Replace all <VSa> that are used with VSX_W
21551 2019-06-04 Segher Boessenkool <segher@kernel.crashing.org>
21553 * config/rs6000/vsx.md (define_mode_attr VSr2): Delete.
21554 (rest of file): Replace all <VSa>, <VSr>, <VSr2>, and <VSr3> that are
21555 used with VSX_B, VSX_D, or VSX_F, with just "wa".
21557 2019-06-04 Bill Schmidt <wschmidt@linux.ibm.com>
21560 * config/rs6000/altivec.h: Don't #define vector, pixel, bool for
21561 C++ with strict ANSI requirements.
21563 2019-06-04 Marc Glisse <marc.glisse@inria.fr>
21565 * tree-ssa-loop-niter.c (number_of_iterations_ne): Skip
21566 computations when step is 1.
21568 2019-06-04 Segher Boessenkool <segher@kernel.crashing.org>
21570 * config/rs6000/constraints.md (define_register_constraint "wf"):
21572 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
21573 (rs6000_init_hard_regno_mode_ok): Adjust.
21574 * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
21575 RS6000_CONSTRAINT_wf.
21576 * config/rs6000/rs6000.md: Adjust.
21577 * config/rs6000/vsx.md: Adjust.
21578 * doc/md.texi (Machine Constraints): Adjust.
21580 2019-06-04 Andrew Pinski <apinski@marvell.com>
21582 * config/aarch64/aarch64.c (aarch64_asan_shadow_offset):
21585 2019-06-04 Segher Boessenkool <segher@kernel.crashing.org>
21587 * config/rs6000/constraints.md (define_register_constraint "wd"):
21589 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
21590 (rs6000_init_hard_regno_mode_ok): Adjust.
21591 * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
21592 RS6000_CONSTRAINT_wd.
21593 * config/rs6000/rs6000.md: Adjust.
21594 * config/rs6000/vsx.md: Adjust.
21595 * doc/md.texi (Machine Constraints): Adjust.
21597 2019-06-04 Segher Boessenkool <segher@kernel.crashing.org>
21599 * config/rs6000/rs6000.md (define_mode_attr Fv2): Delete.
21600 (rest of file): Adjust.
21602 2019-06-04 Segher Boessenkool <segher@kernel.crashing.org>
21604 * config/rs6000/vsx.md (define_mode_attr VS_64reg): Delete.
21605 (*vsx_extract_<P:mode>_<VSX_D:mode>_load): Adjust.
21606 (vsx_splat_<mode>_reg): Adjust.
21608 2019-06-04 Segher Boessenkool <segher@kernel.crashing.org>
21610 * config/rs6000/constraints.md (define_register_constraint "ws"):
21612 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
21613 (rs6000_init_hard_regno_mode_ok): Adjust.
21614 * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
21615 RS6000_CONSTRAINT_ws.
21616 * config/rs6000/rs6000.md: Adjust.
21617 * config/rs6000/vsx.md: Adjust.
21618 * doc/md.texi (Machine Constraints): Adjust.
21620 2019-06-04 Segher Boessenkool <segher@kernel.crashing.org>
21622 * config/rs6000/constraints.md (define_register_constraint "wv"):
21624 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
21625 (rs6000_init_hard_regno_mode_ok): Adjust.
21626 * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
21627 RS6000_CONSTRAINT_wv.
21628 * config/rs6000/rs6000.md: Adjust.
21629 * config/rs6000/vsx.md: Adjust.
21630 * doc/md.texi (Machine Constraints): Adjust.
21632 2019-06-04 Segher Boessenkool <segher@kernel.crashing.org>
21634 * config/rs6000/constraints.md (define_register_constraint "wi"):
21636 (define_register_constraint "wt"): Delete.
21637 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
21638 (rs6000_init_hard_regno_mode_ok): Adjust.
21639 * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
21640 RS6000_CONSTRAINT_wi and RS6000_CONSTRAINT_wt.
21641 * config/rs6000/rs6000.md: Adjust.
21642 * config/rs6000/vsx.md: Adjust.
21643 * doc/md.texi (Machine Constraints): Adjust.
21645 2019-06-04 Szabolcs Nagy <szabolcs.nagy@arm.com>
21647 * config/aarch64/aarch64-protos.h (aarch64_asm_output_external): Remove
21649 * config/aarch64/aarch64.c (aarch64_asm_output_external): Call
21650 default_elf_asm_output_external.
21652 2019-06-04 Martin Liska <mliska@suse.cz>
21654 * ipa-icf.c (INCLUDE_LIST): Remove.
21655 (sem_item_optimizer::execute): Remove call to init_wpa.
21656 * ipa-icf.h (init_wpa): Remove.
21658 2019-06-04 Jakub Jelinek <jakub@redhat.com>
21660 * gimplify.c (gimplify_scan_omp_clauses): Don't sorry_at on lastprivate
21661 conditional on combined for simd.
21662 * omp-low.c (struct omp_context): Add combined_into_simd_safelen0
21664 (lower_rec_input_clauses): For gimple_omp_for_combined_into_p max_vf 1
21665 constructs, don't remove lastprivate_conditional_map, but instead set
21666 ctx->combined_into_simd_safelen0 and adjust hash_map, so that it points
21667 to parent construct temporaries.
21668 (lower_lastprivate_clauses): Handle ctx->combined_into_simd_safelen0
21669 like !ctx->lastprivate_conditional_map.
21670 (lower_omp_1) <case GIMPLE_ASSIGN>: If up->combined_into_simd_safelen0,
21671 use up->outer context instead of up.
21672 * omp-expand.c (expand_omp_for_generic): Perform cond_var bump even if
21673 gimple_omp_for_combined_p.
21674 (expand_omp_for_static_nochunk): Likewise.
21675 (expand_omp_for_static_chunk): Add forgotten cond_var bump that was
21676 probably moved over into expand_omp_for_generic rather than being copied
21679 2019-06-04 Martin Liska <mliska@suse.cz>
21681 * value-prof.c (dump_histogram_value): Fix typo.
21682 (gimple_mod_subtract_transform): Likewise.
21684 2019-06-04 Richard Biener <rguenther@suse.de>
21686 PR middle-end/90726
21687 * tree-chrec.c (chrec_contains_symbols): Add to visited.
21688 (tree_contains_chrecs): Likewise.
21689 (chrec_contains_symbols_defined_in_loop): Move here and avoid
21690 exponential behaivor from ...
21691 * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
21693 (expression_expensive_p): Avoid exponential behavior and compute
21694 expanded size, rejecting any expansion.
21695 * tree-ssa-loop-ivopts.c (abnormal_ssa_name_p): Remove.
21696 (idx_contains_abnormal_ssa_name_p): Likewise.
21697 (contains_abnormal_ssa_name_p_1): New helper for walk_tree.
21698 (contains_abnormal_ssa_name_p): Simplify and use
21699 walk_tree_without_duplicates.
21701 2019-06-04 Richard Biener <rguenther@suse.de>
21703 PR tree-optimization/90738
21705 2019-06-03 Richard Biener <rguenther@suse.de>
21707 * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Get original
21708 full reference tree and record in ref->ref.
21709 (vn_reference_lookup_3): Pass in original ref to
21710 ao_ref_init_from_vn_reference.
21711 (vn_reference_lookup): Likewise.
21712 * tree-ssa-sccvn.h (ao_ref_init_from_vn_reference): Adjust prototype.
21713 * tree-ssa-alias.c (nonoverlapping_component_refs_of_decl_p):
21714 Handle non-decl bases in the original reference.
21716 2019-06-04 Martin Liska <mliska@suse.cz>
21718 * ipa-icf.c (sem_item_optimizer::add_item_to_class): Count
21719 number of references.
21720 (sem_item_optimizer::do_congruence_step):
21721 (sem_item_optimizer::worklist_push): Dump how references
21723 (sem_item_optimizer::worklist_pop): Use heap.
21724 (sem_item_optimizer::process_cong_reduction): Likewise.
21725 * ipa-icf.h: Use fibonacci_heap insteam of std::list.
21727 2019-06-04 Martin Liska <mliska@suse.cz>
21729 * ipa-icf.h (struct sem_usage_pair_hash): New.
21730 (sem_usage_pair_hash::hash): Likewise.
21731 (sem_usage_pair_hash::equal): Likewise.
21732 (struct sem_usage_hash): Likewise.
21733 * ipa-icf.c (sem_item::sem_item): Initialize
21734 referenced_by_count.
21735 (sem_item::add_reference): Register a reference
21736 in ref_map and not in target->usages.
21737 (sem_item::setup): Remove initialization of
21739 (sem_item::~sem_item): Remove usage of dead vectors.
21740 (sem_item::dump): Remove dump of references.
21741 (sem_item_optimizer::sem_item_optimizer): Initialize
21743 (sem_item_optimizer::read_section): Remove useless
21745 (sem_item_optimizer::parse_funcs_and_vars): Likewise here.
21746 (sem_item_optimizer::build_graph): Pass m_references
21747 to ::add_reference.
21748 (sem_item_optimizer::verify_classes): Remove usage of dead
21750 (sem_item_optimizer::traverse_congruence_split): Return true
21751 when a class is split.
21752 (sem_item_optimizer::do_congruence_step_for_index): Use
21753 hash_map for look up of (sem_item *, index). That brings
21754 significant speed up.
21755 (sem_item_optimizer::do_congruence_step): Return true
21756 when a split is done.
21757 (congruence_class::is_class_used): Use referenced_by_count.
21759 2019-06-04 Alan Modra <amodra@gmail.com>
21762 * config/rs6000/rs6000.c (rs6000_call_aix): Correct r271753 merge
21765 2019-06-03 Segher Boessenkool <segher@kernel.crashing.org>
21767 * config/rs6000/rs6000.h (MASK_MFPGPR): Delete.
21768 * config/rs6000/rs6000.c (direct_move_p): Adjust.
21769 (rs6000_secondary_reload_simple_move): Adjust.
21770 (rs6000_opt_masks): Neuter the "mfpgpr" option.
21771 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust.
21772 * config/rs6000/rs6000-cpus.def (ISA_2_5_MASKS_EMBEDDED): Adjust
21775 * config/rs6000/rs6000.md (floatsi<mode>2_lfiwax): Adjust.
21776 (floatunssi<mode>2_lfiwzx): Adjust.
21777 (fix_trunc<mode>si2_stfiwx): Adjust.
21778 (fixuns_trunc<mode>si2_stfiwx): Adjust.
21779 * config/rs6000/rs6000.opt (mno-mfpgpr): New.
21780 (mfpgpr): Mark as deprecated.
21781 * doc/extend.texi (PowerPC Function Attributes): Delete mfpgpr.
21782 (Basic PowerPC Built-in Functions Available on ISA 2.05): Adjust.
21783 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mmfpgpr.
21785 2019-06-03 Segher Boessenkool <segher@kernel.crashing.org>
21787 * config/rs6000/constraints.md (define_register_constraint "wg"):
21789 * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
21790 RS6000_CONSTRAINT_wg.
21791 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
21792 (rs6000_init_hard_regno_mode_ok): Adjust.
21793 * config/rs6000/rs6000.md (*mov<mode>_softfloat32, *movdi_internal64):
21794 Delete "wg" alternatives.
21795 * doc/md.texi (Machine Constraints): Adjust.
21797 2019-06-03 Alan Modra <amodra@gmail.com>
21799 * bb-reorder.c (copy_bb_p): Don't overflow size calculation.
21800 (get_uncond_jump_length): Assert length less than INT_MAX and
21803 2019-06-03 Wilco Dijkstra <wdijkstr@arm.com>
21805 PR middle-end/64242
21806 * builtins.c (expand_builtin_longjmp): Add frame clobbers and schedule
21808 (expand_builtin_nonlocal_goto): Likewise.
21810 2019-06-03 Szabolcs Nagy <szabolcs.nagy@arm.com>
21812 * config/aarch64/aarch64-protos.h (aarch64_asm_output_alias): Declare.
21813 (aarch64_asm_output_external): Declare.
21814 * config/aarch64/aarch64.c (aarch64_asm_output_variant_pcs): New.
21815 (aarch64_declare_function_name): Call aarch64_asm_output_variant_pcs.
21816 (aarch64_asm_output_alias): New.
21817 (aarch64_asm_output_external): New.
21818 * config/aarch64/aarch64.h (ASM_OUTPUT_DEF_FROM_DECLS): Define.
21819 (ASM_OUTPUT_EXTERNAL): Define.
21821 2019-06-03 Aldy Hernandez <aldyh@redhat.com>
21822 * tree-vrp.h (value_range_base::nonzero_p): New.
21823 (value_range_base::set_nonnull): Rename to...
21824 (value_range_base::set_nonzero): ...this.
21825 (value_range_base::set_null): Rename to...
21826 (value_range_base::set_zero): ...this.
21827 (value_range::set_nonnull): Remove.
21828 (value_range::set_null): Remove.
21829 * tree-vrp.c (range_is_null): Remove.
21830 (range_is_nonnull): Remove.
21831 (extract_range_from_binary_expr): Use value_range_base::*zero_p
21832 instead of range_is_*null.
21833 (extract_range_from_unary_expr): Same.
21834 (value_range_base::set_nonnull): Rename to...
21835 (value_range_base::set_nonzero): ...this.
21836 (value_range::set_nonnull): Remove.
21837 (value_range_base::set_null): Rename to...
21838 (value_range_base::set_zero): ...this.
21839 (value_range::set_null): Remove.
21840 (extract_range_from_binary_expr): Rename set_*null uses to
21842 (extract_range_from_unary_expr): Same.
21843 (union_helper): Same.
21844 * vr-values.c (get_value_range): Use set_*zero instead of
21846 (vr_values::extract_range_from_binary_expr): Same.
21847 (vr_values::extract_range_basic): Same.
21849 2019-06-03 Wilco Dijkstra <wdijkstr@arm.com>
21852 * opts.c (parse_and_check_align_values): Allow 4 alignment values.
21854 2019-06-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21856 * config/aarch64/iterators.md (MAX_OPP): New code attr.
21857 * config/aarch64/aarch64-simd.md (*aarch64_<su>abd<mode>_3):
21859 (aarch64_<su>abd<mode>_3): ... This.
21860 (<sur>sadv16qi): Add TARGET_DOTPROD expansion.
21862 2019-06-03 Richard Biener <rguenther@suse.de>
21864 * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Get original
21865 full reference tree and record in ref->ref.
21866 (vn_reference_lookup_3): Pass in original ref to
21867 ao_ref_init_from_vn_reference.
21868 (vn_reference_lookup): Likewise.
21869 * tree-ssa-sccvn.h (ao_ref_init_from_vn_reference): Adjust prototype.
21870 * tree-ssa-alias.c (nonoverlapping_component_refs_of_decl_p):
21871 Handle non-decl bases in the original reference.
21873 2019-06-03 Martin Liska <mliska@suse.cz>
21875 * doc/generic.texi: Remove Java Trees.
21877 2019-06-03 Martin Liska <mliska@suse.cz>
21879 * fold-const.c (operand_equal_p): Fix typo as compare_tree_int
21880 returns 0 when operands are equal.
21882 2019-06-03 Richard Biener <rguenther@suse.de>
21884 PR tree-optimization/90716
21885 * tree-loop-distribution.c (destroy_loop): Process blocks in
21888 2019-06-03 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
21891 * vector-builder.h (vector_builder::count_dups): New method.
21892 * config/aarch64/aarch64-protos.h (aarch64_expand_sve_vector_init):
21894 * config/aarch64/aarch64/sve.md (aarch64_sve_rev64<mode>): Use @.
21895 (vec_init<mode><Vel>): New pattern.
21896 * config/aarch64/aarch64.c (emit_insr): New function.
21897 (aarch64_sve_expand_vector_init_handle_trailing_constants): Likewise.
21898 (aarch64_sve_expand_vector_init_insert_elems): Likewise.
21899 (aarch64_sve_expand_vector_init_handle_trailing_same_elem): Likewise.
21900 (aarch64_sve_expand_vector_init): Define two overloaded functions.
21902 2019-06-03 Alejandro Martinez <alejandro.martinezvicente@arm.com>
21904 PR tree-optimization/90681
21905 * internal-fn.c (mask_load_direct): Mark as non-vectorizable again.
21906 * tree-vect-slp.c (vect_build_slp_tree_1): Add masked loads as a
21907 special case for SLP, but fail on non-groupped loads.
21909 2019-06-03 Martin Liska <mliska@suse.cz>
21911 * cfg.c (debug): Use TDF_DETAILS for debug and
21912 print edge info only once.
21914 2019-06-02 Thomas Koenig <tkoenig@gcc.gnu.org>
21917 * predict.def (PRED_FORTRAN_CONTIGUOUS): New predictor.
21919 2019-06-01 Martin Sebor <msebor@redhat.com>
21921 PR middle-end/90694
21922 * tree-pretty-print.c (dump_generic_node): Add parentheses.
21924 2019-05-31 Jan Hubicka <jh@suse.cz>
21926 * alias.c: Include ipa-utils.h.
21927 (get_alias_set): Try to complete ODR type via ODR type hash lookup.
21928 * ipa-devirt.c (prevailing_odr_type): New.
21929 * ipa-utils.h (previaling_odr_type): Declare.
21931 2019-05-31 H.J. Lu <hongjiu.lu@intel.com>
21932 Hongtao Liu <hongtao.liu@intel.com>
21935 * config/i386/i386-features.c (rest_of_insert_endbranch): Remove
21936 NOTE_INSN_DELETED_LABEL check.
21938 2019-05-31 Prachi Godbole <prachi.godbole@imgtec.com>
21939 Robert Suchanek <robert.suchanek@mips.com>
21941 * config/mips/mips.c (mips_expand_builtin_insn): Swap the 1st
21942 and 3rd operands of the fmadd/fmsub/maddv builtin.
21944 2019-05-31 Jakub Jelinek <jakub@redhat.com>
21946 * tree.h (OMP_CLAUSE__CONDTEMP__ITER): Define.
21947 * gimplify.c (gimplify_scan_omp_clauses): Allow lastprivate conditional
21948 on OMP_SIMD if not nested inside of worksharing loop that also has
21949 lastprivate conditional clause for the same decl.
21950 (gimplify_omp_for): Add _condtemp_ clauses to OMP_SIMD if needed.
21951 * omp-low.c (scan_sharing_clauses): Handle OMP_CLAUSE__CONDTEMP_ also
21953 (lower_rec_input_clauses): Likewise. Handle lastprivate conditional
21955 (lower_lastprivate_conditional_clauses): Handle lastprivate conditional
21957 (lower_lastprivate_clauses): Likewise.
21958 (lower_omp_sections): Call lower_lastprivate_conditional_clauses before
21959 calling lower_rec_input_clauses.
21960 (lower_omp_for): Likewise.
21961 (lower_omp_1): Use first rather than second OMP_CLAUSE__CONDTEMP_
21962 clause on simd construct.
21963 * omp-expand.c (expand_omp_simd): Initialize cond_var if
21964 OMP_CLAUSE__CONDTEMP_ clause is present.
21966 * omp-low.c (lower_rec_simd_input_clauses): Set TREE_THIS_NOTRAP on
21969 2019-05-31 Xiong Hu Luo <luoxhu@linux.ibm.com>
21972 * c-format.c (print_char_table, scanf_char_table): Replace BADLEN with
21973 TEX_D32, TEX_D64 or TEX_D128.
21975 2019-05-31 Marc Glisse <marc.glisse@inria.fr>
21977 * match.pd (~(vec?cst1:cst2)): New transformation.
21979 2019-05-31 Marc Glisse <marc.glisse@inria.fr>
21981 * match.pd (X/[ex]D<Y/[ex]D): Handle negative denominator.
21982 ((size_t)(A /[ex] B) CMP C): New transformation.
21984 2019-05-31 Richard Sandiford <richard.sandiford@arm.com>
21986 * doc/md.texi: Document define_insn_and_rewrite.
21987 * rtl.def (DEFINE_INSN_AND_REWRITE): New rtx code.
21988 * gensupport.c (queue_elem): Update comment.
21989 (replace_operands_with_dups): New function.
21990 (gen_rewrite_sequence): Likewise.
21991 (process_rtx): Handle DEFINE_INSN_AND_REWRITE.
21992 * read-rtl.c (apply_subst_iterator): Likewise.
21993 (add_condition_to_rtx, named_rtx_p): Likewise.
21994 (rtx_reader::read_rtx_operand): Likewise.
21995 * config/aarch64/aarch64-sve.md
21996 (while_ult<GPI:mode><PRED_ALL:mode>_cc): Rename to...
21997 (*while_ult<GPI:mode><PRED_ALL:mode>_cc): ...this and use
21998 define_insn_and_rewrite.
21999 (*cond_<optab><mode>_any): Turn into define_insn_and_rewrites.
22000 Remove separate define_split.
22002 2019-05-31 Jan Hubicka <jh@suse.cz>
22004 * tree-ssa-alias.c (type_has_components_p): New function.
22005 (aliasing_component_refs_p): Use it.
22007 2019-05-31 Martin Liska <mliska@suse.cz>
22009 * gdbhooks.py: Add const_tree to TreePrinter.
22011 2019-05-31 Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
22014 * common.opt (feliminate-unused-debug-symbols): Enable by default.
22015 * doc/invoke.texi (Debugging Options): Document new default of
22016 -feliminate-unused-debug-symbols and remove restriction to 'stabs'.
22018 2019-05-31 Jakub Jelinek <jakub@redhat.com>
22020 PR tree-optimization/90671
22021 * tree-ssa-threadupdate.c (ssa_create_duplicates): If
22022 template_block used to be empty on the first call, don't use
22023 gsi_split_seq_after and gsi_insert_seq_after, but remember whole
22024 seq with bb_seq and set it with set_bb_seq.
22026 2019-05-31 Iain Sandoe <iain@sandoe.co.uk>
22028 * config/i386/darwin.h (ASM_OUTPUT_MAX_SKIP_ALIGN): New.
22030 2019-05-30 Bill Schmidt <wschmidt@linux.ibm.com>
22031 Michael Meissner <meissner@linux.ibm.com>
22033 * config/rs6000/predicates.md (pcrel_address): New define_predicate.
22034 (prefixed_mem_operand): Likewise.
22035 (non_prefixed_mem_operand): Likewise.
22036 * config/rs6000/rs6000-protos.h (rs6000_prefixed_address): New
22038 * config/rs6000/rs6000.c (print_operand_address): Handle
22039 PC-relative addresses.
22040 (mode_supports_prefixed_address_p): New function.
22041 (rs6000_prefixed_address): New function.
22042 * config/rs6000/rs6000.h (SYMBOL_FLAG_PCREL): New #define.
22043 (SYMBOL_REF_PCREL_P): Likewise.
22045 2019-05-30 Jakub Jelinek <jakub@redhat.com>
22047 * gimplify.c (enum gimplify_omp_var_data): Add GOVD_CONDTEMP.
22048 (gimplify_adjust_omp_clauses_1): Handle GOVD_CONDTEMP.
22049 (gimplify_omp_for): If worksharing loop with lastprivate conditional
22050 is nested inside of parallel region, add _condtemp_ clause to both.
22051 * tree-nested.c (convert_nonlocal_omp_clauses,
22052 convert_local_omp_clauses): Ignore OMP_CLAUSE__CONDTEMP_ instead of
22054 * omp-general.h (struct omp_for_data): Add have_pointer_condtemp
22056 * omp-general.c (omp_extract_for_data): Compute it.
22057 * omp-low.c (scan_sharing_clauses): Handle OMP_CLAUSE__CONDTEMP_.
22058 (lower_rec_input_clauses): Likewise.
22059 (lower_lastprivate_conditional_clauses): If OMP_CLAUSE__CONDTEMP_
22060 clause is already present, just add one further one after it.
22061 (lower_lastprivate_clauses): Handle cond_ptr with array type.
22062 (lower_send_shared_vars): Clear _condtemp_ vars.
22063 (lower_omp_1) <case GIMPLE_ASSIGN>: Handle target data like critical
22064 or section or taskgroup.
22065 * omp-expand.c (determine_parallel_type): Disallow combining only if
22066 first OMP_CLAUSE__CONDTEMP_ has pointer type. Disallow combining
22067 of parallel sections if OMP_CLAUSE__CONDTEMP_ is present.
22068 (expand_omp_for_generic, expand_omp_for_static_nochunk,
22069 expand_omp_for_static_chunk, expand_omp_for): Use
22070 fd->have_pointer_condtemp instead of fd->lastprivate_conditional to
22071 determine if a special set of API routines are needed and if condtemp
22072 needs to be initialized, while always initialize cond_var if
22073 fd->lastprivate_conditional is non-zero.
22075 2019-05-30 Bill Schmidt <wschmidt@linux.ibm.com>
22076 Michael Meissner <meissner@linux.ibm.com>
22078 * config/rs6000/constraints.md (eI): New constraint.
22079 * config/rs6000/predicates.md (cint34_operand): New predicate.
22080 * config/rs6000/rs6000.h (SIGNED_16BIT_OFFSET_P): New #define.
22081 (SIGNED_34BIT_OFFSET_P): Likewise.
22082 * doc/md.texi (eI): Document constraint.
22084 2019-05-30 Sylvia Taylor <sylvia.taylor@arm.com>
22086 * config/aarch64/aarch64-sve.md (*fabd<mode>3): New.
22088 2019-05-30 Bill Schmidt <wschmidt@linux.ibm.com>
22089 Michael Meissner <meissner@linux.ibm.com>
22091 * rs6000-cpus.def (OTHER_FUSION_MASKS): New #define.
22092 (ISA_3_0_MASKS_SERVER): Mask off OTHER_FUSION_MASKS.
22093 (ISA_3_0_MASKS_IEEE): Remove OPTION_MASK_DIRECT_MOVE.
22094 (ISA_FUTURE_MASKS_SERVER): Add OPTION_MASK_PREFIXED_ADDR.
22095 (OTHER_FUTURE_MASKS): Likewise.
22096 (POWERPC_MASKS): Likewise.
22097 * rs6000.c (rs6000_option_override_internal): Error if -mpcrel is
22098 specified without -mprefixed-addr or -mcpu=future. Error if
22099 -mprefixed-addr is specified without -mcpu=future.
22100 (rs6000_opt_masks): Add entry for prefixed-addr.
22101 * rs6000.opt (mprefixed-addr): New option.
22103 2019-05-30 Sam Tebbs <sam.tebbs@arm.com>
22105 * aarch64/aarch64.c (aarch64_post_cfi_startproc): Add
22106 cfun->is_thunk check.
22108 2019-05-30 Jakub Jelinek <jakub@redhat.com>
22110 * tree-predcom.c (is_inv_store_elimination_chain): Fix a typo - lenght
22113 2019-05-30 Martin Liska <mliska@suse.cz>
22115 * gdbinit.in: Fix 'ptc' command. Add trt
22116 that prints TREE_TYPE($).
22118 2019-05-29 Bill Schmidt <wschmidt@linux.ibm.com>
22119 Alan Modra <amodra@gmail.com>
22121 * config/rs6000/rs6000.c (rs6000_call_template_1): Handle pcrel
22123 (rs6000_indirect_call_template_1): ...and here.
22124 (rs6000_pltseq_template): Handle plt_pcrel34. Rework tocsave,
22125 plt16_ha, plt16_lo, mtctr indirect calls. Use
22126 rs6000_pltseq_enum.
22127 (rs6000_decl_ok_for_sibcall): New function.
22128 (rs6000_function_ok_for_sibcall): Refactor.
22129 (rs6000_longcall_ref): Use UNSPEC_PLT_PCREL when pcrel.
22130 (rs6000_call_aix): Don't emit toc restore rtl for indirect calls
22131 when pcrel. Reorganize.
22132 (rs6000_sibcall_aix): Don't add r2 to function usage when pcrel.
22133 * rs6000.h (rs6000_pltseq_enum): New enum.
22134 * rs6000.md (UNSPEC_PLT_PCREL): New unspec.
22135 (*pltseq_tocsave): Use rs6000_pltseq_enum.
22136 (*pltseq_plt16_ha): Likewise.
22137 (*pltseq_plt16_lo): Likewise.
22138 (*pltseq_mtctr): Likewise.
22139 (*pltseq_plt_pcrel): New insn.
22140 (*call_local_aix): Handle @notoc calls.
22141 (*call_value_local_aix): Likewise.
22142 (*call_nonlocal_aix): Adjust lengths for pcrel calls.
22143 (*call_value_nonlocal_aix): Likewise.
22144 (*call_indirect_pcrel): New insn.
22145 (*call_value_indirect_pcrel): Likewise.
22147 2019-05-29 Uroš Bizjak <ubizjak@gmail.com>
22149 * config/i386/sse.md (*save_multiple<mode>): Rename from
22150 save_multiple<mode>.
22151 (*restore_multiple<mode>): Rename from restore_multiple<mode>.
22152 (*restore_multiple_and_return<mode>): Rename from
22153 restore_multiple_and_return<mode>.
22154 (*restore_multiple_leave_return<mode>): Rename from
22155 restore_multiple_leave_return<mode>.
22157 2019-05-29 Yoshinori Sato <ysato@users.sourceforge.jp>
22159 * config.gcc (rx-*-linux*): New target.
22160 * config/rx/elf.opt: New file.
22161 * config/rx/linux.h: Likewise.
22162 * config/rx/t-linux: Likewise.
22163 * config/rx/rx.c (TARGET_SAVE_ACC_REGISTER): If not defined,
22165 * config/rx/rx.h (ASM_APP_ON): Allow to be overridden.
22166 (ASM_APP_OFF): Likewise.
22167 * config/rx/rx.opt: Drop -msim and -mas100-syntax, they were
22170 2019-05-29 Jan Hubicka <jh@suse.cz>
22172 * tree-ssa-alias.c (same_type_for_tbaa): Return ture if main
22173 variants are pointer equivalent.
22175 2019-05-29 Alejandro Martinez <alejandro.martinezvicente@arm.com>
22177 * config/aarch64/aarch64-c.c: Added TARGET_SVE2.
22178 * config/aarch64/aarch64-sve2.md: New file.
22179 (<u>avg<mode>3_floor): New pattern.
22180 (<u>avg<mode>3_ceil): Likewise.
22181 (*<sur>h<addsub><mode>): Likewise.
22182 * config/aarch64/aarch64.h: Added AARCH64_ISA_SVE2 and TARGET_SVE2.
22183 * config/aarch64/aarch64.md: Include aarch64-sve2.md.
22185 2019-05-29 Jakub Jelinek <jakub@redhat.com>
22188 * optc-save-gen.awk: In cl_optimization_print, use correct condition
22189 for var_opt_string printing. In cl_optimization_print_diff, print
22190 (null) instead of invoking undefined behavior if one of the
22191 var_opt_string pointers is NULL and use && instead of first || in the
22192 guarding condition. For var_target_other options, handle const char *
22193 target variables similarly to const char * optimize node variables.
22195 2019-05-29 Sam Tebbs <sam.tebbs@arm.com>
22197 * config/aarch64/aarch64-builtins.c (aarch64_builtins): Add
22198 AARCH64_PAUTH_BUILTIN_AUTIB1716 and AARCH64_PAUTH_BUILTIN_PACIB1716.
22199 * config/aarch64/aarch64-builtins.c (aarch64_init_pauth_hint_builtins):
22200 Add autib1716 and pacib1716 initialisation.
22201 * config/aarch64/aarch64-builtins.c (aarch64_expand_builtin): Add checks
22202 for autib1716 and pacib1716.
22203 * config/aarch64/aarch64-protos.h (aarch64_key_type,
22204 aarch64_post_cfi_startproc): Define.
22205 * config/aarch64/aarch64-protos.h (aarch64_ra_sign_key): Define extern.
22206 * config/aarch64/aarch64.c (aarch64_handle_standard_branch_protection,
22207 aarch64_handle_pac_ret_protection): Set default sign key to A.
22208 * config/aarch64/aarch64.c (aarch64_expand_epilogue,
22209 aarch64_expand_prologue): Add check for b-key.
22210 * config/aarch64/aarch64.c (aarch64_ra_sign_key,
22211 aarch64_post_cfi_startproc, aarch64_handle_pac_ret_b_key): Define.
22212 * config/aarch64/aarch64.h (TARGET_ASM_POST_CFI_STARTPROC): Define.
22213 * config/aarch64/aarch64.c (aarch64_pac_ret_subtypes): Add "b-key".
22214 * config/aarch64/aarch64.md (unspec): Add UNSPEC_AUTIA1716,
22215 UNSPEC_AUTIB1716, UNSPEC_AUTIASP, UNSPEC_AUTIBSP, UNSPEC_PACIA1716,
22216 UNSPEC_PACIB1716, UNSPEC_PACIASP, UNSPEC_PACIBSP.
22217 * config/aarch64/aarch64.md (do_return): Add check for b-key.
22218 * config/aarch64/aarch64.md (<pauth_mnem_prefix>sp): Replace
22219 pauth_hint_num_a with pauth_hint_num.
22220 * config/aarch64/aarch64.md (<pauth_mnem_prefix>1716): Replace
22221 pauth_hint_num_a with pauth_hint_num.
22222 * config/aarch64/aarch64.opt (msign-return-address=): Deprecate.
22223 * config/aarch64/iterators.md (PAUTH_LR_SP): Add UNSPEC_AUTIASP,
22224 UNSPEC_AUTIBSP, UNSPEC_PACIASP, UNSPEC_PACIBSP.
22225 * config/aarch64/iterators.md (PAUTH_17_16): Add UNSPEC_AUTIA1716,
22226 UNSPEC_AUTIB1716, UNSPEC_PACIA1716, UNSPEC_PACIB1716.
22227 * config/aarch64/iterators.md (pauth_mnem_prefix): Add UNSPEC_AUTIA1716,
22228 UNSPEC_AUTIB1716, UNSPEC_PACIA1716, UNSPEC_PACIB1716, UNSPEC_AUTIASP,
22229 UNSPEC_AUTIBSP, UNSPEC_PACIASP, UNSPEC_PACIBSP.
22230 * config/aarch64/iterators.md (pauth_hint_num_a): Replace
22231 UNSPEC_PACI1716 and UNSPEC_AUTI1716 with UNSPEC_PACIA1716 and
22232 UNSPEC_AUTIA1716 respectively.
22233 * config/aarch64/iterators.md (pauth_hint_num_a): Rename to
22234 pauth_hint_num and add UNSPEC_PACIBSP, UNSPEC_AUTIBSP,
22235 UNSPEC_PACIB1716, UNSPEC_AUTIB1716.
22236 * doc/invoke.texi (-mbranch-protection): Add b-key type.
22237 * config/aarch64/aarch64-bti-insert.c (aarch64_pac_insn_p): Rename
22238 UNSPEC_PACISP to UNSPEC_PACIASP and UNSPEC_PACIBSP.
22240 2019-05-29 Jakub Jelinek <jakub@redhat.com>
22242 * gimplify.c (struct gimplify_omp_ctx): Add clauses member.
22243 (gimplify_scan_omp_clauses): Initialize ctx->clauses.
22244 (gimplify_adjust_omp_clauses_1): Transform lastprivate conditional
22245 explicit clause on combined parallel into implicit shared clause.
22246 (gimplify_adjust_omp_clauses): Move lastprivate conditional clause
22247 and firstprivate if the decl has one too from combined parallel to
22248 the worksharing construct.
22250 2019-05-28 Bill Schmidt <wschmidt@linux.ibm.com>
22251 Michael Meissner <meissner@linux.ibm.com>
22253 * config/rs6000/rs6000-cpus.def (OTHER_FUTURES_MASK): New #define.
22255 2019-05-28 Michael Meissner <meissner@linux.ibm.com>
22257 * rtl.h (LABEL_REF_P): New #define.
22259 2019-05-28 John David Anglin <danglin@gcc.gnu.org>
22261 * config/pa/pa.c (hppa_profile_hook): Remove offset adjustment.
22263 2019-05-28 Alejandro Martinez <alejandro.martinezvicente@arm.com>
22265 * internal-fn.c: Marked mask_load_direct as vectorizable.
22266 * tree-data-ref.c (data_ref_compare_tree): Fixed comment typo.
22267 * tree-vect-data-refs.c (can_group_stmts_p): Allow masked loads to be
22268 combined even if masks different with allow_slp_p param.
22269 (vect_analyze_data_ref_accesses): Mark SLP only vectorizable groups.
22270 * tree-vect-loop.c (vect_dissolve_slp_only_groups): New function to
22271 dissolve SLP-only vectorizable groups when SLP has been discarded.
22272 (vect_analyze_loop_2): Call vect_dissolve_slp_only_groups when needed.
22273 * tree-vect-slp.c (vect_get_and_check_slp_defs): Check masked loads
22275 (vect_build_slp_tree_1): Fixed comment typo.
22276 (vect_build_slp_tree_2): Include masks from masked loads in SLP tree.
22277 * tree-vect-stmts.c (vectorizable_load): Allow vectorizaion of masked
22278 loads for SLP only.
22279 * tree-vectorizer.h (_stmt_vec_info): Added flag for SLP-only
22281 * tree-vectorizer.c (vec_info::new_stmt_vec_info): Likewise.
22283 2019-05-28 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
22285 * config/alpha/alpha.c [TARGET_ABI_OSF] (alpha_output_mi_thunk_osf):
22286 Remove obsolete use_thunk reference.
22287 * config/i386/i386.c (x86_output_mi_thunk): Likewise.
22288 * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
22289 * config/nios2/nios2.c (nios2_asm_output_mi_thunk): Likewise.
22290 * config/or1k/or1k.c (or1k_output_mi_thunk): Likewise.
22291 * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
22292 * config/sh/sh.c (sh_output_mi_thunk): Likewise.
22293 * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
22294 * config/tilegx/tilegx.c (tilegx_output_mi_thunk): Likewise.
22295 * config/tilepro/tilepro.c (tilepro_asm_output_mi_thunk): Likewise.
22297 2019-05-28 Nathan Sidwell <nathan@acm.org>
22299 * tree.h (IDENTIFIER_ANON_P): New.
22300 (anon_aggrname_format, anon_aggname_p): Don't declare.
22301 (make_anon_name): Declare.
22302 * lto-streamer-out.c (DFS::DFS_write_tree_body): Use IDENTIFIER_ANON_P.
22303 (hash_tree): Likewise.
22304 * tree-streamer-out.c (write_ts_decl_minimal_tree): Likewise.
22305 * tree.c (anon_aggrname_p, anon_aggrname_format): Delete.
22306 (anon_cnt, make_anon_name): New.
22308 2019-05-28 Martin Liska <mliska@suse.cz>
22311 * opts-global.c (decode_options): Print help for all
22312 help_option_arguments.
22313 * opts.c (print_help): Add new argument.
22314 (common_handle_option): Remember all values into
22315 help_option_arguments.
22316 * opts.h (print_help): Add new argument.
22318 2019-05-28 Martin Liska <mliska@suse.cz>
22321 * ipa-icf-gimple.c (func_checker::compare_loops): New function.
22322 * ipa-icf-gimple.h (func_checker::compare_loops): Likewise.
22323 (func_checker::compare_bb): Call compare_loops.
22325 2019-05-27 Jakub Jelinek <jakub@redhat.com>
22327 * gimplify.c (gimplify_scan_omp_clauses): Allow lastprivate conditional
22328 on sections construct.
22329 * omp-low.c (lower_lastprivate_conditional_clauses): Handle sections
22331 (lower_omp_sections): Handle lastprivate conditional.
22332 (lower_omp_1) <case GIMPLE_ASSIGN>: Handle sections construct with
22333 lastprivate_conditional_map.
22334 * omp-expand.c (expand_omp_sections): Handle lastprivate conditional.
22336 * omp-low.c (lower_omp_1) <case GIMPLE_ASSIGN>: Look through ordered,
22337 critical, taskgroup and section regions when looking for a region
22338 with non-NULL lastprivate_conditional_map.
22340 2019-05-27 Uroš Bizjak <ubizjak@gmail.com>
22342 * config/i386/i386.c (ix86_gen_add3): Remove indirect function.
22343 (*ix86_gen_sub3): Ditto.
22344 (*ix86_gen_sub3_carry): Ditto.
22345 (*ix86_gen_one_cmpl2): Ditto.
22346 (*ix86_gen_andsp): Ditto.
22347 (ix86_init_large_pic_reg): Use gen_add2_insn instead of ix86_gen_add3.
22348 (gen_and2_insn): New static function.
22349 (ix86_expand_prologue): Use gen_and2_insn instead of ix86_gen_andsp.
22350 Use gen_add3_insn instead of ix86_gen_add3.
22351 (ix86_expand_split_stack_prologue): Use gen_add2_insn
22352 instead of ix86_gen_add3.
22353 (legitimize_tls_address): Use gen_add2_insn instead of ix86_gen_add3.
22354 Use gen_sub3_insn instead of ix86_gen_sub3.
22355 * config/i386-expand.c (ix86_split_long_move): Use gen_add2_insn
22356 instead of ix86_gen_add3.
22357 (ix86_expand_strlensi_unroll_1): Use gen_add2_insn instead of
22358 ix86_gen_add3. Use gen_sub3_insn instead of ix86_gen_sub3.
22359 (construct_plt_address): Use gen_add2_insn instead of ix86_gen_add3.
22360 * config/i386/i386-options.c (ix86_option_override_internal):
22361 Do not initialize ix86_gen_add3, ix86_gen_sub3, ix86_gen_sub3_carry,
22362 ix86_gen_one_cmpl2 and ix86_gen_andsp.
22364 2019-05-27 Eric Botcazou <ebotcazou@adacore.com>
22366 * dwarf2out.c (resolve_args_picking_1): Deal with DW_OP_GNU_addr_index
22367 and DW_OP_GNU_const_index opcodes.
22369 2019-05-27 Uroš Bizjak <ubizjak@gmail.com>
22371 * config/i386/i386.h (STACK_SIZE_MODE): Define.
22373 2019-05-27 Richard Biener <rguenther@suse.de>
22375 PR tree-optimization/90637
22376 * tree-ssa-sink.c (statement_sink_location): Honor the
22377 computed sink location for single-uses.
22379 2019-05-27 Richard Biener <rguenther@suse.de>
22381 PR middle-end/90610
22382 * match.pd (vec_perm): Avoid clobbering op0 when not generating
22385 2019-05-26 Uroš Bizjak <ubizjak@gmail.com>
22387 * config/i386/i386.md (@sub<mode>3_carry): Rename
22388 from sub<mode>3_carry.
22389 (@leave_<mode>): New expander.
22390 (*leave): Rename from leave.
22391 (*leave_rex64): Rename from leave_rex64.
22392 (@monitorx_<mode>): Rename from monitorx_<mode>.
22393 (@clzero_<mode>): Rename from clzero_<mode>.
22394 * config/i386/sse.md (@sse3_monitor_<mode>): Rename
22395 from sse3_monitor_<mode>.
22396 * config/i386/i386.c (ix86_gen_sub3_carry): Remove indirect function.
22397 (*ix86_gen_leave): Ditto.
22398 (*ix86_gen_monitor): Ditto.
22399 (*ix86_gen_monitorx): Ditto.
22400 (*ix86_gen_clzero): Ditto.
22401 (ix86_emit_leave): Use gen_leave instead of ix86_gen_leave.
22402 * config/i386/i386-expand.c (ix86_expand_strlensi_unroll_1):
22403 Use gen_sub3_carry instead of ix86_gen_sub3_carry.
22404 (ix86_expand_builtin) <case IX86_BUILTIN_MONITOR>:
22405 Use gen_sse3_monitor instead of ix86_gen_monitor.
22406 <case IX86_BUILTIN_MONITORX>: Use gen_monitorx
22407 instead of ix86_gen_monitorx.
22408 <case IX86_BUILTIN_CLZERO>: Use gen_clzero
22409 instead of ix86_gen_clzero.
22410 * config/i386/i386-options.c (ix86_option_override_internal):
22411 Do not initialize ix86_gen_leave, ix86_gen_sub3_carry,
22412 ix86_gen_monitor, ix86_gen_monitorx and ix86_gen_clzero.
22414 2019-05-26 Uroš Bizjak <ubizjak@gmail.com>
22416 * config/i386/i386.md (@tls_global_dynamic_64_<mode>):
22417 Rename from tls_global_dynamic_64_<mode>.
22418 (@tls_local_dynamic_base_64_<mode>): Rename from
22419 tls_local_dynamic_base_64_<mode>.
22420 * config/i386/i386.c (*ix86_gen_tls_global_dynamic_64):
22421 Remove indirect function.
22422 (*ix86_gen_tls_local_dynamic_base_64): Ditto.
22423 (legitimize_tls_address): Use gen_tls_global_dynamic_64 function
22424 instead of ix86_gen_tls_global_dynamic_64.
22425 Use gen_tls_local_dynamic_base_64 instead of
22426 ix86_gen_tls_local_dynamic_base_64.
22427 * config/i386/i386-options.c (ix86_option_override_internal):
22428 Do not initialize ix86_gen_tls_global_dynamic_64 and
22429 ix86_gen_tls_local_dynamic_base_64.
22431 2019-05-26 Uroš Bizjak <ubizjak@gmail.com>
22433 * config/i386/i386.md (@pro_epilogue_adjust_stack_add_<mode>)
22434 Rename from pro_epilogue_adjust_stack_<mode>_add.
22435 (@pro_epilogue_adjust_stack_sub_<mode>)
22436 Rename from pro_epilogue_adjust_stack_<mode>_sub.
22437 (@allocate_stack_worker_probe_<mode>):
22438 Rename from allocate_stack_worker_probe_<mode>.
22439 (allocate_stack): Use gen_allocate_stack_worker_probe.
22440 (probe_stack): Use gen_probe_stack_1.
22441 (@probe_stack_1_<mode>): Rename from probe_stack_<mode>.
22442 (@adjust_stack_and_probe_<mode>): Rename from
22443 adjust_stack_and_probe<mode>.
22444 (@probe_stack_range_<mode>): Rename from probe_stack_range<mode>.
22445 (stack_protect_set): Use gen_stack_protect_set_1.
22446 (@stack_protect_set_1_<mode>): Rename from stack_protect_set_<mode>.
22447 (stack_protect_test): Use gen_stack_protect_test_1.
22448 (@stack_protect_test_1_<mode>): Rename from stack_protect_test_<mode>.
22449 * config/i386/i386.c (*ix86_gen_allocate_stack_worker):
22450 Remove indirect function.
22451 (*ix86_gen_adjust_stack_and_probe): Ditto.
22452 (*ix86_gen_probe_stack_range): Ditto.
22453 (pro_epilogue_adjust_stack): Use gen_pro_epilogue_adjust_stack_add
22454 instead of gen_pro_epilogue_adjust_stack_{si,di}_add.
22455 (ix86_adjust_stack_and_probe_stack_clash): Use
22456 gen_adjust_stack_and_probe instead of ix86_gen_adjust_stack_and_probe.
22457 (ix86_adjust_stack_and_probe): Ditto.
22458 (ix86_emit_probe_stack_range): Use gen_probe_stack_range instead
22459 of ix86_gen_probe_stack_range.
22460 (ix86_expand_prologue): Use gen_pro_epilogue_adjust_stack_sub
22461 instead of gen_pro_epilogue_adjust_stack_{si,di}_sub.
22462 * config/i386/x86-tune-sched.c (ix86_macro_fusion_pair_p):
22463 Include insn-opinit.h. Use code_for_stack_protect_test_1 instead of
22464 CODE_FOR_stack_protect_test_{si,di}.
22465 * config/i386/i386-options.c (ix86_option_override_internal):
22466 Do not initialize ix86_gen_allocate_stack_worker,
22467 ix86_gen_adjust_stack_and_probe and ix86_gen_probe_stack_range.
22469 2019-05-26 Gerald Pfeifer <gerald@pfeifer.com>
22471 * doc/invoke.texi (Link Options): Many editorial changes around
22474 2019-05-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
22476 * doc/invoke.texi (x86 Options, -mvect8-ret-in-mem): Remove
22477 pre-Solaris 11 referene and most Studio compiler details.
22479 2019-05-24 John David Anglin <danglin@gcc.gnu.org>
22482 * config/pa/pa.c (pa_can_change_mode_class): Accept mode changes from
22483 DImode to SImode in floating-point registers on 64-bit target.
22484 * config/pa/pa.md (umulsidi3): Change nonimmediate_operand to
22485 register_operand in xmpyu patterns.
22487 2019-05-24 Jakub Jelinek <jakub@redhat.com>
22489 * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE__CONDTEMP_.
22490 * tree.h (OMP_CLAUSE_DECL): Use OMP_CLAUSE__CONDTEMP_ instead of
22491 OMP_CLAUSE__REDUCTEMP_.
22492 * tree.c (omp_clause_num_ops, omp_clause_code_name): Add
22493 OMP_CLAUSE__CONDTEMP_.
22494 (walk_tree_1): Handle OMP_CLAUSE__CONDTEMP_.
22495 * tree-pretty-print.c (dump_omp_clause): Likewise.
22496 * tree-nested.c (convert_nonlocal_omp_clauses,
22497 convert_local_omp_clauses): Likewise.
22498 * gimplify.c (enum gimplify_omp_var_data): Use hexadecimal constants
22499 instead of decimal. Add GOVD_LASTPRIVATE_CONDITIONAL.
22500 (gimplify_scan_omp_clauses): Don't reject lastprivate conditional
22502 (gimplify_omp_for): Warn and disable conditional modifier from
22503 lastprivate on loop iterators.
22504 * omp-general.h (struct omp_for_data): Add lastprivate_conditional
22506 * omp-general.c (omp_extract_for_data): Initialize it.
22507 * omp-low.c (struct omp_context): Add lastprivate_conditional_map
22509 (delete_omp_context): Delete it.
22510 (lower_lastprivate_conditional_clauses): New function.
22511 (lower_lastprivate_clauses): Add BODY_P and CSTMT_LIST arguments,
22512 handle lastprivate conditional clauses.
22513 (lower_reduction_clauses): Add CLIST argument, emit it into
22514 the critical section if any.
22515 (lower_omp_sections): Adjust lower_lastprivate_clauses and
22516 lower_reduction_clauses callers.
22517 (lower_omp_for_lastprivate): Add CLIST argument, pass it through
22518 to lower_lastprivate_clauses.
22519 (lower_omp_for): Call lower_lastprivate_conditional_clauses, adjust
22520 lower_omp_for_lastprivate and lower_reduction_clauses callers, emit
22521 clist into a critical section if not emitted there already by
22522 lower_reduction_clauses.
22523 (lower_omp_taskreg, lower_omp_teams): Adjust lower_reduction_clauses
22525 (lower_omp_1): Handle GIMPLE_ASSIGNs storing into lastprivate
22526 conditional variables.
22527 * omp-expand.c (determine_parallel_type): Punt if OMP_CLAUSE__CONDTEMP_
22529 (expand_omp_for_generic, expand_omp_for_static_nochunk,
22530 expand_omp_for_static_chunk): Handle lastprivate conditional.
22531 (expand_omp_for): Handle fd.lastprivate_conditional like
22534 2019-05-24 Andrew Stubbs <ams@codesourcery.com>
22536 * config/gcn/gcn-run.c (main): Set a non-zero return value if the
22537 kernel does not exit cleanly.
22538 * config/gcn/gcn.md (gcn_return): Insert s_waitcnt before s_dcache_wb.
22540 2019-05-24 Jason Merrill <jason@redhat.com>
22543 * gimplify.c (gimplify_cond_expr): Don't check TREE_ADDRESSABLE.
22545 2019-05-24 Richard Biener <rguenther@suse.de>
22548 * tree-loop-distribution.c (struct partition): Add location
22550 (partition_alloc): Initialize all fields.
22551 (generate_memset_builtin): Use the location recorded in the
22552 partition for the generated call.
22553 (generate_memcpy_builtin): Likewise.
22554 (classify_partition): Record the location of a single store
22555 as location for the partition.
22557 2019-05-24 Andrew Stubbs <ams@codesourcery.com>
22559 * config/gcn/gcn.c (gcn_expand_prologue): Use gen_addsi3_scalar_carry
22562 2019-05-24 Matthew Malcomson <matthew.malcomson@arm.com>
22565 * common/config/aarch64/aarch64-common.c
22566 (aarch64_rewrite_selected_cpu): Change local temporary variable
22567 type from unsigned long to uint64_t.
22568 * config/aarch64/aarch64-protos.h (aarch64_parse_extension,
22569 aarch64_get_extension_string_for_isa_flags): Change declaration to
22570 match new definition by replacing unsigned long with uint64_t.
22572 2019-05-24 Jakub Jelinek <jakub@redhat.com>
22575 * config/i386/x86-tune-sched.c (ix86_macro_funsion_pair_p): Call
22576 gen_attr_type just once instead of 4-7 times. Formatting fixes.
22577 Handle stack_protect_test_<mode> codegen similarly to corresponding
22580 2019-05-23 Iain Sandoe <iain@sandoe.co.uk>
22582 * config/i386/darwin.h: Reject -mfentry*.
22583 * doc/sourcebuild.texi: Document mfentry target support.
22585 2019-05-23 Bill Schmidt <wschmidt@linux.ibm.com>
22587 * config/rs6000/rs6000.c (rs6000_global_entry_point_needed_p):
22588 Rename to rs6000_global_entry_point_prologue_needed_p. Return
22589 false for PC-relative functions.
22590 (rs6000_output_function_prologue): Change called function name to
22591 rs6000_global_entry_point_prologue_needed_p. Emit ".localentry
22592 name,1" for PC-relative functions.
22593 (rs6000_elf_declare_function_name): Change called function name to
22594 rs6000_global_entry_point_prologue_needed_p.
22596 2019-05-23 Uroš Bizjak <ubizjak@gmail.com>
22599 * config/i386/i386.c (gen_rtx_cost):
22600 Use ix86_tune_cost instead of ix86_cost.
22602 2019-05-23 Bill Schmidt <wschmidt@linux.ibm.com>
22603 Michael Meissner <meissner@linux.ibm.com>
22604 Segher Boessenkool <segher@kernel.crashing.org>
22606 * config/rs6000/rs6000-cpus.def (ISA_FUTURE_MASKS_SERVER): Add
22608 (POWERPC_MASKS): Add OPTION_MASK_PCREL.
22609 * config/rs6000/rs6000-protos.h (rs6000_pcrel_p): New prototype.
22610 (rs6000_fndecl_pcrel_p): Likewise.
22611 * config/rs6000/rs6000.c (rs6000_option_override_internal): Report
22612 error if -mpcrel is requested without -mcpu=future.
22613 (rs6000_opt_masks): Add entry for pcrel.
22614 (rs6000_fndecl_pcrel_p): New function.
22615 (rs6000_pcrel_p): Likewise.
22616 * config/rs6000/rs6000.opt (mpcrel): New option.
22617 * doc/invoke.texi: Document -mpcrel and -mno-pcrel.
22619 2019-05-23 Jan Hubicka <jh@suse.cz>
22620 Martin Liska <mliska@suse.cz>
22622 PR tree-optimization/90576
22623 * tree-ssa-alias.c (compare_sizes): Remove dead calls to
22625 (aliasing_component_refs_p): Fix three way size compare conditional;
22626 give up earlier in case we can not decide on equivalence.
22628 2019-05-23 Bill Schmidt <wschmidt@linux.ibm.com>
22629 Michael Meissner <meissner@linux.ibm.com>
22630 Segher Boessenkool <segher@kernel.crashing.org>
22632 * config.gcc: Add future cpu.
22633 * config/rs6000/driver-rs6000.c (asm_names): Add future cpu.
22634 * config/rs6000/rs6000-cpus.def (ISA_FUTURE_MASKS_SERVER): New
22636 (POWERPC_MASKS): Add OPTION_MASK_FUTURE.
22637 (RS6000_CPU): New instantiation for future cpu.
22638 * config/rs6000/rs6000-opts.h (enum processor_type): Add
22640 * config/rs6000/rs6000-string.c (expand_compare_loop): Treat
22641 PROCESSOR_FUTURE like PROCESSOR_POWER9 for now.
22642 * config/rs6000/rs6000-tables.opt: Regenerate.
22643 * config/rs6000/rs6000.c (rs6000_option_override_internal): Treat
22644 PROCESSOR_FUTURE similarly to PROCESSOR_POWER9 for now.
22645 (rs6000_machine_from_flags): Handle future cpu.
22646 (rs6000_reassociation_width): Treat PROCESSOR_FUTURE like
22647 PROCESSOR_POWER9 for now.
22648 (rs6000_adjust_cost): Likewise.
22649 (rs6000_issue_rate): Likewise.
22650 (rs6000_register_move_cost): Likewise.
22651 (rs6000_opt_masks): Add entry for future.
22652 * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add future cpu.
22653 (MASK_FUTURE): New #define.
22654 * config/rs6000/rs6000.md (define_attr "cpu"): Add future cpu.
22655 * config/rs6000/rs6000.opt (mfuture): New target option.
22656 * doc/invoke.texi (mcpu): Add future cpu.
22658 2019-05-23 Martin Liska <mliska@suse.cz>
22661 * tree-ssa-uninit.c (value_sat_pred_p): The result of &
22662 operation points to a temporary (pointed via tree_to_wide_ref)
22663 that is out of scope after the &.
22665 2019-05-23 Jonathan Wakely <jwakely@redhat.com>
22668 * doc/extend.texi (Function Names): Add missing word.
22670 2019-05-23 Richard Biener <rguenther@suse.de>
22672 PR tree-optimization/88440
22673 * opts.c (default_options_table): Enable -ftree-loop-distribute-patterns
22675 * tree-loop-distribution.c (generate_memset_builtin): Fold the
22677 (generate_memcpy_builtin): Likewise.
22678 (distribute_loop): Pass in whether to only distribute patterns.
22679 (prepare_perfect_loop_nest): Also allow size optimization.
22680 (pass_loop_distribution::execute): When optimizing a loop
22681 nest for size allow pattern replacement.
22683 2019-05-23 Jakub Jelinek <jakub@redhat.com>
22686 * config/i386/i386.md (stack_protect_test_<mode>): Use sub instead
22689 2019-05-23 Martin Liska <mliska@suse.cz>
22692 * gimplify.c (gimplify_target_expr): Skip TREE_STATIC target
22693 expression similarly to gimplify_decl_expr.
22695 2019-05-23 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
22697 * cse.c (cse_dump_path): s/dump_file/f.
22699 2019-05-22 David Malcolm <dmalcolm@redhat.com>
22702 * diagnostic-format-json.cc: Include "selftest.h".
22703 (json_from_expanded_location): Only add "file" key for non-NULL
22705 (json_from_location_range): Don't add "start" and "finish"
22706 children if they are UNKNOWN_LOCATION.
22707 (selftest::test_unknown_location): New selftest.
22708 (selftest::test_bad_endpoints): New selftest.
22709 (selftest::diagnostic_format_json_cc_tests): New function.
22710 * json.cc (json::object::get): New function.
22711 (selftest::test_object_get): New selftest.
22712 (selftest::json_cc_tests): Call it.
22713 * json.h (json::object::get): New decl.
22714 * selftest-run-tests.c (selftest::run_tests): Call
22715 selftest::diagnostic_format_json_cc_tests.
22716 * selftest.h (selftest::diagnostic_format_json_cc_tests): New
22719 2019-05-22 Kwok Cheung Yeung <kcy@codesourcery.com>
22720 Andrew Stubbs <amd@codesourcery.com>
22722 * config.gcc (gcc_cv_initfini_array): Set for AMD GCN.
22723 * config/gcn/gcn-run.c (init_array_kernel, fini_array_kernel): New.
22724 (kernel): Rename to...
22725 (main_kernel): ... this.
22726 (load_image): Load _init_array and _fini_array kernels.
22727 (run): Add argument for kernel to run.
22728 (main): Run init_array_kernel before main_kernel, and
22729 fini_array_kernel after.
22730 * config/gcn/gcn.c (gcn_handle_amdgpu_hsa_kernel_attribute): Allow
22731 amdgpu_hsa_kernel attribute on functions.
22732 (gcn_disable_constructors): Delete.
22733 (TARGET_ASM_CONSTRUCTOR, TARGET_ASM_DESTRUCTOR): Delete.
22734 * config/gcn/crt0.c (size_t): Define.
22735 (_init_array, _fini_array): New.
22736 (__preinit_array_start, __preinit_array_end,
22737 __init_array_start, __init_array_end,
22738 __fini_array_start, __fini_array_end): Declare weak references.
22740 2019-05-22 Andrew Stubbs <ams@codesourcery.com>
22742 * config/gcn/gcn.c (gcn_trampoline_init): Call "sorry" on GCN5.
22744 2019-05-22 Jason Merrill <jason@redhat.com>
22746 * gimplify.c (gimplify_cond_expr): Don't check TREE_ADDRESSABLE.
22748 2019-05-22 H.J. Lu <hongjiu.lu@intel.com>
22751 * config/i386/i386-options.c (ix86_init_machine_status): Set
22752 stack_frame_required to true.
22753 * config/i386/i386.c (ix86_get_frame_size): New function.
22754 (ix86_frame_pointer_required): Replace get_frame_size with
22755 ix86_get_frame_size.
22756 (ix86_compute_frame_layout): Likewise.
22757 (ix86_find_max_used_stack_alignment): Changed to void. Set
22758 stack_frame_required.
22759 (ix86_finalize_stack_frame_flags): Always call
22760 ix86_find_max_used_stack_alignment. Replace get_frame_size with
22761 ix86_get_frame_size.
22762 * config/i386/i386.h (machine_function): Add stack_frame_required.
22764 2019-05-22 Uroš Bizjak <ubizjak@gmail.com>
22766 * config/i386/sse.md (sse_cvtpi2ps): Use TARGET_MMX in insn condition.
22768 2019-05-22 Matthew Malcomson <matthew.malcomson@arm.com>
22770 * common/config/aarch64/aarch64-common.c
22771 (struct aarch64_option_extension, struct processor_name_to_arch,
22772 struct arch_to_arch_name, aarch64_parse_extension, opt_ext_cmp,
22773 aarch64_contains_opt,
22774 aarch64_get_extension_string_for_isa_flags): Change type of
22775 variables storing flags to uint64_t.
22776 * config/aarch64/aarch64-option-extensions.def (sve2, sve2-sm4,
22777 sve2-aes, sve2-sha3, bitperm): New optional SVE2 extension flags.
22778 * config/aarch64/aarch64.c (struct processor,
22779 aarch64_parse_arch, aarch64_parse_cpu, aarch64_validate_mcpu,
22780 aarch64_validate_march, aarch64_override_options,
22781 aarch64_option_print, aarch64_handle_attr_isa_flags,
22782 aarch64_declare_function_name, aarch64_start_file): Make flag
22783 variables uint64_t.
22784 * config/aarch64/aarch64.h (AARCH64_FL_SVE2, AARCH64_FL_SVE2_AES,
22785 AARCH64_FL_SVE2_SM4, AARCH64_FL_SVE2_SHA3,
22786 AARCH64_FL_SVE2_BITPERM): New macro feature flags.
22787 * config/aarch64/aarch64.opt (aarch64_isa_flags): Make uint64_t.
22788 * config/aarch64/driver-aarch64.c
22789 (struct aarch64_arch_extension, struct aarch64_core_data,
22790 struct aarch64_arch_driver_info, host_detect_local_cpu): Make
22791 flag variables uint64_t.
22792 * doc/invoke.texi: Add documentation for new arguments.
22794 2019-05-22 Richard Biener <rguenther@suse.de>
22796 * alias.c (ao_ref_from_mem): Move stack-slot sharing
22798 * emit-rtl.c (set_mem_attributes_minus_bitpos): ... here.
22800 2019-05-22 Martin Liska <mliska@suse.cz>
22803 * doc/extend.texi: Document the change.
22805 2019-05-22 Richard Biener <rguenther@suse.de>
22807 PR tree-optimization/90450
22808 * tree-ssa-loop-im.c (struct im_mem_ref): Add ref_decomposed.
22809 (mem_ref_hasher::equal): Check it.
22810 (mem_ref_alloc): Initialize it.
22811 (gather_mem_refs_stmt): Set it.
22813 2019-05-22 Richard Biener <rguenther@suse.de>
22815 * gimple-fold.c (arith_code_with_undefined_signed_overflow):
22817 (rewrite_to_defined_overflow): Handle rewriting ABS_EXPR
22820 2019-05-22 Alan Modra <amodra@gmail.com>
22822 * config/rs6000/rs6000.h (ASM_OPT_ANY): Define.
22823 (ASM_CPU_SPEC): Conditionally add -many.
22824 * config/rs6000/rs6000.c (rs6000_machine): New static var.
22825 (rs6000_machine_from_flags, emit_asm_machine): New functions..
22826 (rs6000_file_start): ..extracted from here, and modified to
22828 (rs6000_output_function_prologue): Emit .machine as necessary.
22830 2019-05-22 Hans-Peter Nilsson <hp@axis.com>
22832 PR middle-end/90553
22833 * ira-lives.c (process_bb_node_lives): Consider defs
22834 for a call insn to be die before the call, not after.
22836 * function.c (assign_parm_setup_block): Raise alignment of
22837 stacked parameter only for STRICT_ALIGNMENT targets.
22839 2019-05-21 Segher Boessenkool <segher@kernel.crashing.org>
22841 * config/rs6000/constraints.md (define_register_constraint "wz"):
22843 * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
22844 RS6000_CONSTRAINT_wz.
22845 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
22846 (rs6000_init_hard_regno_mode_ok): Adjust.
22847 * config/rs6000/rs6000.md: Replace "wz" constraint by "d" with "p7".
22848 * doc/md.texi (Machine Constraints): Adjust.
22850 2019-05-21 Segher Boessenkool <segher@kernel.crashing.org>
22852 * config/rs6000/constraints.md (define_register_constraint "wl"):
22854 * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
22855 RS6000_CONSTRAINT_wl.
22856 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
22857 (rs6000_init_hard_regno_mode_ok): Adjust.
22858 * config/rs6000/rs6000.md: Replace "wl" constraint by "d" with "p6".
22859 * doc/md.texi (Machine Constraints): Adjust.
22861 2019-05-21 Segher Boessenkool <segher@kernel.crashing.org>
22863 * config/rs6000/constraints.md (define_register_constraint "wm"):
22865 * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
22866 RS6000_CONSTRAINT_wm.
22867 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
22868 (rs6000_init_hard_regno_mode_ok): Adjust.
22869 * config/rs6000/vsx.md: Replace "wm" constraint by "wa" with "p8v".
22870 * doc/md.texi (Machine Constraints): Adjust.
22872 2019-05-21 Segher Boessenkool <segher@kernel.crashing.org>
22874 * config/rs6000/constraints.md (define_register_constraint "wk"):
22876 * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
22877 RS6000_CONSTRAINT_wk.
22878 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
22879 (rs6000_init_hard_regno_mode_ok): Adjust.
22880 * config/rs6000/rs6000.md: Replace "wk" constraint by "ws" with "p8v".
22881 * doc/md.texi (Machine Constraints): Adjust.
22883 2019-05-21 Segher Boessenkool <segher@kernel.crashing.org>
22885 * config/rs6000/constraints.md (define_register_constraint "wj"):
22887 * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
22888 RS6000_CONSTRAINT_wj.
22889 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
22890 (rs6000_init_hard_regno_mode_ok): Adjust.
22891 * config/rs6000/rs6000.md: Replace "wj" constraint by "wi" with "p8v".
22893 * config/rs6000/vsx.md: Ditto.
22894 * doc/md.texi (Machine Constraints): Adjust.
22896 2019-05-21 Segher Boessenkool <segher@kernel.crashing.org>
22898 * config/rs6000/constraints.md (define_register_constraint "wh"):
22900 * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
22901 RS6000_CONSTRAINT_wh.
22902 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
22903 (rs6000_init_hard_regno_mode_ok): Adjust.
22904 * config/rs6000/rs6000.md: Replace "wh" constraint by "wa" with "p8v".
22905 * doc/md.texi (Machine Constraints): Adjust.
22907 2019-05-21 Uroš Bizjak <ubizjak@gmail.com>
22910 * config/i386/i386.md (anddi_1 to andsi_1_zext splitter):
22911 Avoid calling gen_lowpart with CONST operand.
22913 2019-05-21 Alexandre Oliva <aoliva@redhat.com>
22915 * tree-ssa-threadupdate.c (struct ssa_local_info_t): Add
22916 field template_last_to_copy.
22917 (ssa_create_duplicates): Set it, and use it. Attempt to
22918 preserve more debug stmts.
22920 2019-05-21 Uroš Bizjak <ubizjak@gmail.com>
22922 * config/i386/sse.md (VF1_AVX2): New mode iterator.
22923 (signbit<mode>2): New expander
22925 2019-05-21 James Clarke <jrtc27@jrtc27.com>
22928 * dwarf2out.c (dwarf2out_inline_entry): Use ASM_OUTPUT_DEBUG_LABEL
22929 instead of ASM_GENERATE_INTERNAL_LABEL and ASM_OUTPUT_LABEL.
22931 2019-05-21 Uroš Bizjak <ubizjak@gmail.com>
22933 * config/i386/cpuid.h (__cpuid): For 32bit targets, zero
22934 %ebx and %ecx bafore calling cpuid with leaf 1 or
22935 non-constant leaf argument.
22937 2019-05-21 Alan Modra <amodra@gmail.com>
22940 * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase
22941 power9 direct move cost.
22943 2019-05-21 Richard Biener <rguenther@suse.de>
22945 PR middle-end/90510
22946 * fold-const.c (fold_read_from_vector): New function.
22947 * fold-const.h (fold_read_from_vector): Declare.
22948 * match.pd (VEC_PERM_EXPR): Build BIT_INSERT_EXPRs for
22949 single-element insert permutations. Canonicalize selector
22950 further and fix issue with last commit.
22952 2019-05-21 Vladislav Ivanishin <vlad@ispras.ru>
22954 * tree-cfg.h (split_critical_edges): Add for_edge_insertion_p
22955 parameter with default value false to declaration.
22956 (split_edges_for_insertion): New inline function. Wrapper for
22957 split_critical_edges with for_edge_insertion_p = true.
22958 * tree-cfg.c (split_critical_edges): Don't split non-critical
22959 edges if for_edge_insertion_p is false. Fix whitespace.
22960 * tree-ssa-pre.c (pass_pre::execute): Call
22961 split_edges_for_insertion instead of split_critical_edges.
22962 * tree-ssa-tail-merge.c (tail_merge_optimize): Ditto.
22963 * tree-ssa-sink.c (pass_sink_code::execute): Ditto.
22964 (pass_data_sink_code): Update function name in the comment.
22966 2019-05-21 Vladislav Ivanishin <vlad@ispras.ru>
22968 * tree-ssa-uninit.c (value_sat_pred_p): This new function is a wrapper
22969 around is_value_included_in that knows how to handle BIT_AND_EXPR.
22970 (is_pred_expr_subset_of): Use the new function. Handle more cases where
22971 code1 == EQ_EXPR and where code1 == BIT_AND_EXPR and thus fix some false
22974 2019-05-21 Martin Liska <mliska@suse.cz>
22976 * config/rs6000/driver-rs6000.c (elf_platform): Do not use
22978 * config/rs6000/rs6000-c.c (rs6000_pragma_longcal): Wrap pragma in %<%>.
22979 (altivec_resolve_overloaded_builtin): Likewise for vec_lvsl and
22981 * config/rs6000/rs6000.c (rs6000_option_override_internal):
22983 (rs6000_function_arg): Likewise.
22984 (rs6000_expand_set_fpscr_drn_builtin): Remove trailing dot.
22985 (rs6000_expand_ternop_builtin): Use interval syntax.
22986 (get_element_number): Likewise.
22987 (altivec_expand_builtin): Likewise.
22988 (rs6000_get_function_versions_dispatcher): Quote target_clones.
22990 2019-05-20 Jakub Jelinek <jakub@redhat.com>
22994 * function.h (struct function): Add calls_eh_return member.
22995 * gimplify.c (gimplify_call_expr): Set cfun->calls_eh_return when
22996 gimplifying __builtin_eh_return call.
22997 * tree-inline.c (initialize_cfun): Copy calls_eh_return from src_cfun
22999 (expand_call_inline): Or in src_cfun->calls_eh_return into
23000 dst_cfun->calls_eh_return.
23001 * tree-tailcall.c (suitable_for_tail_call_opt_p): Return false if
23002 cfun->calls_eh_return.
23003 * lto-streamer-in.c (input_struct_function_base): Read calls_eh_return.
23004 * lto-streamer-out.c (output_struct_function_base): Write
23007 2019-05-20 Marc Glisse <marc.glisse@inria.fr>
23009 PR rtl-optimization/43147
23010 * config/i386/i386.c (ix86_gimple_fold_builtin): Handle
23011 IX86_BUILTIN_SHUFPD.
23013 2019-05-20 Jan Hubicka <hubicka@ucw.cz>
23015 * tree-ssa-alias.c (refs_may_alias_p_2): Break out from ...
23016 (refs_may_alias_p_1): ... here; update stats.
23017 (refs_may_alias_p): Do not update stats here.
23019 2019-05-20 Richard Biener <rguenther@suse.de>
23021 * tree-ssa-structalias.c (find_func_aliases): POINTER_DIFF_EXPR
23022 doesn't produce pointers.
23023 {TRUNC,CEIL,FLOOR,ROUND,EXACT}_{DIV,MOD}_EXPR points to what
23024 the first operand points to.
23026 2019-05-20 Jan Hubicka <hubicka@ucw.cz>
23028 * tree-ssa-alias.c (compare_sizes): New function.
23029 (sompare_type_sizes): New function
23030 (aliasing_component_refs_p): Use it.
23031 (indirect_ref_may_alias_decl_p): Likewise.
23033 2019-05-20 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
23035 * config/i386/sol2.h (CC1_SPEC): Reject -mx32.
23037 2019-05-20 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
23039 * config/sol2.h (LIBTSAN_EARLY_SPEC): Remove : after %e.
23040 (LIBLSAN_EARLY_SPEC): Likewise.
23041 * config/i386/sol2.h (ASAN_REJECT_SPEC): Likewise.
23043 2019-05-20 Martin Liska <mliska@suse.cz>
23045 * config/i386/i386.c (ix86_libc_has_fast_function):
23046 Add ATTRIBUTE_UNUSED for the argument.
23048 2019-05-20 Richard Biener <rguenther@suse.de>
23050 * gimple-match-head.c: Include vec-perm-indices.h.
23051 * generic-match-head.c: Likewise.
23052 * fold-const.h (fold_vec_perm): Declare when vec-perm-indices.h
23054 * fold-const.c (fold_vec_perm): Export.
23055 (fold_ternary_loc): Move non-constant folding of VEC_PERM_EXPR...
23056 (match.pd): ...here.
23058 2019-05-20 Jakub Jelinek <jakub@redhat.com>
23060 * cfgloop.h (struct loop): Add simdlen member.
23061 * cfgloopmanip.c (copy_loop_info): Copy simdlen as well.
23062 * omp-expand.c (expand_omp_simd): Set it if simdlen clause is present.
23063 * tree-vect-loop.c (vect_analyze_loop): Pass loop->simdlen != 0
23064 as new argument to autovectorize_vector_sizes target hook. If
23065 loop->simdlen, pick up vector size where the vectorization factor
23066 is equal to loop->simd, and if there is none, fall back to the first
23068 (vect_transform_loop): Adjust autovectorize_vector_sizes target hook
23070 * omp-low.c (omp_clause_aligned_alignment): Likewise.
23071 * omp-general.c (omp_max_vf): Likewise.
23072 * optabs-query.c (can_vec_mask_load_store_p): Likewise.
23073 * tree-vect-slp.c (vect_slp_bb): Likewise.
23074 * target.def (autovectorize_vector_sizes): Add ALL argument and
23076 * doc/tm.texi: Adjust documentation.
23077 * targhooks.c (default_autovectorize_vector_sizes): Add bool argument.
23078 * targhooks.h (default_autovectorize_vector_sizes): Likewise.
23079 * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes): Add
23081 * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
23082 * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
23083 * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
23084 * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise. If
23085 true and TARGET_AVX512F or TARGET_AVX, push 3 or 2 sizes even if
23086 preferred vector size is not 512-bit or 256-bit, just put those
23087 unpreferred ones last.
23089 2019-05-20 Martin Liska <mliska@suse.cz>
23091 * targhooks.c (default_libc_has_fast_function): New function.
23092 * targhooks.h (default_libc_has_fast_function): Likewise.
23094 2019-05-20 Martin Liska <mliska@suse.cz>
23096 PR middle-end/90263
23097 * builtins.c (expand_builtin_memory_copy_args): When having a
23098 target with fast mempcpy implementation do now use memcpy.
23099 * config/i386/i386.c (ix86_libc_has_fast_function): New.
23100 (TARGET_LIBC_HAS_FAST_FUNCTION): Likewise.
23101 * doc/tm.texi: Likewise.
23102 * doc/tm.texi.in: Likewise.
23104 * expr.c (emit_block_move_hints): Add 2 new arguments.
23105 * expr.h (emit_block_move_hints): Bail out when libcall
23106 to memcpy would be used.
23108 2019-05-20 Martin Liska <mliska@suse.cz>
23110 * profile-count.c: Add vertical spacing in order
23111 to separate functions.
23112 * profile-count.h: Likewise.
23114 2019-05-20 Martin Liska <mliska@suse.cz>
23116 * profile-count.h: Do not use full qualified
23118 * profile-count.c (profile_count::to_frequency): Likewise.
23120 2019-05-20 Martin Liska <mliska@suse.cz>
23122 * profile-count.h (enum profile_quality): Use capital letters
23123 for enum value names. Use the adjusted names.
23124 * profile-count.c: Use the adjusted names.
23126 2019-05-19 Segher Boessenkool <segher@kernel.crashing.org>
23128 * config/rs6000/constraints.md (define_register_constraint "wH"):
23130 (define_register_constraint "wI"): Delete.
23131 * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
23132 RS6000_CONSTRAINT_wH and RS6000_CONSTRAINT_wI.
23133 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
23134 (rs6000_init_hard_regno_mode_ok): Adjust.
23135 * config/rs6000/rs6000.md: Replace "wH" and "wI" constraints by "v"
23136 resp. "d", or with "wa" as appropriate, all with "p8v".
23137 * config/rs6000/vsx.md: Ditto.
23138 * doc/md.texi (Machine Constraints): Adjust.
23140 2019-05-19 Segher Boessenkool <segher@kernel.crashing.org>
23142 * config/rs6000/constraints.md (define_register_constraint "wy"):
23144 * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
23145 RS6000_CONSTRAINT_wy.
23146 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
23147 (rs6000_init_hard_regno_mode_ok): Adjust.
23148 * config/rs6000/rs6000.md: Replace "wy" constraint by "wa" with "p8v".
23149 Use "<Fisa>" as "isa" in all alternatives that use "<Fv2>".
23150 (define_mode_attr Fisa): New.
23151 * config/rs6000/vsx.md: Replace "wy" constraint by "wa" with "p8v".
23152 * doc/md.texi (Machine Constraints): Adjust.
23154 2019-05-19 Segher Boessenkool <segher@kernel.crashing.org>
23156 * config/rs6000/constraints.md (define_register_constraint "wu"):
23158 * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
23159 RS6000_CONSTRAINT_wu.
23160 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
23161 (rs6000_init_hard_regno_mode_ok): Adjust.
23162 * config/rs6000/rs6000.md: Replace "wu" constraint by "v" or "wa",
23164 (define_mode_attr Fa): Delete.
23165 * config/rs6000/vsx.md: Ditto.
23166 * doc/md.texi (Machine Constraints): Adjust.
23168 2019-05-19 Segher Boessenkool <segher@kernel.crashing.org>
23170 * config/rs6000/constraints.md (define_register_constraint "wJ"):
23172 (define_register_constraint "wK"): Delete.
23173 * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
23174 RS6000_CONSTRAINT_wJ and RS6000_CONSTRAINT_wK.
23175 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
23176 (rs6000_init_hard_regno_mode_ok): Adjust.
23177 * config/rs6000/rs6000.md: Replace "wJ" constraint by "wI" with "p9v".
23178 Replace "wK" constraint by "wH" with "p9v".
23179 * config/rs6000/vsx.md: Ditto.
23180 * doc/md.texi (Machine Constraints): Adjust.
23182 2019-05-19 Segher Boessenkool <segher@kernel.crashing.org>
23184 * config/rs6000/constraints.md (define_register_constraint "wb"):
23186 * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
23187 RS6000_CONSTRAINT_wb.
23188 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
23189 (rs6000_init_hard_regno_mode_ok): Adjust.
23190 * config/rs6000/rs6000.md: Replace "wb" constraint by "v" with "p9v".
23191 * config/rs6000/vsx.md: Ditto.
23192 * doc/md.texi (Machine Constraints): Adjust.
23194 2019-05-19 Segher Boessenkool <segher@kernel.crashing.org>
23196 * config/rs6000/constraints.md (define_register_constraint "wo"):
23198 * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
23199 RS6000_CONSTRAINT_wo.
23200 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
23201 (rs6000_init_hard_regno_mode_ok): Adjust.
23202 * config/rs6000/rs6000.md: Replace "wo" constraint by "wa" with "p9v".
23203 * config/rs6000/altivec.md: Ditto.
23204 * doc/md.texi (Machine Constraints): Adjust.
23206 2019-05-18 Iain Sandoe <iain@sandoe.co.uk>
23208 * config/darwin-c.c (darwin_register_objc_includes): Do not
23209 prepend the sysroot when building gnu-runtime header search
23212 2019-05-18 Iain Sandoe <iain@sandoe.co.uk>
23214 * config/darwin.c (darwin_file_end): Use switch_to_section ()
23215 instead of direct output of the asm.
23217 2019-05-17 Segher Boessenkool <segher@kernel.crashing.org>
23219 * config/rs6000/rs6000.c (restore_saved_cr): Change a boolean
23220 argument to be type bool (was int before).
23221 (rs6000_emit_epilogue): Simplify some code. Declare some variables
23222 at first use. Use type bool for some variables. Fix a theoretical
23223 eh_return bug for svr4.
23225 2019-05-17 Segher Boessenkool <segher@kernel.crashing.org>
23227 * config/rs6000/rs6000.md (isa): New attribute.
23228 (enabled): New attribute.
23230 2019-05-17 Max Filippov <jcmvbkbc@gmail.com>
23232 * config/aarch64/aarch64.c (aarch64_output_mi_thunk): Call
23233 assemble_start_function and assemble_end_function.
23235 2019-05-17 Thomas Schwinge <thomas@codesourcery.com>
23237 PR middle-end/89433
23238 * omp-general.c (oacc_verify_routine_clauses): Change formal
23239 parameters. Add checking if already marked with an OpenACC
23240 'routine' directive. Adjust all users.
23242 PR middle-end/89433
23243 * omp-general.c (oacc_build_routine_dims): Move some of its
23245 (oacc_verify_routine_clauses): ... this new function.
23246 * omp-general.h (oacc_verify_routine_clauses): New prototype.
23248 2019-05-17 Iain Sandoe <iain@sandoe.co.uk>
23250 * config/rs6000/rs6000.c (machopic_output_stub): Adjust the
23251 formating of picbase labels to match other ports.
23253 2019-05-17 Iain Sandoe <iain@sandoe.co.uk>
23255 * config/rs6000/rs6000.c (macho_branch_islands): Fix bad indent
23256 in the generated code.
23258 2019-05-16 Martin Sebor <msebor@redhat.com>
23260 * builtins.c (expand_builtin_atomic_always_lock_free): Quote
23261 identifiers, keywords, operators, and types in diagnostics. Correct
23262 quoting, spelling, and sentence capitalization issues.
23263 (expand_builtin_atomic_is_lock_free): Same.
23264 (fold_builtin_next_arg): Same.
23265 * cfgexpand.c (expand_one_var): Same.
23266 (tree_conflicts_with_clobbers_p): Same.
23267 (expand_asm_stmt): Same.
23268 (verify_loop_structure): Same.
23269 * cgraphunit.c (process_function_and_variable_attributes): Same.
23270 * collect-utils.c (collect_execute): Same.
23271 * collect2.c (maybe_run_lto_and_relink): Same.
23272 (is_lto_object_file): Same.
23273 (scan_prog_file): Same.
23274 * convert.c (convert_to_real_1): Same.
23275 * dwarf2out.c (dwarf2out_begin_prologue): Same.
23276 * except.c (verify_eh_tree): Same.
23277 * gcc.c (execute): Same.
23278 (eval_spec_function): Same.
23279 (run_attempt): Same.
23280 (driver::set_up_specs): Same.
23281 (compare_debug_auxbase_opt_spec_function): Same.
23282 * gcov-tool.c (unlink_gcda_file): Same.
23284 (do_rewrite): Same.
23285 * gcse.c (gcse_or_cprop_is_too_expensive): Same.
23286 * gimplify.c (gimplify_asm_expr): Same.
23287 (gimplify_adjust_omp_clauses): Same.
23288 * hsa-gen.c (gen_hsa_addr_insns): Same.
23289 (gen_hsa_insns_for_load): Same.
23290 (gen_hsa_cmp_insn_from_gimple): Same.
23291 (gen_hsa_insns_for_operation_assignment): Same.
23292 (gen_get_level): Same.
23293 (gen_hsa_alloca): Same.
23294 (omp_simple_builtin::generate): Same.
23295 (gen_hsa_atomic_for_builtin): Same.
23296 (gen_hsa_insns_for_call): Same.
23297 * input.c (dump_location_info): Same.
23298 * ipa-devirt.c (compare_virtual_tables): Same.
23299 * ira.c (ira_setup_eliminable_regset): Same.
23300 * lra-assigns.c (lra_assign): Same.
23301 * lra-constraints.c (lra_constraints): Same.
23302 * lto-streamer-in.c (lto_input_mode_table): Same.
23303 * lto-wrapper.c (get_options_from_collect_gcc_options): Same.
23304 (merge_and_complain): Same.
23305 (compile_offload_image): Same.
23306 (compile_images_for_offload_targets): Same.
23307 (debug_objcopy): Same.
23310 * opts.c (print_specific_help): Same.
23311 (parse_no_sanitize_attribute): Same.
23312 (print_help): Same.
23313 (handle_param): Same.
23314 * plugin.c (add_new_plugin): Same.
23315 (parse_plugin_arg_opt): Same.
23316 (try_init_one_plugin): Same.
23317 * print-rtl.c (debug_bb_n_slim): Quote identifiers, keywords,
23318 operators, and types in diagnostics. Correct quoting and spelling
23320 * read-rtl-function.c (parse_edge_flag_token): Same.
23321 (function_reader::parse_enum_value): Same.
23322 * reg-stack.c (check_asm_stack_operands): Same.
23323 * regcprop.c (validate_value_data): Same.
23324 * sched-rgn.c (make_pass_sched_fusion): Same.
23325 * stmt.c (check_unique_operand_names): Same.
23326 * targhooks.c (default_target_option_pragma_parse): Same.
23327 * tlink.c (recompile_files): Same.
23328 * toplev.c (process_options): Same.
23329 (do_compile): Same.
23330 * trans-mem.c (diagnose_tm_1): Same.
23331 (ipa_tm_scan_irr_block): Same.
23332 (ipa_tm_diagnose_transaction): Same.
23333 * tree-cfg.c (verify_address): Same. Use get_tree_code_name to
23334 format a tree code name in a diagnostic.
23335 (verify_types_in_gimple_min_lval): Same.
23336 (verify_types_in_gimple_reference): Same.
23337 (verify_gimple_call): Same.
23338 (verify_gimple_assign_unary): Same.
23339 (verify_gimple_assign_binary): Same.
23340 (verify_gimple_assign_ternary): Same.
23341 (verify_gimple_assign_single): Same.
23342 (verify_gimple_switch): Same.
23343 (verify_gimple_label): Same.
23344 (verify_gimple_phi): Same.
23345 (verify_gimple_in_seq): Same.
23346 (verify_eh_throw_stmt_node): Same.
23347 (collect_subblocks): Same.
23348 (gimple_verify_flow_info): Same.
23349 (do_warn_unused_result): Same.
23350 * tree-inline.c (expand_call_inline): Same.
23351 * tree-into-ssa.c (update_ssa): Same.
23352 * tree.c (tree_int_cst_elt_check_failed): Same.
23353 (tree_vec_elt_check_failed): Same.
23354 (omp_clause_operand_check_failed): Same.
23355 (verify_type_variant): Same.
23356 (verify_type): Same.
23357 * value-prof.c (verify_histograms): Same.
23358 * varasm.c (assemble_start_function): Same.
23360 2019-05-16 Martin Sebor <msebor@redhat.com>
23362 * config/i386/i386-expand.c (get_element_number): Quote keywords
23363 and other internal names in diagnostics. Adjust other diagnostic
23364 formatting issues noted by -Wformat-diag.
23365 * config/i386/i386-features.c
23366 (ix86_mangle_function_version_assembler_name): Same.
23367 * config/i386/i386-options.c (ix86_handle_abi_attribute): Same.
23368 * config/i386/i386.c (ix86_function_type_abi): Same.
23369 (ix86_function_ms_hook_prologue): Same.
23370 (classify_argument): Same.
23371 (ix86_expand_prologue): Same.
23372 (ix86_md_asm_adjust): Same.
23373 (ix86_memmodel_check): Same.
23375 2019-05-17 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
23377 * config/mips/mips.c (mips_dwarf_frame_reg_mode): Replace
23378 TARGET_FLOAT64 with !TARGET_FLOAT32, thus handling both fp64
23381 2019-05-17 H.J. Lu <hongjiu.lu@intel.com>
23384 * config/i386/i386-expand.c (ix86_expand_builtin): Enable MMX
23385 intrinsics without SSE/SSE2/SSSE3.
23386 * config/i386/mmx.md (mmx_uavgv8qi3): Restore TARGET_3DNOW
23388 (*mmx_uavgv8qi3): Likewise.
23390 2019-05-17 Richard Biener <rguenther@suse.de>
23392 * gimple-pretty-print.c (dump_ternary_rhs): Handle dumping
23393 VEC_PERM_EXPR as __VEC_PERM with -gimple.
23395 2019-05-17 Andreas Krebbel <krebbel@linux.ibm.com>
23397 * config/s390/s390-builtins.def (s390_vec_sldw_*): Use the
23398 vec_sldw insn pattern.
23400 2019-05-17 Richard Biener <rguenther@suse.de>
23402 * ccmp.c (expand_ccmp_expr_1): Do not use gimple_assign_rhs_to_tree.
23404 2019-05-17 Martin Liska <mliska@suse.cz>
23407 * toplev.c (output_stack_usage): With LTO and sanitizer it
23408 happens that a global ctor (_GLOBAL__sub_I_00099_0_main)
23409 has no file location.
23411 2019-05-16 Jakub Jelinek <jakub@redhat.com>
23414 * tree-ssa-scopedtables.c (equal_mem_array_ref_p): Don't assert that
23415 sz0 is equal to sz1, instead return false in that case.
23417 * omp-low.c (lower_rec_input_clauses): If OMP_CLAUSE_IF
23418 has non-constant expression, force sctx.lane and use two
23419 argument IFN_GOMP_SIMD_LANE instead of single argument.
23420 * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't DCE
23421 two argument IFN_GOMP_SIMD_LANE without lhs.
23422 * tree-vectorizer.h (struct _loop_vec_info): Add simd_if_cond
23424 (LOOP_VINFO_SIMD_IF_COND, LOOP_REQUIRES_VERSIONING_FOR_SIMD_IF_COND):
23426 (LOOP_REQUIRES_VERSIONING): Or in
23427 LOOP_REQUIRES_VERSIONING_FOR_SIMD_IF_COND.
23428 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
23430 (vect_analyze_loop_2): Punt if LOOP_VINFO_SIMD_IF_COND is constant 0.
23431 * tree-vect-loop-manip.c (vect_loop_versioning): Add runtime check
23432 from simd if clause if needed.
23434 2019-05-16 Richard Biener <rguenther@suse.de>
23436 * tree-affine.c (expr_to_aff_combination): New function split
23438 (tree_to_aff_combination): ... here.
23439 (aff_combination_expand): Avoid building a GENERIC tree.
23441 2019-05-16 Max Filippov <jcmvbkbc@gmail.com>
23443 * cgraphunit.c (cgraph_node::expand_thunk): Remove
23444 assemble_start_function and assemble_end_function calls.
23445 * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Call
23446 assemble_start_function and assemble_end_function.
23447 * config/arc/arc.c (arc_output_mi_thunk): Likewise.
23448 * config/arm/arm.c (arm_output_mi_thunk): Likewise.
23449 * config/bfin/bfin.c (bfin_output_mi_thunk): Likewise.
23450 * config/c6x/c6x.c (c6x_output_mi_thunk): Likewise.
23451 * config/cris/cris.c (cris_asm_output_mi_thunk): Likewise.
23452 * config/csky/csky.c (csky_output_mi_thunk): Likewise.
23453 * config/epiphany/epiphany.c (epiphany_output_mi_thunk): Likewise.
23454 * config/frv/frv.c (frv_asm_output_mi_thunk): Likewise.
23455 * config/i386/i386.c (x86_output_mi_thunk): Likewise.
23456 * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
23457 * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
23458 * config/microblaze/microblaze.c (microblaze_asm_output_mi_thunk):
23460 * config/mips/mips.c (mips_output_mi_thunk): Likewise.
23461 * config/mmix/mmix.c (mmix_asm_output_mi_thunk): Likewise.
23462 * config/mn10300/mn10300.c (mn10300_asm_output_mi_thunk): Likewise.
23463 * config/nds32/nds32.c (nds32_asm_output_mi_thunk): Likewise.
23464 * config/nios2/nios2.c (nios2_asm_output_mi_thunk): Likewise.
23465 * config/or1k/or1k.c (or1k_output_mi_thunk): Likewise.
23466 * config/pa/pa.c (pa_asm_output_mi_thunk): Likewise.
23467 * config/riscv/riscv.c (riscv_output_mi_thunk): Likewise.
23468 * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
23469 * config/s390/s390.c (s390_output_mi_thunk): Likewise.
23470 * config/sh/sh.c (sh_output_mi_thunk): Likewise.
23471 * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
23472 * config/spu/spu.c (spu_output_mi_thunk): Likewise.
23473 * config/stormy16/stormy16.c (xstormy16_asm_output_mi_thunk):
23475 * config/tilegx/tilegx.c (tilegx_output_mi_thunk): Likewise.
23476 * config/tilepro/tilepro.c (tilepro_asm_output_mi_thunk): Likewise.
23477 * config/vax/vax.c (vax_output_mi_thunk): Likewise.
23479 2019-05-16 Jan Hubicka <hubicka@ucw.cz>
23481 * tree-ssa-alias.c (alias_stats): Add
23482 aliasing_component_refs_p_may_alias and
23483 aliasing_component_refs_p_no_alias.
23484 (dump_alias_stats): Print aliasing_component_refs_p stats.
23485 (aliasing_component_refs_p): Update stats.
23487 2019-05-16 Martin Liska <mliska@suse.cz>
23490 * multiple_target.c (expand_target_clones): Do not allow
23491 target_clones being used with a symbol that is an alias.
23493 2019-05-16 Vladislav Ivanishin <vlad@ispras.ru>
23495 PR tree-optimization/90394
23496 * tree-ssa-uninit.c (is_pred_expr_subset_of): Potentially give false
23497 positives rather than ICE for cases where (code2 == NE_EXPR
23498 && code1 == BIT_AND_EXPR).
23500 2019-05-16 Jakub Jelinek <jakub@redhat.com>
23503 * tree-core.h (struct tree_decl_common): Document
23504 decl_nonshareable_flag for PARM_DECLs.
23505 * tree.h (DECL_HIDDEN_STRING_LENGTH): Define.
23506 * calls.c (expand_call): Don't try tail call if caller
23507 has any DECL_HIDDEN_STRING_LENGTH PARM_DECLs that are or might be
23508 passed on the stack and callee needs to pass any arguments on the
23510 * tree-streamer-in.c (unpack_ts_decl_common_value_fields): Use
23511 else if instead of series of mutually exclusive ifs. Handle
23512 DECL_HIDDEN_STRING_LENGTH for PARM_DECLs.
23513 * tree-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
23515 * lto-streamer.h (LTO_major_version): Bump to 9.
23517 2019-05-16 Jun Ma <JunMa@linux.alibaba.com>
23519 PR tree-optimization/90106
23520 * tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds): Add
23521 new parameter as new internal function call, also move it to new
23523 (use_internal_fn): Pass internal function call to
23524 shrink_wrap_one_built_in_call_with_conds.
23526 2019-05-15 Jakub Jelinek <jakub@redhat.com>
23528 * omp-low.c (lower_rec_input_clauses): For if (0) or simdlen (1) set
23530 * omp-expand.c (expand_omp_simd): For if (0) or simdlen (1) clear
23531 safelen_int and set loop->dont_vectorize.
23533 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23536 * config/i386/i386-builtin.def: Enable MMX intrinsics with
23538 * config/i386/i386-builtins.c (ix86_init_mmx_sse_builtins):
23540 * config/i386/i386-expand.c (ix86_expand_builtin): Allow
23541 SSE/SSE2/SSSE3 to emulate MMX intrinsics with TARGET_MMX_WITH_SSE.
23542 * config/i386/mmintrin.h: Only require SSE2 if __MMX_WITH_SSE__
23545 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23548 * config/i386/mmx.md (*vec_dupv2sf): Changed to
23549 define_insn_and_split to support SSE emulation.
23550 (*vec_extractv2sf_0): Likewise.
23551 (*vec_extractv2sf_1): Likewise.
23552 (*vec_extractv2si_0): Likewise.
23553 (*vec_extractv2si_1): Likewise.
23554 (*vec_extractv2si_zext_mem): Likewise.
23555 (vec_setv2sf): Also allow TARGET_MMX_WITH_SSE.
23556 (vec_extractv2sf_1 splitter): Likewise.
23557 (vec_extractv2sfsf): Likewise.
23558 (vec_setv2si): Likewise.
23559 (vec_extractv2si_1 splitter): Likewise.
23560 (vec_extractv2sisi): Likewise.
23561 (vec_setv4hi): Likewise.
23562 (vec_extractv4hihi): Likewise.
23563 (vec_setv8qi): Likewise.
23564 (vec_extractv8qiqi): Likewise.
23565 (vec_extractv2sfsf): Also allow TARGET_MMX_WITH_SSE. Pass
23566 TARGET_MMX_WITH_SSE ix86_expand_vector_extract.
23567 (vec_extractv2sisi): Likewise.
23568 (vec_extractv4hihi): Likewise.
23569 (vec_extractv8qiqi): Likewise.
23570 (vec_initv2sfsf): Also allow TARGET_MMX_WITH_SSE. Pass
23571 TARGET_MMX_WITH_SSE to ix86_expand_vector_init.
23572 (vec_initv2sisi): Likewise.
23573 (vec_initv4hihi): Likewise.
23574 (vec_initv8qiqi): Likewise.
23575 (vec_setv2si): Also allow TARGET_MMX_WITH_SSE. Pass
23576 TARGET_MMX_WITH_SSE to ix86_expand_vector_set.
23577 (vec_setv4hi): Likewise.
23578 (vec_setv8qi): Likewise.
23580 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23583 * config/i386/mmx.md (MMXMODE:mov<mode>): Also allow
23584 TARGET_MMX_WITH_SSE.
23585 (MMXMODE:*mov<mode>_internal): Likewise.
23586 (MMXMODE:movmisalign<mode>): Likewise.
23588 2019-05-15 Uroš Bizjak <ubizjak@gmail.com>
23591 * config/i386/i386.md (*zero_extendsidi2): Add mmx_isa attribute.
23592 * config/i386/sse.md (sse2_cvtpi2pd): Ditto.
23593 (sse2_cvtpd2pi): Ditto.
23594 (sse2_cvttpd2pi): Ditto.
23595 (*vec_concatv2sf_sse4_1): Ditto.
23596 (*vec_concatv2sf_sse): Ditto.
23597 (*vec_concatv2si_sse4_1): Ditto.
23598 (*vec_concatv2si): Ditto.
23599 (*vec_concatv4si_0): Ditto.
23600 (*vec_concatv2di_0): Ditto.
23602 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23605 * config/i386/sse.md (abs<mode>2): Add SSE emulation.
23607 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23610 * config/i386/sse.md (ssse3_palignrdi): Changed to
23611 define_insn_and_split to support SSE emulation.
23613 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23616 * config/i386/sse.md (ssse3_psign<mode>3): Add SSE emulation.
23618 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23621 * config/i386/sse.md (ssse3_pshufbv8qi3): Changed to
23622 define_insn_and_split. Also allow TARGET_MMX_WITH_SSE. Add
23625 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23628 * config/i386/sse.md (ssse3_pmulhrswv4hi3): Require TARGET_MMX
23629 or TARGET_MMX_WITH_SSE.
23630 (*ssse3_pmulhrswv4hi3): Add SSE emulation.
23632 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23635 * config/i386/sse.md (ssse3_pmaddubsw): Add SSE emulation.
23637 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23640 * config/i386/sse.md (ssse3_ph<plusminus_mnemonic>dv2si3):
23641 Changed to define_insn_and_split to support SSE emulation.
23643 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23646 * config/i386/sse.md (ssse3_ph<plusminus_mnemonic>wv4hi3):
23647 Changed to define_insn_and_split to support SSE emulation.
23649 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23652 * config/i386/mmx.md (mmx_<emms>): Renamed to ...
23653 (*mmx_<emms>): This.
23654 (mmx_<emms>): New expander.
23656 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23659 * config/i386/mmx.md (sse2_umulv1siv1di3): Add SSE emulation
23661 (*sse2_umulv1siv1di3): Add SSE2 emulation.
23663 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23666 * config/i386/mmx.md (sse_movntq): Add SSE2 emulation.
23668 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23671 * config/i386/mmx.md (mmx_psadbw): Add SSE emulation.
23673 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23676 * config/i386/mmx.md (mmx_uavgv4hi3): Also check TARGET_MMX and
23677 TARGET_MMX_WITH_SSE.
23678 (*mmx_uavgv4hi3): Add SSE emulation.
23680 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23683 * config/i386/mmx.md (mmx_uavgv8qi3): Also check TARGET_MMX
23684 and TARGET_MMX_WITH_SSE.
23685 (*mmx_uavgv8qi3): Add SSE emulation.
23687 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23690 * config/i386/xmmintrin.h: Emulate MMX maskmovq with SSE2
23691 maskmovdqu for __MMX_WITH_SSE__.
23693 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23696 * config/i386/mmx.md (mmx_umulv4hi3_highpart): Also check
23697 TARGET_MMX and TARGET_MMX_WITH_SSE.
23698 (*mmx_umulv4hi3_highpart): Add SSE emulation.
23700 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23703 * config/i386/mmx.md (mmx_pmovmskb): Changed to
23704 define_insn_and_split to support SSE emulation.
23706 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23709 * config/i386/mmx.md (mmx_<code>v4hi3): Also check TARGET_MMX
23710 and TARGET_MMX_WITH_SSE.
23711 (mmx_<code>v8qi3): Likewise.
23712 (smaxmin:<code>v4hi3): New.
23713 (umaxmin:<code>v8qi3): Likewise.
23714 (smaxmin:*mmx_<code>v4hi3): Add SSE emulation.
23715 (umaxmin:*mmx_<code>v8qi3): Likewise.
23717 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23720 * config/i386/mmx.md (mmx_pinsrw): Also check TARGET_MMX and
23721 TARGET_MMX_WITH_SSE.
23722 (*mmx_pinsrw): Add SSE emulation.
23724 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23727 * config/i386/mmx.md (mmx_pextrw): Add SSE emulation.
23729 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23732 * config/i386/sse.md (sse_cvtpi2ps): Changed to
23733 define_insn_and_split. Also allow TARGET_MMX_WITH_SSE. Add
23736 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23739 * config/i386/sse.md (sse_cvtps2pi): Add SSE emulation.
23740 (sse_cvttps2pi): Likewise.
23742 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23745 * config/i386/mmx.md (mmx_pshufw): Also check TARGET_MMX and
23746 TARGET_MMX_WITH_SSE.
23747 (mmx_pshufw_1): Add SSE emulation.
23748 (*vec_dupv4hi): Changed to define_insn_and_split and also allow
23749 TARGET_MMX_WITH_SSE to support SSE emulation.
23751 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23754 * config/i386/constraints.md (Yw): New constraint.
23755 * config/i386/mmx.md (*vec_dupv2si): Changed to
23756 define_insn_and_split and also allow TARGET_MMX_WITH_SSE to
23757 support SSE emulation.
23759 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23762 * config/i386/mmx.md (mmx_eq<mode>3): Also allow
23763 TARGET_MMX_WITH_SSE.
23764 (*mmx_eq<mode>3): Also allow TARGET_MMX_WITH_SSE. Add SSE
23766 (mmx_gt<mode>3): Likewise.
23768 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23771 * config/i386/mmx.md (mmx_andnot<mode>3): Also allow
23772 TARGET_MMX_WITH_SSE. Add SSE support.
23774 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23777 * config/i386/mmx.md (any_logic:mmx_<code><mode>3): Also allow
23778 TARGET_MMX_WITH_SSE.
23779 (any_logic:<code><mode>3): New.
23780 (any_logic:*mmx_<code><mode>3): Also allow TARGET_MMX_WITH_SSE.
23783 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23786 * config/i386/mmx.md (mmx_ashr<mode>3): Also allow
23787 TARGET_MMX_WITH_SSE. Add SSE emulation.
23788 (mmx_<shift_insn><mode>3): Likewise.
23789 (ashr<mode>3): New.
23790 (<shift_insn><mode>3): Likewise.
23792 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23795 * config/i386/mmx.md (mmx_pmaddwd): Also allow TARGET_MMX_WITH_SSE.
23796 (*mmx_pmaddwd): Also allow TARGET_MMX_WITH_SSE. Add SSE support.
23798 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23801 * config/i386/mmx.md (mmx_smulv4hi3_highpart): Also allow
23802 TARGET_MMX_WITH_SSE.
23803 (*mmx_smulv4hi3_highpart): Also allow TARGET_MMX_WITH_SSE. Add
23806 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23809 * config/i386/mmx.md (mmx_mulv4hi3): Also allow
23810 TARGET_MMX_WITH_SSE.
23812 (*mmx_mulv4hi3): Also allow TARGET_MMX_WITH_SSE. Add SSE
23815 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23818 * config/i386/mmx.md (MMXMODEI8): Require TARGET_SSE2 for V1DI.
23819 (plusminus:mmx_<plusminus_insn><mode>3): Check
23820 TARGET_MMX_WITH_SSE.
23821 (sat_plusminus:mmx_<plusminus_insn><mode>3): Likewise.
23822 (<plusminus_insn><mode>3): New.
23823 (*mmx_<plusminus_insn><mode>3): Add SSE emulation.
23824 (*mmx_<plusminus_insn><mode>3): Likewise.
23826 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23829 * config/i386/i386-expand.c (ix86_split_mmx_punpck): New function.
23830 * config/i386/i386-protos.h (ix86_split_mmx_punpck): New
23832 * config/i386/mmx.m (mmx_punpckhbw): Changed to
23833 define_insn_and_split to support SSE emulation.
23834 (mmx_punpcklbw): Likewise.
23835 (mmx_punpckhwd): Likewise.
23836 (mmx_punpcklwd): Likewise.
23837 (mmx_punpckhdq): Likewise.
23838 (mmx_punpckldq): Likewise.
23840 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23841 Uros Bizjak <ubizjak@gmail.com>
23844 * config/i386/i386-expand.c (ix86_move_vector_high_sse_to_mmx):
23846 (ix86_split_mmx_pack): Likewise.
23847 * config/i386/i386-protos.h (ix86_move_vector_high_sse_to_mmx):
23849 (ix86_split_mmx_pack): Likewise.
23850 * config/i386/i386.md (mmx_isa): New.
23851 (enabled): Also check mmx_isa.
23852 * config/i386/mmx.md (any_s_truncate): New code iterator.
23853 (s_trunsuffix): New code attr.
23854 (mmx_packsswb): Removed.
23855 (mmx_packssdw): Likewise.
23856 (mmx_packuswb): Likewise.
23857 (mmx_pack<s_trunsuffix>swb): New define_insn_and_split to emulate
23858 MMX packsswb/packuswb with SSE2.
23859 (mmx_packssdw): Likewise.
23860 * config/i386/predicates.md (register_mmxmem_operand): New.
23862 2019-05-15 H.J. Lu <hongjiu.lu@intel.com>
23865 * config/i386/i386-c.c (ix86_target_macros_internal): Define
23866 __MMX_WITH_SSE__ for TARGET_MMX_WITH_SSE.
23867 * config/i386/i386.c (ix86_set_reg_reg_cost): Add support for
23868 TARGET_MMX_WITH_SSE with VALID_MMX_REG_MODE.
23869 (ix86_vector_mode_supported_p): Likewise.
23870 * config/i386/i386.h (TARGET_MMX_WITH_SSE): New.
23872 2019-05-15 Martin Liska <mliska@suse.cz>
23874 PR middle-end/90478
23875 * tree-switch-conversion.c (jump_table_cluster::can_be_handled):
23876 Check for overflow.
23878 2019-05-15 Richard Biener <rguenther@suse.de>
23880 * tree-into-ssa.c (pass_build_ssa::execute): Run
23881 update_address_taken before going into SSA.
23883 2019-05-15 Richard Biener <rguenther@suse.de>
23885 * tree-pretty-print.c (dump_generic_node): Dump BIT_FIELD_REF
23886 as __BIT_FIELD_REF with type with -gimple.
23888 2019-05-15 Vladislav Ivanishin <vlad@ispras.ru>
23890 * tree-ssa-uninit.c (is_value_included_in): Remove is_unsigned and merge
23891 semantically equivalent branches (left over after prior refactorings).
23893 2019-05-15 Richard Biener <rguenther@suse.de>
23895 PR tree-optimization/88828
23896 * tree-ssa-forwprop.c (simplify_vector_constructor): Fix
23899 2019-05-14 Richard Biener <rguenther@suse.de>
23901 * tree-pretty-print.c (dump_generic_node): Dump VIEW_CONVERT_EXPR
23902 as __VIEW_CONVERT with -gimple.
23904 2019-05-12 Iain Sandoe <iain@sandoe.co.uk>
23907 * config/i386/darwin.h (CC1_SPEC): Report -mx32 as an error for
23910 2019-05-14 Segher Boessenkool <segher@kernel.crashing.org>
23912 * config/rs6000/rs6000.md (eh_set_lr_<mode>): Merge with following
23913 define_split to become a define_insn_and_split.
23915 2019-05-14 Segher Boessenkool <segher@kernel.crashing.org>
23917 * config/rs6000/rs6000-protos.h (rs6000_emit_epilogue): Change
23919 * config/rs6000/rs6000.c (rs6000_emit_epilogue): Change arguments.
23920 * config/rs6000/rs6000.md (epilogue_type): New define_enum.
23921 (sibcall_epilogue): Adjust.
23922 (epilogue): Adjust.
23924 2019-05-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
23926 * config.gcc: Move *-*-solaris2.10* from obsolete configurations
23927 to unsupported ones.
23928 Simplify x86_64-*-solaris2.1[0-9]* to x86_64-*-solaris2*.
23929 * config.host: Likewise.
23930 * config/i386/sol2.h (ASM_COMMENT_START): Remove.
23931 * config/sparc/driver-sparc.c (host_detect_local_cpu) [__sun__ &&
23932 __svr4__]: Remove "brand" fallback.
23933 [!KSTAT_DATA_STRING]: Remove.
23934 * configure.ac (gcc_cv_ld_hidden): Simplify *-*-solaris2.1[0-9]*
23936 (comdat_group): Likewise.
23937 (set_have_as_tls): Likewise.
23938 (gcc_cv_target_dl_iterate_phdr): Likewise.
23939 (gcc_cv_as_shf_merge): Remove Solaris 10/x86 workaround.
23940 (gcc_cv_ld_aligned_shf_merge): Remove Solaris 10/SPARC workaround.
23941 * configure: Regenerate.
23942 * doc/install.texi: Simplify Solaris target triplets.
23943 (Specific, i?86-*-solaris2*): Remove Solaris 10 references.
23944 (Specific, *-*-solaris2*): Document Solaris 10 removal.
23945 Remove Solaris 10 references.
23946 Remove obsolete Solaris bug reference.
23947 (Specific, sparc-sun-solaris2.10): Remove.
23949 2019-05-14 Uroš Bizjak <ubizjak@gmail.com>
23951 * config/i386/i386.md (any_div): New code iterator.
23952 (paired_mod): New code attribute.
23953 (sgnprefix): Handle DIV and UDIV RTXes.
23955 (<u>divmod<mode>4): Macroize expander from divmod<mode>4
23956 and udivmod<mode>4 patterns using any_div code iterator.
23957 (divmod splitters): Macroize splitters using any_div code iterator.
23958 (*udivmodsi4_pow2_zext_1): Use exactl_log2 in insn condition.
23959 (*udivmodsi4_pow2_zext_2): Ditto.
23960 (*<u>divmod<mode>4_noext): Macroize insn from *divmod<mode>4_noext
23961 and *udivmod<mode>4_noext patterns using any_div code iterator.
23962 (*<u>divmod<mode>4_noext_zext_1): Macroize insn from
23963 *divmod<mode>4_noext_zext_1 and *udivmod<mode>4_noext_zext_1
23964 patterns using any_div code iterator.
23965 (*<u>divmod<mode>4_noext_zext_2): Macroize insn from
23966 *divmod<mode>4_noext_zext_2 and *udivmod<mode>4_noext_zext_2
23967 patterns using any_div code iterator.
23968 (<u>divmodhiqi3): Macroize insn from divmodhiqi3 and
23969 udivmodhiqi3 patterns using any_extend code iterator.
23971 2019-05-14 Richard Biener <rguenther@suse.de>
23972 H.J. Lu <hongjiu.lu@intel.com>
23974 PR tree-optimization/88828
23975 * tree-ssa-forwprop.c (simplify_vector_constructor): Handle
23976 permuting in a single non-constant element not extracted
23979 2019-05-14 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com>
23981 * internal-fn.def (SIGNBIT): New.
23982 * config/aarch64/aarch64-simd.md (signbitv2sf2): New expand
23984 (signbitv4sf2): Likewise.
23986 2019-05-14 Chenghua Xu <paul.hua.gm@gmail.com>
23989 * config/mips/mips.c (mips_split_move): Skip forward SRC into
23990 next insn when the SRC reg is dead.
23992 2019-05-14 Bin Cheng <bin.cheng@linux.alibaba.com>
23994 * gimple-ssa-strength-reduction.c (lookup_cand): Adjust index by 1.
23995 (alloc_cand_and_find_basis): Ditto.
23996 (backtrace_base_for_ref, create_mul_ssa_cand): Remove if-then-else.
23997 (create_mul_imm_cand, create_add_ssa_cand): Ditto.
23998 (create_add_imm_cand, slsr_process_cast): Ditto.
23999 (slsr_process_copy, replace_mult_candidate): Ditto.
24000 (replace_rhs_if_not_dup, replace_one_candidate): Ditto.
24001 (dump_cand_vec, analyze_candidates_and_replace): Skip NULL element.
24002 (pass_strength_reduction::execute): Init the first NULL element.
24004 2019-05-13 Nathan Sidwell <nathan@acm.org>
24006 * gcc.c (execute): Simplify cond-expr into if. Reformat comment.
24007 (run_attempt): Reformat line break.
24009 2019-05-13 David Edelsohn <dje.gcc@gmail.com>
24012 * config/rs6000/rs6000.c (rs6000_emit_epilogue): Don't load EH
24013 data registers in sibcall epilogues.
24014 Don't add EH_RETURN_STACKADJ_RTX to sp in sibcall epilogues.
24016 2019-05-13 Uroš Bizjak <ubizjak@gmail.com>
24019 * configure.ac (--enable-frame-pointer):
24020 Disable by default for cygwin and mingw.
24021 * configure: Regenerate.
24023 2019-05-13 Nathan Sidwell <nathan@acm.org>
24025 * dwarf2out.c (breakout_comdat_types): Move comment to correct
24027 (const_ok_for_output_1): Balance parens around #if/#else/#endif
24028 (gen_member_die): Move abstract origin check earlier. Only VARs
24029 can be static_inline_p. Simplify splicing control flow.
24031 2019-05-13 Richard Biener <rguenther@suse.de>
24033 * tree-vect-slp.c (vect_get_and_check_slp_defs): Handle
24035 (vect_build_slp_tree_1): Likewise.
24037 2019-05-13 Richard Biener <rguenther@suse.de>
24039 PR tree-optimization/90402
24040 * tree-if-conv.c (tree_if_conversion): Value number only
24041 the loop body by making the latch an exit of the region
24043 * tree-ssa-sccvn.c (process_bb): Add flag whether to skip
24045 (do_rpo_vn): Deal with multiple edges into the entry block
24046 that are not backedges inside the region by skipping PHIs
24047 of the entry block.
24049 2019-05-13 Richard Biener <rguenther@suse.de>
24051 PR tree-optimization/90316
24052 * tree-ssa-pre.c (insert_aux): Fold into ...
24053 (insert): ... this function. Use a RPO walk to reduce the
24054 number of required iterations.
24056 2019-05-13 Martin Liska <mliska@suse.cz>
24058 PR tree-optimization/90416
24059 * tree-vect-stmts.c (vect_check_load_store_mask): Concatenate
24060 string instead of passing the second part as va_arg argument.
24062 2019-05-13 Martin Liska <mliska@suse.cz>
24064 PR gcov-profile/90380
24065 * gcov.c (handle_cycle): Do not support zero cycle count,
24066 it should not be possible.
24067 (path_contains_zero_cycle_arc): New function.
24068 (circuit): Ignore zero cycle arc counts.
24070 2019-05-13 Martin Liska <mliska@suse.cz>
24072 PR gcov-profile/90380
24073 * gcov.c (enum loop_type): Remove the enum and
24075 (handle_cycle): Assert that we should not reach
24077 (circuit): Use loop_found instead of a tri-state loop_type.
24078 (get_cycles_count): Do not handle NEGATIVE_LOOP as it can't
24081 2019-05-12 Iain Sandoe <iain@sandoe.co.uk>
24084 * config/i386/i386.c (ix86_output_jmp_thunk_or_indirect): New.
24085 (ix86_output_indirect_branch_via_reg): Use output mechanism
24086 accounting for __USER_LABEL_PREFIX__.
24087 (ix86_output_indirect_branch_via_push): Likewise.
24088 (ix86_output_function_return): Likewise.
24089 (ix86_output_indirect_function_return): Likewise.
24091 2019-05-12 Richard Sandiford <richard.sandiford@arm.com>
24093 * doc/md.texi: Document use of code attributes in rtx patterns.
24094 * read-md.h (rtx_reader::rtx_alloc_for_name): New member function.
24095 * read-rtl.c (find_code): Split out search loops into...
24096 (maybe_find_code): ...this new function.
24097 (check_code_iterator): Make the error message more informative.
24098 (check_code_attribute): New function.
24099 (rtx_reader::rtx_alloc_for_name): Likewise.
24100 (rtx_reader::read_rtx_code): Use rtx_alloc_for_name.
24101 * config/aarch64/predicates.md (aarch64_smin, aarch64_umin): Delete.
24102 * config/aarch64/aarch64-simd.md (*aarch64_<su>abd<mode>_3): Use
24103 <max_opp> directly as an rtx code instead of via a match_operator.
24104 * config/aarch64/aarch64-sve.md (aarch64_<su>abd<mode>_3): Likewise.
24105 (<su>abd<mode>_3): Update accordingly.
24107 2019-05-12 Iain Sandoe <iain@sandoe.co.uk>
24109 * config/rs6000/rs6000.c (debug_stack_info): When -mdebug=stack
24110 is given, print the state of the EH "save world" computation for
24113 2019-05-11 Jakub Jelinek <jakub@redhat.com>
24116 * config/aarch64/aarch64.c (aarch64_expand_epilogue): Don't add
24117 EH_RETURN_STACKADJ_RTX to sp in sibcall epilogues.
24119 2019-05-11 Uroš Bizjak <ubizjak@gmail.com>
24121 * config/i386/i386.md (floatdi<X87MODEF:mode>2_i387_with_xmm):
24122 Use pinsrd for TARGET_SSE4_1.
24123 * config/i386/sse.md (movdi_to_sse): Ditto.
24125 2019-05-10 Richard Biener <rguenther@suse.de>
24127 * tree-ssa-sccvn.c (visit_reference_op_call): Initialize value-id.
24128 (do_rpo_vn): Initialize next_value_id.
24130 2019-05-10 Martin Liska <mliska@suse.cz>
24132 * params.def (PARAM_GIMPLE_FE_COMPUTED_HOT_BB_THRESHOLD):
24135 2019-05-10 Jakub Jelinek <jakub@redhat.com>
24137 PR tree-optimization/90385
24138 * tree-parloops.c (try_create_reduction_list): Punt on non-SSA_NAME
24139 arguments of the exit phis.
24142 * tree-inline.h (struct copy_body_data): Add do_not_fold member.
24143 * tree-inline.c (remap_gimple_op_r): Avoid folding expressions if
24145 (copy_tree_body_r): Likewise.
24146 (copy_fn): Set id.do_not_fold to true.
24148 2019-05-10 Martin Liska <mliska@suse.cz>
24150 * config/i386/i386-expand.c (ix86_expand_floorceildf_32):
24151 Reapply changes from r269790.
24153 2019-05-10 Martin Liska <mliska@suse.cz>
24155 PR middle-end/90340
24156 * doc/invoke.texi: New params.
24157 * params.def (PARAM_JUMP_TABLE_MAX_GROWTH_RATIO_FOR_SIZE): New.
24158 (PARAM_JUMP_TABLE_MAX_GROWTH_RATIO_FOR_SPEED): Likewise.
24159 * tree-switch-conversion.c (jump_table_cluster::can_be_handled):
24161 * tree-switch-conversion.h (struct jump_table_cluster):
24164 2019-05-09 Segher Boessenkool <segher@kernel.crashing.org>
24166 * combine.c (combine_simplify_rtx): Don't make IF_THEN_ELSE RTL.
24168 2019-05-09 Bill Schmidt <wschmidt@linux.ibm.com>
24170 * doc/loop.texi: Remove reference to FOR_EACH_LOOP_BREAK.
24172 2019-05-09 Alexander Monakov <amonakov@ispras.ru>
24174 PR rtl-optimization/88879
24175 * sel-sched.c (sel_target_adjust_priority): Remove assert.
24177 2019-05-09 Richard Earnshaw <rearnsha@arm.com>
24180 * config/arm/arm.c (callee_saved_reg_p): Move before
24181 thumb_find_work_register.
24182 (thumb1_prologue_unused_call_clobbered_lo_regs): Move before
24183 thumb_find_work_register. Only call df_get_live_out once.
24184 (thumb1_epilogue_unused_call_clobbered_lo_regs): Likewise.
24185 (thumb_find_work_register): Use
24186 thumb1_prologue_unused_call_clobbered_lo_regs instead of ad hoc
24187 algorithms to locate a spare call clobbered reg.
24189 2019-05-09 Martin Liska <mliska@suse.cz>
24191 * gimple-pretty-print.c (dump_binary_rhs): Dump MIN_EXPR
24192 and MAX_EXPR in GIMPLE FE format.
24194 2019-05-09 Martin Liska <mliska@suse.cz>
24196 * tree-cfg.c (dump_function_to_file): Dump entry BB count.
24197 * gimple-pretty-print.c (dump_gimple_bb_header):
24199 (pp_cfg_jump): Dump edge probability.
24200 * profile-count.c (profile_quality_as_string): Simplify
24201 with a static array.
24202 (parse_profile_quality): New function.
24203 (profile_count::dump): Simplify with a static array.
24204 (profile_count::from_gcov_type): Add new argument.
24205 * profile-count.h (parse_profile_quality): Likewise.
24206 * predict.h (set_hot_bb_threshold): New.
24207 * params.def (PARAM_GIMPLE_FE_COMPUTED_HOT_BB_THRESHOLD):
24209 * predict.c (get_hot_bb_threshold): Set from the new param.
24210 (set_hot_bb_threshold): New.
24212 2019-05-09 Richard Biener <rguenther@suse.de>
24214 PR tree-optimization/90395
24215 * tree-ssa-forwprop.c (pass_forwprop::execute): Do not
24216 rewrite vector stores that throw internally.
24218 2019-05-09 Thomas Schwinge <thomas@codesourcery.com>
24220 * cif-code.def (CHKP): Remove.
24223 * configure.ac (--enable-frame-pointer): Disable by default for
24225 * configure: Regenerate.
24227 2019-05-09 Alan Modra <amodra@gmail.com>
24230 * config/rs6000/rs6000.h (enum reg_class, REG_CLASS_NAMES),
24231 (REG_CLASS_CONTENTS): Add GEN_OR_VSX_REGS class.
24232 * config/rs6000/rs6000.c (rs6000_register_move_cost): Correct
24233 cost for general <-> vsx when direct moves are available.
24234 Cost union classes at minimal cost for any reg in the class.
24235 Correct calculation for moves between vsx, float, and altivec.
24236 Don't return a low cost for moves between special regs. Don't
24237 use hard coded register numbers.
24238 (TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS): Define.
24239 (rs6000_ira_change_pseudo_allocno_class): New function.
24240 * config/rs6000/rs6000.md (movsi_internal1, mov<mode>_internal),
24241 (movdi_internal32, movdi_internal64): Remove '*' from vsx register
24243 (movsi_internal1): Don't disparage vector alternatives.
24244 (mov<mode>_internal): Likewise, excepting alternative that
24246 * config/rs6000/vsx.md (vsx_splat_<mode>_reg): Don't disparage
24247 we <- b alternative.
24249 2019-05-08 Jakub Jelinek <jakub@redhat.com>
24252 PR tree-optimization/89060
24253 * tree-ssa-live.h (live_vars_map): New typedef.
24254 (compute_live_vars, live_vars_at_stmt, destroy_live_vars): Declare.
24255 * tree-ssa-live.c: Include gimple-walk.h and cfganal.h.
24256 (struct compute_live_vars_data): New type.
24257 (compute_live_vars_visit, compute_live_vars_1, compute_live_vars,
24258 live_vars_at_stmt, destroy_live_vars): New functions.
24259 * tree-tailcall.c: Include tree-ssa-live.h.
24260 (live_vars, live_vars_vec): New global variables.
24261 (find_tail_calls): Perform variable life analysis before punting.
24262 (tree_optimize_tail_calls_1): Clean up live_vars and live_vars_vec.
24263 * tree-inline.h (struct copy_body_data): Add eh_landing_pad_dest
24265 * tree-inline.c (add_clobbers_to_eh_landing_pad): Remove BB argument.
24266 Perform variable life analysis to select variables that really need
24268 (copy_edges_for_bb): Don't call add_clobbers_to_eh_landing_pad here,
24269 instead set id->eh_landing_pad_dest and assert it is the same.
24270 (copy_cfg_body): Call it here if id->eh_landing_pad_dest is non-NULL.
24272 2019-05-08 Mihail Ionescu <mihail.ionescu@arm.com>
24273 Richard Earnshaw <rearnsha@arm.com>
24276 * config/arm/arm.c (thumb1_prologue_unused_call_clobbered_lo_regs): New
24278 (thumb1_epilogue_unused_call_clobbered_lo_regs): New function.
24279 (thumb1_compute_save_core_reg_mask): Don't force a spare work
24280 register if both the epilogue and prologue can use call-clobbered
24282 (thumb1_unexpanded_epilogue): Use
24283 thumb1_epilogue_unused_call_clobbered_lo_regs. Reverse the logic for
24284 picking temporaries for restoring high regs to match that of the
24285 prologue where possible.
24286 (thumb1_expand_prologue): Add any usable call-clobbered low registers to
24287 the list of work registers. Detect if the return address is still live
24288 at the end of the prologue and avoid using it for a work register if so.
24289 If the return address is not live, add LR to the list of pushable regs
24290 after the first pass.
24292 2019-05-08 Bin Cheng <bin.cheng@linux.alibaba.com>
24294 PR tree-optimization/90078
24295 * tree-ssa-loop-ivopts.c (inttypes.h): Include new header file.
24296 (INFTY): Increase the value for infinite cost.
24297 (struct comp_cost): Promote type of members to int64_t.
24298 (infinite_cost): Don't set complexity in initialization.
24299 (comp_cost::operator +,-,+=,-+,/=,*=): Assert when cost computation
24300 overflows to infinite_cost.
24301 (adjust_setup_cost): Promote type of parameter and cost computation
24303 (struct ainc_cost_data, struct iv_ca): Promote type of member to
24305 (get_scaled_computation_cost_at, determine_iv_cost): Promote type of
24306 cost computation to int64_t.
24307 (determine_group_iv_costs, iv_ca_dump, find_optimal_iv_set): Use
24308 int64_t's format specifier in dump.
24310 2019-05-08 Bin Cheng <bin.cheng@linux.alibaba.com>
24312 PR tree-optimization/90240
24313 * tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at): Scale cost
24314 with respect to scaling factor pre-computed for each basic block.
24315 (try_improve_iv_set): Return bool if best_cost equals to iv_ca cost.
24316 (find_optimal_iv_set_1): Free iv_ca set if it has infinite_cost.
24317 (COST_SCALING_FACTOR_BOUND, determine_scaling_factor): New.
24318 (tree_ssa_iv_optimize_loop): Call determine_scaling_factor. Extend
24319 live range for array of loop's basic blocks. Cleanup aux field of
24320 loop's basic blocks.
24322 2019-05-08 Jakub Jelinek <jakub@redhat.com>
24324 PR tree-optimization/90356
24325 * match.pd ((X +/- 0.0) +/- 0.0): Optimize into X +/- 0.0 if possible.
24327 2019-05-07 Wei Xiao <wei3.xiao@intel.com>
24329 * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512BF16_SET
24330 OPTION_MASK_ISA_AVX512BF16_UNSET, OPTION_MASK_ISA2_AVX512BW_UNSET): New.
24331 (OPTION_MASK_ISA2_AVX512F_UNSET): Add OPTION_MASK_ISA_AVX512BF16_UNSET.
24332 (ix86_handle_option): Handle -mavx512bf16.
24333 * config.gcc: Add avx512bf16vlintrin.h and avx512bf16intrin.h
24335 * config/i386/avx512bf16vlintrin.h: New.
24336 * config/i386/avx512bf16intrin.h: New.
24337 * config/i386/cpuid.h (bit_AVX512BF16): New.
24338 * config/i386/driver-i386.c (host_detect_local_cpu): Detect BF16.
24339 * config/i386/i386-builtin-types.def: Add new types.
24340 * config/i386/i386-builtin.def: Add new builtins.
24341 * config/i386/i386-c.c (ix86_target_macros_internal): Define
24343 * config/i386/i386-option.c (ix86_target_string): Add -mavx512bf16.
24344 (ix86_option_override_internal): Handle BF16.
24345 (ix86_valid_target_attribute_inner_p): Ditto.
24346 * config/i386/i386-expand.c (ix86_expand_args_builtin): Ditto.
24347 * config/i386/i386-builtin.c (enum processor_features): Add
24349 (static const _isa_names_table isa_names_table): Ditto.
24350 * config/i386/i386.h (TARGET_AVX512BF16, TARGET_AVX512BF16_P): New.
24351 (PTA_AVX512BF16): Ditto.
24352 * config/i386/i386.opt: Add -mavx512bf16.
24353 * config/i386/immintrin.h: Include avx512bf16intrin.h
24354 and avx512bf16vlintrin.h.
24355 * config/i386/sse.md (avx512f_cvtne2ps2bf16_<mode><mask_name>,
24356 avx512f_cvtneps2bf16_<mode><mask_name>,
24357 avx512f_dpbf16ps_<mode><mask_half_name>): New define_insn patterns.
24358 * config/i386/subst.md (mask_half): Add new subst.
24359 * doc/invoke.texi: Document -mavx512bf16.
24361 2019-05-07 Segher Boessenkool <segher@kernel.crashing.org>
24363 * config/rs6000/rs6000-protos.h (rs6000_legitimize_reload_address_ptr):
24364 Delete declaration.
24365 * config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Delete.
24366 (rs6000_debug_legitimize_reload_address): Delete.
24367 (rs6000_legitimize_reload_address_ptr): Delete.
24368 (rs6000_option_override_internal): Adjust.
24369 (mem_operand_gpr): Adjust comment.
24370 (legitimate_lo_sum_address_p): Ditto.
24371 (rs6000_legitimize_reload_address): Delete.
24372 (rs6000_debug_legitimize_reload_address): Delete.
24373 * config/rs6000/rs6000.h (LEGITIMIZE_RELOAD_ADDRESS): Delete.
24375 2019-05-07 Kelvin Nilsen <kelvin@gcc.gnu.org>
24378 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
24379 In handling of ALTIVEC_BUILTIN_VEC_INSERT, use modular arithmetic
24380 to compute vector element selector for both constant and variable
24383 2019-05-07 Uroš Bizjak <ubizjak@gmail.com>
24385 * config/i386/i386.md (cvt_mnemonic): New mode attribute.
24386 (ashr<mode>3_cvt): Merge insn pattern from ashrsi3_cvt and
24387 ashrdi3_cvt using SWI48 mode iterator.
24389 2019-05-07 Alejandro Martinez <alejandro.martinezvicente@arm.com>
24391 * config/aarch64/aarch64-sve.md (<su>abd<mode>_3): New define_expand.
24392 (aarch64_<su>abd<mode>_3): Likewise.
24393 (*aarch64_<su>abd<mode>_3): New define_insn.
24394 (<sur>sad<vsi2qi>): New define_expand.
24395 * config/aarch64/iterators.md: Added MAX_OPP attribute.
24396 * tree-vect-loop.c (use_mask_by_cond_expr_p): Add SAD_EXPR.
24397 (build_vect_cond_expr): Likewise.
24399 2019-05-07 Uroš Bizjak <ubizjak@gmail.com>
24401 * cfgexpand.c (asm_clobber_reg_is_valid): Reject
24402 clobbers outside of accessible_reg_set.
24403 * config/i386/i386.c (ix86_conditional_register_usage):
24404 Disable register sets by clearing corresponding bits in
24405 accessible_reg_set. Do not set corresponding bits in fixed_regs,
24406 call_used_regs and don't clear corresponding reg_names array members.
24408 2019-05-07 Richard Biener <rguenther@suse.de>
24410 * tree-vect-stmts.c (vect_is_simple_cond): When vectype is
24411 not specified still compute a comp_vectype for invariant
24414 2019-05-07 Richard Biener <rguenther@suse.de>
24416 PR tree-optimization/90316
24417 * tree-ssa-pre.c (translate_vuse_through_block): When
24418 same_valid is NULL do not bother to search for a virtual
24420 (phi_translate_1): When operands changed we cannot keep
24421 the same value-number so do not bother to ask whether
24422 that's possible from translate_vuse_through_block.
24424 2019-05-07 Martin Liska <mliska@suse.cz>
24426 * bitmap.c (bitmap_register): Come up with
24427 alloc_descriptor_max_uid and assign it for
24429 (register_overhead): Use get_descriptor as
24431 (release_overhead): New.
24432 (bitmap_elem_to_freelist): Call it.
24433 (bitmap_elt_clear_from): Likewise.
24434 (bitmap_obstack_free): Likewise.
24435 (bitmap_move): Sensitively release memory.
24436 * bitmap.h (struct GTY): Add alloc_descriptor and padding.
24437 (bitmap_initialize): Initialize alloc_descriptor to zero.
24438 * tree-ssa-pre.c (do_hoist_insertion): Use bitmap_move.
24440 2019-05-07 Richard Biener <rguenther@suse.de>
24442 * tree-vect-slp.c (vect_build_slp_tree_2): Bump size whenever
24443 we build a SLP node. Remove max_size and limiting.
24444 (vect_analyze_slp_instance): Record and dump size of the SLP graph.
24446 2019-05-07 Richard Biener <rguenther@suse.de>
24448 PR tree-optimization/90316
24449 * tree-ssa-alias.h (get_continuation_for_phi): Take walking
24450 limit by reference.
24451 (walk_non_aliased_vuses): Take walking limit argument.
24452 * tree-ssa-alias.c (maybe_skip_until): Take limit and abort
24453 walking if it is reached instead of just counting.
24454 (get_continuation_for_phi): Likewise.
24455 (walk_non_aliased_vuses): Likewise, instead of leaving counter
24456 limiting to the callback.
24457 * tree-ssa-sccvn.c (vn_reference_lookup_2): Adjust.
24458 (vn_reference_lookup_3): Likewise.
24459 (vn_reference_lookup_pieces): Likewise.
24460 (vn_reference_lookup): Likewise.
24461 * tree-ssa-pre.c (translate_vuse_through_block): Limit walking.
24462 * tree-ssa-scopedtables.c (vuse_eq): Adjust.
24463 (avail_exprs_stack::lookup_avail_expr): Likewise.
24465 2019-05-07 Jan Hubicka <hubicka@ucw.cz>
24467 * tree-ssa-alias.c (aliasing_component_refs_p): Continue looking
24468 for comparaible types in the second direction even if first one
24469 hits incomparable type.
24471 2019-05-07 Richard Biener <rguenther@suse.de>
24474 * lto-wrapper.c (debug_objcopy): Use the original filename
24475 including archive offset for the filename used for -save-temps.
24477 2019-05-07 Li Jia He <helijia@linux.ibm.com>
24479 * tree-ssa-phiopt.c (two_value_replacement): Fix a typo in parameter
24482 2019-05-06 H.J. Lu <hongjiu.lu@intel.com>
24483 Hongtao Liu <hongtao.liu@intel.com>
24487 * config/i386/i386-expand.c (ix86_expand_sse_comi_round):
24488 Modified, original implementation isn't correct.
24490 2019-05-06 Segher Boessenkool <segher@kernel.crashing.org>
24492 * config/rs6000/rs6000.md (FIRST_ALTIVEC_REGNO, LAST_ALTIVEC_REGNO)
24493 (LR_REGNO, CTR_REGNO, CA_REGNO, ARG_POINTER_REGNUM, CR0_REGNO)
24494 (CR1_REGNO, CR2_REGNO, CR3_REGNO, CR4_REGNO, CR5_REGNO, CR6_REGNO)
24495 (CR7_REGNO, MAX_CR_REGNO, VRSAVE_REGNO, VSCR_REGNO)
24496 (FRAME_POINTER_REGNUM): Change numbering.
24497 * config/rs6000/rs6000.c (rs6000_reg_names): Adjust.
24498 (alt_reg_names): Adjust.
24499 (rs6000_conditional_register_usage): Don't mark hard register 64 as
24501 * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Adjust.
24502 (DWARF_FRAME_REGISTERS): Delete.
24503 (DWARF2_FRAME_REG_OUT): Fix whitespace.
24504 (FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS):
24506 (REG_ALLOC_ORDER): Adjust.
24507 (FRAME_POINTER_REGNUM, ARG_POINTER_REGNUM): Adjust.
24508 (REG_CLASS_CONTENTS): Adjust.
24509 (RETURN_ADDR_RTX): Change comment.
24510 (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P): Use ARG_POINTER_REGNUM
24512 (REGISTER_NAMES): Adjust.
24513 (ADDITIONAL_REGISTER_NAMES): Adjust.
24514 * config/rs6000/darwin.h (REGISTER_NAMES): Adjust.
24516 2019-05-06 Segher Boessenkool <segher@kernel.crashing.org>
24518 * config/rs6000/rs6000.md (TFHAR_REGNO, TFIAR_REGNO, TEXASR_REGNO):
24520 * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Adjust.
24521 (DWARF_FRAME_REGISTERS): Adjust.
24522 (FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS):
24524 (REG_ALLOC_ORDER): Adjust.
24525 (enum reg_class): Delete SPR_REGS.
24526 (REG_CLASS_NAMES): Delete SPR_REGS.
24527 (REG_CLASS_CONTENTS): Delete SPR_REGS. Adjust for deleted TM regs.
24528 (REGISTER_NAMES): Adjust.
24529 (ADDITIONAL_REGISTER_NAMES): Adjust.
24530 * config/rs6000/darwin.h (REGISTER_NAMES): Adjust.
24531 * config/rs6000/htm.md (htm_mfspr_<mode>, htm_mtspr_<mode>): Adjust.
24532 * config/rs6000/predicates.md (htm_spr_reg_operand): Delete.
24533 * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Adjust.
24534 (htm_spr_regno): Delete.
24535 (htm_expand_builtin): Adjust: the HTM builtins now have one fewer
24537 (rs6000_dbx_register_number): Adjust.
24539 2019-05-06 Segher Boessenkool <segher@kernel.crashing.org>
24541 * config/rs6000/rs6000.h (PRE_GCC3_DWARF_FRAME_REGISTERS): Delete.
24543 2019-05-06 Segher Boessenkool <segher@kernel.crashing.org>
24545 * config/rs6000/rs6000.c (rs6000_dbx_register_number): Handle
24546 FRAME_POINTER_REGNUM, ARG_POINTER_REGNUM, and 64 (which was MQ).
24548 2019-05-06 Jakub Jelinek <jakub@redhat.com>
24550 PR tree-optimization/88709
24551 PR tree-optimization/90271
24552 * params.def (PARAM_STORE_MERGING_MAX_SIZE): New parameter.
24553 * gimple-ssa-store-merging.c (encode_tree_to_bitpos): Handle
24554 non-clobber CONSTRUCTORs with no elts. Remove useless tmp_int
24556 (imm_store_chain_info::coalesce_immediate_stores): Punt if the size
24557 of the store merging group is larger than
24558 PARAM_STORE_MERGING_MAX_SIZE parameter.
24559 (split_group): Add bzero_first argument. If set, always emit first
24560 the first store which must be = {} of the whole area and then for the
24561 rest of the stores consider all zero bytes as paddings.
24562 (imm_store_chain_info::output_merged_store): Check if first store
24563 is = {} of the whole area and if yes, determine which setting of
24564 bzero_first for split_group gives smaller number of stores. Adjust
24565 split_group callers.
24566 (lhs_valid_for_store_merging_p): Allow decls.
24567 (rhs_valid_for_store_merging_p): Allow non-clobber CONTRUCTORs with
24569 (pass_store_merging::process_store): Likewise.
24571 2019-05-06 Kelvin Nilsen <kelvin@gcc.gnu.org>
24574 * config/rs6000/rs6000.c (rs6000_expand_vector_extract): Add
24575 handling of V1TImode.
24577 2019-05-06 Uroš Bizjak <ubizjak@gmail.com>
24580 * config.gcc (i[34567]86-*-*, x86_64-*-*): Move tests for enable_cld
24581 and enable_frame_pointer ...
24582 * configure.ac: ... here. Update help strings for
24583 --enable-frame-pointer.
24584 * configure: Regenerate.
24585 * config/i386/i386-options.c (ix86_option_override_internal): Remove
24586 USE_X86_64_FRAME_POINTER define, use USE_IX86_FRAME_POINTER instead.
24587 * config/i386/sol2.h (USE_IX86_FRAME_POINTER): Remove.
24588 (USE_X86_64_FRAME_POINTER): Ditto.
24590 2019-05-06 Martin Liska <mliska@suse.cz>
24592 * config.gcc: Append to target_gtfiles and fix indentation.
24594 2019-05-06 Richard Biener <rguenther@suse.de>
24596 PR tree-optimization/90358
24597 * tree-vect-stmts.c (get_group_load_store_type): Properly
24598 detect unused upper half of load.
24599 (vectorizable_load): Likewise.
24601 2019-05-06 Richard Biener <rguenther@suse.de>
24603 PR tree-optimization/88828
24604 * tree-ssa-forwprop.c (get_bit_field_ref_def): Split out from...
24605 (simplify_vector_constructor): ...here. Handle constants in
24608 2019-05-06 Richard Biener <rguenther@suse.de>
24610 PR tree-optimization/90328
24611 * tree-data-ref.h (dr_may_alias_p): Pass in the actual loop nest.
24612 * tree-data-ref.c (dr_may_alias_p): Check whether the clique
24613 is valid in the loop nest before using it.
24614 (initialize_data_dependence_relation): Adjust.
24615 * graphite-scop-detection.c (build_alias_set): Pass the SCOP enclosing
24616 loop as loop-nest to dr_may_alias_p.
24618 2019-05-06 Richard Biener <rguenther@suse.de>
24620 * dwarf2out.c (mem_loc_descriptor): Initialize int_mode.
24622 2019-05-06 Richard Biener <rguenther@suse.de>
24624 PR tree-optimization/90316
24625 * tree-ssa-alias.c (maybe_skip_until): Pass in target BB,
24626 compute target on demand.
24627 (get_continuation_for_phi): Remove code walking stmts to
24628 get to a target virtual operand which could end up being
24631 2019-05-06 Martin Liska <mliska@suse.cz>
24634 * config/i386/i386-options.c (ix86_option_override_internal): Error only
24635 when -mabi is selected to a non-default version.
24637 2019-05-06 Hrishikesh Kulkarni <hrishikeshparag@gmail.com>
24638 Martin Liska <mliska@suse.cz>
24640 * Makefile.in: Add lto-dump.texi.
24641 * cgraph.h: Add new functions get_visibility_string and
24642 get_symtab_type_string.
24643 * doc/gcc.texi: Include lto-dump section.
24644 * doc/lto-dump.texi: New file.
24645 * dumpfile.c (dump_switch_p_1): Use parse_dump_option.
24646 (parse_dump_option): Factor out this function.
24647 * dumpfile.h (enum dump_flag): Add new value TDF_ERROR.
24648 (parse_dump_option): Export the function.
24649 * symtab.c (symtab_node::get_visibility_string): New function.
24650 (symtab_node::get_symtab_type_string): Likewise.
24652 2019-05-06 Martin Liska <mliska@suse.cz>
24654 * config/i386/i386-builtins.c: New file.
24655 * config/i386/i386-builtins.h: New file.
24656 * config/i386/i386-expand.c: New file.
24657 * config/i386/i386-expand.h: New file.
24658 * config/i386/i386-features.c: New file.
24659 * config/i386/i386-features.h: New file.
24660 * config/i386/i386-options.c: New file.
24661 * config/i386/i386-options.h: New file.
24662 * config.gcc: Add new files into extra_objs and
24664 * config/i386/i386.c: Split content of the file
24665 into newly introduced files.
24666 * config/i386/i386.h: Declare common variables
24668 * config/i386/t-i386: Define dependencies for new files.
24670 2019-05-03 Richard Earnshaw <rearnsha@arm.com>
24673 * config/arm/arm.md (unaligned_loadsi): Add variant for thumb1.
24674 Restrict 'all' variant to 32-bit configurations.
24675 (unaligned_loadhiu): Likewise.
24676 (unaligned_storehi): Likewise.
24677 (unaligned_storesi): Likewise.
24678 (unaligned_loadhis): Disable when compiling for thumb1.
24680 2019-05-03 Marc Glisse <marc.glisse@inria.fr>
24682 PR tree-optimization/90269
24683 * tree-loop-distribution.c (find_seed_stmts_for_distribution):
24686 2019-05-03 Martin Liska <mliska@suse.cz>
24688 * hash-map.h: Add is_empty function.
24689 * hash-set.h: Likewise.
24690 * hash-table.h: Likewise.
24691 * dwarf2out.c (dwarf2out_finish): Use is_empty instead of
24692 elements () == 0 (and similar usages).
24693 * gimple-ssa-store-merging.c (pass_store_merging::terminate_and_process_all_chains): Likewise.
24694 * gimplify.c (gimplify_bind_expr): Likewise.
24695 (gimplify_switch_expr): Likewise.
24696 * hash-map-tests.c (test_map_of_strings_to_int): Likewise.
24697 * ipa-icf.c (sem_item_optimizer::remove_symtab_node): Likewise.
24698 * postreload-gcse.c (dump_hash_table): Likewise.
24699 (gcse_after_reload_main): Likewise.
24700 * predict.c (combine_predictions_for_bb): Likewise.
24701 * tree-parloops.c (reduction_phi): Likewise.
24702 (separate_decls_in_region): Likewise.
24703 (transform_to_exit_first_loop): Likewise.
24704 (gen_parallel_loop): Likewise.
24705 (gather_scalar_reductions): Likewise.
24706 (try_create_reduction_list): Likewise.
24707 * var-tracking.c (dump_vars): Likewise.
24708 (emit_notes_for_changes): Likewise.
24709 (vt_emit_notes): Likewise.
24711 2019-05-03 Richard Biener <rguenther@suse.de>
24713 PR tree-optimization/90316
24714 * tree-ssa-pre.c (pass_pre::execute): Re-compute DOM fast queries
24717 2019-05-03 Richard Biener <rguenther@suse.de>
24719 * tree-vect-stmts.c (get_group_load_store_type): Avoid
24720 peeling for gaps by loading only lower halves of vectors
24722 (vectorizable_load): Likewise.
24724 2019-05-03 Richard Biener <rguenther@suse.de>
24726 PR middle-end/89518
24727 * match.pd: Add pattern to optimize (A / B) * B + (A % B) to A.
24729 2019-05-03 Richard Biener <rguenther@suse.de>
24731 PR middle-end/87314
24732 * match.pd (cmp (convert1?@2 addr@0) (convert2? addr@1)):
24733 Handle STRING_CST vs DECL or STRING_CST.
24735 2019-05-03 Richard Biener <rguenther@suse.de>
24737 PR tree-optimization/88963
24738 * tree-ssa-forwprop.c (pass_forwprop::execute): Rewrite
24739 vector loads feeding only BIT_FIELD_REFs to component
24740 loads. Rewrite stores fed by CONSTRUCTORs to component
24743 2019-05-03 Jakub Jelinek <jakub@redhat.com>
24745 * opts.h (finish_options): Remove lang_mask argument.
24746 (print_help, help_option_argument): Declare.
24747 * opts.c (print_help): Remove forward declaration, no longer static.
24748 (finish_options): Remove lang_mask argument, don't call print_help
24750 * opts-global.c (decode_options): Adjust finish_option caller, call
24753 PR tree-optimization/90303
24754 * ipa-devirt.c (obj_type_ref_class, get_odr_type): Don't use
24755 TYPE_CANONICAL for TYPE_STRUCTURAL_EQUALITY_P types in !in_lto_p mode.
24757 2019-05-03 Richard Biener <rguenther@suse.de>
24759 PR tree-optimization/89698
24760 * gimple-fold.c (canonicalize_constructor_val): Early out
24761 for constants, handle unfolded INTEGER_CSTs as they appear in
24762 C++ virtual table ctors.
24764 2019-05-03 Richard Biener <rguenther@suse.de>
24766 * passes.c (execute_function_todo): Remove dead code.
24768 2019-05-02 Segher Boessenkool <segher@kernel.crashing.org>
24770 * config/rs6000/rs6000.c (rs6000_dbx_register_number): Do not use
24771 the internal register number, for any "real" register.
24773 2019-05-02 Segher Boessenkool <segher@kernel.crashing.org>
24775 * config/rs6000/rs6000.c (rs6000_dbx_register_number): Return the
24776 correct numbers for TFHAR, TFIAR, TEXASR.
24778 2019-05-02 Richard Biener <rguenther@suse.de>
24780 PR tree-optimization/89653
24781 * tree-ssa-loop.c (pass_data_tree_loop_init): Execute
24782 update-address-taken before the pass.
24783 * passes.def (pass_tree_loop_init): Put comment before it.
24785 2019-05-02 Richard Biener <rguenther@suse.de>
24787 PR tree-optimization/89509
24788 * tree-ssa-structalias.c (compute_dependence_clique): Look
24789 at the first subvar when determining whether it is restrict.
24791 2019-05-02 Richard Biener <rguenther@suse.de>
24793 PR tree-optimization/90273
24794 * tree-ssa-dce.c (eliminate_unnecessary_stmts): Eliminate
24795 useless debug stmts.
24797 2019-05-02 Alejandro Martinez <alejandro.martinezvicente@arm.com>
24799 * config/aarch64/aarch64-sve.md (<sur>dot_prod<vsi2qi>): Taken from SVE
24801 * config/aarch64/iterators.md: Copied Vetype_fourth, VSI2QI and vsi2qi from
24803 * tree-vect-loop.c (use_mask_by_cond_expr_p): New function to check if a
24804 VEC_COND_EXPR be inserted to emulate a conditional internal function.
24805 (build_vect_cond_expr): Emit the VEC_COND_EXPR.
24806 (vectorizable_reduction): Use the functions above to vectorize in a
24807 fully masked loop codes that don't have a conditional internal
24810 2019-05-02 Martin Liska <mliska@suse.cz>
24812 * cgraphclones.c: Call valid_attribute_p with 1 for
24814 * config/i386/i386-c.c (ix86_pragma_target_parse): Use 0 as
24815 it's for target attribute.
24816 * config/i386/i386-protos.h (ix86_valid_target_attribute_tree):
24817 Add new boolean argument.
24818 * config/i386/i386.c (ix86_valid_target_attribute_inner_p):
24820 (ix86_valid_target_attribute_tree): Pass target_clone_attr
24821 to ix86_valid_target_attribute_inner_p.
24822 (ix86_valid_target_attribute_p): Pass flags argument to
24823 ix86_valid_target_attribute_inner_p.
24824 (get_builtin_code_for_version): Use 0 as it's target attribute.
24826 2019-05-02 Martin Liska <mliska@suse.cz>
24828 * gcc.c (process_command): Add dummy file only
24830 * opts-global.c (decode_options): Pass lang_mask.
24831 * opts.c (print_help): New function.
24832 (finish_options): Print --help if help_option_argument
24834 (common_handle_option): Factor out content of OPT__help_
24836 * opts.h (finish_options): Add new argument.
24838 2019-05-02 Martin Liska <mliska@suse.cz>
24841 * config/i386/i386.c (ix86_expand_strlen): Use strlen call.
24842 With -minline-all-stringops use inline expansion using 4B loop.
24843 * doc/invoke.texi: Document the change of
24844 -minline-all-stringops.
24846 2019-05-01 Jeff Law <law@redhat.com>
24848 PR tree-optimization/88797
24849 * gimple-ssa-split-paths (is_feasible_trace): Reject cases where the
24850 PHI feeds a conditional on the RHS of an assignment.
24852 2019-04-30 Andrew Waterman <andrew@sifive.com>
24853 Jim Wilson <jimw@sifive.com>
24855 * config/riscv/constraints.md (L): New.
24856 * config/riscv/predicates.md (lui_operand): New.
24857 (sfb_alu_operand): New.
24858 * config/riscv/riscv-protos.h (riscv_expand_conditional_move): Declare.
24859 * config/riscv/riscv.c (riscv_expand_conditional_move): New.
24860 * config/riscv/riscv.h (TARGET_SFB_ALU): New.
24861 * config/riscv/risc.md (type): Add sfb_alu.
24862 (branch<mode>): Renamed from branch_order<mode>. Change predicate for
24863 operand 3 to reg_or_0_operand. In output string, change %3 to %z3.
24864 (branch_zero<mode>): Delete.
24865 (mov<mode>cc): New.
24866 (mov<GPR:mode><X:mode>cc): Likewise.
24867 * config/riscv/sifive-7.md (sifive_7_sfb_alu): New. Use in bypasses.
24869 2019-04-30 Nathan Sidwell <nathan@acm.org>
24871 * tree.h (MARK_TS_EXP): New.
24873 2019-04-30 Martin Liska <mliska@suse.cz>
24875 * opts.c (enable_warning_as_error): Provide hints
24876 for unknown options.
24878 2019-04-30 Martin Liska <mliska@suse.cz>
24881 * doc/invoke.texi: Add missing dash for gas-locview-support
24882 and gno-as-locview-support.
24884 2019-04-30 Jakub Jelinek <jakub@redhat.com>
24887 * config/aarch64/aarch64.c (aarch64_process_one_target_attr): Don't skip
24888 whitespace at the start of target attribute string.
24890 2019-04-30 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
24893 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
24894 Define __ARM_FEATURE_ATOMICS.
24896 2019-04-30 Martin Liska <mliska@suse.cz>
24898 * gimple-fold.c (gimple_fold_builtin_memory_op): Change endp
24899 into built_in_function enum. Remove code for endp == 2 and
24900 use BUILT_IN_* constants.
24901 (gimple_fold_builtin): Call the function with fcode.
24903 2019-04-30 Martin Liska <mliska@suse.cz>
24905 * config/i386/i386.c (ix86_builtin_reciprocal): Cast
24906 DECL_FUNCTION_CODE into ix86_builtins enum before
24907 the switch statement.
24909 2019-04-30 Jakub Jelinek <jakub@redhat.com>
24911 PR tree-optimization/89475
24912 * tree-ssa-ccp.c (evaluate_stmt): Handle BUILT_IN_BSWAP{16,32,64}
24915 2019-04-30 Martin Liska <mliska@suse.cz>
24917 PR translation/90274
24918 * opts.c (print_filtered_help): Wrap string in _(...).
24920 2019-04-30 Bin Cheng <bin.cheng@linux.alibaba.com>
24922 PR tree-optimization/90240
24924 2019-04-23 Bin Cheng <bin.cheng@linux.alibaba.com>
24926 PR tree-optimization/90078
24927 * tree-ssa-loop-ivopts.c (comp_cost::operator +,-,+=,-+,/=,*=): Add
24928 checks for infinite_cost overflow.
24930 2019-04-29 Jeff Law <law@redhat.com>
24932 * passes.def: Move -Wrestrict pass after copy propagation.
24934 2019-04-29 Maya Rashish <coypu@sdf.org>
24936 * config.gcc (default_gnu_indirect_function): Default to yes
24937 for arm*-*-netbsd*, i[34567]86-*-netbsd*, powerpc*-*-netbsd*,
24938 sparc*-*-netbsd*, x86_64-*-netbsd*.
24940 2019-04-29 Vladislav Ivanishin <vlad@ispras.ru>
24942 * tree-ssa-uninit.c (is_pred_expr_subset_of): Correctly handle cases
24943 where cond2 is NE_EXPR.
24944 (is_value_included_in): Update comment.
24946 2019-04-29 Richard Biener <rguenther@suse.de>
24948 PR tree-optimization/90278
24949 * tree-ssa-forwprop.c (pass_forwprop::execute): Transfer/clean
24950 EH on comparison simplification.
24952 2019-04-29 Jason Merrill <jason@redhat.com>
24954 PR c++/82081 - tail call optimization breaks noexcept
24955 * tree-tailcall.c (find_tail_calls): Don't turn a call from a
24956 nothrow function to a might-throw function into a tail call.
24958 2019-04-29 Richard Sandiford <richard.sandiford@arm.com>
24960 * tree-data-ref.h (data_dependence_relation::inner_loop): Delete.
24961 (DDR_INNER_LOOP): Likewise.
24962 * tree-data-ref.c (dump_data_dependence_relation): Update accordingly.
24963 (initialize_data_dependence_relation): Likewise.
24964 (insert_innermost_unit_dist_vector): Use 0 instead of DDR_INNER_LOOP.
24966 2019-04-29 Jakub Jelinek <jakub@redhat.com>
24968 PR rtl-optimization/90257
24969 * cfgrtl.c (flow_active_insn_p): Return true for USE of a function
24973 2019-04-21 H.J. Lu <hongjiu.lu@intel.com>
24977 2018-11-21 Uros Bizjak <ubizjak@gmail.com>
24980 2013-10-26 Vladimir Makarov <vmakarov@redhat.com>
24983 2013-10-25 Vladimir Makarov <vmakarov@redhat.com>
24985 * lra-spills.c (lra_final_code_change): Remove useless move insns.
24987 2019-04-29 Richard Biener <rguenther@suse.de>
24989 * tree-ssa.c (insert_debug_temp_for_var_def): For {CLOBBER}
24992 2019-04-27 Iain Buclaw <ibuclaw@gdcproject.org>
24994 * config/netbsd-d.c: Include memmodel.h. Remove unused tree.h,
24995 varasm.h, and netbsd-protos.h.
24997 2019-04-27 Uroš Bizjak <ubizjak@gmail.com>
25000 * config/i386/i386-protos.h (ix86_data_alignment): Change
25001 the second argument type to unsigned int.
25002 * config/i386/i386.c (ix86_data_alignment): Change "align"
25003 argument type to unsigned int.
25005 2019-04-27 Martin Liska <mliska@suse.cz>
25007 PR middle-end/90258
25008 * opt-suggestions.c (option_proposer::build_option_suggestions):
25009 When get_valid_option_values returns empty values, add the
25010 misspelling candidate.
25012 2019-04-26 Jim Wilson <jimw@sifive.com>
25014 * config/riscv/riscv-protos.h (riscv_move_integer): Add machine_mode
25016 * config/riscv/riscv.c (riscv_move_integer): New parameter orig_mode.
25017 Pass orig_mode to riscv_build_integer.
25018 (riscv_split_integer): Pass mode to riscv_move_integer.
25019 (riscv_legitimize_const_move): Likewise.
25020 (riscv_legitimize_move): For MEM dest and CONST_INT src case, new local
25021 promoted_mode. Replace force_reg call with code to load constant into
25022 promoted reg and then subreg it for the store.
25023 * config/riscv/riscv.md (low<mode>+1): Pass <GPR:MODE>mode to
25024 riscv_move_integer.
25026 2018-04-26 Eugene Sharygin <eush@ispras.ru>
25028 * gdbhooks.py: Fix UnicodeDecodeErrors when printing trees with
25031 2019-04-26 Richard Sandiford <richard.sandiford@arm.com>
25033 * tree.h (TYPE_VECTOR_SUBPARTS, SET_TYPE_VECTOR_SUBPARTS): Add
25034 commentary about the encoding of precision.
25036 2019-04-25 Andreas Tobler <andreast@gcc.gnu.org>
25038 * config/i386/freebsd64.h: Add bits for 32-bit multilib support.
25039 * config/i386/t-freebsd64: New file.
25040 * config.gcc: Add the t-freebsd64 for multilib support.
25042 2019-04-25 Uroš Bizjak <ubizjak@gmail.com>
25044 * doc/extend.texi (vector_size): Add missing comma after @xref.
25046 2019-04-25 Jakub Jelinek <jakub@redhat.com>
25048 * BASE-VER: Set to 10.0.0.
25050 2019-04-25 Richard Biener <rguenther@suse.de>
25052 PR middle-end/89765
25053 * gimplify.c (gimplify_expr): Avoid turning a lvalue
25054 VIEW_CONVERT_EXPR into one operating on an rvalue.
25056 2019-04-25 H.J. Lu <hongjiu.lu@intel.com>
25059 * config/i386/i386.c (feature_priority): Moved to file scope.
25060 (processor_features): Likewise.
25061 (processor_model): Likewise.
25062 (_arch_names_table): Likewise.
25063 (arch_names_table): Likewise.
25064 (_feature_list): Removed.
25065 (feature_list): Likewise.
25066 (_isa_names_table): Moved to file scope. Add priority.
25067 (isa_names_table): Likewise.
25068 (get_builtin_code_for_version): Replace feature_list with
25069 isa_names_table. Update error message for P_ZERO priority.
25071 2019-04-25 Richard Biener <rguenther@suse.de>
25073 * tree-pass.h (make_pass_phi_only_cprop): Remove.
25074 * timevar.def (TV_TREE_PHI_CPROP): Likewise.
25076 2019-04-24 Jeff Law <law@redhat.com>
25078 PR tree-optimization/90037
25079 * Makefile.in (OBJS): Remove tree-ssa-phionlycprop.c
25080 * passes.def: Replace all instance of phi-only cprop with the
25081 lattice propagator. Move propagation pass from after erroneous
25082 path isolation to before erroneous path isolation.
25083 * tree-ssa-phionlycprop.c: Remove.
25085 2019-04-24 Richard Biener <rguenther@suse.de>
25087 PR middle-end/90213
25088 * gimple-fold.c (fold_const_aggregate_ref_1): Do multiplication
25089 by size and BITS_PER_UNIT on poly-wide-ints.
25091 2019-04-25 Richard Biener <rguenther@suse.de>
25093 PR middle-end/90194
25094 * match.pd: Add pattern to simplify view-conversion of an
25097 2019-04-24 Clement Chigot <clement.chigot@atos.net>
25099 * config/rs6000/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Disable
25100 OPTION_MASK_VSX and OPTION_MASK_ALTIVEC from rs6000_isa_flags
25101 for Go on 32 bit AIX.
25102 * config/rs6000/aix72.h: Likewise.
25104 2019-04-24 Jakub Jelinek <jakub@redhat.com>
25107 * rtl.c (classify_insn): Return JUMP_INSN for asm goto.
25108 * emit-rtl.c (try_split): Copy over REG_LABEL_TARGET.
25110 2019-04-24 Andreas Krebbel <krebbel@linux.ibm.com>
25113 * config/s390/s390.c (s390_restore_gprs_from_fprs): Restore GPRs
25114 from FPRs in reverse order. Generate REG_CFA_DEF_CFA note also
25115 for restored hard frame pointer.
25116 (s390_sched_dependencies_evaluation): Implement new target hook.
25117 (TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK): New macro definition.
25119 2019-04-24 Claudiu Zissulescu <claziss@sysnopsys.com>
25121 * config/arc/arc-options.def: Fix typos and spelling mistakes.
25122 * config/arc/arc.c (arc_init): Cleanup warning message.
25123 (arc_override_options): Likewise.
25125 2019-04-24 Jakub Jelinek <jakub@redhat.com>
25128 * config/i386/i386.c (ix86_expand_sse_fp_minmax): Force if_true into
25129 a register if both if_true and if_false are MEMs.
25131 PR tree-optimization/90208
25132 * tree-cfg.c (remove_bb): Move forced labels from removed bbs
25133 after labels of new_bb, not before them.
25135 PR tree-optimization/90211
25136 * tree-parloops.c (try_create_reduction_list): Ignore phi arguments
25137 which are not SSA_NAMEs.
25139 2018-04-23 Sudakshina Das <sudi.das@arm.com>
25141 * config/aarch64/aarch64-linux.h (TARGET_ASM_FILE_END): Define for
25143 (aarch64_file_end_indicate_exec_stack): Add gnu note section.
25145 2019-04-23 Roman Zhuykov <zhroma@ispras.ru>
25147 PR rtl-optimization/87979
25148 * modulo-sched.c (sms_schedule): Start ii value "mii" should
25151 2019-04-23 Roman Zhuykov <zhroma@ispras.ru>
25153 PR rtl-optimization/84032
25154 * modulo-sched.c (ps_insn_find_column): Change condition so that
25155 branch will always be the last insn in a row inside partial
25158 2019-04-23 Richard Biener <rguenther@suse.de>
25161 * tree-cfgcleanup.c (move_debug_stmts_from_forwarder): Add
25162 dest_single_pred_p argument.
25163 (remove_forwarder_block): Adjust.
25164 (remove_forwarder_block_with_phi): Likewise.
25166 2019-04-23 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
25167 Bernd Edlinger <bernd.edlinger@hotmail.de>
25168 Jakub Jelinek <jakub@redhat.com>
25171 * config/arm/arm.c (aapcs_vfp_is_call_or_return_candidate): Diagnose
25172 if used with general-regs-only.
25173 (arm_conditional_register_usage): Don't add non-general regs if
25175 (arm_valid_target_attribute_rec): Handle general-regs-only.
25176 * config/arm/arm.h (TARGET_HARD_FLOAT): Return false if
25178 (TARGET_HARD_FLOAT_SUB): Define.
25179 (TARGET_SOFT_FLOAT): Define as negation of TARGET_HARD_FLOAT_SUB.
25180 (TARGET_REALLY_IWMMXT): Add && !TARGET_GENERAL_REGS_ONLY.
25181 (TARGET_REALLY_IWMMXT2): Likewise.
25182 * config/arm/arm.opt: Add -mgeneral-regs-only.
25183 * doc/extend.texi: Document ARM general-regs-only target.
25184 * doc/invoke.texi: Document ARM -mgeneral-regs-only.
25186 2019-04-23 Bin Cheng <bin.cheng@linux.alibaba.com>
25188 PR tree-optimization/90078
25189 * tree-ssa-loop-ivopts.c (comp_cost::operator +,-,+=,-+,/=,*=): Add
25190 checks for infinite_cost overflow.
25192 2019-04-23 Bin Cheng <bin.cheng@linux.alibaba.com>
25194 PR tree-optimization/90021
25195 * tree-chrec.c (evolution_function_is_univariate_p): New parameter
25196 and check univariate against it.
25197 * tree-chrec.h (evolution_function_is_univariate_p): New parameter.
25198 * tree-data-ref.c (add_other_self_distances): Pass new argument.
25200 2019-04-21 H.J. Lu <hongjiu.lu@intel.com>
25204 2018-11-21 Uros Bizjak <ubizjak@gmail.com>
25207 2013-10-26 Vladimir Makarov <vmakarov@redhat.com>
25210 2013-10-25 Vladimir Makarov <vmakarov@redhat.com>
25212 * lra-spills.c (lra_final_code_change): Remove useless move insns.
25214 2019-04-21 Iain Sandoe <iain@sandoe.co.uk>
25216 * config/rs6000/rs6000.md (group_end_nop): Emit insn register
25217 names using operand format, rather than hard-wired.
25218 (speculation_barrier): Likewise.
25220 2019-04-19 Segher Boessenkool <segher@kernel.crashing.org>
25222 PR tree-optimization/88055
25223 * tree-call-cdce.c (comparison_code_if_no_nans): New function.
25224 (gen_one_condition): Use it if !HONOR_NANS.
25226 2019-04-19 Jakub Jelinek <jakub@redhat.com>
25228 PR middle-end/90139
25229 * tree-outof-ssa.c (get_temp_reg): If reg_mode is BLKmode, return
25230 assign_temp instead of gen_reg_rtx.
25232 2019-04-19 Christophe Lyon <christophe.lyon@linaro.org>
25234 PR translation/90118
25235 * config/aarch64/aarch64.c (aarch64_override_options_internal):
25236 Add missing space before %<.
25238 2019-04-18 Peter Bergner <bergner@linux.ibm.com>
25240 PR rtl-optimization/87871
25241 * ira-lives.c (make_object_dead): Don't add conflicts to
25242 TOTAL_CONFLICT_HARD_REGS for register ignore_reg_for_conflicts.
25244 2019-04-18 Martin Sebor <msebor@redhat.com>
25246 PR middle-end/89797
25247 * tree.h (TYPE_VECTOR_SUBPARTS): Use HOST_WIDE_INT_1U.
25248 * config/aarch64/aarch64.c (aarch64_simd_vector_alignment): Avoid
25249 assuming type size fits in SHWI.
25251 2019-04-18 Jan Hubicka <hubicka@ucw.cz>
25254 * ipa-inline.c (flatten_function): New parameter UPDATE.
25255 (ipa_inline, early_inliner): Use it.
25257 2019-04-18 Richard Sandiford <richard.sandiford@arm.com>
25259 * fold-const.c (int_const_binop): Return early on failure.
25261 2019-04-18 Richard Sandiford <richard.sandiford@arm.com>
25263 PR middle-end/85164
25264 * combine.c (force_int_to_mode): Cast the argument rather than
25265 the result of known_alignment.
25266 * rtlanal.c (rtx_addr_can_trap_p_1): Use known_subrange_p.
25268 2019-04-18 Richard Biener <rguenther@suse.de>
25271 * tree-cfgcleanup.c (move_debug_stmts_from_forwarder): Split
25273 (remove_forwarder_block): ... here.
25274 (remove_forwarder_block_with_phi): Also move debug stmts here.
25276 2019-04-18 Jakub Jelinek <jakub@redhat.com>
25278 PR translation/79183
25279 * gimple-ssa-sprintf.c (format_directive): Use inform_n instead of
25280 inform where appropriate.
25282 2019-04-18 Richard Biener <rguenther@suse.de>
25284 * tree.c (get_qualified_type): Put found type variants at the
25285 head of the variant list.
25287 2018-04-17 Segher Boessenkool <segher@kernel.crashing.org>
25289 * config/rs6000/rs6000.c (rs6000_register_move_cost): Fix typo.
25291 2019-04-17 Hongtao Liu <hongtao.liu@intel.com>
25294 * config/i386/avx512fintrin.h (_mm_maskz_fmadd_round_sd,
25295 _mm_maskz_fmadd_round_ss, _mm_maskz_fmsub_round_sd,
25296 _mm_maskz_fmsub_round_ss, _mm_maskz_fnmadd_round_sd,
25297 _mm_maskz_fnmadd_round_ss, _mm_maskz_fnmsub_round_sd,
25298 _mm_maskz_fnmsub_round_ss): Use _maskz builtin instead of _mask3.
25300 2019-04-17 Peter Bergner <bergner@linux.ibm.com>
25302 * ira-conflicts.c (print_allocno_conflicts): Always print something,
25303 even for allocno's with no conflicts.
25304 (print_conflicts): Print an extra newline.
25306 2019-04-17 Segher Boessenkool <segher@kernel.crashing.org>
25308 * auto-inc-dec.c (attempt_change): Set the alignment of the
25309 temporary memory to that of the original.
25311 2019-04-17 Joao Moreira <jmoreira@suse.de>
25313 * targhooks.c (default_print_patchable_function_entry): Emit
25314 __patchable_function_entries section with writable flags to allow
25315 relocation resolution.
25317 2019-04-17 Jonny Grant <jg@jguk.org>
25319 * collect2.c (main): Change gcc.gnu.org URL to HTTPS.
25321 2019-04-17 Jakub Jelinek <jakub@redhat.com>
25323 PR middle-end/90095
25324 * internal-fn.c (expand_mul_overflow): Don't set SUBREG_PROMOTED_VAR_P
25325 on lowpart SUBREGs.
25327 2019-04-17 Claudiu Zissulescu <claziss@synopsys.com>
25329 * config/arc/arc.c (arc_init): Format diagnostic string.
25330 (arc_override_options): Likewise.
25331 (check_if_valid_regno_const): Likewise.
25332 (arc_reorg): Likewise.
25334 2019-04-17 Segher Boessenkool <segher@kernel.crashing.org>
25337 * config/rs6000/rs6000.c (rs6000_split_multireg_move): Adjust pattern
25339 (rs6000_emit_allocate_stack_1): Simplify condition. Adjust pattern
25341 * config/rs6000/rs6000.md (bits): Add entries for SF and DF.
25342 (*movdi_update1): Use Pmode.
25343 (movdi_<mode>_update): Fix argument to avoiding_indexed_address_p.
25344 (movdi_<mode>_update_stack): Rename to ...
25345 (movdi_update_stack): ... this. Fix comment. Change condition. Don't
25347 (*movsi_update1): Use Pmode.
25348 (*movsi_update2): Use Pmode.
25349 (movsi_update): Rename to ...
25350 (movsi_<mode>_update): ... this. Use Pmode.
25351 (movsi_update_stack): Fix condition.
25352 (*movhi_update1): Use Pmode. Fix argument to
25353 avoiding_indexed_address_p.
25354 (*movhi_update2): Ditto.
25355 (*movhi_update3): Ditto.
25356 (*movhi_update4): Ditto.
25357 (*movqi_update1): Ditto.
25358 (*movqi_update2): Ditto.
25359 (*movqi_update3): Ditto.
25360 (*movsf_update1, *movdf_update1): Merge, rename to...
25361 (*mov<mode>_update1): This. Use Pmode. Fix argument to
25362 avoiding_indexed_address_p. Add "size" attribute.
25363 (*movsf_update2, *movdf_update2): Merge, rename to...
25364 (*mov<mode>_update2): This. Ditto.
25365 (*movsf_update3): Use Pmode. Fix argument to
25366 avoiding_indexed_address_p.
25367 (*movsf_update4): Ditto.
25368 (allocate_stack): Simplify condition. Adjust pattern names.
25370 2019-04-17 Jakub Jelinek <jakub@redhat.com>
25373 * config/arm/arm.c (arm_valid_target_attribute_rec): Don't skip
25374 whitespace at the start of target attribute string.
25376 2019-04-16 Pat Haugen <pthaugen@us.ibm.com>
25379 * config/rs6000/power9.md: Add store forwarding bypass.
25381 2019-04-16 Alexandre Oliva <aoliva@redhat.com>
25384 * valtrack.c (dead_debug_insert_temp): Reset debug references
25385 to the return value of a call being removed.
25387 2019-04-16 Claudiu Zissulescu <claziss@synopsys.com>
25389 * config/arc/arc-protos.h (arc_register_move_cost): Remove.
25390 * config/arc/arc.c (arc_register_move_cost): Re-purpose it to
25391 implement target hook.
25392 (arc_memory_move_cost): New function.
25393 (TARGET_REGISTER_MOVE_COST): Define.
25394 (TARGET_MEMORY_MOVE_COST): Likewise.
25395 * config/arc/arc.h (REGISTER_MOVE_COST): Remove.
25396 (MEMORY_MOVE_COST): Likewise.
25398 2019-04-16 Claudiu Zissulescu <claziss@synopsys.com>
25400 * config/arc/arc.md (sibcall_insn): Use Rcd constraint.
25401 (sibcall_value_insn): Likewise.
25402 * config/arc/constraints.md (Rs5): Remove.
25404 2019-04-16 Claudiu Zissulescu <claziss@synopsys.com>
25406 * config/arc/arc.c (arc_hard_regno_modes): Add two missing modes
25407 for last two fake registers.
25408 (arc_conditional_register_usage): Make sure fake frame and arg
25409 pointer regs are in general regs class.
25410 (FRAME_POINTER_MASK): Remove.
25411 (RETURN_ADDR_MASK): Remove.
25412 (arc_must_save_register): Use hard frame regnum.
25413 (frame_restore_reg): Use hard_frame_pointer_rtx.
25414 (arc_save_callee_saves): Likewise.
25415 (arc_restore_callee_saves): Likewise.
25416 (arc_save_callee_enter): Likewise.
25417 (arc_restore_callee_leave): Likewise.
25418 (arc_save_callee_milli): Likewise.
25419 (arc_eh_return_address_location): Likewise.
25420 (arc_check_multi): Use hard frame regnum.
25421 (arc_can_eliminate): Likewise.
25422 * config/arc/arc.h (FIXED_REGISTERS): Make FP register available
25423 for register allocator.
25424 (REG_CLASS_CONTENTS): Update GENERAL_REGS.
25425 (REGNO_OK_FOR_BASE_P): Consider FRAME_POINTER_REGNUM.
25426 (FRAME_POINTER_REGNUM): Change it to a fake register.
25427 (HARD_FRAME_POINTER_REGNUM): Defined.
25428 (ARG_POINTER_REGNUM): Change it to a new fake register.
25429 (ELIMINABLE_REGS): Update.
25430 (REGISTER_NAMES): Update names.
25431 * config/arc/arc.md (LP_START): Remove.
25432 (LP_END): Likewise.
25433 (shift_si3_loop): Update pattern.
25435 2019-04-16 Claudiu Zissulescu <claziss@synopsys.com>
25437 * config/arc/arc.c (arc_expand_prologue): Emit blockage regardless
25438 to avoid delay slot scheduling.
25439 (arc_must_save_register): Don't save SP.
25440 * config/arc/arc.md (stack_tie): Remove.
25441 (UNSPEC_ARC_STKTIE): Likewise.
25443 2019-04-16 Kito Cheng <kito.cheng@gmail.com>
25444 Shiva Chen <shiva0217@gmail.com>
25446 * config/nds32/nds32-md-auxiliary.c (nds32_split_ashiftdi3): Fix wrong
25447 code gen with large shift amount.
25449 2019-04-16 Chung-Ju Wu <jasonwucj@gmail.com>
25451 * config/nds32/nds32-pipelines-auxiliary.c (wext_odd_dep_p): Handle
25454 2019-04-16 Jakub Jelinek <jakub@redhat.com>
25457 * config/i386/i386.c (ix86_target_string): Add ADD_ABI_P argument, only
25458 print -m64/-mx32/-m32 if it is true.
25459 (ix86_debug_options, ix86_function_specific_print): Pass true as
25460 ADD_ABI_P to ix86_target_string.
25461 (ix86_expand_builtin): Adjust ix86_target_string caller, pass true as
25462 ADD_ABI_P only if OPTION_MASK_ISA_64BIT is set in bisa and in that case
25463 or into it OPTION_MASK_ISA_ABI_64 or OPTION_MASK_ISA_ABI_X32.
25465 PR rtl-optimization/90082
25466 * dce.c (can_delete_call): New function.
25467 (deletable_insn_p, mark_insn): Use it.
25469 PR tree-optimization/90090
25470 * tree-ssa-math-opts.c (is_division_by): Ignore divisions that can
25472 (is_division_by_square): Likewise. Formatting fix.
25474 2019-04-16 Richard Biener <rguenther@suse.de>
25476 PR tree-optimization/56049
25477 * tree-ssa-loop-im.c (mem_ref_hasher::equal): Elide alias-set
25478 equality check if alias-set zero will prevail.
25480 2019-04-15 Jeff Law <law@redhat.com>
25482 * config/microblaze/microblaze.c (microblaze_expand_block_move): Treat
25483 size and alignment as unsigned.
25485 2019-04-15 Richard Biener <rguenther@suse.de>
25488 * tree-loop-distribution.c (destroy_loop): Preserve correct
25491 2019-04-15 Richard Biener <rguenther@suse.de>
25493 PR tree-optimization/90071
25494 * tree-ssa-reassoc.c (init_range_entry): Do not pick up
25495 abnormal operands from def stmts.
25497 2019-04-15 Segher Boessenkool <segher@kernel.crashing.org>
25499 PR rtl-optimization/89794
25500 * combine.c (count_auto_inc): New function.
25501 (try_combine): Count how many auto_inc expressions there were in the
25502 original instructions. Ensure we have the same number in the new
25503 instructions. Remove the code that tried to ensure auto_inc side
25504 effects on i1 and i0 are not lost.
25506 2019-04-15 Richard Biener <rguenther@suse.de>
25509 * tree.h (auto_var_p): Declare.
25510 * tree.c (auto_var_p): New function, split out from ...
25511 (auto_var_in_fn_p): ... here.
25512 * tree-ssa-structalias.c (struct variable_info): Add shadow_var_uid
25514 (new_var_info): Initialize it.
25515 (set_uids_in_ptset): Also set the shadow variable uid if required.
25516 (ipa_pta_execute): Postprocess points-to solutions assigning
25517 shadow variable uids for locals that may reach their containing
25518 function recursively.
25519 * tree-ssa-ccp.c (fold_builtin_alloca_with_align): Do not
25520 assert but instead check whether the points-to solution is
25523 2019-04-15 Martin Jambor <mjambor@suse.cz>
25526 * cgraph.c (clone_of_p): Loop over clone chain for each step in
25529 2019-04-15 Monk Chiang <sh.chiang04@gmail.com>
25531 * config.gcc (nds32*-*-linux*): Set gcc_cv_initfini_array to yes.
25533 2019-04-15 Monk Chiang <sh.chiang04@gmail.com>
25534 Kito Cheng <kito.cheng@gmail.com>
25535 Shiva Chen <shiva0217@gmail.com>
25537 * config/nds32/nds32-md-auxiliary.c
25538 (nds32_legitimize_pic_address): Use new PIC pattern.
25539 (nds32_legitimize_tls_address): Use new TLS pattern.
25540 (nds32_output_symrel): New.
25541 * config/nds32/nds32-protos.h (nds32_output_symrel): Declare.
25542 (nds32_alloc_relax_group_id): Ditto.
25543 * config/nds32/nds32-relax-opt.c (nds32_alloc_relax_group_id): New.
25544 (nds32_group_insns): Use nds32_alloc_relax_group_id instead of use
25546 (nds32_group_tls_insn): Ditto.
25547 (nds32_group_float_insns): Ditto.
25548 * config/nds32/nds32.md (tls_le): New.
25551 2019-04-15 Chung-Ju Wu <jasonwucj@gmail.com>
25553 * configure: Add nds32 target for dwarf2 debug_line checking.
25554 * configure.ac: Regenerated.
25556 2019-04-14 Jan Hubicka <hubicka@ucw.cz>
25559 * ipa-devirt.c (skip_in_fields_list_p): New.
25560 (odr_types_equivalent_p): Use it.
25562 2019-04-13 Jakub Jelinek <jakub@redhat.com>
25565 * config/arm/arm.c (arm_valid_target_attribute_rec): Use strcmp
25566 instead of strncmp when checking for thumb and arm. Formatting fixes.
25568 2019-04-12 Iain Buclaw <ibuclaw@gdcproject.org>
25570 * doc/install.texi: Document --with-target-system-zlib.
25572 2019-04-12 Martin Sebor <msebor@redhat.com>
25578 * targhooks.c (default_vector_alignment): Avoid assuming
25579 argument fits in SHWI.
25580 * tree.h (TYPE_VECTOR_SUBPARTS): Avoid sign overflow in
25581 a shift expression.
25582 * doc/extend.texi (__builtin_has_attribute): Add a clarifying note.
25584 2019-04-12 Jakub Jelinek <jakub@redhat.com>
25586 PR rtl-optimization/89965
25587 * dce.c: Include rtl-iter.h.
25588 (struct check_argument_load_data): New type.
25589 (check_argument_load): New function.
25590 (find_call_stack_args): Check for loads from stack slots still tracked
25591 in sp_bytes and punt if any is found.
25593 * config/mips/loongson-mmiintrin.h: Fix up #error message.
25595 2019-04-12 Jan Hubicka <hubicka@ucw.cz>
25597 * params.def (PARAM_MAX_LTO_STREAMING_PARALLELISM): New parameter.
25598 * doc/invoke.texi (max-lto-streaming-paralellism): New --param.
25600 2019-04-12 Martin Liska <mliska@suse.cz>
25602 PR middle-end/89970
25603 * multiple_target.c (create_dispatcher_calls): Wrap ifunc
25605 (separate_attrs): Handle multiple 'default's.
25606 (expand_target_clones): Rework error handling code.
25608 2019-04-12 Kelvin Nilsen <kelvin@gcc.gnu.org>
25611 * config/rs6000/rs6000.c (rs6000_split_vec_extract_var): Use inner
25612 mode of vector rather than mode of destination for move instruction.
25613 * config/rs6000/vsx.md (*vsx_extract_<mode>_<VS_scalar>mode_var):
25614 Use QI inner mode with V16QI vector mode.
25616 2019-04-12 Jakub Jelinek <jakub@redhat.com>
25619 * config/tilepro/tilepro.c (tilepro_print_operand): Use just
25620 "invalid %%t operand" in output_operand_lossage message.
25622 2019-04-12 Andreas Krebbel <krebbel@linux.ibm.com>
25624 * config/s390/predicates.md (permute_pattern_operand): New
25626 * config/s390/vector.md ("*vec_splats_bswap_vec<mode>"): Add USE
25627 operand for the permute pattern.
25628 ("*vec_perm<mode>"): New insn definition.
25629 ("bswap<mode>"): Generate the permute pattern operand in the
25630 expander and perform the operand reloads for pre arch13 level
25632 ("*bswap<mode>_emu"): Rename to ...
25633 ("*bswap<mode>"): ... this. And make the splitter vxe2 only.
25634 * config/s390/vx-builtins.md ("*vec_insert_and_zero_bswap<mode>"):
25635 Add the USE operand for the permute pattern.
25636 ("*vec_set_bswap_vec<mode>"): Likewise.
25638 2019-04-12 Jakub Jelinek <jakub@redhat.com>
25641 * varasm.c (assemble_start_function): Don't use tree_fits_uhwi_p
25642 and gcc_unreachable if it fails, just call tree_to_uhwi which
25643 verifies that too. Test TREE_CHAIN instead of list_length > 1.
25644 Start warning message with a lower-case letter. Formatting fixes.
25646 PR rtl-optimization/90026
25647 * cfgcleanup.c (try_optimize_cfg): When removing empty bb with no
25648 successors, look for BARRIERs inside of the whole BB_FOOTER chain
25649 rather than just at the start of it. If e->src BB_FOOTER is not NULL
25650 in cfglayout mode, use emit_barrier_after_bb.
25652 2018-04-11 Steve Ellcey <sellcey@marvell.com>
25654 PR rtl-optimization/87763
25655 * config/aarch64/aarch64.md (*aarch64_bfi<GPI:mode>4_noshift_alt):
25658 2019-04-11 Tom de Vries <tdevries@suse.de>
25660 * doc/extend.texi (@node Statement Exprs): Note variable shadowing at
25661 max macro using statement expression.
25663 2019-04-11 David Edelsohn <dje.gcc@gmail.com>
25665 * xcoffout.h (xcoff_private_rodata_section_name): Declare.
25666 * xcoffout.c (xcoff_private_rodata_section_name): Define.
25667 * config/rs6000/rs6000.c (rs6000_xcoff_asm_init_sections): Create
25668 read_only_private_data_section using xcoff_private_rodata_section_name.
25669 (rs6000_xcoff_file_start): Generate xcoff_private_rodata_section_name.
25671 2019-04-11 Christophe Lyon <christophe.lyon@linaro.org>
25674 * config/aarch64/aarch64.opt (msve-vector-bits): Add missing final '.'.
25676 2019-04-11 Jakub Jelinek <jakub@redhat.com>
25678 PR rtl-optimization/89965
25679 * dce.c (sp_based_mem_offset): New function.
25680 (find_call_stack_args): Use sp_based_mem_offset.
25682 2019-04-11 Jonathan Wakely <jwakely@redhat.com>
25684 * doc/invoke.texi (Optimize Options): Clarify -flive-patching docs.
25686 2019-04-11 Richard Biener <rguenther@suse.de>
25688 PR tree-optimization/90020
25689 * tree-ssa-sccvn.c (vn_reference_may_trap): New function.
25690 * tree-ssa-sccvn.h (vn_reference_may_trap): Declare.
25691 * tree-ssa-pre.c (compute_avail): Use it to not put
25692 possibly trapping references after a call that might not
25693 return into EXP_GEN.
25694 * gcse.c (compute_hash_table_work): Do not elide
25695 marking a block containing a call if the call might not
25698 2019-04-11 Richard Biener <rguenther@suse.de>
25700 PR tree-optimization/90018
25701 * tree-vect-data-refs.c (vect_preserves_scalar_order_p):
25702 Test both SLP and interleaving variants.
25704 2019-04-11 Robin Dapp <rdapp@linux.ibm.com>
25706 * config/s390/8561.md: New file.
25707 * config/s390/driver-native.c (s390_host_detect_local_cpu):
25708 Add arch13 cpu model.
25709 * config/s390/s390-opts.h (enum processor_type): Likewise.
25710 * config/s390/s390.c (s390_get_sched_attrmask): Add arch13.
25711 (s390_get_unit_mask): Likewise.
25712 (s390_is_fpd): Likewise.
25713 (s390_is_fxd): Likewise.
25714 * config/s390/s390.h (s390_tune_attr): Likewise.
25715 * config/s390/s390.md: Include arch13 pipeline description.
25716 * config/s390/s390.opt: Add arch13.
25718 2018-04-10 Steve Ellcey <sellcey@marvell.com>
25720 PR rtl-optimization/87763
25721 * config/aarch64/aarch64-protos.h (aarch64_masks_and_shift_for_bfi_p):
25723 * config/aarch64/aarch64.c (aarch64_masks_and_shift_for_bfi_p):
25725 * config/aarch64/aarch64.md (*aarch64_bfi<GPI:mode>5_shift):
25727 (*aarch64_bfi<GPI:mode>5_shift_alt): Ditto.
25728 (*aarch64_bfi<GPI:mode>4_noand): Ditto.
25729 (*aarch64_bfi<GPI:mode>4_noand_alt): Ditto.
25730 (*aarch64_bfi<GPI:mode>4_noshift): Ditto.
25732 2019-04-10 Jonathan Wakely <jwakely@redhat.com>
25734 * doc/invoke.texi (Optimize Options): Change "Nevertheless" to
25735 "Although" in -fipa-icf documentation.
25737 * doc/invoke.texi (Debugging Options): Explicitly state the semantics
25738 of using multiple -g options.
25740 2019-04-10 Martin Liska <mliska@suse.cz>
25742 PR gcov-profile/89959
25743 * doc/gcov.texi: Make documentation of -x option
25746 2019-04-10 Richard Biener <rguenther@suse.de>
25748 * tree-vectorizer.h (_stmt_vec_info): Remove same_dr_stmt
25750 (DR_GROUP_SAME_DR_STMT): Remove.
25751 * tree-vect-stmts.c (vectorizable_load): Remove unreachable code.
25752 * tree-vect-data-refs.c (vect_analyze_group_access_1): Likewise,
25753 replace with assert.
25754 (vect_analyze_data_ref_accesses): Fix INTEGER_CST comparison.
25755 (vect_record_grouped_load_vectors): Remove unreachable code.
25757 2019-04-10 Richard Earnshaw <rearnsha@arm.com>
25760 * config/aarch64/aarch64.opt (msve-vector-bits): Remove redundant and
25761 obsolete reference to N.
25763 2019-04-10 Jakub Jelinek <jakub@redhat.com>
25765 PR middle-end/90025
25766 * expr.c (store_expr): Set properly size on the MEM passed to
25770 * gimple-ssa-sprintf.c (target_to_host): Fix handling of targstr
25771 with strlen in between hostsz-3 and hostsz-1 inclusive when no
25772 translation is needed, and when translation is needed, only append
25773 ... if the string length is hostsz or more bytes long. Avoid using
25776 2019-04-09 Matthew Malcomson <matthew.malcomson@arm.com>
25779 * config/arm/arm.c (neon_valid_immediate): Disallow VOIDmode parameter.
25780 * config/arm/constraints.md (Dm, DN, Dn): Split previous Dn constraint
25782 * config/arm/neon.md (*neon_mov<mode>): Account for TImode and DImode
25783 differences directly.
25784 (*smax<mode>3_neon, vashl<mode>3, vashr<mode>3_imm): Use Dm constraint.
25786 2019-04-09 Jakub Jelinek <jakub@redhat.com>
25788 PR translation/90011
25789 * ipa-devirt.c (compare_virtual_tables): Remove two trailing spaces
25791 * config/arm/freebsd.h (LINK_SPEC): Remove trailing space from -p
25793 * config/riscv/freebsd.h (LINK_SPEC): Likewise.
25794 * config/aarch64/aarch64-freebsd.h (FBSD_TARGET_LINK_SPEC): Likewise.
25795 * config/darwin.h (DRIVER_SELF_SPECS, ASM_FINAL_SPEC): Remove
25796 trailing space from -gsplit-dwarf diagnostics.
25798 PR tree-optimization/89998
25799 * gimple-ssa-sprintf.c (try_substitute_return_value): Use lhs type
25800 instead of integer_type_node if possible, don't add ranges if return
25801 type is not compatible with int.
25802 * gimple-fold.c (gimple_fold_builtin_sprintf,
25803 gimple_fold_builtin_snprintf): Use lhs type instead of hardcoded
25806 2019-04-09 Martin Liska <mliska@suse.cz>
25808 * Makefile.in: Use GENERATOR_CFLAGS for all generators.
25809 * doc/install.texi: Document the new config.
25811 2019-04-09 Richard Sandiford <richard.sandiford@arm.com>
25813 * tree-vect-data-refs.c (vect_get_smallest_scalar_type): Always
25814 use gimple_expr_type for load and store calls. Skip over the
25815 condition argument in a conditional internal function.
25816 Protect use of TREE_INT_CST_LOW.
25818 2019-04-09 Jakub Jelinek <jakub@redhat.com>
25821 * config/riscv/riscv.c (riscv_get_interrupt_type): Fix comment typo.
25822 (riscv_merge_decl_attributes): Fix typo in diagnostics. Remove
25823 trailing period from it too.
25825 2019-04-08 wu yuan <wuyuan5@huawei.com>
25827 * config/aarch64/aarch64-cores.def (tsv1100): Change scheduling model.
25828 * config/aarch64/aarch64.md: Add "tsv110.md".
25829 * config/aarch64/tsv110.md: New file.
25831 2019-04-08 Richard Biener <rguenther@suse.de>
25833 PR tree-optimization/90006
25834 * tree-vect-data-refs.c (vect_get_smallest_scalar_type): Handle
25837 2019-04-08 Andrea Corallo <andrea.corallo@arm.com>
25840 * config/aarch64/cortex-a57-fma-steering.c (fma_forest): Prohibit copy
25842 (fma_root_node): Likewise.
25843 (func_fma_steering): Likewise.
25845 2019-04-08 Jakub Jelinek <jakub@redhat.com>
25847 PR rtl-optimization/89865
25848 * config/i386/i386.md: Add peepholes for z = x; x ^= y; x != z.
25850 PR rtl-optimization/89865
25851 * config/i386/i386.md
25852 (SWI12 peephole for mem {+,-,&,|,^}= x; mem != 0): Fix up operand
25853 numbers not to clash with the additional operands[4].
25854 (peepholes for mem {+,-,&,|,^}= x; mem != 0): New peephole2s
25855 with extra register copy in the middle.
25857 2019-04-08 Martin Liska <mliska@suse.cz>
25859 PR gcov-profile/89961
25860 * doc/gcov.texi: Document data_file.
25861 * gcov.c (generate_results): Add data_info into JSON output.
25863 2019-04-01 Bin Cheng <bin.cheng@linux.alibaba.com>
25865 PR tree-optimization/89725
25866 * tree-chrec.c (chrec_contains_symbols): New parameter. Handle outer
25867 loop's chrec as invariant symbol.
25868 * tree-chrec.h (chrec_contains_symbols): New parameter.
25869 * tree-data-ref.c (analyze_miv_subscript): Pass new argument.
25870 (build_classic_dist_vector_1, add_other_self_distances): Bypass access
25871 function of loops not in DDR's loop_nest.
25872 * tree-data-ref.h (index_in_loop_nest): Add unreachable check.
25874 2019-04-08 Chenghua Xu <paul.hua.gm@gmail.com>
25877 * config/mips/mips.opt (LOONGSON_EXT2): Use Var instead of
25880 2019-04-07 Uroš Bizjak <ubizjak@gmail.com>
25883 * config/i386/i386.md (anddi_1 to andsi_1_zext splitter):
25884 Avoid calling gen_lowpart with SYMBOL_REF and LABEL_REF operand.
25886 2019-04-05 Joern Rennecke <joern.rennecke@embecosm.com>
25888 * sched-deps.c (sched_macro_fuse_insns): Check return value of
25889 targetm.fixed_condition_code_regs.
25891 2019-04-05 Richard Biener <rguenther@suse.de>
25895 * tree-cfgcleanup.c (remove_forwarder_block): Always move
25896 debug bind stmts but reset them if they are not valid at the
25899 2019-04-05 Martin Liska <mliska@suse.cz>
25901 PR translation/89936
25902 * collect-utils.c (collect_execute): Use %< and %>, or %qs in
25903 order to wrap keywords or arguments.
25904 * collect2.c (main): Likewise.
25905 (scan_prog_file): Likewise.
25906 (scan_libraries): Likewise.
25907 * common/config/riscv/riscv-common.c
25908 (riscv_subset_list::parsing_subset_version): Likewise.
25909 (riscv_subset_list::parse_std_ext): Likewise.
25910 * config/aarch64/aarch64.c (aarch64_override_options_internal):
25912 * config/arm/arm.c (arm_option_override): Likewise.
25913 * config/cris/cris.c (cris_print_operand): Likewise.
25914 * config/darwin-c.c (darwin_pragma_options): Likewise.
25915 (darwin_pragma_unused): Likewise.
25916 (darwin_pragma_ms_struct): Likewise.
25917 * config/ft32/ft32.c (ft32_print_operand): Likewise.
25918 * config/i386/i386.c (print_reg): Likewise.
25919 (ix86_print_operand): Likewise.
25920 * config/i386/xm-djgpp.h: Likewise.
25921 * config/iq2000/iq2000.c (iq2000_print_operand): Likewise.
25922 * config/m32c/m32c.c (m32c_option_override): Likewise.
25923 * config/msp430/msp430.c (msp430_option_override): Likewise.
25924 * config/nds32/nds32.c (nds32_option_override): Likewise.
25925 * config/nvptx/mkoffload.c (main): Likewise.
25926 * config/rx/rx.c (rx_print_operand): Likewise.
25927 (valid_psw_flag): Likewise.
25928 * config/vms/vms-c.c (vms_pragma_member_alignment): Likewise.
25929 (vms_pragma_nomember_alignment): Likewise.
25930 (vms_pragma_extern_model): Likewise.
25931 * lto-wrapper.c (compile_offload_image): Likewise.
25932 * omp-offload.c (oacc_parse_default_dims): Likewise.
25933 * symtab.c (symtab_node::verify_base): Likewise.
25934 * tlink.c (recompile_files): Likewise.
25935 (start_tweaking): Likewise.
25936 * tree-profile.c (parse_profile_filter): Likewise.
25938 2019-04-05 Richard Sandiford <richard.sandiford@arm.com>
25940 PR tree-optimization/89956
25941 * tree-ssa-math-opts.c (convert_mult_to_fma): Protect against
25942 multiple negates of the same value.
25944 2019-04-04 Martin Sebor <msebor@redhat.com>
25946 PR middle-end/89957
25947 PR middle-end/89911
25948 * builtins.c (expand_builtin_strnlen): Make sure wi::ltu_p operands
25949 have the same precision since the function crashes otherwise.
25950 * calls.c (maybe_warn_nonstring_arg): Avoid assuming strnlen() call
25951 has non-zero arguments.
25953 2019-04-04 Martin Sebor <msebor@redhat.com>
25955 PR middle-end/89934
25956 * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Bail
25957 out if the number of arguments is less than expected.
25959 2019-04-04 Jeff Law <law@redhat.com>
25961 PR rtl-optimization/89399
25962 * ree.c (combine_set_extension): Use single_set rather than
25963 digging into PATTERN for items on the candidate list.
25964 (combine_reaching_defs): Likewise.
25966 2019-04-04 Richard Sandiford <richard.sandiford@arm.com>
25968 PR rtl-optimization/46590
25969 * loop-invariant.c (find_defs): Move df_remove_problem and
25970 df_process_deferred_rescans to move_invariants.
25971 Move df_live_add_problem and df_live_set_all_dirty calls
25972 to move_invariants.
25973 (move_invariants): Likewise.
25974 (move_loop_invariants): Likewise, making the df_live calls
25975 conditional on -O. Remove the problem again if we added it
25978 2019-04-03 qing zhao <qing.zhao@oracle.com>
25980 PR tree-optimization/89730
25981 * ipa-inline.c (can_inline_edge_p): Delete the checking for
25982 -flive-patching=inline-only-static.
25983 (can_inline_edge_by_limits_p): Add the checking for
25984 -flive-patching=inline-only-static and grant always_inline
25985 even when -flive-patching=inline-only-static is specified.
25987 2019-04-03 Jeff Law <law@redhat.com>
25989 PR rtl-optimization/81025
25990 * reorg.c (skip_consecutive_labels): Do not skip past a BARRIER.
25992 2019-04-03 Richard Biener <rguenther@suse.de>
25994 PR tree-optimization/84101
25995 * tree-vect-stmts.c: Include explow.h for hard_function_value,
25996 regs.h for hard_regno_nregs.
25997 (cfun_returns): New helper.
25998 (vect_model_store_cost): When vectorizing a store to a decl
25999 we return and the function ABI returns in a multi-reg location
26000 account for the possible spilling that will happen.
26002 2019-04-03 Andreas Krebbel <krebbel@linux.ibm.com>
26004 * config/s390/s390.c (s390_legitimate_address_p): Reject long
26005 displacement addresses for vector mode operands.
26007 2019-04-03 Claudiu Zissulescu <claziss@synopsys.com>
26009 * config/arc/arc.c (GMASK_LEN): Define.
26010 (arc_restore_callee_saves): Restore first blink when
26013 2019-04-03 Sudakshina Das <sudi.das@arm.com>
26015 * doc/extend.texi: Add deprecated comment on sign-return-address
26016 function attribute and add mbranch-protection.
26017 * doc/invoke.texi: Add bti to the options for mbranch-protection.
26019 2019-04-03 Richard Biener <rguenther@suse.de>
26022 * lto-wrapper.c (run_gcc): Avoid implicit rules making
26023 the all target phony.
26025 2019-04-02 Uroš Bizjak <ubizjak@gmail.com>
26029 * config/i386/i386.c (dimode_scalar_to_vector_candidate_p):
26030 Return false for variable DImode shifts.
26031 (dimode_scalar_chain::compute_convert_gain): Do not handle
26032 register count operand in variable DImode shifts.
26033 (dimode_scalar_chain::make_vector_copies): Remove support to copy
26034 count argument of a variable shift instruction to a vector register.
26035 (dimode_scalar_chain::convert_reg): Remove support to convert
26036 count argument of a variable shift instruction.
26038 2019-04-02 Andrey Belevantsev <abel@ispras.ru>
26040 PR rtl-optimization/84206
26041 * sel-sched-ir.h (get_all_loop_exits): Avoid the outer loop when
26042 iterating over loop headers.
26044 2019-04-02 Andrey Belevantsev <abel@ispras.ru>
26046 PR rtl-optimization/85876
26047 * sel-sched.c (code_motion_path_driver): Avoid unwinding first_insn
26048 beyond the original fence.
26050 2019-04-02 Ulrich Weigand <uweigand@de.ibm.com>
26052 * config.gcc: Mark spu* targets as deprecated/obsolete.
26054 2019-04-02 Andreas Krebbel <krebbel@linux.ibm.com>
26056 * config/s390/s390-builtin-types.def: New builtin function type
26057 definitions. Remove unused types.
26058 * config/s390/s390-builtins.def (s390_vcdgb, s390_vcdlgb)
26059 (s390_vcgdb, s390_vclgdb): Remove low-level builtin definitions.
26060 (s390_vec_float, s390_vec_signed, s390_vec_unsigned): New
26061 overloaded builtins.
26062 (s390_vcefb, s390_vcdgb, s390_vcelfb, s390_vcdlgb, s390_vcfeb)
26063 (s390_vcgdb, s390_vclfeb, s390_vclgdb): New low-level builtins.
26064 * config/s390/vecintrin.h (vec_float): New builtin macro definition.
26065 (vec_double, vec_signed, vec_unsigned): Define to use the new
26066 overloaded builtins.
26067 * config/s390/vx-builtins.md ("vec_double_s64", "vec_double_u64"):
26070 2019-04-02 Andreas Krebbel <krebbel@linux.ibm.com>
26072 * config/s390/s390-builtin-types.def: New builtin function type
26074 * config/s390/s390-builtins.def (s390_vec_search_string_cc)
26075 (s390_vec_search_string_until_zero_cc): New overloaded builtins.
26076 (s390_vstrsb, s390_vstrsh, s390_vstrsf, s390_vstrszb)
26077 (s390_vstrszh, s390_vstrszf): New low-level builtins.
26078 * config/s390/s390.md (UNSPEC_VEC_VSTRS, UNSPEC_VEC_VSTRSCC): New
26079 constant definitions.
26080 * config/s390/vecintrin.h (vec_search_string_cc)
26081 (vec_search_string_until_zero_cc): New builtin name definitions.
26082 * config/s390/vx-builtins.md ("vstrs<mode>", "vstrsz<mode>"): New
26084 ("vec_vstrs<mode>"): New insn definition.
26086 2019-04-02 Andreas Krebbel <krebbel@linux.ibm.com>
26088 * config/s390/s390-builtin-types.def: Add new builtin function
26090 * config/s390/s390-builtins.def (s390_vec_sldb, s390_vec_srdb):
26091 New overloaded builtins.
26092 (s390_vec_sldb, s390_vec_srdb): New low-level builtins. and
26094 * config/s390/s390.md (UNSPEC_VEC_SLDB): Rename to ...
26095 (UNSPEC_VEC_SLDBYTE): ... this.
26096 (UNSPEC_VEC_SLDBIT, UNSPEC_VEC_SRDBIT): New constant definitions.
26097 * config/s390/vecintrin.h (vec_sldb, vec_srdb): New builtin name
26099 * config/s390/vx-builtins.md ("vec_sld<mode>", "vec_sldw<mode>"):
26100 Rename UNSPEC_VEC_SLDB to UNSPEC_VEC_SLDBYTE.
26101 ("vec_sldb<mode>", "vec_srdb<mode>"): New insn definitions.
26103 2019-04-02 Andreas Krebbel <krebbel@linux.ibm.com>
26105 ("*vec_splats_bswap_vec<mode>", "*vec_splats_bswap_elem<mode>"):
26106 New insn definition.
26107 * config/s390/vx-builtins.md (V_HW_HSD): Move to ...
26108 * config/s390/vector.md (V_HW_HSD): ... here.
26110 2019-04-02 Andreas Krebbel <krebbel@linux.ibm.com>
26112 * config/s390/vecintrin.h: Map vec_vster low-level builtins to vec_vler.
26113 * config/s390/vx-builtins.md ("*vec_insert_and_zero_bswap<mode>")
26114 ("*vec_set_bswap_elem<mode>", "*vec_set_bswap_vec<mode>")
26115 ("*vec_extract_bswap_vec<mode>", "*vec_extract_bswap_elem<mode>"):
26116 New insn definitions.
26118 2019-04-02 Andreas Krebbel <krebbel@linux.ibm.com>
26120 * config/s390/s390-builtin-types.def: Add new builtin function type.
26121 * config/s390/s390-builtins.def: Add overloaded builtin
26122 s390_vec_reve and low-level builtins for s390_vler and s390_vster.
26123 * config/s390/s390.md (UNSPEC_VEC_ELTSWAP): New constant definition.
26124 * config/s390/vecintrin.h (vec_reve): New builtin name definition.
26125 * config/s390/vx-builtins.md (V_HW_HSD): New mode iterator.
26126 ("eltswap<mode>"): New expander.
26127 ("*eltswapv16qi", "*eltswap<mode>", "*eltswap<mode>_emu"): New
26130 2019-04-02 Andreas Krebbel <krebbel@linux.ibm.com>
26132 * config/s390/s390-builtin-types.def: Add new builtin function types.
26133 * config/s390/s390-builtins.def: Add overloaded builtin
26134 s390_vec_revb. Add low-level builtins for vlbr and vstbr
26136 * config/s390/vecintrin.h (vec_revb): New builtin name definition.
26137 * config/s390/vector.md (VT_HW_HSDT): New mode iterator.
26138 ("bswap<mode>"): New expander.
26139 ("*bswap<mode>", "*bswap<mode>_emu"): New insn definitions.
26141 2019-04-02 Andreas Krebbel <krebbel@linux.ibm.com>
26143 * config/s390/s390-builtins.def (B_VXE2): New builtin flag definition.
26144 * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Increment
26145 vector builtin version number in __VEC__.
26147 2019-04-02 Andreas Krebbel <krebbel@linux.ibm.com>
26149 * config/s390/s390.md (VX_CONV_BFP, VX_CONV_INT): New mode
26151 (SFSI): New mode attribute.
26152 ("*fixuns_truncdfdi2_vx", "*fix_truncdfdi2_bfp_z13")
26153 ("*floatunsdidf2_z13", ): Add support for 32 bit conversions and
26155 ("*fixuns_trunc<VX_CONV_BFP:mode><VX_CONV_INT:mode>2_z13")
26156 ("*fix_trunc<VX_CONV_BFP:mode><VX_CONV_INT:mode>2_bfp_z13")
26157 ("*floatuns<VX_CONV_INT:mode><VX_CONV_BFP:mode>2_z13"): ... these.
26158 ("floatsi<mode>2"): Add wcefb instruction.
26160 2019-04-02 Andreas Krebbel <krebbel@linux.ibm.com>
26162 * config/s390/s390.md ("xde"): Extend mode attribute to vector types.
26163 * config/s390/vector.md (VX_VEC_CONV_BFP, VX_VEC_CONV_INT): New
26165 ("floatv2div2df2", "floatunsv2div2df2", "fix_truncv2dfv2di2")
26166 ("fixuns_truncv2dfv2di2"): Enhance with mode iterator to also
26167 support 32 bit fp-int conversions. Rename to ...
26168 ("float<VX_VEC_CONV_INT:mode><VX_VEC_CONV_BFP:mode>2")
26169 ("floatuns<VX_VEC_CONV_INT:mode><VX_VEC_CONV_BFP:mode>2")
26170 ("fix_trunc<VX_VEC_CONV_BFP:mode><VX_VEC_CONV_INT:mode>2")
26171 ("fixuns_trunc<VX_VEC_CONV_BFP:mode><VX_VEC_CONV_INT:mode>2"):
26174 2019-04-02 Andreas Krebbel <krebbel@linux.ibm.com>
26176 * config/s390/s390.c (s390_rtx_costs): Do not add extra costs for
26177 if-then-else constructs if we can use the select instruction.
26178 * config/s390/s390.md ("*mov<mode>cc"): Add the new instructions.
26180 2019-04-02 Andreas Krebbel <krebbel@linux.ibm.com>
26182 * config/s390/s390.md ("*popcountdi_arch13_cc")
26183 ("*popcountdi_arch13_cconly", "*popcountdi_arch13"): New insn
26185 ("*popcount<mode>", "popcountdi2", "popcountsi2", "popcounthi2"):
26186 Append _z196 to make it ...
26187 ("*popcount<mode>_z196", "popcountdi2_z196", "popcountsi2_z196")
26188 ("popcounthi2_z196"): ... this.
26189 ("popcountdi2_z196"): Remove TARGET_64BIT from the insn condition.
26190 ("popcountdi2", "popcountsi2", "popcounthi2"): New expanders.
26192 2019-04-02 Andreas Krebbel <krebbel@linux.ibm.com>
26194 * config/s390/s390.c (s390_canonicalize_comparison): Convert
26195 certain compares for arch13 in order to make use of the condition
26196 code result produced by the new instructions.
26197 (s390_rtx_costs): Adjust the costs for nnrk, nngrk, nork, nogrk,
26198 nxrk, and nxgrk instruction patterns.
26199 * config/s390/s390.md (ANDOR, bitops_name, inv_bitops_name)
26200 (inv_no): Add new code iterator together with some attributes.
26201 ("*andc_split_<mode>"): Disable splitter for arch13.
26202 ("*<ANDOR:bitops_name>c<GPR:mode>_cc")
26203 ("*<ANDOR:bitops_name>c<GPR:mode>_cconly")
26204 ("*<ANDOR:bitops_name>c<GPR:mode>")
26205 ("*n<ANDOR:inv_bitops_name><GPR:mode>_cc")
26206 ("*n<ANDOR:inv_bitops_name><mode>_cconly")
26207 ("*n<ANDOR:inv_bitops_name><mode>", "*nxor<GPR:mode>_cc")
26208 ("*nxor<mode>_cconly", "*nxor<mode>"): New insn definitions.
26210 2019-04-02 Andreas Krebbel <krebbel@linux.ibm.com>
26212 * common/config/s390/s390-common.c (processor_flags_table): New
26214 * config.gcc: Support arch13 with the --with-arch= configure flag.
26215 * config/s390/driver-native.c (s390_host_detect_local_cpu):
26216 * config/s390/s390-opts.h (enum processor_type): Add PROCESSOR_ARCH13.
26217 * config/s390/s390.c (s390_get_sched_attrmask)
26218 (s390_get_unit_mask): Add PROCESSOR_ARCH13.
26219 * config/s390/s390.h (enum processor_flags): Add PF_VXE2 and PF_ARCH13.
26220 * config/s390/s390.md (TARGET_CPU_ARCH13, TARGET_CPU_ARCH13_P)
26221 (TARGET_CPU_VXE2, TARGET_CPU_VXE2_P, TARGET_ARCH13)
26222 (TARGET_ARCH13_P, TARGET_VXE2, TARGET_VXE2_P): New macro
26224 * config/s390/s390.opt: Support arch13 as processor type in
26225 command line options.
26227 2019-04-02 Martin Liska <mliska@suse.cz>
26229 PR translation/89912
26230 * params.def (PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP):
26231 Fix param description of graphite-max-arrays-per-scop.
26233 2019-04-02 Eric Botcazou <ebotcazou@adacore.com>
26235 * config/sparc/linux64.h (ASAN_REJECT_SPEC): New macro.
26236 (ASAN_CC1_SPEC): Use it in 64-bit mode.
26237 * config/sparc/sol2.h (ASAN_REJECT_SPEC): Remove superfluous colon.
26239 2019-04-01 Andrey Belevantsev <abel@ispras.ru>
26241 PR rtl-optimization/85412
26242 * sel-sched.c (sel_sched_region): Assign reset_sched_cycles_p before
26243 sel_sched_region_1, not after.
26245 2019-04-01 Andrey Belevantsev <abel@ispras.ru>
26247 PR rtl-optimization/86928
26248 * sel-sched-ir.c (sel_redirect_edge_and_branch_force): Invoke
26249 compute_live if necessary.
26250 (sel_redirect_edge_and_branch): Likewise.
26252 2019-04-01 Vladimir Makarov <vmakarov@redhat.com>
26254 PR rtl-optimization/89865
26255 * ira-costs.c (process_bb_node_for_hard_reg_moves): Skip hard
26256 register if it is a part of small class.
26258 2019-04-01 Andrey Belevantsev <abel@ispras.ru>
26260 PR rtl-optimization/87273
26261 * sel-sched-ir.c (merge_fences): Remove assert.
26263 2019-04-01 Richard Biener <rguenther@suse.de>
26265 PR tree-optimization/46590
26266 * domwalk.h (dom_walker::dom_walker): Consolidate constructors.
26267 (dom_walker::m_reachability): Add in place of...
26268 (dom_walker::m_skip_unreachable_blocks): ...this.
26269 * domwalk.c (dom_walker::dom_walker): Consoliate constructors.
26270 Move complex initialization ...
26271 (dom_walker::walk): Here. Especially compute m_bb_to_rpo
26272 lazily and initialize edge flags on each invocation.
26273 (dom_walker::bb_reachable): Use m_reachability.
26275 2019-04-01 Martin Liska <mliska@suse.cz>
26278 * opt-suggestions.c (option_proposer::build_option_suggestions):
26279 Add variant without any argument in order to provide better
26282 2019-04-01 Richard Biener <rguenther@suse.de>
26285 * gimple.c: Include langhooks.h.
26286 (gimple_get_alias_set): Treat enumeral types as the underlying
26289 2019-03-29 Kugan Vivekanandarajah <kuganv@linaro.org>
26290 Eric Botcazou <ebotcazou@adacore.com>
26292 PR rtl-optimization/89862
26293 * rtl.h (word_register_operation_p): Exclude CONST_INT from operations
26294 that operates on the full registers for WORD_REGISTER_OPERATIONS
26297 2019-03-29 Jim Wilson <jimw@sifive.com>
26299 * common/config/riscv/riscv-common.c (riscv_parse_arch_string):
26300 Clear MASK_RVC and then set if C subset supported.
26302 2019-03-29 Jakub Jelinek <jakub@redhat.com>
26305 * gimplify.c (gimplify_compound_literal_expr): Don't optimize a
26306 non-addressable complit into its initializer if it is volatile.
26308 2019-03-29 Roman Zhuykov <zhroma@ispras.ru>
26310 * opts-common.c (integral_argument): Set errno properly in one case.
26312 2019-03-29 Martin Liska <mliska@suse.cz>
26314 * doc/invoke.texi: Remove -Wchkp from documentation.
26316 2019-03-29 Martin Liska <mliska@suse.cz>
26318 * dbgcnt.c (print_limit_reach): New function.
26321 2019-03-29 Martin Liska <mliska@suse.cz>
26323 * dbgcnt.c (dbg_cnt_process_single_pair): Fix GNU coding style.
26324 (dbg_cnt_process_opt): Parse first tokens aas
26325 dbg_cnt_process_single_pair is also using strtok.
26327 2019-03-29 Jakub Jelinek <jakub@redhat.com>
26329 PR rtl-optimization/87485
26330 * function.c (expand_function_end): Move stack_protect_epilogue
26331 before loading of return value into hard register(s).
26333 2019-03-28 Jakub Jelinek <jakub@redhat.com>
26335 PR middle-end/89621
26336 * tree-inline.h (struct copy_body_data): Add
26337 dont_remap_vla_if_no_change flag.
26338 * tree-inline.c (remap_type_3, remap_type_2): New functions.
26339 (remap_type): Don't remap vla types if id->dont_remap_vla_if_no_change
26340 and remap_type_2 returns false.
26341 * omp-low.c (new_omp_context): Set ctx->cb.dont_remap_vla_if_no_change.
26342 Move ctx->cb.adjust_array_error_bounds setting to the outermost ctx
26343 only from where it is copied to nested contexts.
26345 2019-03-28 Uroš Bizjak <ubizjak@gmail.com>
26348 * config/i386/i386.md (RMW operation with LEA peephole):
26349 Use LEAMODE mode attribute instead of SWI mode iterator for
26352 2019-03-28 Uroš Bizjak <ubizjak@gmail.com>
26355 * config/i386/i386.c (dimode_scalar_chain::make_vector_copies):
26356 Also process XEXP (src, 0) of a shift insn.
26358 2019-03-28 David Malcolm <dmalcolm@redhat.com>
26360 PR middle-end/89725
26361 * optinfo-emit-json.cc (optrecord_json_writer::optinfo_to_json):
26362 Use DECL_ASSEMBLER_NAME rather than get_fnname_from_decl.
26364 2019-03-28 Jakub Jelinek <jakub@redhat.com>
26366 * regcprop.c (copyprop_hardreg_forward_1): Remove redundant INSN_P
26368 (cprop_hardreg_bb, cprop_hardreg_debug): New functions.
26369 (pass_cprop_hardreg::execute): Use those. Don't repeat bb processing
26370 immediately after first one with df_analyze in between, but rather
26371 process all bbs, queueing ones that need second pass in a worklist,
26372 df_analyze, process queued debug insn changes and if second pass is
26373 needed, process bbs from worklist, df_analyze, process queued debug
26376 * rtl.h (NONDEBUG_INSN_P): Define as NONJUMP_INSN_P or JUMP_P
26377 or CALL_P instead of INSN_P && !DEBUG_INSN_P.
26378 (INSN_P): Define using NONDEBUG_INSN_P or DEBUG_INSN_P.
26380 2019-03-28 Jonathan Wakely <jwakely@redhat.com>
26383 * gengtype.h (create_nested_ptr_option): Fix parameter names to match
26386 2019-03-27 Mateusz B <mateuszb@poczta.onet.pl>
26389 * config/i386/i386.c (ix86_function_value_1): Call the newly added
26390 function for 32-bit MS_ABI.
26391 (function_value_ms_32): New function.
26393 2019-03-27 Andrew Stubbs <ams@codesourcery.com>
26395 * config/gcn/gcn.md (CC_SAVE_REG): New constant.
26396 (movdi): Call gen_movdi_symbol_save_scc.
26397 (gen_movdi_symbol_save_scc): New insn and split.
26399 2019-03-27 Peter Bergner <bergner@linux.ibm.com>
26401 PR rtl-optimization/89313
26402 * function.c (matching_constraint_num): New static function.
26403 (match_asm_constraints_1): Use it. Fixup white space and comment.
26404 Don't replace inputs with non-matching constraints which conflict
26405 with early clobber outputs.
26407 2019-03-27 Jeff Law <law@redhat.com>
26409 PR rtl-optimization/87761
26410 PR rtl-optimization/89826
26411 * regcprop.c (copyprop_hardreg_forward_1): Move may_trap_p test
26413 (pass_cprop_hardreg::execute): Call df_analyze after adding the
26414 note problem to get REG_DEAD/REG_UNUSED notes updated.
26416 2019-03-27 Richard Biener <rguenther@suse.de>
26418 PR tree-optimization/89463
26419 * tree-ssa-dce.c (remove_dead_stmt): Take output vector to
26420 queue edges to remove.
26421 (eliminate_unnecessary_stmts): Remove dead PHIs alongside
26422 dead stmts. Delay edge removal until PHIs are removed to
26423 make debug-stmt creation not confused by seemingly degenerate
26426 2019-03-27 Alan Modra <amodra@gmail.com>
26428 * config/rs6000/rs6000.h: Rename NON_SPECIAL_REGS to GEN_OR_FLOAT_REGS
26430 * config/rs6000/darwin.h: Likewise.
26431 * config/rs6000/rs6000.c: Likewise.
26433 2019-03-27 Alan Modra <amodra@gmail.com>
26435 * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Always
26436 assign rs6000_hard_regno_mode_ok_p[m][r]. Formatting.
26438 2019-03-26 Andrew Waterman <andrew@sifive.com>
26439 Jim Wilson <jimw@sifive.com>
26441 * config/riscv/generic.md (generic_alu, generic_load, generic_store)
26442 (generic_xfer, generic_branch, generic_imul, generic_idivsi)
26443 (generic_idivdi, generic_fmul_single, generic_fmul_double)
26444 (generic_fdiv, generic_fsqrt): Add check for generic tune.
26445 (generic_alu): Add auipc to type list.
26446 * config/riscv/riscv-opts.h (enum riscv_microarchitecture_type): New.
26447 (riscv_microarchitecture): Declare.
26448 * config/riscv/riscv-protos.h (riscv_store_data_bypass_p): Declare.
26449 * config/riscv/riscv.c (struct riscv_cpu_info): Add microarchitecture
26451 (riscv_microarchitecture): New.
26452 (sifive_7_tune_info): New.
26453 (riscv_cpu_info_table): Add microarchitecture value for rocket and
26454 size. Add sifive-3-series, sifive-5-series, and sifive-7-series
26456 (riscv_store_data_bypass_p): New.
26457 (riscv_option_override): Set riscv_microarchitecture from
26458 cpu->microarchitecture.
26459 * config/riscv/riscv.md: Include sifive-7.md.
26462 (auipc<mode>): Change type to auipc.
26463 (restore_stack_nonlocal): New.
26464 * config/riscv/sifive-7.md: New.
26465 * doc/invoke.texi (RISC-V Options): Update mtune docs.
26467 2019-03-26 Uroš Bizjak <ubizjak@gmail.com>
26470 * config/i386/i386.c (dimode_scalar_chain::convert_reg):
26471 Also process XEXP (src, 0) of a shift insn.
26473 2019-03-26 Richard Biener <rguenther@suse.de>
26475 * tree-inline.c (remap_gimple_stmt): Cache gimple_block.
26476 (copy_debug_stmt): Likewise.
26477 (expand_call_inline): Likewise.
26478 (copy_bb): Avoid redundant lookup & set of gimple_block.
26479 * gimple-low.c (lower_gimple_return): Likewise.
26480 (lower_builtin_setjmp): Likewise.
26482 2019-03-26 Jakub Jelinek <jakub@redhat.com>
26484 * hash-table.h (hash_table::m_gather_mem_stats): If GATHER_STATISTICS
26485 is constant 0, turn into static const data member initialized to false.
26486 (hash_table::hash_table): Only initialize m_gather_mem_stats #if
26487 GATHER_STATISTICS. Add ATTRIBUTE_UNUSED to gather_mem_stats param.
26489 2019-03-26 Jason Merrill <jason@redhat.com>
26490 Jakub Jelinek <jakub@redhat.com>
26492 * mem-stats.h (mem_alloc_description::unregister_descriptor): New
26494 (mem_alloc_description::release_object_overhead): Fix comment typos.
26495 * hash-table.h (hash_table::~hash_table): Call
26496 release_instance_overhead only if m_entries is non-NULL, otherwise
26497 call unregister_descriptor.
26499 2019-03-26 Bin Cheng <bin.cheng@linux.alibaba.com>
26501 PR tree-optimization/81740
26502 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence):
26503 In case of outer loop vectorization, check for backward dependence
26504 at the inner loop if outer loop dependence is reversed.
26506 2019-03-26 Alan Modra <amodra@gmail.com>
26508 * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Correct
26509 rs6000_vector_mem init. Correct wI and wJ comment.
26511 2019-03-25 Alexander Monakov <amonakov@ispras.ru>
26513 PR rtl-optimization/88347
26514 PR rtl-optimization/88423
26515 * sched-deps.c (sched_analyze_insn): Take into account that for
26516 tablejumps the barrier appears after a label and a jump_table_data.
26518 2019-03-25 Martin Sebor <msebor@redhat.com>
26521 * c-common.c (check_user_alignment): Rename local. Correct maximum
26522 alignment in diagnostic. Avoid assuming argument fits in SHWI,
26523 convert it to UHWI when it fits.
26525 2019-03-25 Johan Karlsson <johan.karlsson@enea.com>
26528 * dwarf2out.c (premark_used_variables): New function.
26529 (prune_unused_types_walk): Do not mark not premarked external
26531 (prune_unused_types): Call premark_used_variables.
26533 2019-03-25 Vladimir Makarov <vmakarov@redhat.com>
26535 PR rtl-optimization/89676
26536 * lra-constraints.c (curr_insn_transform): Do match reload for
26537 early clobbers when the match was successful only for different
26540 2019-03-25 Martin Sebor <msebor@redhat.com>
26542 * doc/extend.texi (Common Type Attributes): Document vector_size.
26543 (Common Variable Attributes): Mention size constraint. Correct
26545 (Vector Extensions): Use @dfn when defining bas type. Clarify
26546 base type and size constraints.
26548 2019-03-25 Richard Biener <rguenther@suse.de>
26550 PR tree-optimization/89789
26551 * tree-ssa-sccvn.c (set_ssa_val_to): Do not allow lattice
26552 changes from non-undefined back to undefined.
26554 2019-03-25 Thomas Otto <thomas.otto@pdv-fs.de>
26556 * dwarf2out.c (comp_dir_string): cached_wd could be set to both a
26557 heap string and a gc string, but since this variable is unknown to
26558 ggc the gc string might get reused and corrupted. Fixed by always
26559 using a heap string.
26561 2019-03-25 Richard Biener <rguenther@suse.de>
26563 PR tree-optimization/89779
26564 * tree-ssa-loop-ivopts.c (remove_unused_ivs): Return
26565 to remove IV defs, delay actual removal.
26566 (tree_ssa_iv_optimize_loop): Likewise. Avoid SCEV reset.
26567 (tree_ssa_iv_optimize): Remove eliminated IV defs at the
26568 very end, properly also reset loop control IV information.
26570 2019-03-25 Richard Biener <rguenther@suse.de>
26572 PR tree-optimization/89802
26573 * tree-ssa-math-opts.c (convert_mult_to_fma_1): Properly
26574 move EH data to folded stmt.
26576 2019-03-25 Andreas Krebbel <krebbel@linux.ibm.com>
26578 * config/s390/s390-builtin-types.def: Remove few unused types and
26579 fix sort order for others.
26581 2019-03-25 Andreas Krebbel <krebbel@linux.ibm.com>
26583 * config/s390/s390-c.c (s390_fn_types_compatible): Print the
26584 expected and found types with -mdebug during builtin matching.
26586 2019-03-25 Richard Biener <rguenther@suse.de>
26588 PR middle-end/89790
26589 * fold-const.c (operand_equal_p): Revert last change with
26592 2019-03-24 Segher Boessenkool <segher@kernel.crashing.org>
26594 * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add REG_EQUAL
26595 notes for the result of the __tls_get_addr calls.
26596 * config/rs6000/rs6000.md (unspec UNSPEC_TLS_GET_ADDR): New.
26598 2019-03-24 Jeff Law <law@redhat.com>
26600 * config/bfin/bfin.md (movpdi): Fix length for alternative 1.
26602 PR rtl-optimization/87761
26603 * regcprop.c (copyprop_hardreg_forward_1): Check may_trap_p on SET,
26604 not INSN. Also check RTX_FRAME_RELATED_P. Queue insns for DF rescan
26606 (pass_cprop_hardreg::execute): Add df note problem and defer insn
26607 rescans. Reprocess blocks as needed, calling df_analyze before
26608 reprocessing. Always call df_analyze before fixing up debug bind
26611 2019-03-23 Segher Boessenkool <segher@kernel.crashing.org>
26613 * config/rs6000/xmmintrin.h (_mm_movemask_pi8): Implement for 32-bit
26616 2019-03-22 Andrew Pinski <apinski@marvell.com>
26618 * config/aarch64/aarch64.md (zero_extendsidi2_aarch64): Fix type
26619 attrribute for uxtw.
26621 2019-03-26 Jeff Law <law@redhat.com>
26623 PR rtl-optimization/87761
26624 * config/mips/mips-protos.h (mips_split_move): Add new argument.
26625 (mips_emit_move_or_split): Pass NULL for INSN into mips_split_move.
26626 (mips_split_move): Accept new INSN argument. Try to forward SRC
26627 into the next instruction.
26628 (mips_split_move_insn): Pass INSN through to mips_split_move.
26630 2019-03-22 Vladimir Makarov <vmakarov@redhat.com>
26632 PR rtl-optimization/89676
26633 * lra-constraints.c (curr_insn_transform): Do match reload for
26634 early clobbers even if the match was successful.
26636 2019-03-22 Jakub Jelinek <jakub@redhat.com>
26639 * doc/invoke.texi (-fconstexpr-ops-limit=): Document.
26641 2019-03-22 Bill Schmidt <wschmidt@linux.ibm.com>
26643 * config/rs6000/mmintrin.h (_mm_sub_pi32): Fix typo.
26645 2019-03-22 Jakub Jelinek <jakub@redhat.com>
26647 * config/i386/sse.md (<avx512>_fmadd_<mode>_mask3<round_name>,
26648 <avx512>_fmsub_<mode>_mask3<round_name>,
26649 <avx512>_fnmadd_<mode>_mask3<round_name>,
26650 <avx512>_fnmsub_<mode>_mask3<round_name>,
26651 avx512f_vmfmadd_<mode>_mask3<round_name>,
26652 avx512f_vmfmsub_<mode>_mask3<round_name>,
26653 *avx512f_vmfnmadd_<mode>_mask3<round_name>): Use <round_nimm_predicate>
26654 instead of register_operand and %v instead of v for match_operand 1.
26655 (avx512f_vmfnmsub_<mode>_mask3<round_name>): Rename to ...
26656 (*avx512f_vmfnmsub_<mode>_mask3<round_name>): ... this. Use
26657 <round_nimm_predicate> instead of register_operand and %v instead of v
26658 for match_operand 1.
26660 * config/i386/sse.md (<avx512>_fmadd_<mode>_mask<round_name>,
26661 <avx512>_fmadd_<mode>_mask3<round_name>,
26662 <avx512>_fmsub_<mode>_mask<round_name>,
26663 <avx512>_fmsub_<mode>_mask3<round_name>,
26664 <avx512>_fnmadd_<mode>_mask<round_name>,
26665 <avx512>_fnmadd_<mode>_mask3<round_name>,
26666 <avx512>_fnmsub_<mode>_mask<round_name>,
26667 <avx512>_fnmsub_<mode>_mask3<round_name>,
26668 <avx512>_fmaddsub_<mode>_mask<round_name>,
26669 <avx512>_fmaddsub_<mode>_mask3<round_name>,
26670 <avx512>_fmsubadd_<mode>_mask<round_name>,
26671 <avx512>_fmsubadd_<mode>_mask3<round_name>): Use
26672 <round_nimm_predicate> instead of nonimmediate_operand.
26673 (fmai_vmfmadd_<mode><round_name>, fmai_vmfmsub_<mode><round_name>,
26674 fmai_vmfnmadd_<mode><round_name>, fmai_vmfnmsub_<mode><round_name>):
26675 Use register_operand instead of <round_nimm_predicate> for the
26676 operand that needs to match output.
26677 (*fmai_fmadd_<mode>, *fmai_fmsub_<mode>,
26678 *fmai_fnmadd_<mode><round_name>, *fmai_fnmsub_<mode><round_name>):
26679 Likewise. Formatting fixes.
26682 * config/i386/i386.c (enum ix86_builtins): Remove
26683 IX86_BUILTIN_VFMSUBSD3_MASK3 and IX86_BUILTIN_VFMSUBSS3_MASK3.
26684 * config/i386/i386-builtin.def (__builtin_ia32_vfmaddsd3_mask,
26685 __builtin_ia32_vfmaddsd3_mask3, __builtin_ia32_vfmaddsd3_maskz,
26686 __builtin_ia32_vfmsubsd3_mask3, __builtin_ia32_vfmaddss3_mask,
26687 __builtin_ia32_vfmaddss3_mask3, __builtin_ia32_vfmaddss3_maskz,
26688 __builtin_ia32_vfmsubss3_mask3): New builtins.
26689 * config/i386/sse.md (avx512f_vmfmadd_<mode>_mask<round_name>,
26690 avx512f_vmfmadd_<mode>_mask3<round_name>,
26691 avx512f_vmfmadd_<mode>_maskz_1<round_name>,
26692 *avx512f_vmfmsub_<mode>_mask<round_name>,
26693 avx512f_vmfmsub_<mode>_mask3<round_name>,
26694 *avx512f_vmfmasub_<mode>_maskz_1<round_name>,
26695 *avx512f_vmfnmadd_<mode>_mask<round_name>,
26696 *avx512f_vmfnmadd_<mode>_mask3<round_name>,
26697 *avx512f_vmfnmadd_<mode>_maskz_1<round_name>,
26698 *avx512f_vmfnmsub_<mode>_mask<round_name>,
26699 avx512f_vmfnmsub_<mode>_mask3<round_name>,
26700 *avx512f_vmfnmsub_<mode>_maskz_1<round_name>): New define_insns.
26701 (avx512f_vmfmadd_<mode>_maskz<round_expand_name>): New define_expand.
26702 * config/i386/avx512fintrin.h (_mm_mask_fmadd_sd, _mm_mask_fmadd_ss,
26703 _mm_mask3_fmadd_sd, _mm_mask3_fmadd_ss, _mm_maskz_fmadd_sd,
26704 _mm_maskz_fmadd_ss, _mm_mask_fmsub_sd, _mm_mask_fmsub_ss,
26705 _mm_mask3_fmsub_sd, _mm_mask3_fmsub_ss, _mm_maskz_fmsub_sd,
26706 _mm_maskz_fmsub_ss, _mm_mask_fnmadd_sd, _mm_mask_fnmadd_ss,
26707 _mm_mask3_fnmadd_sd, _mm_mask3_fnmadd_ss, _mm_maskz_fnmadd_sd,
26708 _mm_maskz_fnmadd_ss, _mm_mask_fnmsub_sd, _mm_mask_fnmsub_ss,
26709 _mm_mask3_fnmsub_sd, _mm_mask3_fnmsub_ss, _mm_maskz_fnmsub_sd,
26710 _mm_maskz_fnmsub_ss, _mm_mask_fmadd_round_sd, _mm_mask_fmadd_round_ss,
26711 _mm_mask3_fmadd_round_sd, _mm_mask3_fmadd_round_ss,
26712 _mm_maskz_fmadd_round_sd, _mm_maskz_fmadd_round_ss,
26713 _mm_mask_fmsub_round_sd, _mm_mask_fmsub_round_ss,
26714 _mm_mask3_fmsub_round_sd, _mm_mask3_fmsub_round_ss,
26715 _mm_maskz_fmsub_round_sd, _mm_maskz_fmsub_round_ss,
26716 _mm_mask_fnmadd_round_sd, _mm_mask_fnmadd_round_ss,
26717 _mm_mask3_fnmadd_round_sd, _mm_mask3_fnmadd_round_ss,
26718 _mm_maskz_fnmadd_round_sd, _mm_maskz_fnmadd_round_ss,
26719 _mm_mask_fnmsub_round_sd, _mm_mask_fnmsub_round_ss,
26720 _mm_mask3_fnmsub_round_sd, _mm_mask3_fnmsub_round_ss,
26721 _mm_maskz_fnmsub_round_sd, _mm_maskz_fnmsub_round_ss): New intrinsics.
26723 2019-03-21 Martin Sebor <msebor@redhat.com>
26725 PR tree-optimization/89350
26726 * builtins.c (compute_objsize): Also ignore offsets whose upper
26728 * gimple-ssa-warn-restrict.c (builtin_memref): Add new member.
26729 (builtin_memref::builtin_memref): Initialize new member.
26730 Allow EXPR to be null.
26731 (builtin_memref::extend_offset_range): Replace local with a member.
26732 Avoid assuming pointer offsets are unsigned.
26733 (builtin_memref::set_base_and_offset): Determine base object
26734 before computing offset range.
26735 (builtin_access::builtin_access): Handle memset.
26736 (builtin_access::generic_overlap): Replace local with a member.
26737 (builtin_access::strcat_overlap): Same.
26738 (builtin_access::overlap): Same.
26739 (maybe_diag_overlap): Same.
26740 (maybe_diag_access_bounds): Same.
26741 (wrestrict_dom_walker::check_call): Handle memset.
26742 (check_bounds_or_overlap): Same.
26744 2019-03-21 Jan Hubicka <hubicka@ucw.cz>
26745 Jakub Jelinek <jakub@redhat.com>
26748 * tree.c (fld_type_variant, fld_incomplete_type_of,
26749 fld_process_array_type): Call fld->pset.add and don't call
26750 add_tree_to_fld_list if it returns true.
26751 (free_lang_data_in_type): Similarly with self-recursive call. Purge
26752 non-marked types from TYPE_NEXT_VARIANT list.
26753 (find_decls_types_r): Call fld_worklist_push for TYPE_CANONICAL (t).
26755 2019-03-21 Jakub Jelinek <jakub@redhat.com>
26757 * hash-table.h (hash_table): Add Lazy template parameter defaulted
26758 to false, if true, don't alloc_entries during construction, but defer
26759 it to the first method that needs m_entries allocated.
26760 (hash_table::hash_table, hash_table::~hash_table,
26761 hash_table::alloc_entries, hash_table::find_empty_slot_for_expand,
26762 hash_table::too_empty_p, hash_table::expand, hash_table::empty_slow,
26763 hash_table::clear_slot, hash_table::traverse_noresize,
26764 hash_table::traverse, hash_table::iterator::slide): Adjust all methods.
26765 * hash-set.h (hash_set): Add Lazy template parameter defaulted to
26767 (hash_set::contains): If Lazy is true, use find_slot_with_hash with
26768 NO_INSERT instead of find_with_hash.
26769 (hash_set::traverse, hash_set::iterator, hash_set::iterator::m_iter,
26770 hash_set::m_table): Add Lazy to template params of hash_table.
26771 (gt_ggc_mx, gt_pch_nx): Use false as Lazy in hash_set template param.
26772 * attribs.c (test_attribute_exclusions): Likewise.
26773 * hash-set-tests.c (test_set_of_strings): Add iterator tests for
26774 hash_set. Add tests for hash_set with Lazy = true.
26776 2019-03-21 Richard Biener <rguenther@suse.de>
26778 PR tree-optimization/89779
26779 * tree.c (tree_nop_conversion): Consolidate and fix defensive
26780 checks with respect to released SSA names now having error_mark_node
26782 * fold-const.c (operand_equal_p): Likewise.
26784 2019-03-20 Andreas Krebbel <krebbel@linux.ibm.com>
26787 * config/s390/s390.c (global_not_special_regno_p): Move to make it
26789 (s390_optimize_register_info): Use global_not_special_regno_p to
26790 check for global regs.
26792 2019-03-20 Jakub Jelinek <jakub@redhat.com>
26795 * lra-constraints.c (process_alt_operands) <reg>: For BLKmode, don't
26796 update this_alternative nor this_alternative_set.
26798 2019-03-19 Jim Wilson <jimw@sifive.com>
26801 * config/riscv/riscv.c (riscv_valid_lo_sum_p): New arg x. New locals
26802 align, size, offset. Use them to handle a BLKmode reference. Update
26804 (riscv_classify_address): Pass info->offset to riscv_valid_lo_sum_p.
26806 2019-03-19 Jakub Jelinek <jakub@redhat.com>
26808 PR rtl-optimization/89768
26809 * loop-unroll.c (unroll_loop_constant_iterations): Use gen_int_mode
26810 instead of GEN_INT.
26811 (unroll_loop_runtime_iterations): Likewise.
26813 2019-03-19 Martin Sebor <msebor@redhat.com>
26815 PR tree-optimization/89644
26816 * tree-ssa-strlen.c (handle_builtin_stxncpy): Use full_string_p
26817 rather than endptr as an indicator of nul-termination.
26819 PR tree-optimization/89644
26820 * tree-ssa-strlen.c (handle_builtin_stxncpy): Consider unterminated
26821 arrays in determining sequence sizes in strncpy and stpncpy.
26823 2019-03-19 Martin Liska <mliska@suse.cz>
26825 PR middle-end/89737
26826 * predict.c (combine_predictions_for_bb): Empty likely_edges and
26827 unlikely_edges if there's an edge that belongs to both these sets.
26829 2018-03-19 Segher Boessenkool <segher@kernel.crashing.org>
26832 * config/rs6000/rs6000.md (fix_trunc<mode>si2_stfiwx): If we have a
26833 non-TARGET_MFCRF target, and the dest is memory but not 32-bit aligned,
26834 go via a stack temporary.
26836 2019-03-19 Jakub Jelinek <jakub@redhat.com>
26839 * config/mips/mips.c (mips_expand_vec_cond_expr): Use gen_lowpart
26840 instead of gen_rtx_SUBREG.
26841 * config/mips/mips-msa.md (vec_extract<mode><unitmode>): Likewise.
26843 2019-03-19 Richard Biener <rguenther@suse.de>
26846 * opts.c (finish_options): Disable -gsplit-dwarf when doing LTO.
26848 2019-03-19 Jan Hubicka <hubicka@ucw.cz>
26852 * tree.c (free_lang_data_in_decl): Do not free context of C++
26855 2019-03-19 Jakub Jelinek <jakub@redhat.com>
26858 * config/arm/arm.md (cmpsi2_addneg): Swap the alternatives and use
26859 subs for the first alternative except when operands[3] is 1.
26862 * gimplify.c (gimplify_asm_expr): For output argument with
26863 TREE_ADDRESSABLE type, clear allows_reg if it allows memory, otherwise
26866 2019-03-19 Eric Botcazou <ebotcazou@adacore.com>
26868 PR rtl-optimization/89753
26869 * loop-unroll.c (decide_unroll_constant_iterations): Make guard for
26870 explicit unrolling factor even more robust.
26872 2019-03-19 Jakub Jelinek <jakub@redhat.com>
26875 * config/i386/i386.c (ix86_expand_floorceildf_32): In ceil
26876 compensation use x2 += 1 instead of x2 -= -1 and when honoring
26877 signed zeros, do another copysign after the compensation.
26879 2019-03-18 Martin Sebor <msebor@redhat.com>
26881 PR tree-optimization/89720
26882 * tree-vrp.c (vrp_prop::check_mem_ref): Treat range with max < min
26883 more conservatively, the same as anti-range.
26885 2019-03-18 Richard Biener <rguenther@suse.de>
26887 PR middle-end/88945
26888 * tree-ssanames.c (release_ssa_name_fn): For released SSA names
26889 use a TREE_TYPE of error_mark_node to avoid ICEs when dumping
26890 basic-blocks that are removed. Remove restoring SSA_NAME_VAR.
26891 * tree-outof-ssa.c (eliminate_useless_phis): Remove redundant checking.
26893 2019-03-18 Andrew Stubbs <ams@codesourcery.com>
26895 * config/gcn/gcn-run.c (struct output): Make next_output unsigned.
26896 Extend queue to 1024 entries.
26897 Add "consumed" field.
26898 (gomp_print_output): Remove print_index parameter.
26899 Add final parameter.
26900 Change limit to unsigned.
26901 Use consumed field to implement circular buffer.
26902 Detect interrupted print in final pass.
26903 Flush output at the end.
26904 (run): Update gomp_print_output usage.
26905 (main): Initialize kernargs->output_data.consumed.
26907 2019-03-18 Richard Sandiford <richard.sandiford@arm.com>
26909 * tree-vect-loop.c (vect_estimate_min_profitable_iters): Fix the
26910 calculation of the minimum number of scalar iterations for
26911 fully-predicated loops.
26913 2019-03-18 Martin Jambor <mjambor@suse.cz>
26915 PR tree-optimization/89546
26916 * tree-sra.c (propagate_subaccesses_across_link): Requeue new_acc if
26917 any propagation to its children took place.
26919 2019-03-18 Andrew Burgess <andrew.burgess@embecosm.com>
26922 * config/riscv/riscv.c (riscv_pass_fpr_single): Add offset
26923 parameter, and make use of it.
26924 (riscv_get_arg_info): Pass offset to riscv_pass_fpr_single.
26926 2019-03-18 Claudiu Zissulescu <claziss@synopsys.com>
26928 * config/arc/arc.opt (mcode-density-frame): Get the inital value
26929 from TARGET_CODE_DENSITY_FRAME_DEFAULT.
26930 * config/arc/elf.h (TARGET_CODE_DENSITY_FRAME_DEFAULT): Define.
26931 * config/arc/linux.h (TARGET_CODE_DENSITY_FRAME_DEFAULT): Define.
26932 * config/arc/arc.md (pop_multi_fp_blink): Adjust constraints to
26933 match what the ops is doing.
26934 (push_multi_fp_blink): Likewise.
26935 * config/arc/arc.c (arc_override_options): Enable enter/leave when
26936 compiling for size and elf target.
26937 (arc_save_callee_enter): Adjust note to match what enter/leave
26940 2019-03-18 Claudiu Zissulescu <claziss@synopsys.com>
26942 * config/arc/arc.md (tst_movb): Fix constraint.
26944 2019-03-18 Claudiu Zissulescu <claziss@synopsys.com>
26946 * config/arc/arc.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define.
26948 2019-03-18 Claudiu Zissulescu <claziss@synopsys.com>
26950 * config/arc/arc-protos.h (arc_adjust_reg_alloc_order): Declare.
26951 * config/arc/arc.c (arc_conditional_register_usage): Remove all
26952 reg_alloc_order references.
26953 (size_alloc_order): Define.
26954 (arc_adjust_reg_alloc_order): New function.
26955 * config/arc/arc.h (REG_ALLOC_ORDER): Proper define the register
26957 (ADJUST_REG_ALLOC_ORDER): Define.
26958 (HONOR_REG_ALLOC_ORDER): Likewise.
26960 2019-03-18 Richard Biener <rguenther@suse.de>
26963 * config/i386/i386.c (ix86_add_stmt_cost): Pessimize strided
26964 loads and stores a bit more.
26966 2019-03-18 Richard Biener <rguenther@suse.de>
26969 * config/i386/i386.c (ix86_add_stmt_cost): Apply strided
26970 load pessimization to stores as well.
26972 2019-03-18 Andrey Belevantsev <abel@ispras.ru>
26974 PR middle-end/86979
26975 * sel-sched.c (compute_av_set_at_bb_end): When we have an ineligible
26976 successor, use NULL as its av set.
26978 2019-03-15 Segher Boessenkool <segher@kernel.crashing.org>
26980 PR rtl-optimization/89721
26981 * lra-constraints (invariant_p): Return false if side_effects_p holds.
26983 2019-03-15 Kelvin Nilsen <kelvin@gcc.gnu.org>
26986 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
26987 When handling vec_extract, use modular arithmetic to allow
26988 constant selectors greater than vector length.
26989 * config/rs6000/rs6000.c (rs6000_expand_vector_extract): Allow
26990 V1TImode vectors to have constant selector values greater than 0.
26991 Use modular arithmetic to compute vector index.
26992 (rs6000_split_vec_extract_var): Use modular arithmetic to compute
26993 index for in-memory vectors. Correct code generation for
26994 in-register vectors.
26995 (altivec_expand_vec_ext_builtin): Use modular arithmetic to
26998 2019-03-15 Alexandre Oliva <aoliva@redhat.com>
27002 * dwarf2out.c (generic_parameter_die): Follow DECL_INITIAL of
27005 2019-03-15 Jakub Jelinek <jakub@redhat.com>
27008 * tree.c (inchash::add_expr): Strip any location wrappers.
27009 * fold-const.c (operand_equal_p): Move stripping of location wrapper
27010 after hash verification.
27013 * dwarf2out.c (add_const_value_attribute): Return false for MINUS,
27014 SIGN_EXTEND and ZERO_EXTEND.
27016 2019-03-14 Jason Merrill <jason@redhat.com>
27017 Jakub Jelinek <jakub@redhat.com>
27019 * hash-table.h (remove_elt_with_hash): Return if slot is NULL rather
27020 than if is_empty (*slot).
27021 * hash-set-tests.c (test_set_of_strings): Add tests for addition of
27022 existing elt and for elt removal.
27023 * hash-map-tests.c (test_map_of_strings_to_int): Add test for removal
27024 of already removed elt.
27026 2019-03-15 H.J. Lu <hongjiu.lu@intel.com>
27029 * config/i386/i386.c (remove_partial_avx_dependency): Handle
27030 REG_EH_REGION note.
27032 2019-03-14 Martin Liska <mliska@suse.cz>
27035 * doc/invoke.texi: Remove -fdump-class-hierarchy option.
27037 2019-03-14 Richard Biener <rguenther@suse.de>
27040 * config/i386/i386.c (make_resolver_func): Properly set
27041 DECL_CONTEXT on the RESULT_DECL.
27042 * config/rs6000/rs6000.c (make_resolver_func): Likewise.
27044 2019-03-14 Richard Biener <rguenther@suse.de>
27046 * gimple-pretty-print.c: Include cfgloop.h.
27047 (dump_gimple_phi): Adjust.
27048 (dump_gimple_bb_header): Dump loop header for GIMPLE.
27049 (pp_cfg_jump): Adjust.
27050 (dump_implicit_edges): Dump fallthru to next block for GIMPLE as well.
27051 * tree-cfg.c (build_gimple_cfg): Remove lower_phi_internal_fn call.
27052 (lower_phi_internal_fn): Remove.
27053 (verify_gimple_call): Remove IFN_PHI special-casing.
27054 (dump_function_to_file): Dump IL state.
27055 * tree-into-ssa.c (rewrite_add_phi_arguments): Revert changes
27056 done to deal with PHI nodes being present in non-SSA state.
27058 2019-03-14 Jakub Jelinek <jakub@redhat.com>
27061 * multiple_target.c (create_dispatcher_calls): Change
27062 references_to_redirect from vector of ipa_ref * to vector of ipa_ref.
27063 In the node->iterate_referring loop, push *ref rather than ref, call
27064 ref->remove_reference () and always pass 0 to iterate_referring.
27066 PR rtl-optimization/89679
27067 * expmed.c (expand_mult_const): Don't add a REG_EQUAL note if it
27068 would contain a paradoxical SUBREG.
27070 2019-03-14 Richard Biener <rguenther@suse.de>
27072 PR tree-optimization/89710
27073 * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Use
27076 2019-03-14 Martin Liska <mliska@suse.cz>
27078 * coverage.c (coverage_begin_function): Stream also
27080 * doc/gcov.texi: Document 2 new fields in JSON file. Improve
27081 documentation about function declaration location.
27082 * gcov-dump.c (tag_function): Print whole range
27083 of function declaration.
27084 * gcov.c (struct function_info): Add end_column field.
27085 (function_info::function_info): Initialize it.
27086 (output_json_intermediate_file): Output {start,end}_column
27088 (read_graph_file): Read end_column.
27090 2019-03-14 Richard Biener <rguenther@suse.de>
27092 PR middle-end/89698
27093 * fold-const.c (operand_equal_p): For INDIRECT_REF check
27094 that the access types are similar.
27096 2019-03-14 Jakub Jelinek <jakub@redhat.com>
27098 PR tree-optimization/89703
27099 * tree-ssa-strlen.c (valid_builtin_call): Punt if stmt call types
27100 aren't compatible also with builtin_decl_explicit. Check pure
27101 or non-pure status of BUILT_IN_STR{{,N}CMP,N{LEN,{CAT,CPY}{,_CHK}}}
27102 and BUILT_IN_STPNCPY{,_CHK}.
27104 2019-03-14 H.J. Lu <hongjiu.lu@intel.com>
27107 * config/i386/i386.c (ix86_print_operand): Handle 'M' to add
27108 addr32 prefix to VSIB address for X32.
27109 * config/i386/sse.md (*avx512pf_gatherpf<mode>sf_mask): Prepend
27111 (*avx512pf_gatherpf<mode>df_mask): Likewise.
27112 (*avx512pf_scatterpf<mode>sf_mask): Likewise.
27113 (*avx512pf_scatterpf<mode>df_mask): Likewise.
27114 (*avx2_gathersi<mode>): Prepend "%M3" to opcode.
27115 (*avx2_gathersi<mode>_2): Prepend "%M2" to opcode.
27116 (*avx2_gatherdi<mode>): Prepend "%M3" to opcode.
27117 (*avx2_gatherdi<mode>_2): Prepend "%M2" to opcode.
27118 (*avx2_gatherdi<mode>_3): Prepend "%M3" to opcode.
27119 (*avx2_gatherdi<mode>_4): Prepend "%M2" to opcode.`
27120 (*avx512f_gathersi<mode>): Prepend "%M4" to opcode.
27121 (*avx512f_gathersi<mode>_2): Prepend "%M3" to opcode.
27122 (*avx512f_gatherdi<mode>): Prepend "%M4" to opcode.
27123 (*avx512f_gatherdi<mode>_2): Prepend "%M3" to opcode.
27124 (*avx512f_scattersi<mode>): Prepend "%M0" to opcode.
27125 (*avx512f_scatterdi<mode>): Likewise.
27127 2019-03-13 Vladimir Makarov <vmakarov@redhat.com>
27130 * lra-constraints.c (inherit_in_ebb): Update
27131 potential_reload_hard_regs along with live_hard_regs.
27133 2019-03-13 Jakub Jelinek <jakub@redhat.com>
27136 * dwarf2out.c (size_of_die): For dw_val_class_view_list always use
27138 (value_format): For dw_val_class_view_list never use DW_FORM_loclistx.
27140 2019-03-13 Martin Sebor <msebor@redhat.com>
27142 PR tree-optimization/89662
27143 * tree-vrp.c (vrp_prop::check_mem_ref): Avoid assuming every type
27146 2019-03-13 Richard Biener <rguenther@suse.de>
27148 PR middle-end/89677
27149 * tree-scalar-evolution.c (simplify_peeled_chrec): Do not
27150 throw FP expressions at tree-affine.
27152 2019-03-14 Richard Biener <rguenther@suse.de>
27154 * tree-pretty-print.c (dump_generic_node): For -gimple properly
27155 dump negative integer constants using _Literal (type) -num.
27157 2019-03-13 Jakub Jelinek <jakub@redhat.com>
27159 * ipa-param-manipulation.h (struct ipa_parm_adjustment): Remove
27160 nonlocal_value member.
27162 PR middle-end/88588
27163 * omp-simd-clone.c (ipa_simd_modify_stmt_ops): Handle PHI args.
27164 (ipa_simd_modify_function_body): Handle PHIs.
27166 2019-03-12 Robin Dapp <rdapp@linux.ibm.com>
27168 * config/s390/s390.c (s390_option_override_internal): Use more
27169 aggressive inlining parameters.
27171 2019-03-12 Robin Dapp <rdapp@linux.ibm.com>
27173 * config/s390/3906.md: New file.
27174 * config/s390/s390.c (MAX_SCHED_UNITS): Increase.
27175 (LONGRUNNING_THRESHOLD): Remove.
27176 (MAX_SCHED_MIX_SCORE): Decrease.
27177 (MAX_SCHED_MIX_DISTANCE): Decrease.
27178 (s390_bb_fallthru_entry_likely): Assume fallthru for less than likely.
27179 (struct s390_sched_state): New struct to hold scheduling state.
27180 (S390_SCHED_STATE_NORMAL): Remove.
27181 (S390_SCHED_STATE_CRACKED): Remove.
27182 (S390_SCHED_ATTR_MASK_GROUPOFTWO): Add.
27183 (s390_get_sched_attrmask): Use new attribute.
27184 (s390_get_unit_mask): Use new units.
27185 (s390_is_fpd): New function.
27186 (s390_is_fxd): New function.
27187 (s390_is_longrunning): New function.
27188 (s390_sched_score): Use new functions.
27189 (s390_sched_reorder): Likewise.
27190 (s390_sched_variable_issue): Rework and use new functions.
27191 (s390_sched_init): Use new functions.
27192 * config/s390/s390.h (s390_tune_attr): Add z14.
27193 * config/s390/s390.md: Add z14.
27195 2019-03-12 Robin Dapp <rdapp@linux.ibm.com>
27197 * config/s390/2964.md: Update pipeline description.
27198 * config/s390/s390.c (MAX_SCHED_UNITS): Increase.
27199 (LONGRUNNING_THRESHOLD): Remove.
27200 (LATENCY_FACTOR): Remove.
27201 (s390_get_unit_mask): Add unit.
27202 (s390_sched_score): Use fxd/fpd.
27203 (s390_sched_variable_issue): Use fxd/fpd.
27205 2019-03-12 Martin Liska <mliska@suse.cz>
27207 * config/i386/i386.c: Reword an error message.
27209 2019-03-12 Martin Jambor <mjambor@suse.cz>
27211 * cgraph.c (cgraph_node::dump): Dump more info for former thunks,
27212 terminate with newline.
27214 2019-03-12 Jakub Jelinek <jakub@redhat.com>
27217 * config/s390/s390.md (tabort): Use %wd instead of
27218 HOST_WIDE_INT_PRINT_DEC in error message, reword to avoid two capital
27219 letters and periods.
27220 * config/tilepro/tilepro.c (tilepro_print_operand): Use %wd in
27221 output_operand_lossage instead of HOST_WIDE_INT_PRINT_DEC, replace
27224 PR middle-end/89663
27225 * builtins.c (expand_builtin_int_roundingfn,
27226 expand_builtin_int_roundingfn_2): Return NULL_RTX instead of
27227 gcc_unreachable if validate_arglist fails.
27229 2019-03-12 Richard Biener <rguenther@suse.de>
27231 PR tree-optimization/89664
27232 * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Properly
27233 free the occurance tree after the early out.
27235 2019-03-11 Jakub Jelinek <jakub@redhat.com>
27237 PR middle-end/89655
27239 * vr-values.c (vr_values::update_value_range): If
27240 old_vr->varying_p (), don't update it, make new_vr also VARYING
27243 2019-03-11 Martin Liska <mliska@suse.cz>
27245 * config/aarch64/aarch64.c (aarch64_override_options_internal):
27246 Fix double string quoting.
27248 2019-03-11 Martin Liska <mliska@suse.cz>
27250 * collect-utils.c (collect_wait): Wrap apostrophes
27251 in gcc internal format with %'.
27252 * collect2.c (main): Likewise.
27253 (scan_prog_file): Likewise.
27254 (scan_libraries): Likewise.
27255 * config/i386/i386.c (ix86_expand_call): Likewise.
27256 (ix86_handle_interrupt_attribute): Likewise.
27257 * config/nds32/nds32-intrinsic.c (nds32_expand_builtin_impl): Likewise.
27258 * config/nds32/nds32.c (nds32_insert_attributes): Likewise.
27259 * config/rl78/rl78.c (rl78_handle_saddr_attribute): Likewise.
27260 * lto-wrapper.c (find_crtoffloadtable): Likewise.
27261 * symtab.c (symtab_node::verify_base): Likewise.
27262 * tree-cfg.c (verify_gimple_label): Likewise.
27263 * tree.c (verify_type_variant): Likewise.
27265 2019-03-11 Martin Liska <mliska@suse.cz>
27267 * builtins.c (expand_builtin_thread_pointer): Wrap an option name
27268 in a string format message and fix GNU coding style.
27269 (expand_builtin_set_thread_pointer): Likewise.
27270 * common/config/aarch64/aarch64-common.c
27271 (aarch64_rewrite_selected_cpu): Likewise.
27272 * common/config/alpha/alpha-common.c (alpha_handle_option): Likewise.
27273 * common/config/arc/arc-common.c (arc_handle_option): Likewise.
27274 * common/config/arm/arm-common.c (arm_parse_fpu_option): Likewise.
27275 * common/config/bfin/bfin-common.c (bfin_handle_option): Likewise.
27276 * common/config/i386/i386-common.c (ix86_handle_option): Likewise.
27277 * common/config/ia64/ia64-common.c (ia64_handle_option): Likewise.
27278 * common/config/m68k/m68k-common.c (m68k_handle_option): Likewise.
27279 * common/config/msp430/msp430-common.c (msp430_handle_option): Likewise.
27280 * common/config/nds32/nds32-common.c (nds32_handle_option): Likewise.
27281 * common/config/powerpcspe/powerpcspe-common.c (rs6000_handle_option):
27283 * common/config/riscv/riscv-common.c
27284 (riscv_subset_list::parsing_subset_version): Likewise.
27285 (riscv_subset_list::parse_std_ext): Likewise.
27286 (riscv_subset_list::parse_sv_or_non_std_ext): Likewise.
27287 (riscv_subset_list::parse): Likewise.
27288 * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Likewise.
27289 * config/aarch64/aarch64.c (aarch64_parse_one_option_token): Likewise.
27290 (aarch64_override_options_internal): Likewise.
27291 (aarch64_validate_mcpu): Likewise.
27292 (aarch64_validate_march): Likewise.
27293 (aarch64_validate_mtune): Likewise.
27294 (aarch64_override_options): Likewise.
27295 * config/alpha/alpha.c (alpha_option_override): Likewise.
27296 * config/arc/arc.c (arc_init): Likewise.
27297 (parse_mrgf_banked_regs_option): Likewise.
27298 (arc_override_options): Likewise.
27299 (arc_expand_builtin_aligned): Likewise.
27300 * config/arm/arm-builtins.c (arm_expand_neon_builtin): Likewise.
27301 (arm_expand_builtin): Likewise.
27302 * config/arm/arm.c (arm_option_check_internal): Likewise.
27303 (arm_configure_build_target): Likewise.
27304 (arm_option_override): Likewise.
27305 (arm_options_perform_arch_sanity_checks): Likewise.
27306 (arm_handle_cmse_nonsecure_entry): Likewise.
27307 (arm_handle_cmse_nonsecure_call): Likewise.
27308 (arm_tls_referenced_p): Likewise.
27309 (thumb1_expand_prologue): Likewise.
27310 * config/avr/avr.c (avr_option_override): Likewise.
27311 * config/bfin/bfin.c (bfin_option_override): Likewise.
27312 * config/c6x/c6x.c (c6x_option_override): Likewise.
27313 * config/cr16/cr16.c (cr16_override_options): Likewise.
27314 * config/cris/cris.c (cris_option_override): Likewise.
27315 * config/csky/csky.c (csky_handle_isr_attribute): Likewise.
27316 * config/darwin-c.c (macosx_version_as_macro): Likewise.
27317 * config/darwin.c (darwin_override_options): Likewise.
27318 * config/frv/frv.c (frv_expand_builtin): Likewise.
27319 * config/h8300/h8300.c (h8300_option_override): Likewise.
27320 * config/i386/i386.c (parse_mtune_ctrl_str): Likewise.
27321 (ix86_option_override_internal): Likewise.
27322 (warn_once_call_ms2sysv_xlogues): Likewise.
27323 (ix86_expand_prologue): Likewise.
27324 (split_stack_prologue_scratch_regno): Likewise.
27325 (ix86_warn_parameter_passing_abi): Likewise.
27326 * config/ia64/ia64.c (fix_range): Likewise.
27327 * config/m68k/m68k.c (m68k_option_override): Likewise.
27328 * config/microblaze/microblaze.c (microblaze_option_override): Likewise.
27329 * config/mips/mips.c (mips_emit_probe_stack_range): Likewise.
27330 (mips_set_compression_mode): Likewise.
27331 * config/mmix/mmix.c (mmix_option_override): Likewise.
27332 * config/mn10300/mn10300.c (mn10300_option_override): Likewise.
27333 * config/msp430/msp430.c (msp430_option_override): Likewise.
27334 * config/nds32/nds32.c (nds32_option_override): Likewise.
27335 * config/nios2/nios2.c (nios2_custom_check_insns): Likewise.
27336 (nios2_option_override): Likewise.
27337 (nios2_expand_custom_builtin): Likewise.
27338 * config/nvptx/mkoffload.c (main): Likewise.
27339 * config/nvptx/nvptx.c (diagnose_openacc_conflict): Likewise.
27340 * config/pa/pa.c (fix_range): Likewise.
27341 (pa_option_override): Likewise.
27342 * config/riscv/riscv.c (riscv_parse_cpu): Likewise.
27343 (riscv_option_override): Likewise.
27344 * config/rl78/rl78.c (rl78_option_override): Likewise.
27345 * config/rs6000/aix61.h: Likewise.
27346 * config/rs6000/aix71.h: Likewise.
27347 * config/rs6000/aix72.h: Likewise.
27348 * config/rs6000/driver-rs6000.c (elf_platform): Likewise.
27349 * config/rs6000/freebsd64.h: Likewise.
27350 * config/rs6000/linux64.h: Likewise.
27351 * config/rs6000/rs6000.c (rs6000_option_override_internal): Likewise.
27352 (rs6000_expand_zeroop_builtin): Likewise.
27353 (rs6000_expand_mtfsb_builtin): Likewise.
27354 (rs6000_expand_set_fpscr_rn_builtin): Likewise.
27355 (rs6000_expand_set_fpscr_drn_builtin): Likewise.
27356 (rs6000_invalid_builtin): Likewise.
27357 (rs6000_expand_split_stack_prologue): Likewise.
27358 * config/rs6000/rtems.h: Likewise.
27359 * config/rx/rx.c (valid_psw_flag): Likewise.
27360 (rx_expand_builtin): Likewise.
27361 * config/s390/s390-c.c (s390_resolve_overloaded_builtin): Likewise.
27362 * config/s390/s390.c (s390_expand_builtin): Likewise.
27363 (s390_function_profiler): Likewise.
27364 (s390_option_override_internal): Likewise.
27365 (s390_option_override): Likewise.
27366 * config/sh/sh.c (sh_option_override): Likewise.
27367 (sh_builtin_saveregs): Likewise.
27368 (sh_fix_range): Likewise.
27369 * config/sh/vxworks.h: Likewise.
27370 * config/sparc/sparc.c (sparc_option_override): Likewise.
27371 * config/spu/spu.c (spu_option_override): Likewise.
27372 (fix_range): Likewise.
27373 * config/visium/visium.c (visium_option_override): Likewise.
27374 (visium_handle_interrupt_attr): Likewise.
27375 * config/xtensa/xtensa.c (xtensa_option_override): Likewise.
27376 * dbgcnt.c (dbg_cnt_set_limit_by_name): Likewise.
27377 (dbg_cnt_process_opt): Likewise.
27378 * dwarf2out.c (output_dwarf_version): Likewise.
27379 * except.c (expand_eh_return): Likewise.
27380 * gcc.c (defined): Likewise.
27381 (driver_handle_option): Likewise.
27382 (process_command): Likewise.
27383 (compare_files): Likewise.
27384 (driver::prepare_infiles): Likewise.
27385 (driver::do_spec_on_infiles): Likewise.
27386 (driver::maybe_run_linker): Likewise.
27387 * omp-offload.c (oacc_parse_default_dims): Likewise.
27388 * opts-global.c (handle_common_deferred_options): Likewise.
27389 * opts.c (parse_sanitizer_options): Likewise.
27390 (common_handle_option): Likewise.
27391 (enable_warning_as_error): Likewise.
27392 * passes.c (enable_disable_pass): Likewise.
27393 * plugin.c (parse_plugin_arg_opt): Likewise.
27394 (default_plugin_dir_name): Likewise.
27395 * targhooks.c (default_expand_builtin_saveregs): Likewise.
27396 (default_pch_valid_p): Likewise.
27397 * toplev.c (init_asm_output): Likewise.
27398 (process_options): Likewise.
27399 (toplev::run_self_tests): Likewise.
27400 * tree-cfg.c (verify_gimple_call): Likewise.
27401 * tree-inline.c (inline_forbidden_p_stmt): Likewise.
27402 (tree_inlinable_function_p): Likewise.
27403 * var-tracking.c (vt_find_locations): Likewise.
27405 2019-03-11 Andreas Krebbel <krebbel@linux.ibm.com>
27407 * config/s390/s390.c (s390_expand_builtin): Do the copy_to_reg not
27408 only on the else branch.
27410 2019-03-11 Martin Liska <mliska@suse.cz>
27412 * gcov.c (output_intermediate_json_line): Print function
27414 (output_json_intermediate_file): Add new argument.
27415 * doc/gcov.texi: Document the change.
27417 2019-03-11 Eric Botcazou <ebotcazou@adacore.com>
27419 PR rtl-optimization/89588
27420 * loop-unroll.c (decide_unroll_constant_iterations): Make guard for
27421 explicit unrolling factor more robust.
27423 2019-03-11 Richard Biener <rguenther@suse.de>
27425 PR tree-optimization/89649
27426 * tree-vectorizer.h (vect_loop_versioning): Adjust prototype.
27427 * tree-vect-loop-manip.c (vect_do_peeling): Unset force_vectorize
27428 on the prolog and epilog loops.
27429 (vect_loop_versioning): Return copy of loop.
27430 * tree-vect-loop.c (vect_transform_loop): Unset force_vectorize
27431 on the non-vectorized version of the loop.
27433 2019-03-10 Uroš Bizjak <ubizjak@gmail.com>
27436 * config/i386/sse.md (*vec_extractv2di_0_sse):
27437 Add (=r,x) alternative and corresponding splitter.
27439 2019-03-10 Martin Jambor <mjambor@suse.cz>
27441 PR tree-optimization/85762
27442 PR tree-optimization/87008
27443 PR tree-optimization/85459
27444 * tree-sra.c (contains_vce_or_bfcref_p): New parameter, set the bool
27445 it points to if there is a type changing MEM_REF. Adjust all callers.
27446 (build_accesses_from_assign): Disable total scalarization if
27447 contains_vce_or_bfcref_p returns true through the new parameter, for
27450 2019-03-09 Jakub Jelinek <jakub@redhat.com>
27453 * attribs.c (handle_dll_attribute): Don't clear TREE_STATIC for
27454 dllimport on VAR_DECLs with RECORD_TYPE or UNION_TYPE DECL_CONTEXT.
27457 * common.opt (fdiagnostics-show-labels,
27458 fdiagnostics-show-line-numbers, fdiagnostics-format=,
27459 fdiagnostics-minimum-margin-width=, fgnat-encodings=, gas-loc-support,
27460 gas-locview-support, ginline-points, ginternal-reset-location-views):
27461 Terminate description text with a dot.
27462 * config/microblaze/microblaze.opt (mxl-prefetch): Likewise.
27463 * config/mcore/mcore.opt (m210, m340): Likewise.
27464 * config/epiphany/epiphany.opt (mprefer-short-insn-regs, mcmove,
27465 mnops=): Start description text with a capital letter.
27466 * config/arc/arc.opt (msize-level=): Likewise.
27467 * config/sh/sh.opt (minline-ic_invalidate): Likewise.
27468 * config/rs6000/sysv4.opt (mno-toc, mtoc, mno-traceback, mshlib,
27469 mnewlib): Likewise.
27470 * config/ft32/ft32.opt (msim): Likewise.
27471 (mft32b, mcompress): Likewise. Terminate description text with a dot.
27472 (mnodiv, mnopm): Terminate description text with a dot.
27473 * config/c6x/c6x.opt (c6x_sdata): Terminate Enum description with
27475 * config/i386/i386.opt (prefer_vector_width, instrument_return):
27477 * config/rx/rx.opt (nofpu): Remove trailing spaces from description
27480 PR rtl-optimization/89634
27481 * cfgcleanup.c (thread_jump): Punt if registers mentioned in cond1
27482 are modified in BB_END (e->src) instruction.
27484 2019-03-08 David Malcolm <dmalcolm@redhat.com>
27487 * config/i386/i386.c (ix86_set_current_function): Make "sorry"
27488 messages more amenable to translation, and improve wording.
27490 2019-03-08 Bill Schmidt <wschmidt@linux.ibm.com>
27492 * config/rs6000/rs6000-p8swap.c (rs6000_analyze_swaps): Rebuild
27493 ud- and du-chains between phases.
27495 2019-03-08 Richard Sandiford <richard.sandiford@arm.com>
27498 * dwarf2cfi.c (dwarf2out_frame_debug_expr): Use CONST_POLY_INT
27499 instead of POLY_INT_CST.
27501 2019-03-08 Andre Vieira <andre.simoesdiasvieira@arm.com>
27503 * config/arm/arm.h (TARGET_FP16_TO_DOUBLE): Add TARGET_VFP_DOUBLE
27506 2019-03-08 Uroš Bizjak <ubizjak@gmail.com>
27511 * config/i386/emmintrin.h (_mm_loadu_si64): New intrinsic.
27512 (_mm_storeu_si64): Ditto.
27514 2019-03-08 Martin Liska <mliska@suse.cz>
27517 * config/i386/i386.c (ix86_option_override_internal): Disable
27518 jump tables when retpolines are used.
27520 2019-03-08 Jan Hubicka <hubicka@ucw.cz>
27523 * ipa-split.c (execute_split_functions): Do not split
27524 'noinline' or 'section' function.
27526 2019-03-08 Jakub Jelinek <jakub@redhat.com>
27529 * config/s390/s390.c (s390_const_operand_ok): Use %wu instead of
27530 HOST_WIDE_INT_PRINT_UNSIGNED and %wd instead of
27531 HOST_WIDE_INT_PRINT_DEC. Formatting fixes.
27534 * ipa-devirt.c (compare_virtual_tables): Remove two trailing spaces
27535 from diagnostics. Formatting fixes.
27538 * ipa-devirt.c (odr_types_equivalent_p): Fix grammar in
27539 warn_odr diagnostics.
27542 * lra-constraints.c (process_alt_operands): Avoid one space before
27543 " at the end of line and another after " on another line in a string
27545 * attribs.c (handle_dll_attribute): Likewise.
27546 * config/avr/avr-devices.c (avr_texinfo): Likewise.
27548 * gimple-ssa-warn-alloca.c (pass_walloca::execute): Don't wrap
27549 warning_at or inform messages in G_() if there is no ?:.
27551 PR tree-optimization/89550
27552 * builtins.c (c_strlen): Only set TREE_NO_WARNING if warning_at
27553 returned true. Formatting fixes.
27554 (expand_builtin_strnlen): Formatting fixes.
27555 * tree-vrp.c (vrp_prop::check_mem_ref): Only set TREE_NO_WARNING
27556 if warning_at returned true.
27557 * tree-cfg.c (pass_warn_function_return::execute): Likewise.
27559 2019-03-08 Richard Biener <rguenther@suse.de>
27561 PR middle-end/89578
27562 * cfgloop.h (struct loop): Add owned_clique field.
27563 * cfgloopmanip.c (copy_loop_info): Copy it.
27564 * tree-cfg.c (gimple_duplicate_bb): Do not remap owned_clique
27566 * tree-inline.c (copy_loops): Remap owned_clique.
27567 * lto-streamer-in.c (input_cfg): Stream owned_clique.
27568 * lto-streamer-out.c (output_cfg): Likewise.
27570 2019-03-08 Jakub Jelinek <jakub@redhat.com>
27573 * config/darwin.c: Include intl.h.
27574 (darwin_build_constant_cfstring): Improve i18n of diagnostics by not
27575 composing the message out of two separate parts.
27577 2019-03-07 Jakub Jelinek <jakub@redhat.com>
27580 * config/i386/i386.c (ix86_set_func_type): Make sure diagnostics
27581 doesn't start with a capital letter and doesn't end with a dot.
27582 (ix86_function_arg_boundary): Make sure diagnostics doesn't start
27583 with a capital letter.
27584 (ix86_mangle_function_version_assembler_name): Likewise.
27585 (ix86_generate_version_dispatcher_body): Likewise.
27586 (fold_builtin_cpu): Likewise.
27587 (get_builtin_code_for_version): Likewise. Remove extraneous space.
27588 (ix86_handle_interrupt_attribute): Make the diagnostics easier for
27589 translators, wrap full type name in %qs.
27591 PR translation/79999
27592 * gimplify.c (gimplify_omp_ordered): Reword diagnostics to talk about
27593 depend clause with source (or sink) modifier.
27594 * omp-expand.c (expand_omp_ordered_sink): Likewise.
27597 * config/i386/sse.md (avx512f_mov<ssescalarmodelower>_mask,
27598 *avx512f_load<mode>_mask, avx512f_store<mode>_mask): New define_insns.
27599 (avx512f_load<mode>_mask): New define_expand.
27600 * config/i386/i386-builtin.def (__builtin_ia32_loadsd_mask,
27601 __builtin_ia32_loadss_mask, __builtin_ia32_storesd_mask,
27602 __builtin_ia32_storess_mask, __builtin_ia32_movesd_mask,
27603 __builtin_ia32_movess_mask): New builtins.
27604 * config/i386/avx512fintrin.h (_mm_mask_load_ss, _mm_maskz_load_ss,
27605 _mm_mask_load_sd, _mm_maskz_load_sd, _mm_mask_move_ss,
27606 _mm_maskz_move_ss, _mm_mask_move_sd, _mm_maskz_move_sd,
27607 _mm_mask_store_ss, _mm_mask_store_sd): New intrinsics.
27609 2019-03-07 Martin Jambor <mjambor@suse.cz>
27612 * ipa-cp.c (perform_estimation_of_a_value): Account zero time benefit
27613 for extern inline functions.
27615 2019-03-07 Martin Jambor <mjambor@suse.cz>
27618 * cgraph.h (cgraph_node): New inline method former_thunk_p.
27619 * cgraph.c (cgraph_node::dump): Dump a note if node is a former thunk.
27620 (clone_of_p): Treat expanded thunks like thunks, be optimistic if they
27621 have multiple callees. At the end check if declarations match as
27622 opposed to cgraph_nodes.
27624 2019-03-07 Martin Liska <mliska@suse.cz>
27626 * cgraph.c (cgraph_node::verify_node): Verify with a neighbour
27627 which is equivalent to searching for this in clones chain.
27628 * symtab.c (symtab_node::verify_base): Similarly compare ASM
27629 names with a neighbour and special case first node in a chain.
27631 2019-01-25 Jason Merrill <jason@redhat.com>
27633 PR c++/80916 - spurious "static but not defined" warning.
27634 * gimple-fold.c (can_refer_decl_in_current_unit_p): Return false
27635 for an internal symbol with DECL_EXTERNAL.
27637 2019-04-07 Richard Biener <rguenther@suse.de>
27639 PR middle-end/89618
27640 * cfgloopmanip.c (copy_loop_info): Copy forgotten fields.
27641 * tree-inline.c (copy_loops): Simplify.
27643 2019-03-07 Martin Liska <mliska@suse.cz>
27645 * dwarf2out.c (add_AT_vms_delta): Revert function removal.
27647 2019-03-07 Richard Biener <rguenther@suse.de>
27649 PR tree-optimization/89595
27650 * tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Take
27651 stmt iterator as reference, take boolean output parameter to
27652 indicate whether the stmt was removed and thus the iterator
27654 (dom_opt_dom_walker::before_dom_children): Re-iterate over
27655 stmts created by folding.
27657 2019-03-07 Jakub Jelinek <jakub@redhat.com>
27660 * doc/extend.texi (Basic Asm): Document qualifiers are not allowed
27663 2019-03-06 Peter Bergner <bergner@linux.ibm.com>
27665 PR rtl-optimization/88845
27666 * config/rs6000/rs6000.c (rs6000_emit_move_si_sf_subreg): Enable during
27668 * lra.c (remove_scratches_1): New function.
27669 (remove_scratches): Use it.
27670 (lra_emit_move): Likewise.
27672 2019-03-06 Claudiu Zissulescu <claziss@synopsys.com>
27674 * config/arc/arc-c.def (__ARC_UNALIGNED__): Set it on
27675 unaligned_access variable.
27676 * config/arc/arc.c (arc_override_options): Set unaligned access
27677 default on for HS CPUs.
27678 * config/arc/arc.h (STRICT_ALIGNMENT): Fix logic.
27680 2019-03-06 Martin Liska <mliska@suse.cz>
27682 PR gcov-profile/89577
27683 * doc/gcov.texi: Prefer to use --coverage.
27684 * doc/sourcebuild.texi: Likewise.
27686 2019-03-02 Jason Merrill <jason@redhat.com>
27688 PR c++/86485 - -Wmaybe-unused with empty class ?:
27689 * gimplify.c (gimplify_cond_expr): Use INIT_EXPR.
27691 2019-03-05 Jakub Jelinek <jakub@redhat.com>
27694 * config/rs6000/t-linux (MULTIARCH_DIRNAME): Set to non-empty only
27697 PR middle-end/89590
27698 * builtins.c (maybe_emit_free_warning): Punt if free doesn't have
27699 exactly one argument.
27701 2019-03-05 Jakub Jelinek <jakub@redhat.com>
27702 Richard Sandiford <richard.sandiford@arm.com>
27704 PR tree-optimization/89570
27705 * match.pd (vec_cond into cond_op simplification): Don't use
27706 get_conditional_internal_fn, use as_internal_fn (cond_op).
27708 2019-03-05 Wilco Dijkstra <wdijkstr@arm.com>
27711 * config/arm/arm.md (movsi): Use targetm.cannot_force_const_mem
27712 to decide when to split off a non-zero offset from a symbol.
27713 * config/arm/arm.c (arm_cannot_force_const_mem): Disallow offsets
27714 in function symbols.
27716 2019-03-05 Richard Biener <rguenther@suse.de>
27718 PR tree-optimization/89594
27719 * tree-if-conv.c (pass_if_conversion::execute): Handle
27720 case where .LOOP_VECTORIZED_FUNCTION was removed.
27722 2019-03-05 Jakub Jelinek <jakub@redhat.com>
27725 * fold-const.c (fold_checksum_tree): Don't use fixed size buffer,
27726 instead alloca it only when needed with the needed size.
27728 PR tree-optimization/89570
27729 * match.pd (vec_cond into cond_op simplification): Guard with
27730 vectorized_internal_fn_supported_p test and #if GIMPLE.
27732 PR tree-optimization/89566
27733 * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call):
27734 Set info.fncode to BUILT_IN_NONE if gimple_call_builtin_p failed.
27735 Punt if get_user_idx_format succeeds, but idx_format argument is
27736 not provided or doesn't have pointer type, or if idx_args is above
27737 number of provided arguments.
27739 2019-03-04 Wilco Dijkstra <wdijkstr@arm.com>
27741 PR tree-optimization/89437
27742 * match.pd: Use lt in sin(atan(x)) and cos(atan(x)) simplifications.
27744 2019-03-04 Richard Biener <rguenther@suse.de>
27746 PR middle-end/89572
27747 * tree-scalar-evolution.c: (get_loop_exit_condition): Use
27750 2019-03-04 Bin Cheng <bin.cheng@linux.alibaba.com>
27752 PR tree-optimization/89487
27753 * tree-loop-distribution.c (has_nonaddressable_dataref_p): New.
27754 (create_rdg_vertices): Compute has_nonaddressable_dataref_p.
27755 (distribute_loop): Don't do runtime alias check if there is non-
27756 addressable data reference.
27757 * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Check if VAR_DECL
27758 is a register variable.
27760 2019-03-02 Jakub Jelinek <jakub@redhat.com>
27763 * config/arm/arm.md (cmpsi2_addneg): Use
27764 trunc_int_for_mode (-INTVAL (...), SImode) instead of -INTVAL (...).
27765 If operands[2] is 0 or INT_MIN, force use of subs.
27766 (*compare_scc splitter): Use gen_int_mode.
27767 (*negscc): Likewise.
27768 * config/arm/thumb2.md (*thumb2_negscc): Likewise.
27770 2019-03-01 Kito Cheng <kito.cheng@gmail.com>
27771 Monk Chiang <sh.chiang04@gmail.com>
27773 * common/config/riscv/riscv-common.c: Include sstream.
27774 (riscv_subset_list::to_string): New.
27775 (riscv_arch_str): Likewise.
27776 * config.gcc (riscv*-*-*): Handle --with-riscv-attribute=
27777 * config.in: Regen.
27778 * config/riscv/riscv-protos.h (riscv_arch_str): New.
27779 * config/riscv/riscv.c (INCLUDE_STRING): Defined.
27780 (riscv_emit_attribute): New.
27781 (riscv_file_start): Emit attribute if needed.
27782 (riscv_option_override): Init riscv_emit_attribute_p.
27783 * config/riscv/riscv.opt (mriscv-attribute): New option.
27784 * configure.ac (riscv*-*-*): Check binutils is supporting ELF
27785 * configure: Regen.
27786 * doc/install.texi: Document --with-riscv-attribute.
27787 * doc/invoke.texi: Document -mriscv-attribute.
27789 * common/config/riscv/riscv-common.c:
27790 Include config/riscv/riscv-protos.h.
27791 (INCLUDE_STRING): Defined.
27792 (RISCV_DONT_CARE_VERSION): Defined.
27793 (riscv_subset_t): Declare.
27794 (riscv_subset_t::riscv_subset_t): New.
27795 (riscv_subset_list): Declare.
27796 (riscv_subset_list::riscv_subset_list): New.
27797 (riscv_subset_list::~riscv_subset_list): Likewise.
27798 (riscv_subset_list::parsing_subset_version): Likewise.
27799 (riscv_subset_list::parse_std_ext): Likewise.
27800 (riscv_subset_list::parse_sv_or_non_std_ext): Likewise.
27801 (riscv_subset_list::add): Likewise.
27802 (riscv_subset_list::lookup): Likewise.
27803 (riscv_subset_list::xlen): Likewise.
27804 (riscv_subset_list::parse): Likewise.
27805 (riscv_supported_std_ext): Likewise.
27806 (current_subset_list): Likewise.
27807 (riscv_parse_arch_string): Using riscv_subset_list::parse to
27810 2019-03-01 Segher Boessenkool <segher@kernel.crashing.org>
27812 * config/rs6000/rs6000.c (rs6000_option_override_internal): If
27813 rs6000_dejagnu_cpu_index is set, use that to override rs6000_cpu_index.
27814 * config/rs6000/rs6000.opt (mdejagnu-cpu=): New option.
27816 2019-03-01 Alexander Monakov <amonakov@ispras.ru>
27818 PR rtl-optimization/85899
27819 * haifa-sched.c (find_fallthru_edge_from): Relax assert to account for
27820 fallthru edges leading to the exit block.
27822 2019-03-01 Tamar Christina <tamar.christina@arm.com>
27825 * config/aarch64/aarch64-option-extensions.def (fp, simd, crypto, fp16,
27826 rdma, dotprod, sha2, sha3, sm4, fp16fml, sve): Collapse line.
27828 2019-03-01 Richard Sandiford <richard.sandiford@arm.com>
27830 PR tree-optimization/89535
27831 * tree-vect-stmts.c (vectorizable_call): Record the vector types
27832 for each operand. Calculate the fallback choice for mask operands
27833 and pass it to vect_get_vec_def_for_operand.
27835 2019-03-01 Richard Biener <rguenther@suse.de>
27837 PR middle-end/89541
27838 * tree-ssa-operands.c (add_stmt_operand): CONST_DECL may
27839 get virtual operands.
27840 (get_expr_operands): Handle CONST_DECL like other decls.
27842 2019-03-01 Jakub Jelinek <jakub@redhat.com>
27844 PR middle-end/89503
27845 * fold-const.c (fold_checksum_tree): Ignore TREE_NO_WARNING bit
27846 on DECL_P and EXPR_P.
27848 2019-03-01 Richard Biener <rguenther@suse.de>
27850 PR middle-end/89497
27851 * tree-cfgcleanup.h (cleanup_tree_cfg): Add SSA update flags
27852 argument, defaulted to zero.
27853 * passes.c (execute_function_todo): Pass down SSA update flags
27854 to cleanup_tree_cfg.
27855 * tree-cfgcleanup.c: Include tree-into-ssa.h and tree-cfgcleanup.h.
27856 (cleanup_tree_cfg_noloop): After cleanup_control_flow_pre update SSA
27858 (cleanup_tree_cfg): Get and pass down SSA update flags.
27860 2019-03-01 Jakub Jelinek <jakub@redhat.com>
27863 * dwarf2out.c (output_comdat_type_unit): Add ATTRIBUTE_UNUSED to
27864 early_lto_debug argument.
27866 2019-02-28 Eric Botcazou <ebotcazou@adacore.com>
27868 PR tree-optimization/89536
27869 * tree-ssa-dom.c (edge_info::derive_equivalences) <BIT_NOT_EXPR>: Test
27870 only whether bit #0 of the value is 0 instead of the entire value.
27872 2019-02-28 Marek Polacek <polacek@redhat.com>
27874 PR c++/87068 - missing diagnostic with fallthrough statement.
27875 * gimplify.c (expand_FALLTHROUGH_r): If IFN_FALLTHROUGH was found
27876 at the end of a seq, save its location to walk_stmt_info.
27877 (expand_FALLTHROUGH): Warn if IFN_FALLTHROUGH is at the end of
27880 2019-02-28 Jan Hubicka <hubicka@ucw.cz>
27883 * tree.c (find_atomic_core_type): Move ahead in file.
27884 (check_base_type): Correctly compare alignments of atomic types.
27886 2019-02-28 H.J. Lu <hongjiu.lu@intel.com>
27889 * config/i386/i386.c (get_builtin_code_for_version): Identify
27890 Westmere from PCLMUL, instead of AES.
27892 2019-02-28 Jakub Jelinek <jakub@redhat.com>
27895 * config/arm/arm.md (*subsi3_carryin_compare_const): Use
27896 trunc_int_for_mode (-INTVAL (...), SImode), just instead of
27899 2019-02-28 Tamar Christina <tamar.christina@arm.com>
27902 * config/aarch64/aarch64-option-extensions.def: Document it.
27903 * config/aarch64/driver-aarch64.c (host_detect_local_cpu): Skip feature
27906 2019-02-28 Jakub Jelinek <jakub@redhat.com>
27909 * convert.c (convert_to_real_1, convert_to_integer_1): Punt for
27910 builtins if they don't have a single scalar floating point argument.
27913 2019-02-27 Bernd Edlinger <bernd.edlinger@hotmail.de>
27915 PR rtl-optimization/89490
27916 * varasm.c (get_block_for_section): Bail out for mergeable sections.
27917 (default_use_anchors_for_symbol_p, output_object_block): Assert the
27918 block section is not mergeable.
27920 2019-02-27 Jakub Jelinek <jakub@redhat.com>
27923 * config/arm/arm.md (arm_casesi_internal): New define_expand. Rename
27924 old define_insn to ...
27925 (*arm_casesi_internal): ... this. Add mode to LABEL_REFs.
27926 * config/arm/thumb2.md (thumb2_casesi_internal): New define_expand.
27927 Rename old define_insn to ...
27928 (*thumb2_casesi_internal): ... this. Add mode to LABEL_REFs.
27929 (thumb2_casesi_internal_pic): New define_expand. Rename old
27931 (*thumb2_casesi_internal_pic): ... this. Add mode to LABEL_REFs.
27932 * config/aarch64/aarch64.md (casesi): Create the casesi_dispatch
27933 MEM manually here, set MEM_READONLY_P and MEM_NOTRAP_P on it.
27935 2019-02-27 Richard Biener <rguenther@suse.de>
27938 * dwarf2out.c (use_debug_types): Disable when in_lto_p.
27940 2019-02-27 Richard Biener <rguenther@suse.de>
27942 * passes.c (should_skip_pass_p): Do not skip cgraph-edge
27945 2019-02-27 Richard Biener <rguenther@suse.de>
27948 * dwarf2out.c (output_comdat_type_unit): Add early_lto_debug
27949 parameter, prefix section name with .gnu.debuglto_ if true.
27950 (dwarf2out_finish): Pass false to output_comdat_type_unit.
27951 (dwarf2out_early_finish): Pass true to output_comdat_type_unit.
27953 2019-02-27 Richard Biener <rguenther@suse.de>
27956 * dwarf2out.c (size_of_die): Key on AT_ref (a)->comdat_type_p
27957 rather than on use_debug_types, doing what output_die does.
27958 (value_format): Likewise.
27960 2019-02-27 Martin Jambor <mjambor@suse.cz>
27961 Martin Sebor <msebor@redhat.com>
27963 * doc/invoke.texi (Warning Options): Reword description of
27964 -Wno-absolute-value.
27966 2019-02-27 Jakub Jelinek <jakub@redhat.com>
27968 PR tree-optimization/89280
27969 * tree-cfgcleanup.c (maybe_dead_abnormal_edge_p,
27970 builtin_setjmp_setup_bb): New functions.
27971 (cleanup_control_flow_pre): Ignore maybe_dead_abnormal_edge_p edges.
27972 When visiting __builtin_setjmp_setup block, queue in special
27973 setjmp_vec vector edges from .ABNORMAL_DISPATCHER to corresponding
27974 __builtin_setjmp_receiver. Remove .ABNORMAL_DISPATCHER basic blocks
27975 from visited after the loop if they don't have any visited successor
27978 2018-02-26 Steve Ellcey <sellcey@marvell.com>
27980 * config/aarch64/aarch64.c (aarch64_get_multilib_abi_name):
27982 (TARGET_GET_MULTILIB_ABI_NAME): New macro.
27984 2019-02-26 Jakub Jelinek <jakub@redhat.com>
27987 * tree.c (valid_constant_size_p): Deal with size INTEGER_CSTs
27988 with types other than sizetype/ssizetype.
27990 2019-02-26 Eric Botcazou <ebotcazou@adacore.com>
27992 * config/sparc/sparc-opts.h (enum processor_type): Rename to...
27993 (enum sparc_processor_type): ...this.
27994 (enum sparc_code_model_type): New enumeration type.
27995 (enum sparc_memory_model_type): Tweak comments.
27996 * config/sparc/sparc.opt (mcpu): Adjust to above renaming.
27998 (mcmodel): Use sparc_code_model enumeration and variable.
27999 (sparc_code_model): New enumeration.
28000 (mdebug): Add Undocumented marker.
28001 * config/sparc/sparc.h (enum cmodel): Delete.
28002 (sparc_cmodel): Likewise.
28003 (TARGET_CM_MEDLOW): Adjust to above renaming.
28004 (TARGET_CM_MEDMID): Likewise.
28005 (TARGET_CM_MEDANY): Likewise.
28006 (TARGET_CM_EMBMEDANY): Likewise.
28007 * config/sparc/sparc.c (sparc_cmodel): Delete.
28008 (sparc_option_override): Remove string/value mapping support for the
28009 code model. Move code and memory model support to after the handling
28010 of target flags. Do private machine setup last.
28011 (sparc_emit_set_symbolic_const64): Use sparc_code_model.
28012 (sparc_legitimize_reload_address): Likewise.
28013 (sparc_output_mi_thunk): Likewise.
28014 * config/sparc/sparc.md (cpu): Adjust comment to above renaming.
28016 2019-02-26 Jakub Jelinek <jakub@redhat.com>
28018 PR tree-optimization/89500
28019 * tree-ssa-strlen.c (stridx_strlenloc): Adjust comment.
28020 (handle_builtin_strlen): Remove noncst_bound variable. Always
28021 optimize strnlen (x, 0) to 0. Optimize strnlen (x, cst) to
28022 cst if the first cst bytes starting at x are known to be non-zero,
28023 even if the string is not zero terminated. Don't try to modify
28024 *si for strnlen. Update strlen_to_stridx only for strlen or if
28025 we can prove strnlen returns the same value as strlen would.
28027 2019-02-26 Martin Liska <mliska@suse.cz>
28029 * alloc-pool.h (struct pool_usage): Remove extra
28031 * bitmap.h (struct bitmap_usage): Likewise.
28032 * ggc-common.c (struct ggc_usage): Likewise.
28033 * mem-stats.h (struct mem_usage): Likewise.
28034 (mem_alloc_description::dump): Print dash lines
28035 here and repeat header at the end of a table report.
28036 It's then more readable.
28037 * tree-phinodes.c (phinodes_print_statistics): Make
28038 horizontal alignment.
28039 * tree-ssanames.c (ssanames_print_statistics): Likewise.
28040 * vec.c (struct vec_usage): Remove extra print_dash_line.
28041 * vec.h (vec_safe_grow_cleared): Pass PASS_MEM_STAT.
28043 2019-02-26 Uroš Bizjak <ubizjak@gmail.com>
28045 * doc/extend.texi (__builtin_object_size):
28046 Use @pxref instead of @xref inside parenthesis.
28047 (__builtin_has_attribute): Add missing comma after @xref.
28048 (__builtin_object_size): Ditto.
28049 * doc/md.texi (cond_*{mode}): Use @samp instead of @var around op1[i].
28051 2019-02-26 Jeff Law <law@redhat.com>
28053 PR rtl-optimization/87761
28054 * regcprop.c (copyprop_hardreg_forward_1): Use REG_UNUSED notes to
28055 detect obviously dead insns and delete them.
28057 2019-02-26 Richard Biener <rguenther@suse.de>
28059 PR tree-optimization/89505
28060 * tree-ssa-structalias.c (compute_dependence_clique): Make sure
28061 to handle restrict pointed-to vars with multiple subvars
28064 2019-02-26 Richard Biener <rguenther@suse.de>
28066 PR tree-optimization/89489
28067 * tree-parloops.c (create_loop_fn): Copy over last_clique.
28069 2019-02-26 Eric Botcazou <ebotcazou@adacore.com>
28071 * tree-ssa-dom.c (edge_info::derive_equivalences) <BIT_IOR_EXPR>: Fix
28072 and move around comment.
28073 <BIT_AND_EXPR>: Likewise.
28074 <BIT_NOT_EXPR>: Add specific handling for boolean types.
28076 2019-02-26 Jakub Jelinek <jakub@redhat.com>
28079 * config/i386/i386.c (remove_partial_avx_dependency): Call
28080 df_analyze etc. before creation of the v4sf_const0 pseudo, rather than
28081 after changing possibly many instructions to use that pseudo. Fix up
28082 insertion of v4sf_const0 setter at the start of bb.
28084 2019-02-25 Sandra Loosemore <sandra@codesourcery.com>
28087 * doc/extend.texi (Variadic Pointer Args): New section.
28089 2019-02-25 Sandra Loosemore <sandra@codesourcery.com>
28090 Martin Sebor <msebor@gmail.com>
28092 * common.opt (Wattribute-alias): Likewise.
28093 * doc/invoke.texi (Option Summary): List general form of
28094 -Wattribute-alias=. List positive form of -Wmissing-attributes.
28095 (-Wmissing-attributes): Invert entry, rewrite and correct default.
28096 Add cross-references.
28097 (-Wattribute-alias): Rewrite and correct default. Mention
28098 considered attributes (same as for -Wmissing-attributes).
28100 2019-02-25 Paul A. Clarke <pc@us.ibm.com>
28102 * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Fix big endian.
28103 (_mm_cvtpd_ps): Likewise.
28104 (_mm_cvttpd_epi32): Likewise.
28107 * config/rs6000/xmmintrin.h (_mm_cvtss_f32): Fix type mismatch.
28108 (_mm_cvt_ss2si): Fix type mismatch and 32-bit.
28111 * config/rs6000/xmmintrin.h (_mm_movemask_pi8): Fix 32-bit.
28113 2019-02-25 Tamar Christina <tamar.christina@arm.com>
28116 * common/config/aarch64/aarch64-common.c
28117 (struct aarch64_option_extension): Add is_synthetic.
28118 (all_extensions): Use it.
28119 (TARGET_OPTION_INIT_STRUCT): Define hook.
28120 (struct gcc_targetm_common): Moved to end.
28121 (all_extensions_by_on): New.
28122 (opt_ext_cmp, typedef opt_ext): New.
28123 (aarch64_option_init_struct): New.
28124 (aarch64_contains_opt): New.
28125 (aarch64_get_extension_string_for_isa_flags): Output smallest set.
28126 * config/aarch64/aarch64-option-extensions.def
28127 (AARCH64_OPT_EXTENSION): Explicitly include AES and SHA2 in crypto.
28128 (fp, simd, crc, lse, fp16, rcpc, rdma, dotprod, aes, sha2, sha3,
28129 sm4, fp16fml, sve, profile, rng, memtag, sb, ssbs, predres):
28130 Set is_synthetic to false.
28131 (crypto): Set is_synthetic to true.
28132 * config/aarch64/driver-aarch64.c (AARCH64_OPT_EXTENSION): Add
28135 2019-02-25 Tamar Christina <tamar.christina@arm.com>
28137 * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
28138 vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32, vfmlslq_low_u32,
28139 vfmlalq_high_u32, vfmlslq_high_u32, vfmlal_lane_low_u32,
28140 vfmlal_lane_high_u32, vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32,
28141 vfmlal_laneq_low_u32, vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32,
28142 vfmlal_laneq_high_u32, vfmlsl_lane_low_u32, vfmlsl_lane_high_u32,
28143 vfmlslq_laneq_low_u32, vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32,
28144 vfmlslq_laneq_high_u32, vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32):
28146 (vfmlal_low_f16, vfmlsl_low_f16, vfmlal_high_f16, vfmlsl_high_f16,
28147 vfmlalq_low_f16, vfmlslq_low_f16, vfmlalq_high_f16, vfmlslq_high_f16,
28148 vfmlal_lane_low_f16, vfmlal_lane_high_f16, vfmlalq_laneq_low_f16,
28149 vfmlalq_lane_low_f16, vfmlal_laneq_low_f16, vfmlalq_laneq_high_f16,
28150 vfmlalq_lane_high_f16, vfmlal_laneq_high_f16, vfmlsl_lane_low_f16,
28151 vfmlsl_lane_high_f16, vfmlslq_laneq_low_f16, vfmlslq_lane_low_f16,
28152 vfmlsl_laneq_low_f16, vfmlslq_laneq_high_f16, vfmlslq_lane_high_f16,
28153 vfmlsl_laneq_high_f16): ... To this.
28154 * config/arm/neon.md: Update comments.
28156 2019-02-25 Tamar Christina <tamar.christina@arm.com>
28158 * config/aarch64/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
28159 vfmlalq_low_u32, vfmlslq_low_u32, vfmlal_high_u32, vfmlsl_high_u32,
28160 vfmlalq_high_u32, vfmlslq_high_u32, vfmlal_lane_low_u32,
28161 vfmlsl_lane_low_u32, vfmlal_laneq_low_u32, vfmlsl_laneq_low_u32,
28162 vfmlalq_lane_low_u32, vfmlslq_lane_low_u32, vfmlalq_laneq_low_u32,
28163 vfmlslq_laneq_low_u32, vfmlal_lane_high_u32, vfmlsl_lane_high_u32,
28164 vfmlal_laneq_high_u32, vfmlsl_laneq_high_u32, vfmlalq_lane_high_u32,
28165 vfmlslq_lane_high_u32, vfmlalq_laneq_high_u32, vfmlslq_laneq_high_u32):
28167 (vfmlal_low_f16, vfmlsl_low_f16, vfmlalq_low_f16, vfmlslq_low_f16,
28168 vfmlal_high_f16, vfmlsl_high_f16, vfmlalq_high_f16, vfmlslq_high_f16,
28169 vfmlal_lane_low_f16, vfmlsl_lane_low_f16, vfmlal_laneq_low_f16,
28170 vfmlsl_laneq_low_f16, vfmlalq_lane_low_f16, vfmlslq_lane_low_f16,
28171 vfmlalq_laneq_low_f16, vfmlslq_laneq_low_f16, vfmlal_lane_high_f16,
28172 vfmlsl_lane_high_f16, vfmlal_laneq_high_f16, vfmlsl_laneq_high_f16,
28173 vfmlalq_lane_high_f16, vfmlslq_lane_high_f16, vfmlalq_laneq_high_f16,
28174 vfmlslq_laneq_high_f16): ... To this.
28176 2019-02-25 Alexander Monakov <amonakov@ispras.ru>
28178 PR rtl-optimization/86096
28179 * df-scan.c (df_mw_compare): Do not check mw_reg fields when
28180 comparing mw_order values.
28182 2019-02-25 Jakub Jelinek <jakub@redhat.com>
28185 * config/arm/arm.md (*subsi3_carryin_const): Use
28186 arm_neg_immediate_operand predicate instead of
28187 arm_not_immediate_operand, "L" constraint instead of "K" and
28188 print it using %n2 instead of %B2.
28189 (*subsi3_carryin_const0): New define_insn.
28190 (*subsi3_carryin_compare_const): Use const_int_I_operand predicate
28191 instead of arm_not_operand and "I" constraint instead of "K" and
28192 print it using %n3 instead of %B2. Instead of using match_dup 2 add
28193 another match_operand and in the condition check that it is negation
28195 (*subsi3_carryin_compare_const0): New define_ins.
28196 (*subdi_di_zesidi): Adjust to use *subsi3_carryin_const0 instead of
28197 *subsi3_carryin_const.
28198 (*arm_cmpdi_insn): Fix splitting into *subsi3_carryin_compare_const,
28199 split into *subsi3_carryin_compare_const0 if the highpart is zero.
28202 * config/arm.vfp.md (*negdf2_vfp): Use
28203 gen_int_mode (0x80000000, SImode) instead of GEN_INT (0x80000000).
28204 * config/arm/neon.md (neon_copysignf<mode>): Likewise.
28206 2019-02-24 Jakub Jelinek <jakub@redhat.com>
28208 PR rtl-optimization/89445
28209 * simplify-rtx.c (simplify_ternary_operation): Don't use
28210 simplify_merge_mask on operands that may trap.
28211 * rtlanal.c (may_trap_p_1): Use FLOAT_MODE_P instead of
28212 SCALAR_FLOAT_MODE_P checks. For integral division by zero, if
28213 second operand is CONST_VECTOR, check if any element could be zero.
28214 Don't expect traps for VEC_{MERGE,SELECT,CONCAT,DUPLICATE} unless
28215 their operands can trap.
28217 2019-02-23 Martin Sebor <msebor@redhat.com>
28219 * gimple-ssa-sprintf.c (target_strtol): Rename...
28220 (target_strtohwi): ...to this. Handle values up to HOST_WIDE_INT_MAX.
28221 (parse_directive): Adjust to name change. Use HOST_WIDE_INT_MAX to
28222 check for range error.
28224 2019-02-23 H.J. Lu <hongjiu.lu@intel.com>
28227 * opts-common.c (prune_options): Also prune joined switches
28228 with Negative and RejectNegative.
28229 * config/i386/i386.opt (march=): Add Negative(march=).
28230 (mtune=): Add Negative(mtune=).
28231 * doc/options.texi: Document Negative used together with Joined
28232 and RejectNegative.
28234 2019-02-22 Martin Sebor <msebor@redhat.com>
28236 * doc/extend.texi (Other Builtins): Add
28237 __builtin_is_constant_evaluated.
28239 2019-02-22 Richard Biener <rguenther@suse.de>
28241 PR tree-optimization/87609
28242 * tree-cfg.c (gimple_duplicate_bb): Only remap inlined cliques.
28244 2019-02-22 Jeff Law <law@redhat.com>
28246 PR rtl-optimization/87761
28247 * config/mips/mips.md: Add new combiner pattern to recognize
28248 a bitfield extraction using (ashiftrt (truncate (ashift (...)))).
28250 2019-02-22 Matthew Malcomson <matthew.malcomson@arm.com>
28253 * config/aarch64/aarch64.md: Use aarch64_general_reg predicate on
28254 destination register in peepholes generating patterns for ADDS/SUBS.
28255 (add<mode>3_compare0,
28256 *addsi3_compare0_uxtw, add<mode>3_compareC,
28257 add<mode>3_compareV_imm, add<mode>3_compareV,
28258 *adds_<optab><ALLX:mode>_<GPI:mode>,
28259 *subs_<optab><ALLX:mode>_<GPI:mode>,
28260 *adds_<optab><ALLX:mode>_shift_<GPI:mode>,
28261 *subs_<optab><ALLX:mode>_shift_<GPI:mode>,
28262 *adds_<optab><mode>_multp2, *subs_<optab><mode>_multp2,
28263 *sub<mode>3_compare0, *subsi3_compare0_uxtw,
28264 sub<mode>3_compare1): Allow stack pointer for source register.
28265 * config/aarch64/predicates.md (aarch64_general_reg): New predicate.
28267 2019-02-22 Martin Sebor <msebor@redhat.com>
28269 PR tree-optimization/88993
28270 PR tree-optimization/88853
28271 * gimple-ssa-sprintf.c (sprintf_dom_walker::call_info::is_file_func):
28273 (sprintf_dom_walker::call_info::is_string_func): New helper.
28274 (format_directive): Only issue "may exceed" 4095/INT_MAX warnings
28275 for formatted string functions.
28276 (sprintf_dom_walker::handle_gimple_call): Fix a typo in a comment.
28278 2019-02-22 Martin Sebor <msebor@redhat.com>
28281 * c-parser.c (sizeof_ptr_memacc_comptypes): Avoid warning in
28282 unreachable subexpressions.
28284 2019-02-22 H.J. Lu <hongjiu.lu@intel.com>
28285 Hongtao Liu <hongtao.liu@intel.com>
28286 Sunil K Pandey <sunil.k.pandey@intel.com>
28289 * config/i386/i386-passes.def: Add
28290 pass_remove_partial_avx_dependency.
28291 * config/i386/i386-protos.h
28292 (make_pass_remove_partial_avx_dependency): New.
28293 * config/i386/i386.c (make_pass_remove_partial_avx_dependency):
28295 (pass_data_remove_partial_avx_dependency): New.
28296 (pass_remove_partial_avx_dependency): Likewise.
28297 (make_pass_remove_partial_avx_dependency): Likewise.
28298 * config/i386/i386.md (avx_partial_xmm_update): New attribute.
28299 (*extendsfdf2): Add avx_partial_xmm_update.
28300 (truncdfsf2): Likewise.
28301 (*float<SWI48:mode><MODEF:mode>2): Likewise.
28302 (SF/DF conversion splitters): Disabled for TARGET_AVX.
28304 2019-02-22 Aldy Hernandez <aldyh@redhat.com>
28306 PR middle-end/85598
28307 * gimple-ssa-sprintf.c (pass_sprintf_length::execute): Enable loop
28310 2019-02-22 Thiago Macieira <thiago.macieira@intel.com>
28313 * config/i386/i386.h (PTA_WESTMERE): Remove PTA_AES.
28314 (PTA_SKYLAKE): Add PTA_AES.
28315 (PTA_GOLDMONT): Likewise.
28317 2019-02-22 Sudakshina Das <sudi.das@arm.com>
28319 * config/aarch64/aarch64.c (aarch64_output_mi_thunk): Add bti
28320 instruction if enabled.
28321 (aarch64_override_options): Remove reference to return address key.
28323 2019-02-22 Richard Biener <rguenther@suse.de>
28325 PR tree-optimization/89440
28326 * tree-vect-loop.c (vect_create_epilog_for_reduction): Remove
28327 not necessary assert.
28329 2019-02-22 Thomas Schwinge <thomas@codesourcery.com>
28332 * omp-general.c (oacc_replace_fn_attrib): Mostly split out into...
28333 (oacc_replace_fn_attrib_attr): ... this new function.
28334 * omp-general.h (oacc_replace_fn_attrib_attr): New prototype.
28335 * config/nvptx/nvptx.c (nvptx_goacc_validate_dims_1): Revert workaround.
28337 2019-02-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
28339 * config/arm/arm-cpus.in (ares): Rename to...
28340 (neoverse-n1): ... This. Add ares as alias.
28341 * config/arm/arm-tables.opt: Regenerate.
28342 * config/arm/arm-tune.md: Likewise.
28343 * doc/invoke.txt (ARM Options): Document neoverse-n1.
28345 2019-02-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
28347 * config/aarch64/aarch64-cores.def (neoverse-e1): Define.
28348 * config/aarch64/aarch64-tune.md: Regenerate.
28349 * doc/invoke.texi (AArch64 Options): Document neoverse-e1 -mcpu option.
28351 2019-02-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
28353 * config/aarch64/aarch64.c (ares_tunings): Rename to...
28354 (neoversen1_tunings): ... This.
28355 * config/aarch64/aarch64-cores.def (ares): Change tuning to the above.
28356 (neoverse-n1): New CPU.
28357 * config/aarch64/aarch64-tune.md: Regenerate.
28358 * doc/invoke.txt (AArch64 Options): Document neoverse-n1.
28360 2019-02-22 Richard Biener <rguenther@suse.de>
28362 PR middle-end/87609
28363 * cfghooks.h (dependence_hash): New typedef.
28364 (struct copy_bb_data): New type.
28365 (cfg_hooks::duplicate_block): Adjust to take a copy_bb_data argument.
28366 (duplicate_block): Likewise.
28367 * cfghooks.c (duplicate_block): Pass down copy_bb_data.
28368 (copy_bbs): Create and pass down copy_bb_data.
28369 * cfgrtl.c (cfg_layout_duplicate_bb): Adjust.
28370 (rtl_duplicate_bb): Likewise.
28371 * tree-cfg.c (gimple_duplicate_bb): If the copy_bb_data arg is not NULL
28372 remap dependence info.
28374 2019-02-22 Richard Biener <rguenther@suse.de>
28376 PR tree-optimization/87609
28377 * tree-core.h (tree_base): Document special clique values.
28378 * tree-inline.c (remap_dependence_clique): Do not use the
28379 special clique value of one.
28380 (maybe_set_dependence_info): Use clique one.
28381 (clear_dependence_clique): New callback.
28382 (compute_dependence_clique): Clear clique one from all refs
28383 before assigning it (again).
28385 2019-02-21 Martin Sebor <msebor@redhat.com>
28387 * doc/extend.texi (__clear_cache): Correct signature.
28389 2019-02-21 Ian Lance Taylor <iant@golang.org>
28392 * varasm.c (decode_addr_const): Call lookup_constant_def rather
28393 than output_constant_def.
28394 (add_constant_to_table): New static function.
28395 (output_constant_def): Call add_constant_to_table.
28396 (tree_output_constant_def): Likewise.
28398 2019-02-21 Jakub Jelinek <jakub@redhat.com>
28401 * builtins.c (fold_builtin_arith_overflow): If first two args are
28402 INTEGER_CSTs, set intres and ovfres to constants rather than calls
28405 2019-02-21 H.J. Lu <hongjiu.lu@intel.com>
28408 * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
28409 error for -mindirect-branch/-mfunction-return with incompatible
28412 2019-02-21 Jakub Jelinek <jakub@redhat.com>
28415 * constraints.md (q): Remove.
28416 * config/arm/ldrdstrd.md (*arm_ldrd, *arm_strd): Use rk constraint
28419 2019-02-21 Martin Jambor <mjambor@suse.cz>
28422 * omp-general.c (omp_extract_for_data): Removed a duplicate call
28423 to omp_adjust_for_condition, moved NE_EXPR code_cond processing...
28424 (omp_adjust_for_condition): ...here. Added necessary parameters.
28425 * omp-general.h (omp_adjust_for_condition): Updated declaration.
28426 * omp-grid.c (grid_attempt_target_gridification): Adjust to pass
28427 proper values to new parameters of omp_adjust_for_condition.
28429 2019-02-20 Jakub Jelinek <jakub@redhat.com>
28431 PR middle-end/89412
28432 * expr.c (expand_assignment): If result is a MEM, use change_address
28433 instead of simplify_gen_subreg.
28435 2019-02-20 Jakub Jelinek <jakub@redhat.com>
28436 David Malcolm <dmalcolm@redhat.com>
28438 PR middle-end/89091
28439 * fold-const.c (decode_field_reference): Return NULL_TREE if
28440 lang_hooks.types.type_for_size returns NULL. Check it before
28441 overwriting *exp_. Use return NULL_TREE instead of return 0.
28443 2019-02-20 Jakub Jelinek <jakub@redhat.com>
28445 PR middle-end/88074
28446 PR middle-end/89415
28447 * toplev.c (do_compile): Double the emin/emax exponents to workaround
28450 2019-02-20 Uroš Bizjak <ubizjak@gmail.com>
28453 * config/i386/i386.c (ix86_atomic_assign_expand_fenv): Check
28454 TARGET_SSE in addition to TARGET_SSE_MATH.
28456 (ix86_excess_precision): Ditto.
28457 (ix86_float_exceptions_rounding_supported_p): Ditto.
28458 (use_rsqrt_p): Ditto.
28459 * config/i386/sse.md (rsqrt<mode>2): Ditto.
28461 2019-02-20 David Malcolm <dmalcolm@redhat.com>
28464 * diagnostic-show-locus.c (layout::calculate_line_spans): Use
28465 linenum_arith_t when determining if two adjacent line spans are
28466 close enough to merge.
28467 (diagnostic_show_locus): Use linenum_arith_t when iterating over
28468 lines within each line_span.
28470 2019-02-20 Andre Vieira <andre.simoesdiasvieira@arm.com>
28473 * lra-constraints.c(uses_hard_regs_p): Fix handling of
28474 paradoxical SUBREGS.
28476 2019-02-20 Li Jia He <helijia@linux.ibm.com>
28479 * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin)
28480 <case ALTIVEC_BUILTIN_VSPLTISB, ALTIVEC_BUILTIN_VSPLTISH,
28481 ALTIVEC_BUILTIN_VSPLTISW>: Don't convert the operand before
28484 2019-02-19 Jonathan Wakely <jwakely@redhat.com>
28486 * config/gcn/gcn.c (print_operand): Fix typo.
28488 2019-02-19 Richard Biener <rguenther@suse.de>
28490 PR middle-end/88074
28491 * toplev.c (do_compile): Initialize mpfr's exponent range
28492 based on available float modes.
28494 2019-02-19 Eric Botcazou <ebotcazou@adacore.com>
28496 * rtlanal.c (get_initial_register_offset): Fall back to the estimate
28497 as long as the epilogue isn't completed.
28499 2019-02-18 Martin Sebor <msebor@redhat.com>
28501 * doc/cpp.texi (Conditional syntax): Add __has_attribute,
28502 __has_cpp_attribute, and __has_include.
28504 2019-02-18 Martin Sebor <msebor@redhat.com>
28506 * doc/invoke.texi (-Wreturn-type): Correct and expand.
28508 2019-02-18 Martin Sebor <msebor@redhat.com>
28510 PR middle-end/89294
28511 * tree.c (valid_constant_size_p): Avoid assuming size is a constant
28513 * tree.h (cst_size_error): Add the cst_size_not_constant enumerator.
28515 2019-02-18 Richard Biener <rguenther@suse.de>
28517 PR tree-optimization/89296
28518 * tree-ssa-loop-ch.c (ch_base::copy_headers): Restrict setting
28519 of no-warning flag to cases that might emit the bogus warning.
28521 2019-02-18 Jakub Jelinek <jakub@redhat.com>
28524 * config/arm/arm.md (*arm_movdi, *movdf_soft_insn): Use "r" instead of
28526 * config/arm/vfp.md (*movdi_vfp): Likewise.
28527 * config/arm/ldrdstrd.md (*arm_ldrd, *arm_strd): Use "r" instead of
28528 "q" constraint for operands[0].
28531 * config/s390/s390.md (*r<noxa>sbg_<mode>_srl_bitmask,
28532 *r<noxa>sbg_<mode>_sll, *r<noxa>sbg_<mode>_srl): Don't construct
28533 pattern in a temporary buffer.
28534 (*r<noxa>sbg_sidi_srl): Likewise. Always use 32 as I3 rather
28535 than 64-operands[2].
28538 * config/s390/s390.c (s390_indirect_branch_attrvalue,
28539 s390_indirect_branch_settings): Define unconditionally.
28540 (s390_set_current_function): Likewise, but guard the whole body except
28541 the s390_indirect_branch_settings call with
28542 #if S390_USE_TARGET_ATTRIBUTE.
28543 (TARGET_SET_CURRENT_FUNCTION): Redefine unconditionally.
28545 * config/s390/s390.md (*<risbg_n>_ior_and_sr_ze,
28546 *<risbg_n>_<mode>_ior_and_lshiftrt, *<risbg_n>_sidi_ior_and_lshiftrt):
28547 Use HOST_WIDE_INT_M1U instead of ~(0ULL).
28548 (*<risbg_n>_and_subregdi_rotr, *<risbg_n>_and_subregdi_rotl): Use
28549 HOST_WIDE_INT_1U instead of 1ULL.
28550 (*pre_z10_extzv<mode>, *pre_z10_extv<mode>): Change mask type from int
28551 to unsigned HOST_WIDE_INT, use HOST_WIDE_INT_1U instead of 1ul.
28552 (*insv<mode><clobbercc_or_nocc>_appendbitsleft,
28553 z = (x << c) | (y >> d) splitters): Use HOST_WIDE_INT_1U
28555 (*insv<mode>_mem_reg, *insvdi_mem_reghigh): Use HOST_WIDE_INT_1U
28558 2019-02-18 Martin Jambor <mjambor@suse.cz>
28560 PR tree-optimization/89209
28561 * tree-sra.c (create_access_replacement): New optional parameter
28562 reg_tree. Use it as a type if non-NULL and access type is not of
28564 (get_repl_default_def_ssa_name): New parameter REG_TYPE, pass it
28565 to create_access_replacement.
28566 (sra_modify_assign): Pass LHS type to get_repl_default_def_ssa_name.
28567 Check lacc is non-NULL before attempting to re-create it on the RHS.
28569 2019-02-18 Martin Liska <mliska@suse.cz>
28572 * cgraph.c (symbol_table::create_edge): Set m_summary_id to -1
28574 (symbol_table::free_edge): Recycle m_summary_id.
28575 * cgraph.h (get_summary_id): New.
28576 (symbol_table::release_symbol): Set m_summary_id to -1
28578 (symbol_table::allocate_cgraph_symbol): Recycle m_summary_id.
28579 * ipa-fnsummary.c (ipa_fn_summary_t): Switch from
28580 function_summary to fast_function_summary.
28581 * ipa-fnsummary.h (ipa_fn_summary_t): Likewise.
28582 * ipa-pure-const.c (class funct_state_summary_t):
28583 Switch from function_summary to fast_function_summary.
28584 * ipa-reference.c (class ipa_ref_var_info_summary_t): Likewise.
28585 (class ipa_ref_opt_summary_t): Switch from function_summary
28586 to fast_function_summary.
28587 * symbol-summary.h (class function_summary_base): New class
28588 that is created from base of former function_summary.
28589 (function_summary_base::unregister_hooks): New.
28590 (class function_summary): Inherit from function_summary_base.
28591 (class call_summary_base): New class
28592 that is created from base of former call_summary.
28593 (class call_summary): Inherit from call_summary_base.
28594 (struct is_same): New.
28595 (class fast_function_summary): New summary class.
28596 (class fast_call_summary): New summary class.
28597 * vec.h (vec_safe_grow_cleared): New function.
28599 2019-02-18 Martin Liska <mliska@suse.cz>
28601 * config/i386/i386.c (ix86_get_multilib_abi_name): New function.
28602 (TARGET_GET_MULTILIB_ABI_NAME): New macro defined.
28603 * doc/tm.texi: Document new target hook.
28604 * doc/tm.texi.in: Likewise.
28605 * target.def: Add new target macro.
28606 * gcc.c (find_fortran_preinclude_file): Do not search multilib
28609 2019-02-17 Alan Modra <amodra@gmail.com>
28612 * config/rs6000/rs6000.md (<bd>_<mode> split): Check for an int
28613 output reg on add insn.
28614 (<bd>tf_<mode> split): Likewise. Match predicates with insn.
28616 2019-02-16 H.J. Lu <hongjiu.lu@intel.com>
28619 * config/i386/sse.md (ssedoublemode): Remove V4HI.
28620 (PMULHRSW): Likewise.
28621 (<ssse3_avx2>_pmulhrsw<mode>3): Require TARGET_SSSE3, not
28623 (ssse3_pmulhrswv4hi3): New expander.
28625 2019-02-16 H.J. Lu <hongjiu.lu@intel.com>
28627 * config/i386/mmx.md (*vec_extractv2si_zext_mem): Doesn't require
28628 MMX. Add isa attribute.
28630 2019-02-16 Jakub Jelinek <jakub@redhat.com>
28632 PR rtl-optimization/66152
28633 * builtins.h (c_readstr): Declare.
28634 * builtins.c (c_readstr): Remove forward declaration. Add
28635 null_terminated_p argument, if false, read all bytes from the
28636 string instead of stopping after '\0'.
28637 * expr.c (string_cst_read_str): New function.
28638 (store_expr): Use string_cst_read_str instead of
28639 builtin_strncpy_read_str. Try to store by pieces the whole
28640 exp_len first, and only if that fails, split it up into
28641 store by pieces followed by clear_storage. Formatting fix.
28643 * config/i386/i386.md (*movqi_internal): Remove static from
28644 buf variable. Use output_asm_insn (buf, operands); return "";
28645 instead of return buf;.
28646 * config/i386/sse.md (<sse>_andnot<mode>3<mask_name>,
28647 *<code><mode>3<mask_name>, *andnot<mode>3, *andnottf3, *<code><mode>3,
28648 *<code>tf3, <mask_codefor><code><mode>3<mask_name>): Likewise.
28650 2019-02-15 Eric Botcazou <ebotcazou@adacore.com>
28652 * config/sparc/linux.h (ASAN_CC1_SPEC): Define.
28653 (CC1_SPEC): Use GNU_USER_TARGET_CC1_SPEC and ASAN_CC1_SPEC.
28654 * config/sparc/linux64.h (ASAN_CC1_SPEC): Likewise.
28655 (CC1_SPEC): Likewise.
28656 * config/sparc/sparc.c (sparc_asan_shadow_offset): Adjust for 64-bit.
28658 2019-02-15 Eric Botcazou <ebotcazou@adacore.com>
28660 * asan.c (asan_emit_stack_protection): Use full-sized mask to align
28661 the base address on 64-bit strict-alignment platforms.
28663 2019-02-15 H.J. Lu <hongjiu.lu@intel.com>
28665 * config/i386/i386.h (VALID_MMX_REG_MODE): Correct the misplaced ')'.
28667 2019-02-15 Uroš Bizjak <ubizjak@gmail.com>
28669 * config/i386/darwin.h (TARGET_FPMATH_DEFAULT_P): New define.
28671 2019-02-15 Aaron Sawdey <acsawdey@linux.ibm.com>
28673 PR rtl-optimization/88308
28674 * shrink-wrap.c (move_insn_for_shrink_wrap): Fix LABEL_NUSES counts
28675 on copied instruction.
28677 2019-02-15 Eric Botcazou <ebotcazou@adacore.com>
28679 * final.c (insn_current_reference_address): Replace test on JUMP_P
28680 with test on jump_to_label_p.
28681 * config/visium/visium-passes.def: New file.
28682 * config/visium/t-visium (PASSES_EXTRA): Define.
28683 * config/visium/visium-protos.h (make_pass_visium_reorg): Declare.
28684 * config/visium/visium.h (TRAMPOLINE_SIZE): Adjust.
28685 (TRAMPOLINE_ALIGNMENT): Define.
28686 * config/visium/visium.c (visium_option_override): Do not register
28687 the machine-specific reorg pass here.
28688 (visium_trampoline_init): Align the BRA insn on a 64-bit boundary
28690 (output_branch): Adjust threshold for long branch instruction.
28691 * config/visium/visium.md (cpu): Move around.
28692 (length): Adjust for the GR6.
28694 2019-02-15 Richard Biener <rguenther@suse.de>
28695 Jakub Jelinek <jakub@redhat.com>
28697 PR tree-optimization/89278
28698 * tree-loop-distribution.c: Include tree-eh.h.
28699 (generate_memset_builtin, generate_memcpy_builtin): Call
28700 rewrite_to_non_trapping_overflow on builtin->size before passing it
28701 to force_gimple_operand_gsi.
28703 2019-02-15 Jakub Jelinek <jakub@redhat.com>
28706 * optc-save-gen.awk: Handle optimize_fast like optimize_size or
28708 * opth-gen.awk: Likewise.
28710 2019-02-15 Uroš Bizjak <ubizjak@gmail.com>
28712 * config/i386/i386.h (TARGET_SUBTARGET64_ISA_DEFAULT):
28713 Enable MMX, SSE and SSE2 by default.
28714 * config/i386/i386.c (ix86_option_override_internal): Do not
28715 explicitly set MMX, SSE and SSE2 flags for TARGET_64BIT here.
28717 2019-02-14 Jakub Jelinek <jakub@redhat.com>
28719 PR rtl-optimization/89354
28720 * combine.c (make_extraction): Punt if extraction_mode is narrower
28723 2019-02-14 Maya Rashish <coypu@sdf.org>
28725 * config.gcc (*-*-netbsd*): Add netbsd-d.o.
28726 * config/netbsd-d.c: New file.
28727 * config/t-netbsd: Add netbsd-d.o
28729 2018-02-14 Steve Ellcey <sellcey@marvell.com>
28731 * config/aarch64/aarch64.c (aarch64_attribute_table): Change
28732 affects_type_identity to true for aarch64_vector_pcs.
28733 (aarch64_comp_type_attributes): New function.
28734 (TARGET_COMP_TYPE_ATTRIBUTES): New macro.
28736 2019-02-14 Tamar Christina <tamar.christina@arm.com>
28739 * config/arm/iterators.md (ANY64): Add V4HF.
28741 2019-02-14 Martin Liska <mliska@suse.cz>
28743 PR rtl-optimization/89242
28744 * dce.c (delete_unmarked_insns): Call free_dominance_info we
28745 process a transformation.
28747 2019-02-14 Jakub Jelinek <jakub@redhat.com>
28749 PR tree-optimization/89314
28750 * fold-const.c (fold_binary_loc): Cast strlen argument to
28751 const char * before dereferencing it. Formatting fixes.
28753 PR middle-end/89284
28754 * passes.def: Swap pass_ubsan and pass_early_warn_uninitialized.
28756 2019-02-13 Ian Lance Taylor <iant@golang.org>
28758 * optc-save-gen.awk: Set var_opt_hash for initial optimizations
28759 and set current index for other optimizations.
28761 2019-02-13 Uroš Bizjak <ubizjak@gmail.com>
28763 * config/i386/sse.md (vec_set<VI4F_256_512:mode>_0): Use
28764 nonimmediate_operand as operand 2 predicate.
28765 (vec_set<VF2_512_256:mode>_0): Ditto.
28766 (vec_set<VI8_AVX_AVX512F:mode>_0): Ditto.
28767 (*vec_concatv2si): Remove alternative 2.
28768 (*vec_concatv4si_0): Use vm constraint for alternative 0.
28769 (*vec_concatv4si_0): Remove preferred_for_speed attribute.
28770 (vec_concatv2di): Split alternatives 4,5,6 to ...
28771 (*vec_concatv2di_0) ... new pattern.
28773 2019-02-13 Wilco Dijkstra <wdijkstr@arm.com>
28776 * config/arm/arm.c (ldm_stm_operation_p) Set
28777 addr_reg_in_reglist correctly for first register.
28778 (load_multiple_sequence): Remove dead base check.
28779 (gen_ldm_seq): Correctly set write_back for Thumb-1.
28781 2019-02-13 Tamar Christina <tamar.christina@arm.com>
28784 * config/aarch64/aarch64-sve.md (*pred_mov<mode>, pred_mov<mode>):
28785 Expose as @aarch64_pred_mov.
28786 * config/aarch64/aarch64.c (aarch64_classify_address):
28787 Use expand_insn which legitimizes operands.
28789 2019-02-13 Martin Liska <mliska@suse.cz>
28791 * builtins.h (expand_builtin_with_bounds): Remove declaration.
28792 * calls.c (struct arg_data): Remove special_slot, pointer_arg
28793 and pointer_offset fields.
28794 (initialize_argument_information): Remove usage of dead
28796 * cgraph.h (struct cgraph_thunk_info): Remove
28797 add_pointer_bounds_args.
28798 * cgraphunit.c (cgraph_node::expand_thunk): Remove usage of dead
28800 (cgraph_node::assemble_thunks_and_aliases): Remove usage of dead
28802 * config/i386/i386.c (ix86_function_arg_advance): Remove
28804 (struct builtin_isa): Remove leaf_p and nothrow_p fields.
28805 (def_builtin): Remove usage of dead fields.
28806 (ix86_add_new_builtins): Likewise.
28807 * ipa-fnsummary.c (compute_fn_summary): Likewise.
28808 * ipa-icf.c (sem_function::equals_wpa): Likewise.
28809 (sem_function::init): Likewise.
28810 (sem_variable::merge): Likewise.
28811 * ipa-visibility.c (function_and_variable_visibility): Likewise.
28812 * ipa.c (symbol_table::remove_unreachable_nodes): Likewise.
28813 * lto-cgraph.c (lto_output_node): Likewise.
28814 (lto_output_varpool_node): Likewise.
28815 (input_node): Likewise.
28816 (input_varpool_node): Likewise.
28817 * lto-streamer-out.c (lto_output): Likewise.
28818 * tree-inline.c (expand_call_inline): Remove usage of
28820 * tree-inline.h (struct copy_body_data): Likewise.
28821 * varpool.c (varpool_node::dump): Likewise.
28823 2019-02-13 Jakub Jelinek <jakub@redhat.com>
28825 PR middle-end/89303
28826 * tree-ssa-structalias.c (set_uids_in_ptset): Or in vi->is_heap_var
28827 into pt->vars_contains_escaped_heap instead of setting
28828 pt->vars_contains_escaped_heap to it.
28830 PR middle-end/89281
28831 * optabs.c (prepare_cmp_insn): Use UINTVAL (size) instead of
28832 INTVAL (size), compare it to GET_MODE_MASK instead of
28833 1 << GET_MODE_BITSIZE.
28836 * config/i386/predicates.md (x86_64_immediate_operand): Allow
28837 TLS UNSPECs offsetted by signed 32-bit CONST_INT even with
28840 2019-02-13 Martin Liska <mliska@suse.cz>
28843 * cfgrtl.c (remove_barriers_from_footer): New function.
28844 (try_redirect_by_replacing_jump): Use it.
28845 (cfg_layout_redirect_edge_and_branch): Likewise.
28847 2019-02-13 Xiong Hu Luo <luoxhu@linux.vnet.ibm.com>
28849 * config/rs6000/altivec.h (vec_sbox_be, vec_cipher_be,
28850 vec_cipherlast_be, vec_ncipher_be, vec_ncipherlast_be): New #defines.
28851 * config/rs6000/crypto.md (CR_vqdi): New define_mode_iterator.
28852 (crypto_vsbox_<mode>, crypto_<CR_insn>_<mode>): New define_insns.
28853 * config/rs6000/rs6000-builtin.def (VSBOX_BE): New BU_CRYPTO_1.
28854 (VCIPHER_BE, VCIPHERLAST_BE, VNCIPHER_BE, VNCIPHERLAST_BE):
28856 * config/rs6000/rs6000.c (builtin_function_type)
28857 <CRYPTO_BUILTIN_VSBOX_BE, CRYPTO_BUILTIN_VCIPHER_BE,
28858 CRYPTO_BUILTIN_VCIPHERLAST_BE, CRYPTO_BUILTIN_VNCIPHER_BE,
28859 CRYPTO_BUILTIN_VNCIPHERLAST_BE>: New switch options.
28860 * doc/extend.texi (vec_sbox_be, vec_cipher_be, vec_cipherlast_be,
28861 vec_ncipher_be, vec_ncipherlast_be): New builtin functions.
28863 2019-02-12 Pat Haugen <pthaugen@us.ibm.com>
28865 * doc/invoke.texi (RS/6000 and PowerPC Options): Remove duplicate
28866 -maltivec. Delete -maltivec=be and -maltivec=le documentation.
28868 2019-02-12 H.J. Lu <hongjiu.lu@intel.com>
28871 * config/i386/i386.md (*movoi_internal_avx): Revert revision
28872 268678 and revision 268657.
28873 (*movti_internal): Likewise.
28875 2019-02-12 Ilya Leoshkevich <iii@linux.ibm.com>
28878 * config/s390/s390.c (s390_decompose_address): Update comment.
28879 (s390_check_qrst_address): Reject invalid address forms after
28882 2019-02-12 Martin Liska <mliska@suse.cz>
28885 * ipa-pure-const.c (propagate_pure_const): Revert hunk as
28886 we need default values of funct_state for a function that
28889 2019-02-12 Eric Botcazou <ebotcazou@adacore.com>
28891 * asan.c (asan_expand_mark_ifn): Take into account the alignment of
28892 the object to pick the size of stores on strict-alignment platforms.
28894 * config/sparc/sparc.md (*movsi_insn): Minor tweak.
28895 (*movdi_insn_sp32): Likewise.
28896 (*movdi_insn_sp64): Likewise.
28898 2019-02-12 Jan Hubicka <hubicka@ucw.cz>
28901 * cgraphunit.c (analyze_functions): Clear READONLY flag for external
28902 types that needs constructiong.
28903 * tree.h (may_be_aliased): Do not check TYPE_NEEDS_CONSTRUCTING.
28905 2019-02-12 Richard Biener <rguenther@suse.de>
28907 PR tree-optimization/89253
28908 * tree-ssa-loop-split.c (tree_ssa_split_loops): Check we can
28909 duplicate the loop.
28911 2019-02-11 David Malcolm <dmalcolm@redhat.com>
28914 * input.c (selftest::test_line_offset_overflow): New selftest.
28915 (selftest::input_c_tests): Call it.
28917 2019-02-11 Martin Sebor <msebor@redhat.com>
28919 PR tree-optimization/88771
28920 * gimple-ssa-warn-restrict.c (pass_wrestrict::gate): Also enable
28921 when -Wstringop-overflow is set.
28922 (builtin_memref::builtin_memref): Adjust excessive upper bound
28923 only when lower bound is not excessive.
28924 (maybe_diag_overlap): Detect and diagnose excessive bounds via
28925 -Wstringop-ovefflow.
28926 (maybe_diag_offset_bounds): Rename...
28927 (maybe_diag_access_bounds): ...to this.
28928 (check_bounds_or_overlap): Adjust for name change above.
28930 2019-02-11 Martin Sebor <msebor@redhat.com>
28933 * builtins.c (max_object_size): Move from here...
28934 * builtins.h (max_object_size): ...and here...
28935 * tree.c (max_object_size): ...to here...
28936 * tree.h (max_object_size): ...and here.
28938 2019-02-11 Bill Schmidt <wschmidt@linux.ibm.com>
28940 * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Shift-right
28941 and shift-left vector built-ins need to include a TRUNC_MOD_EXPR
28942 for correct semantics.
28944 2019-02-11 Alan Modra <amodra@gmail.com>
28946 * doc/invoke.texi (man page RS/6000 and PowerPC Options): Mention
28947 -mlongcall and -mpltseq.
28948 (RS/6000 and PowerPC Options <-mlongcall>): Mention inline PLT calls.
28949 (RS/6000 and PowerPC Options <-mpltseq>): Document.
28950 * config/rs6000/rs6000.h (TARGET_PLTSEQ): Define.
28951 * config/rs6000/sysv4.opt (mpltseq): New option.
28952 * config/rs6000/sysv4.h (TARGET_PLTSEQ): Redefine.
28953 (SUBTARGET_OVERRIDE_OPTIONS): Error if given -mpltseq when assembler
28954 support is lacking. Don't allow -mpltseq with -mbss-plt.
28955 * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Warn if
28956 -mpltseq given for ELFv1.
28957 * config/rs6000/rs6000.c (rs6000_call_aix): Comment on UNSPEC_PLTSEQ.
28958 Only use UNSPEC_PLTSEQ for inline PLT calls.
28959 (rs6000_call_sysv, rs6000_sibcall_sysv): Expand comments. Only
28960 use UNSPEC_PLTSEQ for inline PLT calls.
28961 (rs6000_indirect_call_template_1, rs6000_longcall_ref),
28962 (rs6000_call_aix, rs6000_call_sysv, rs6000_sibcall_sysv): Replace
28963 uses of HAVE_AS_PLTSEQ with TARGET_PLTSEQ, simplifying.
28964 * config/rs6000/rs6000.md (pltseq_tocsave_<mode>),
28965 (pltseq_plt16_ha_<mode>, pltseq_plt16_lo_<mode>),
28966 (pltseq_mtctr_<mode>): Likewise.
28968 2019-02-11 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
28970 * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Use 8-byte strings with
28972 * configure: Regenerate.
28974 2019-02-11 Jakub Jelinek <jakub@redhat.com>
28977 * config/arm/ldrdstrd.md (*arm_ldrd, *arm_strd): Use q constraint
28980 2019-02-11 Hans-Peter Nilsson <hp@axis.com>
28982 * function.c (assign_parm_setup_block): Use the stored
28983 size, not the passed size, when allocating stack-space,
28984 also for a parameter with alignment larger than
28985 MAX_SUPPORTED_STACK_ALIGNMENT.
28987 2019-02-11 Martin Liska <mliska@suse.cz>
28990 * ipa-cp.c (build_toporder_info): Remove usage of a param.
28991 * ipa-inline.c (inline_small_functions): Likewise.
28992 * ipa-pure-const.c (propagate_pure_const): Likewise.
28993 (propagate_nothrow): Likewise.
28994 * ipa-reference.c (propagate): Likewise.
28995 * ipa-utils.c (struct searchc_env): Remove unused field.
28996 (searchc): Always search across AVAIL_INTERPOSABLE.
28997 (ipa_reduced_postorder): Always allow AVAIL_INTERPOSABLE as
28998 the only called IPA pure const can properly not propagate
28999 across interposable boundary.
29000 * ipa-utils.h (ipa_reduced_postorder): Remove param.
29002 2019-02-11 Chung-Ju Wu <jasonwucj@gmail.com>
29004 * config/nds32/nds32.md (call_internal, call_value_internal,
29005 sibcall_internal, sibcall_value_internal): Use SImode for mem rtx.
29007 2019-02-11 Hans-Peter Nilsson <hp@axis.com>
29009 * config/cris/cris.c (cris_preferred_minimum_alignment): Fix name
29012 2019-02-10 H.J. Lu <hongjiu.lu@intel.com>
29014 * config/i386/constraints.md (Yd): Replace AVX512BW with AVX512DQ
29017 2019-02-10 Chung-Ju Wu <jasonwucj@gmail.com>
29019 * config.gcc (with_nds32_lib): Set default --with-nds32-lib correctly.
29021 2019-02-10 Jakub Jelinek <jakub@redhat.com>
29023 PR tree-optimization/89268
29024 * tree-if-conv.c (version_loop_for_if_conversion): Push to preds only
29025 if preds is non-NULL.
29027 2019-02-09 Jan Hubicka <hubicka@ucw.cz>
29030 * tree.c (fld_simplified_type_name): Also keep TYPE_DECL for
29033 2019-02-10 Monk Chiang <sh.chiang04@gmail.com>
29035 * config/nds32/nds32.md (trap): New pattern.
29037 2019-02-10 Monk Chiang <sh.chiang04@gmail.com>
29039 * config/nds32/nds32.c (nds32_dwarf_register_span): Refine register
29042 2019-02-10 Chung-Ju Wu <jasonwucj@gmail.com>
29044 * config/nds32/nds32-md-auxiliary.c (nds32_spilt_doubleword): Support
29047 2019-02-09 Jan Hubicka <hubicka@ucw.cz>
29049 * ipa-visibility.c (localize_node): Also do not localize
29050 LDPR_PREVAILING_DEF_IRONLY_EXP.
29052 2019-02-09 Jan Hubicka <hubicka@ucw.cz>
29055 * tree.c (fld_simplified_type_name): Use DECL_ASSEMBLER_NAME_SET_P
29056 instead of type_with_linkage.
29058 2019-02-09 Jan Hubicka <hubicka@ucw.cz>
29061 * params.def (uninlined-function-insns, uninlined-function-time,
29062 uninlined-thunk-insns, uninlined-thunk-time): Add artificial upper
29063 bound so we don't get overflows.
29065 2019-02-09 Aaron Sawdey <acsawdey@linux.ibm.com>
29067 * config/rs6000/rs6000-string.c (expand_compare_loop,
29068 expand_block_compare): Insert REG_BR_PROB notes in inline expansion of
29071 2019-02-09 Jakub Jelinek <jakub@redhat.com>
29073 PR middle-end/89246
29074 * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
29075 If !node->definition and TYPE_ARG_TYPES is non-NULL, use
29076 TYPE_ARG_TYPES instead of DECL_ARGUMENTS.
29078 2019-02-09 Alan Modra <amodra@gmail.com>
29081 * config/rs6000/rs6000.c (save_reg_p): Correct calls_eh_return
29082 case. Match logic in rs6000_emit_prologue emitting pic_offset_table
29085 2019-02-08 Vladimir Makarov <vmakarov@redhat.com>
29087 PR middle-end/88560
29088 * lra-constraints.c (process_alt_operands): Don't increase reject
29089 for memory when offset memory is required.
29091 2019-02-08 Robin Dapp <rdapp@linux.ibm.com>
29093 * config/s390/vector.md: Implement vector copysign.
29095 2019-02-08 H.J. Lu <hongjiu.lu@intel.com>
29097 * expr.c (expand_constructor): Correct indentations.
29099 2019-02-08 Richard Biener <rguenther@suse.de>
29101 PR tree-optimization/89247
29102 * tree-if-conv.c: Include tree-cfgcleanup.h.
29103 (version_loop_for_if_conversion): Record LOOP_VECTORIZED call.
29104 (tree_if_conversion): Pass through predicate vector.
29105 (pass_if_conversion::execute): Do CFG cleanup and SSA update
29106 inline, see if any if-converted loops we refrece in
29107 LOOP_VECTORIZED calls vanished and fixup.
29108 * tree-if-conv.h (tree_if_conversion): Adjust prototype.
29110 2019-02-08 Ilya Leoshkevich <iii@linux.ibm.com>
29112 * config/s390/constraints.md (jdd): New constraint.
29114 2019-02-08 H.J. Lu <hongjiu.lu@intel.com>
29117 * config/i386/i386.md (*movoi_internal_avx): Set mode to XI for
29118 upper 16 vector registers without TARGET_AVX512VL.
29119 (*movti_internal): Likewise.
29121 2019-02-08 Jakub Jelinek <jakub@redhat.com>
29123 PR rtl-optimization/89234
29124 * except.c (copy_reg_eh_region_note_forward): Return if note_or_insn
29125 is a NOTE, CODE_LABEL etc. - rtx_insn * other than INSN_P.
29126 (copy_reg_eh_region_note_backward): Likewise.
29128 2019-02-08 Richard Biener <rguenther@suse.de>
29130 PR middle-end/89223
29131 * tree-data-ref.c (initialize_matrix_A): Fail if constant
29132 doesn't fit in HWI.
29133 (analyze_subscript_affine_affine): Handle failure from
29134 initialize_matrix_A.
29136 2019-02-08 Jakub Jelinek <jakub@redhat.com>
29138 * cfganal.c (pre_and_rev_post_order_compute_fn): Use fn instead of
29141 2019-02-07 David Malcolm <dmalcolm@redhat.com>
29143 PR tree-optimization/86637
29144 PR tree-optimization/89235
29145 * tree-vect-loop.c (optimize_mask_stores): Add an
29146 auto_purge_vect_location sentinel to ensure that vect_location is
29148 * tree-vectorizer.c
29149 (auto_purge_vect_location::~auto_purge_vect_location): New dtor.
29150 (try_vectorize_loop_1): Add an auto_purge_vect_location sentinel
29151 to ensure that vect_location is purged on exit.
29152 (pass_slp_vectorize::execute): Likewise, replacing the manual
29154 * tree-vectorizer.h (class auto_purge_vect_location): New class.
29156 2019-02-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
29158 * config/aarch64/iterators.md (max_opp): New code_attr.
29159 (USMAX): New code iterator.
29160 * config/aarch64/predicates.md (aarch64_smin): New predicate.
29161 (aarch64_smax): Likewise.
29162 * config/aarch64/aarch64-simd.md (abd<mode>_3): Rename to...
29163 (*aarch64_<su>abd<mode>_3): ... Change RTL representation to
29166 2019-02-07 H.J. Lu <hongjiu.lu@intel.com>
29169 * config/i386/i386.md (*movoi_internal_avx): Set mode to OI
29170 for TARGET_AVX512VL.
29171 (*movti_internal): Set mode to TI for TARGET_AVX512VL.
29173 2019-02-07 Andreas Krebbel <krebbel@linux.ibm.com>
29175 * config/s390/s390-builtin-types.def: Add new types.
29176 * config/s390/s390-builtins.def: (s390_vec_xl, s390_vec_xld2)
29177 (s390_vec_xlw4): Make the memory operand into a const pointer.
29178 (s390_vec_xld2, s390_vec_xlw4): Add a variant for single precision
29180 * config/s390/s390-c.c (s390_expand_overloaded_builtin): Generate
29181 a new vector type with the alignment of the scalar memory operand.
29183 2019-02-07 Matthew Malcomson <matthew.malcomson@arm.com>
29184 Jakub Jelinek <jakub@redhat.com>
29187 * config/arm/arm-protos.h (valid_operands_ldrd_strd,
29188 arm_count_ldrdstrd_insns): New declarations.
29189 * config/arm/arm.c (mem_ok_for_ldrd_strd): Remove broken handling of
29191 (valid_operands_ldrd_strd): New function.
29192 (arm_count_ldrdstrd_insns): New function.
29193 * config/arm/ldrdstrd.md: Change peepholes to generate PARALLEL SImode
29194 sets instead of single DImode set and define new insns to match this.
29196 2019-02-07 Tamar Christina <tamar.christina@arm.com>
29198 * config/aarch64/aarch64-builtins.c (aarch64_fcmla_lane_builtin_data):
29199 Make it a C initializer.
29201 2019-02-07 Tamar Christina <tamar.christina@arm.com>
29204 * config/arm/neon.md (*neon_mov<mode>): Add r -> r case.
29206 2019-02-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
29208 * config/arm/neon.md (neon_<sup>dot<vsi2qi>):
29209 Use neon_dot<q> for type.
29210 (neon_<sup>dot_lane<vsi2qi>): Likewise.
29212 2019-02-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
29214 * config/aarch64/aarch64-simd.md (aarch64_<sur>dot<vsi2qi>):
29215 Use neon_dot<q> for type.
29216 (aarch64_<sur>dot_lane<vsi2qi>): Likewise.
29217 (aarch64_<sur>dot_laneq<vsi2qi>): Likewise.
29219 2019-02-06 Vladimir Makarov <vmakarov@redhat.com>
29221 PR rtl-optimization/89225
29222 * lra-constaints.c (simplify_operand_subreg): Add subreg mode
29225 2019-02-06 Eric Botcazou <ebotcazou@adacore.com>
29227 * config/i386/i386.c (ix86_expand_prologue): Emit a memory blockage
29228 after restoring registers saved to allocate the frame on Windows.
29230 2019-02-06 Richard Biener <rguenther@suse.de>
29232 PR tree-optimization/89182
29233 * graphite.h (cached_scalar_evolution_in_region): Declare.
29234 * graphite.c (struct seir_cache_key): New.
29235 (struct sese_scev_hash): Likewise.
29236 (seir_cache): New global.
29237 (cached_scalar_evolution_in_region): New function.
29238 (graphite_transform_loops): Allocate and release seir_cache.
29239 * graphite-isl-ast-to-gimple.c (get_rename_from_scev): Use
29240 cached_scalar_evolution_in_region.
29241 * graphite-scop-detection.c (scop_detection::can_represent_loop):
29243 (scop_detection::graphite_can_represent_expr: Use
29244 cached_scalar_evolution_in_region.
29245 (scop_detection::stmt_simple_for_scop_p): Likewise.
29246 (find_params_in_bb): Likewise.
29247 (gather_bbs::before_dom_children): Likewise.
29248 * graphite-sese-to-poly.c (create_pw_aff_from_tree): Likewise.
29249 (add_loop_constraints): Likewise.
29251 2019-02-06 Jakub Jelinek <jakub@redhat.com>
29253 PR middle-end/89210
29254 * fold-const-call.c (fold_const_vec_convert): Pass true as last
29255 operand to new_unary_operation only if both element types are integral
29256 and it isn't a widening conversion. Return NULL_TREE if
29257 new_unary_operation failed.
29259 2019-02-05 Andreas Krebbel <krebbel@linux.ibm.com>
29262 * config/s390/s390.md: Remove load and test FP splitter.
29264 2019-02-05 Aaron Sawdey <acsawdey@linux.ibm.com>
29267 * config/rs6000/rs6000-string.c (do_ifelse, expand_cmp_vec_sequence,
29268 expand_compare_loop, expand_block_compare_gpr,
29269 expand_strncmp_align_check, expand_strncmp_gpr_sequence): Insert
29270 REG_BR_PROB notes in inline expansion of memcmp/strncmp. Add
29271 #include "profile-count.h" and "predict.h" for types and functions
29272 needed to work with REG_BR_PROB notes.
29274 2019-02-05 Aaron Sawdey <acsawdey@linux.ibm.com>
29277 * config/rs6000/rs6000.md (<bd>tf_<mode>): Generate a local label
29278 for the long branch case.
29280 2019-02-05 Jakub Jelinek <jakub@redhat.com>
29283 * dce.c (delete_unmarked_insns): Don't remove no-op moves if they
29284 can throw, non-call exceptions are enabled and we can't delete
29285 dead exceptions or alter cfg. Set must_clean if
29286 delete_insn_and_edges returns true, don't set it blindly for calls.
29287 Assert that delete_unreachable_blocks is called only if can_alter_cfg.
29289 PR rtl-optimization/89195
29290 * combine.c (make_extraction): For MEMs, don't extract bytes outside
29291 of the original MEM.
29293 2019-02-05 Martin Liska <mliska@suse.cz>
29295 PR gcov-profile/89000
29296 * gcov.c (function_summary): Remove argument.
29297 (file_summary): New function.
29298 (print_usage): Replace tabs with spaces.
29299 (generate_results): Use new function file_summary.
29301 2019-02-05 Jakub Jelinek <jakub@redhat.com>
29304 * optabs.c (prepare_cmp_insn): Pass x and y to
29305 emit_block_comp_via_libcall rather than XEXP (x, 0) and XEXP (y, 0).
29307 2019-02-05 Richard Biener <rguenther@suse.de>
29309 PR middle-end/89150
29310 * bitmap.h (struct bitmap_obstack): Do not mark GTY.
29311 (struct bitmap_element): Drop chain_prev so we properly recurse on
29312 the prev member, supporting tree views.
29313 (struct bitmap_head): GTY skip the obstack member.
29315 2019-02-04 Alexander Monakov <amonakov@ispras.ru>
29318 * doc/extend.texi (Vector Extensions): Add an example of using vector
29319 types together with x86 intrinsics.
29321 2019-02-04 Alan Modra <amodra@gmail.com>
29323 * config/rs6000/rs6000.c (rs6000_indirect_call_template_1): Increase
29324 str[] size to 160, and comment.
29326 2019-02-04 Alan Modra <amodra@gmail.com>
29328 * config/rs6000/rs6000.c (rs6000_indirect_call_template_1),
29329 (rs6000_pltseq_template): Guard output of TLS markers with
29330 TARGET_TLS_MARKERS.
29331 (rs6000_longcall_ref, rs6000_call_aix, rs6000_call_sysv),
29332 (rs6000_sibcall_sysv): Ignore TARGET_TLS_MARKERS when deciding
29333 to use inline PLT sequences.
29334 * config/rs6000/rs6000.md (pltseq_tocsave_<mode>),
29335 (pltseq_plt16_ha_<mode>, pltseq_plt16_lo_<mode>),
29336 (pltseq_mtctr_<mode>): Don't test TARGET_TLS_MARKERS in predicate.
29338 2019-02-04 Martin Liska <mliska@suse.cz>
29341 * ipa-fnsummary.c (estimate_edge_devirt_benefit): Bail
29342 out when ipa_fn_summaries does not contain entry for callee.
29344 2019-02-04 Eric Botcazou <ebotcazou@adacore.com>
29346 * config/sparc/sparc.h: Remove superfluous blank lines.
29347 * config/sparc/sparc.c (global_offset_table_rtx): Rename into...
29348 (got_register_rtx): ...this.
29349 (sparc_got): Adjust to above renaming.
29350 (sparc_tls_got): Likewise.
29351 (sparc_delegitimize_address): Likewise.
29352 (sparc_output_mi_thunk): Likewise.
29353 (sparc_init_pic_reg): Likewise.
29354 (save_local_or_in_reg_p): Fix test on the GOT register.
29355 (USE_HIDDEN_LINKONCE): Move around.
29356 (get_pc_thunk_name): Likewise.
29357 (gen_load_pcrel_sym): Likewise.
29358 (load_got_register): Likewise.
29360 2019-02-04 Kito Cheng <kito.cheng@gmail.com>
29362 * config/nds32/linux.h (GLIBC_DYNAMIC_LINKER): Define the naming rule
29363 of the dynamic linker: "ld-linux-nds32[le|be][f].so.1".
29365 2019-02-04 Chung-Ju Wu <jasonwucj@gmail.com>
29367 * config/nds32/nds32.c (nds32_legitimate_address_p): Add TLS model
29368 into consideration.
29370 2019-02-04 Chung-Ju Wu <jasonwucj@gmail.com>
29372 * config.gcc (with_nds32_lib, glibc):
29373 Remove TARGET_DEFAULT_TLSDESC_TRAMPOLINE=0 setting.
29374 * config/nds32/linux.h (TARGET_DEFAULT_TLSDESC_TRAMPOLINE): Delete.
29375 (NDS32_TLSDESC_TRAMPOLINE_SPEC): Delete.
29377 2019-02-03 Uroš Bizjak <ubizjak@gmail.com>
29380 * config/i386/i386.md (*sqrt<mode>2_sse): Add (v,0) alternative.
29381 Do not prefer (v,v) alternative for non-AVX targets and (m,v)
29382 alternative for speed when TARGET_SSE_PARTIAL_REG_DEPENDENCY is set.
29383 (*rcpsf2_sse): Ditto.
29384 (*rsqrtsf2_sse): Ditto.
29385 (sse4_1_round<mode<2): Ditto.
29387 2019-02-03 Richard Biener <rguenther@suse.de>
29390 * dwarf2out.c (copy_ancestor_tree): Register non-stubs as
29393 2019-02-02 Jakub Jelinek <jakub@redhat.com>
29395 PR middle-end/87887
29396 * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
29397 Punt with warning on aggregate return or argument types. Ignore
29398 type/mode checking for uniform arguments.
29400 2019-02-01 Segher Boessenkool <segher@kernel.crashing.org>
29402 * combine.c (try_combine): Do not print "Can't combine" messages unless
29403 printing failed combination attempts.
29405 2019-02-01 Martin Jambor <mjambor@suse.cz>
29408 * omp-grid.c (grid_mark_variable_segment): Set assembler name of group
29409 segment and global segment variables before making them static.
29411 2019-02-01 Martin Jambor <mjambor@suse.cz>
29413 * omp-grid.c (grid_target_follows_gridifiable_pattern): Guard two
29414 missed optimization dump with dump_enabled_p.
29416 2019-02-01 Richard Biener <rguenther@suse.de>
29418 PR middle-end/88597
29419 * tree-scalar-evolution.c (analyze_scalar_evolution): Set up
29420 the instantiate cache.
29421 (instantiate_scev_binary): Elide second operand procesing
29422 if equal to the first.
29423 * tree-chrec.c (chrec_contains_symbols): Add visited set.
29424 (chrec_contains_undetermined): Likewise.
29425 (tree_contains_chrecs): Likewise.
29427 2019-02-01 Jan Hubicka <hubicka@ucw.cz>
29429 * parms.def (MAX_INLINE_INSNS_SINGLE): Reduce from 400 to 200.
29431 2019-02-01 Jakub Jelinek <jakub@redhat.com>
29433 PR tree-optimization/89143
29434 * wide-int-range.h (wide_int_range_absu): Declare.
29435 * wide-int-range.cc (wide_int_range_absu): New function.
29436 * tree-vrp.c (extract_range_from_unary_expr): Handle ABSU_EXPR.
29438 PR tree-optimization/88107
29439 * tree-cfg.c (find_outermost_region_in_block): Add ALL argument,
29440 instead of assertion that eh_region_outermost is non-NULL, if it
29441 is NULL, set *ALL to true and return NULL.
29442 (move_sese_region_to_fn): Adjust caller, if all is set, call
29443 duplicate_eh_regions with NULL region.
29445 2019-02-01 Richard Biener <rguenth@suse.de>
29447 PR rtl-optimization/88593
29448 * mode-switching.c (optimize_mode_switching): Free dominators before
29449 calling cleanup_cfg.
29451 2019-02-01 Bin Cheng <bin.cheng@linux.alibaba.com>
29453 PR tree-optimization/88932
29454 * tree-predcom.c (try_combine_chains): Get loop bbs in dom order.
29456 2019-01-31 Jakub Jelinek <jakub@redhat.com>
29458 PR middle-end/89137
29459 * omp-low.c (lower_omp_task_reductions): Drop redundant test to avoid
29460 bogus clang warning.
29462 2019-01-31 Uroš Bizjak <ubizjak@gmail.com>
29465 * config/i386/i386.md (*extendsfdf2): Split out reg->reg
29466 alternative to avoid partial SSE register stall for TARGET_AVX.
29467 (truncdfsf2): Ditto.
29468 (sse4_1_round<mode>2): Ditto.
29470 2018-01-31 Bill Schmidt <wschmidt@linux.ibm.com>
29472 PR tree-optimization/89008
29473 * gimple-ssa-strength-reduction.c (slsr_process_mul): Don't
29474 process anything of the form X * 0.
29476 2019-01-31 Richard Biener <rguenther@suse.de>
29478 PR tree-optimization/89135
29479 * tree-ssa-phiprop.c (pass_phiprop::execute): Skip blocks
29480 with abnormal preds.
29482 2019-01-31 Jakub Jelinek <jakub@redhat.com>
29485 * ipa-inline.c (sanitize_attrs_match_for_inline_p): Allow inlining
29486 always_inline callees into no_sanitize_address callers.
29488 2019-01-31 Richard Biener <rguenther@suse.de>
29490 PR rtl-optimization/89115
29491 * lra.c (lra_rtx_hash): Properly hash CONST_INT values.
29493 2019-01-30 Martin Sebor <msebor@redhat.com>
29496 * doc/extend.texi (cast to a union): Correct and expand.
29498 2019-01-30 Vladimir Makarov <vmakarov@redhat.com>
29500 PR rtl-optimization/87246
29501 * lra-constraints.c (simplify_operand_subreg): Reload memory
29502 in subreg if the address became invalid.
29504 2019-01-30 Bill Schmidt <wschmidt@linux.ibm.com>
29507 * config/rs6000/vsx.md (*vsx_reduc_<VEC_reduc_name>_v4sf_scalar):
29508 Disable for little-endian.
29510 2019-01-30 Richard Biener <rguenther@suse.de>
29512 PR rtl-optimization/89115
29513 * opts.c (default_options_optimization): Reduce
29514 PARAM_MAX_DSE_ACTIVE_LOCAL_STORES by a factor of 10 at -O1.
29515 Make PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP reduction relative
29518 2019-01-30 Kelvin Nilsen <kelvin@gcc.gnu.org>
29520 * config/rs6000/rs6000-c.c (altivec-resolve_overloaded_builtin):
29521 Change handling of ALTIVEC_BUILTIN_VEC_EXTRACT. Coerce result to
29522 type of vector element when vec_extract is implemented by direct
29525 2019-01-30 Thomas Schwinge <thomas@codesourcery.com>
29527 * doc/invoke.texi (C Language Options): List "-fopenacc-dim".
29529 2019-01-30 Richard Biener <rguenther@suse.de>
29531 PR tree-optimization/89111
29532 * tree-ssa-loop-im.c (gather_mem_refs_stmt): Restrict
29533 canonicalization to appropriately sized access types.
29535 2019-01-30 Jakub Jelinek <jakub@redhat.com>
29538 * config/i386/i386.c (ix86_warn_parameter_passing_abi): Don't warn
29539 for arguments to functions that are TU-local and shouldn't be
29540 referenced by assembly.
29542 2019-01-30 Ulrich Drepper <drepper@redhat.com>
29544 * dumpfile.c (opt_info_switch_p_1): Ignore '-' if it appears
29547 2019-01-29 Martin Sebor <msebor@redhat.com>
29550 * gimple-fold.c (fold_array_ctor_reference): Avoid zero-length arrays.
29552 2019-01-29 Jakub Jelinek <jakub@redhat.com>
29556 * omp-simd-clone.c (simd_clone_clauses_extract)
29557 <case OMP_CLAUSE_ALIGNED>: Ignore clauses with NULL
29558 OMP_CLAUSE_ALIGNED_ALIGNMENT.
29560 2019-01-29 Vineet Gupta <vgupta@synopsys.com>
29562 * config.gcc: Force .init_array for ARC.
29564 2019-01-29 Richard Biener <rguenther@suse.de>
29567 * dwarf2out.c (collect_skeleton_dies): New helper.
29568 (copy_decls_for_unworthy_types): Call it.
29569 (build_abbrev_table): Assert we do not try to replace
29570 DW_AT_signature refs with local refs.
29572 2019-01-28 Jakub Jelinek <jakub@redhat.com>
29574 PR middle-end/89002
29575 * gimplify.c (gimplify_omp_for): When adding OMP_CLAUSE_*_GIMPLE_SEQ
29576 for lastprivate/linear IV, push gimplify context around gimplify_assign
29577 and, if it needed any temporaries, pop it into a gimple bind around the
29580 2019-01-28 Bernd Edlinger <bernd.edlinger@hotmail.de>
29582 * common.opt (-Wattribute-alias): Remove "no-" from name.
29583 Make -Wattribute-alias command line option and
29584 #pragma GCC diagnostic ignored "-Wattribute-alias" work again.
29586 2019-01-28 Jakub Jelinek <jakub@redhat.com>
29589 * doc/invoke.texi (-mclwb, -mprfchw, -mrdpid, -mrdseed, -msgx,
29590 -madx, -mhle, -mavx5124fmaps, -mavx512vnni, -mavx5124vnniw): Document
29592 (bmi2): Add missing @opindex.
29593 * doc/extend.texi (x86 target attribute): Move fma4, lwp, ssse3
29594 options alphabetically. Add missing 3dnow, 3dnowa, adx, avx, avx2,
29595 avx5124fmaps, avx5124vnniw, avx512bitalg, avx512bw, avx512cd,
29596 avx512dq, avx512er, avx512f, avx512ifma, avx512pf, avx512vbmi,
29597 avx512vbmi2, avx512vl, avx512vnni, avx512vpopcntdq, bmi, bmi2,
29598 cldemote, clflushopt, clwb, clzero, crc32, cx16, f16c, fma, fsgsbase,
29599 fxsr, gfni, hle, lzcnt, movbe, movdir64b, movdiri, mwaitx, pconfig,
29600 pku, prefetchwt1, prfchw, ptwrite, rdpid, rdrnd, rdseed, rtm, sahf,
29601 sgx, sha, shstk, tbm, vaes, vpclmulqdq, waitpkg, wbnoinvd, xsave,
29602 xsavec, xsaveopt and xsaves options.
29604 2019-01-28 Richard Biener <rguenther@suse.de>
29607 * dwarf2out.c (gen_subprogram_die): Remove leftover from MPX
29610 2019-01-28 Richard Biener <rguenther@suse.de>
29612 PR tree-optimization/88739
29613 * tree-cfg.c (verify_types_in_gimple_reference): Verify
29614 BIT_FIELD_REFs only are applied to mode-precision operands
29615 when they are integral.
29616 (verify_gimple_assign_ternary): Likewise for BIT_INSERT_EXPR.
29617 * tree-ssa-sccvn.c (vn_reference_lookup_3): Avoid generating
29618 BIT_FIELD_REFs of non-mode-precision integral operands.
29620 2019-01-27 Jakub Jelinek <jakub@redhat.com>
29623 * config/i386/sse.md
29624 (<mask_codefor>avx512dq_shuf_<shuffletype>64x2_1<mask_name>,
29625 avx512f_shuf_<shuffletype>64x2_1<mask_name>): Ensure the
29626 first constants in pairs are multiples of 2. Formatting fixes.
29627 (avx512vl_shuf_<shuffletype>32x4_1<mask_name>,
29628 avx512vl_shuf_<shuffletype>32x4_1<mask_name>): Ensure the
29629 first constants in each quadruple are multiples of 4. Formatting fixes.
29631 2019-01-26 Martin Jambor <mjambor@suse.cz>
29634 * tree-inline.c: Include tree-cfgcleanup.h.
29635 (delete_unreachable_blocks_update_callgraph): Move...
29636 * tree-cfgcleanup.c (delete_unreachable_blocks_update_callgraph):
29637 ...here, make externally visible, make second argument bool, adjust
29639 * tree-cfgcleanup.c: Include cgraph.h.
29640 * tree-cfgcleanup.h (delete_unreachable_blocks_update_callgraph):
29642 * ipa-prop.c: Include tree-cfgcleanup.h.
29643 (ipcp_transform_function): Call
29644 delete_unreachable_blocks_update_callgraph instead of cleaning uo CFG.
29646 2019-01-25 Vladimir Makarov <vmakarov@redhat.com>
29648 PR rtl-optimization/88846
29649 * ira.c (process_set_for_memref_referenced_p): New.
29650 (memref_referenced_p): Add new param. Use
29651 process_set_for_memref_referenced_p. Add new switch cases.
29652 (memref_used_between_p): Pass new arg to memref_referenced_p.
29654 2019-01-25 Richard Earnshaw <rearnsha@arm.com>
29657 * config/aarch64/aarch64.c (aarch64_function_arg_alignment): Add new
29658 argument ABI_BREAK. Set to true if the calculated alignment has
29659 changed in gcc-9. Check bit-fields for their base type alignment.
29660 (aarch64_layout_arg): Warn if argument passing has changed in gcc-9.
29661 (aarch64_function_arg_boundary): Likewise.
29662 (aarch64_gimplify_va_arg_expr): Likewise.
29664 2019-01-25 Richard Sandiford <richard.sandiford@arm.com>
29666 PR middle-end/89037
29667 * varasm.c (output_constructor_bitfield): Use wi::extract_uhwi
29668 instead of accessing TREE_INT_CST_ELT directly.
29670 2019-01-25 Christophe Lyon <christophe.lyon@linaro.org>
29672 * doc/sourcebuild.texi (Environment attributes): Add fenv and
29673 fenv_exceptions description.
29675 2019-01-25 Wilco Dijkstra <wdijkstr@arm.com>
29677 PR rtl-optimization/87763
29678 * config/aarch64/aarch64.c (aarch64_select_cc_mode):
29679 Allow SUBREG when matching CC_NZmode compare.
29681 2019-01-25 Richard Biener <rguenther@suse.de>
29683 PR tree-optimization/89049
29684 * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
29685 Look at the pattern stmt to determine if the stmt is vectorized.
29687 2019-01-25 Richard Sandiford <richard.sandiford@arm.com>
29689 * config/aarch64/aarch64-sve.md (*pred_mov<mode>)
29690 (pred_mov<mode>): Handle all-register forms using both a new
29691 alternative and a split.
29693 2019-01-25 Richard Biener <rguenther@suse.de>
29695 PR tree-optimization/86865
29696 * graphite-scop-detection.c (scop_detection::can_represent_loop):
29697 Reject non-do-while loops.
29699 2019-01-24 Peter Bergner <bergner@linux.ibm.com>
29701 * config/rs6000/altivec.md (build_vector_mask_for_load): Use MEM_P.
29702 * config/rs6000/constraints.md (Q constraint): Use REG_P.
29703 * config/rs6000/darwin.h (PREFERRED_RELOAD_CLASS): Use SYMBOL_REF_P.
29704 * config/rs6000/freebsd64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Use
29705 SYMBOL_REF_P, CONST_INT_P and CONST_DOUBLE_P.
29706 * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise.
29707 * config/rs6000/predicates.md (altivec_register_operand, vint_operand,
29708 vsx_register_operand, vsx_reg_sfsubreg_ok, vfloat_operand,
29709 vlogical_operand, gpc_reg_operand, int_reg_operand,
29710 int_reg_operand_not_pseudo): Use SUBREG_P and HARD_REGISTER_P.
29711 (ca_operand, base_reg_operand, htm_spr_reg_operand, cc_reg_operand,
29712 cc_reg_not_cr0_operand, input_operand): Use SUBREG_P.
29713 (save_world_operation, restore_world_operation, lmw_operation,
29714 stmw_operation): Use MEM_P and REG_P.
29715 (tie_operand): Use MEM_P.
29716 (vrsave_operation, crsave_operation): Use REG_P.
29717 (mfcr_operation, mtcrf_operation): Use REG_P and CONST_INT_P.
29718 (fpr_reg_operand): Use SUBREG_P and HARD_REGISTER_NUM_P.
29719 (quad_int_reg_operand): Use HARD_REGISTER_NUM_P.
29720 (call_operand): Use HARD_REGISTER_P.
29721 (indexed_or_indirect_operand, altivec_indexed_or_indirect_operand):
29723 (lwa_operand): Use SUBREG_P, REG_P and CONST_INT_P.
29724 * config/rs6000/rs6000-p8swap.c (insn_is_load_p, insn_is_store_p,
29725 quad_aligned_load_p, replace_swapped_aligned_store,
29726 recombine_lvx_pattern, replace_swapped_aligned_load,
29727 recombine_stvx_pattern): Use MEM_P.
29728 (const_load_sequence_p, adjust_vperm, replace_swapped_load_constant):
29729 Use MEM_P and SYMBOL_REF_P.
29730 (rtx_is_swappable_p): Use REG_P and CONST_INT_P.
29731 (insn_is_swappable_p): Use REG_P and MEM_P.
29732 (insn_is_swap_p, (alignment_mask): Use CONST_INT_P.
29733 * config/rs6000/rs6000-string.c (expand_block_clear, expand_block_move):
29735 * config/rs6000/rs6000.c (rs6000_secondary_reload, rs6000_emit_cmove):
29736 Use CONST_DOUBLE_P.
29737 (rs6000_output_move_128bit): Use CONST_DOUBLE_P, CONST_INT_P and
29739 (rs6000_legitimize_address): Use CONST_DOUBLE_P, CONST_INT_P,
29740 CONST_WIDE_INT_P, REG_P and SYMBOL_REF_P.
29741 (rs6000_emit_move): Use CONST_DOUBLE_P, CONST_INT_P, HARD_REGISTER_P,
29742 HARD_REGISTER_NUM_P, MEM_P, REG_P, SUBREG_P, SYMBOL_REF_P and
29744 (output_toc): Use CONST_DOUBLE_P, CONST_INT_P and SYMBOL_REF_P.
29745 (easy_altivec_constant, rs6000_legitimate_offset_address_p,
29746 rs6000_mode_dependent_address, rs6000_expand_mtfsf_builtin,
29747 rs6000_expand_set_fpscr_rn_builtin, rs6000_expand_set_fpscr_drn_builtin,
29748 rs6000_expand_unop_builtin, INT_P, rs6000_generate_compare,
29749 rs6000_machopic_legitimize_pic_address, rs6000_split_logical_inner,
29750 rs6000_split_logical_di): Use CONST_INT_P.
29751 (rs6000_legitimize_reload_address): Use CONST_INT_P, HARD_REGISTER_P,
29752 REG_P and SYMBOL_REF_P.
29753 (setup_incoming_varargs, rs6000_rtx_costs): Use CONST_INT_P and MEM_P.
29754 (print_operand): Use CONST_INT_P, MEM_P and REG_P.
29755 (virtual_stack_registers_memory_p, rs6000_legitimate_address_p,
29756 mems_ok_for_quad_peep): Use CONST_INT_P and REG_P.
29757 (rs6000_secondary_reload_memory): Use CONST_INT_P and SUBREG_P.
29758 (small_data_operand, print_operand_address): Use CONST_INT_P and
29760 (split_stack_arg_pointer_used_p): Use HARD_REGISTER_P.
29761 (rs6000_init_hard_regno_mode_ok, direct_move_p):
29762 Use HARD_REGISTER_NUM_P.
29763 (rs6000_secondary_reload_gpr): Use HARD_REGISTER_NUM_P and MEM_P.
29764 (rs6000_secondary_reload_class): Use HARD_REGISTER_NUM_P, REG_P,
29765 SUBREG_P and SYMBOL_REF_P.
29766 (register_to_reg_type, rs6000_secondary_reload_inner): Use SUBREG_P
29767 and HARD_REGISTER_NUM_P.
29768 (rs6000_adjust_vec_address): Use HARD_REGISTER_NUM_P and
29770 (rs6000_adjust_cost, find_mem_ref): Use MEM_P.
29771 (macho_lo_sum_memory_operand, rs6000_eliminate_indexed_memrefs): Use
29773 (legitimate_indirect_address_p, legitimate_lo_sum_address_p,
29774 registers_ok_for_quad_peep, rs6000_output_function_epilogue,
29775 find_addr_reg): Use REG_P.
29776 (altivec_expand_vec_perm_const): Use REG_P and SUBREG_P.
29777 (rs6000_emit_le_vsx_move): Use SUBREG_P.
29778 (offsettable_ok_by_alignment, constant_pool_expr_p,
29779 legitimate_small_data_p, rs6000_output_dwarf_dtprel,
29780 rs6000_delegitimize_address, rs6000_const_not_ok_for_debug_p,
29781 rs6000_cannot_force_const_mem, rs6000_output_addr_const_extra,
29782 rs6000_assemble_integer, create_TOC_reference,
29783 rs6000_emit_allocate_stack, rs6000_xcoff_encode_section_info,
29784 rs6000_call_aix, rs6000_call_aix): Use SYMBOL_REF_P.
29785 (rs6000_split_vec_extract_var): Use reg_or_subregno.
29786 * config/rs6000/rtems.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Use
29787 CONST_DOUBLE_P, CONST_INT_P and SYMBOL_REF_P.
29788 * config/rs6000/sysv4.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise.
29789 * config/rs6000/xcoff.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise.
29790 * config/rs6000/rs6000.h (RS6000_SYMBOL_REF_TLS_P): Use SYMBOL_REF_P.
29791 (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P): Use HARD_REGISTER_NUM_P.
29792 (INT_REG_OK_FOR_INDEX_P, INT_REG_OK_FOR_BASE_P): Use HARD_REGISTER_P.
29793 (CONSTANT_ADDRESS_P): Use CONST_INT_P and SYMBOL_REF_P.
29794 * config/rs6000/rs6000.md (define_expands strlensi, mod<mode>3
29795 and cbranch<mode>4): Use CONST_INT_P.
29796 (multiple define_splits): Use REG_P and SUBREG_P.
29797 (define_expands call, call_value): Use MEM_P.
29798 (define_expands sibcall, sibcall_value): Use CONST_INT_P and MEM_P.
29799 (define insn *mtcrfsi): Use CONST_INT_P and REG_P.
29800 * config/rs6000/vsx.md (*vsx_le_perm_load_<mode>,
29801 *vsx_le_perm_load_v8hi, *vsx_le_perm_load_v16qi): Use HARD_REGISTER_P
29802 and HARD_REGISTER_NUM_P.
29803 (multiple define_splits): Use HARD_REGISTER_NUM_P.
29805 2019-01-24 Uroš Bizjak <ubizjak@gmail.com>
29807 PR rtl-optimization/88948
29808 * rtl.h (prepare_copy_insn): New prototype.
29809 * gcse.c (prepare_copy_insn): New function, split out from
29810 process_insert_insn.
29811 (process_insert_insn): Use prepare_copy_insn.
29812 * store-motion.c (replace_store_insn): Use prepare_copy_insn
29813 instead of gen_move_insn.
29815 2019-01-24 Jakub Jelinek <jakub@redhat.com>
29818 * config/i386/i386.c (ix86_pic_register_p): Return true for
29819 UNSPEC_SET_GOT too.
29821 PR tree-optimization/88964
29822 * gimple-loop-interchange.cc (loop_cand::analyze_induction_var): Also
29823 punt if HONOR_SNANS (chrec).
29825 PR middle-end/89015
29826 * tree-nested.c (convert_nonlocal_reference_stmt,
29827 convert_local_reference_stmt, convert_tramp_reference_stmt,
29828 convert_gimple_call) <case GIMPLE_OMP_TEAMS>: Treat
29829 gimple_omp_teams_host teams stmts like GIMPLE_OMP_PARALLEL
29830 or GIMPLE_OMP_TASK.
29832 PR tree-optimization/89027
29833 * tree-inline.c (add_clobbers_to_eh_landing_pad): Don't add clobbers
29834 for "omp simd array" variables.
29836 2019-01-24 Richard Earnshaw <rearnsha@arm.com>
29839 * profile-count.h (profile_count): On ARM systems using GCC 6/7/8
29840 force the alignment of m_val.
29842 2019-01-24 Richard Biener <rguenther@suse.de>
29845 * tree-streamer-out.c (write_ts_decl_common_tree_pointers):
29846 When in "legacy" debug mode make sure to reset self-origins.
29848 2019-01-24 Martin Liska <mliska@suse.cz>
29850 PR gcov-profile/88994
29851 * gcov-io.c (mangle_path): Do not allocate a bigger buffer,
29852 result will be always smaller or equal to the original.
29853 * gcov.c (mangle_name): Fix else branch where we should
29854 also copy to PTR and shift the pointer.
29856 2019-01-24 Xiong Hu Luo <luoxhu@linux.vnet.ibm.com>
29858 * tree-ssa-dom.c (test_for_singularity): Fix a comment typo.
29859 * vr-values.c (find_case_label_ranges): Fix a comment typo.
29861 2019-01-23 Xuepeng Guo <xuepeng.guo@intel.com>
29863 * common/config/i386/i386-common.c
29864 (OPTION_MASK_ISA_ENQCMD_SET,
29865 OPTION_MASK_ISA_ENQCMD_UNSET): New macros.
29866 (ix86_handle_option): Handle -menqcmd.
29867 * config.gcc (enqcmdintrin.h): New header file.
29868 * config/i386/cpuid.h (bit_ENQCMD): New bit.
29869 * config/i386/driver-i386.c (host_detect_local_cpu): Handle
29871 * config/i386/i386-builtin-types.def ((INT, PVOID, PCVOID)): New
29873 * config/i386/i386-builtin.def (__builtin_ia32_enqcmd,
29874 __builtin_ia32_enqcmds): New builtins.
29875 * config/i386/i386-c.c (__ENQCMD__): New macro.
29876 * config/i386/i386-option.c (ix86_target_string): Add
29878 (ix86_valid_target_attribute_inner_p): Likewise.
29879 * config/i386/i386-expand.c
29880 (ix86_expand_builtin): Expand IX86_BUILTIN_ENQCMD and
29881 IX86_BUILTIN_ENQCMDS.
29882 * config/i386/i386.h (TARGET_ENQCMD): New.
29883 * config/i386/i386.md (UNSPECV_ENQCMD, UNSPECV_ENQCMDS): New.
29884 (@enqcmd<enqcmd_sfx>_<mode>): New insn pattern.
29885 (movdir64b_<mode>): Parameterize to enable share expansion code
29886 with ENQCMD in function ix86_expand_builtin.
29887 * config/i386/i386.opt: Add -menqcmd.
29888 * config/i386/immintrin.h: Include enqcmdintrin.h.
29889 * config/i386/enqcmdintrin.h: New intrinsic file.
29890 * doc/invoke.texi: Add -menqcmd.
29892 2019-01-23 Bin Cheng <bin.cheng@arm.com>
29893 Steve Ellcey <sellcey@marvell.com>
29896 * recog.c (address_operand): Return false on wrong mode for address.
29897 (constrain_operands): Check for mode with 'p' constraint.
29899 2019-01-23 Uroš Bizjak <ubizjak@gmail.com>
29902 * config/i386/sse.md (sse2_cvtpi2pd): Add SSE alternatives.
29903 Disparage MMX alternative.
29904 (sse2_cvtpd2pi): Ditto.
29905 (sse2_cvttpd2pi): Ditto.
29907 2019-01-23 David Malcolm <dmalcolm@redhat.com>
29910 * config/aarch64/driver-aarch64.c (host_detect_local_cpu): Fix
29911 use-after-free of the result of
29912 aarch64_get_extension_string_for_isa_flags.
29914 2019-01-23 Jakub Jelinek <jakub@redhat.com>
29917 * doc/extend.texi: Document break and continue behavior in
29918 statement expressions.
29920 2019-01-23 Richard Biener <rguenther@suse.de>
29922 PR tree-optimization/89008
29923 * tree-ssa-reassoc.c (eliminate_using_constants): For * 0 do
29924 not leave another stray operand.
29926 2019-01-23 Jakub Jelinek <jakub@redhat.com>
29928 * BASE-VER: Bump to 9.0.1.
29930 2019-01-23 Eric Botcazou <ebotcazou@adacore.com>
29932 * cgraphunit.c (cgraph_node::expand_thunk): When expanding a GIMPLE
29933 thunk that returns by reference, use the type of the return object
29934 of the thunk instead of that of the alias to build the dereference.
29936 2019-01-23 Vineet Gupta <vgupta@synopsys.com>
29938 * config/arc/atomic.md: Add operand to DMB instruction.
29940 2019-01-23 Jakub Jelinek <jakub@redhat.com>
29942 PR tree-optimization/88964
29943 * gimple-loop-interchange.cc (loop_cand::analyze_induction_var): Use
29944 build_zero_cst instead of build_int_cst. Return false for loop
29945 invariants which honor signed zeros.
29947 2019-01-22 Segher Boessenkool <segher@kernel.crashing.org>
29949 * doc/invoke.texi (-fsplit-paths): This is enabled by default at -O3.
29951 2019-01-22 Jakub Jelinek <jakub@redhat.com>
29954 * config/rs6000/rs6000.c: Include tree-vrp.h and tree-ssanames.h.
29955 (rs6000_gimple_fold_builtin): If MEM_REF address doesn't satisfy
29956 is_gimple_mem_ref_addr predicate, force it into a SSA_NAME first.
29958 PR middle-end/88968
29959 * gimplify.c (gimplify_omp_atomic): Handle bitfield atomics with
29960 non-integral DECL_BIT_FIELD_REPRESENTATIVEs.
29963 * config/rs6000/vsx.md (*vsx_reduc_<VEC_reduc_name>_v2df_scalar):
29964 Disable for little endian.
29966 2019-01-22 Richard Earnshaw <rearnsha@arm.com>
29969 * config/arm/arm.c (arm_needs_double_word_align): Check
29970 DECL_BIT_FIELD_TYPE.
29972 2019-01-22 Hongtao Liu <hongtao.liu@intel.com>
29973 H.J. Lu <hongjiu.lu@intel.com>
29976 * config/i386/i386-builtin.def: Add mask2 to all builtin
29977 initializations. Merge ARGS2 and SPECIAL_ARGS2 into ARGS and
29979 * config/i386/i386.c (BDESC): Add mask2 to the definition.
29980 (BDESC_FIRST): Likewise.
29981 (define_builtin): Add an argument for mask2. Updated to handle
29982 both ix86_isa_flags and ix86_isa_flags2.
29983 (define_builtin_const): Likewise.
29984 (define_builtin_pure): Likewise.
29985 (define_builtin2): Deleted.
29986 (define_builtin_const2): Likewise.
29987 (builtin_description): Add a member, mask2.
29988 (bdesc_*): Add mask2 to builtin initializations.
29989 (ix86_init_mmx_sse_builtins): Update calls to def_builtin,
29990 def_builtin_const and def_builtin_pure. Remove SPECIAL_ARGS2
29992 (ix86_get_builtin_func_type): Remove SPECIAL_ARGS2 support.
29994 2019-01-22 H.J. Lu <hongjiu.lu@intel.com>
29997 * config/i386/i386.c (ix86_force_load_from_GOT_p): Also check
30000 2019-01-22 Richard Earnshaw <rearnsha@arm.com>
30003 * config/arm/arm.c (arm_needs_doubleword_align): Return 2 if a record's
30004 alignment is dominated by a bitfield with 64-bit aligned base type.
30005 (arm_function_arg): Emit a warning if the alignment has changed since
30006 earlier GCC releases.
30007 (arm_function_arg_boundary): Likewise.
30008 (arm_setup_incoming_varargs): Likewise.
30010 2019-01-22 Richard Biener <rguenther@suse.de>
30012 PR tree-optimization/88862
30013 * graphite-scop-detection.c
30014 (scop_detection::graphite_can_represent_scev): Reject ADDR_EXPR.
30016 2019-01-22 Andrew Stubbs <ams@codesourcery.com>
30018 * doc/extend.tex (AMD GCN Function Attributes): New section.
30019 * doc/install.texi (amdgcn-unknown-amdhsa): New instructions.
30020 * doc/invoke.texi (AMD GCN Options): New section.
30021 * doc/md.texi (Constraints for Particular Machines): Add AMD GCN.
30023 2019-01-22 Eric Botcazou <ebotcazou@adacore.com>
30025 * config/sparc/sparc.c (parc_delegitimize_address): Recognize the GOT
30026 register and decoded HIGH/LO_SUM combinations for labels in PIC mode.
30028 2019-01-22 Jakub Jelinek <jakub@redhat.com>
30030 PR tree-optimization/88044
30031 * tree-ssa-loop-niter.c (number_of_iterations_cond): If condition
30032 is false in the first iteration, but !every_iteration, return false
30033 instead of true with niter->niter zero.
30035 PR rtl-optimization/88904
30036 * cfgcleanup.c (thread_jump): Verify cond2 doesn't mention
30037 any nonequal registers before processing BB_END (b).
30040 * optabs.c (add_equal_note): Add op0_mode argument, use it instead of
30042 (expand_binop_directly, expand_doubleword_clz,
30043 expand_doubleword_popcount, expand_ctz, expand_ffs,
30044 expand_unop_direct, maybe_emit_unop_insn): Adjust callers.
30046 PR rtl-optimization/49429
30048 PR rtl-optimization/86334
30050 * expr.c (emit_block_move_hints): Move marking of MEM_EXPRs
30051 addressable from here...
30052 (emit_block_op_via_libcall): ... to here.
30054 2019-01-22 Richard Biener <rguenther@suse.de>
30056 * tree-vect-loop.c (vect_analyze_loop_operations): Use
30057 auto_vec for cost vector to fix memleak.
30058 (vectorize_fold_left_reduction): Properly gather SLP defs.
30059 (vectorizable_comparison): Do not swap operands to properly
30062 2019-01-22 Alan Modra <amodra@gmail.com>
30065 * config/rs6000/predicates.md (unspec_tls): Ensure GOT reg
30066 stays a reg. Allow a const_int.
30067 * config/rs6000/rs6000-protos.h (rs6000_output_tlsargs): Declare.
30068 * config/rs6000/rs6000.h (IS_V4_FP_ARGS): Define.
30069 (IS_NOMARK_TLSGETADDR): Define.
30070 * config/rs6000/rs6000.c (edit_tls_call_insn): Delete.
30071 (rs6000_output_tlsargs): New function.
30072 (rs6000_legitimize_tls_address): Don't say a !TARGET_TLS_MARKERS
30073 __tls_get_addr call takes an arg.
30074 (rs6000_call_sysv): Generate sysv4 secure plt call pattern here..
30075 * config/rs6000/rs6000.md (call_nonlocal_sysv): ..rather than here,
30077 (call_value_nonlocal_sysv): ..or here, delete split.
30078 (tls_gdld_nomark): Delete.
30079 (call_value_indirect_nonlocal_sysv): Use unspec_tls as operand2
30080 predicate. Call rs6000_output_tlsargs. Adjust length to suit.
30081 (call_value_nonlocal_sysv): Likewise.
30082 (call_value_nonlocal_sysv_secure): Likewise.
30083 (call_value_nonlocal_aix): Likewise.
30084 (call_value_indirect_aix): Likewise.
30085 (call_value_indirect_elfv2): Likewise.
30086 (call_value_local32, call_value_local64): Disable for no-mark tls.
30087 (call_value_local_aix): Likewise.
30089 2019-01-21 Uroš Bizjak <ubizjak@gmail.com>
30092 * config/i386/i386.c (ix86_expand_builtin) [case IX86_BUILTIN_BEXTRI32,
30093 case IX86_BUILTIN_BEXTRI64]: Sanitize operands.
30095 2019-01-21 Michael Ploujnikov <michael.ploujnikov@oracle.com>
30097 * hash-map-tests.c (test_map_of_strings_to_int): Show how to use
30098 string contents as hash_map keys.
30100 2019-01-21 Bernd Edlinger <bernd.edlinger@hotmail.de>
30103 * c-warn.c (check_alignment_of_packed_member): Add a boolean parameter
30104 for rvalue context. Handle rvalues correctly. Use min_align_of_type
30105 instead of TYPE_ALIGN.
30106 (check_address_or_pointer_of_packed_member): Handle rvalues coorrectly.
30107 Use min_align_of_type instead of TYPE_ALIGN_UNIT. Check for NULL
30108 pointer from TYPE_STUB_DECL.
30110 2019-01-21 Richard Biener <rguenther@suse.de>
30112 PR tree-optimization/88934
30113 * tree-vect-slp.c (vect_mask_constant_operand_p): Always look
30114 at the possibly non-constant operand.
30115 (vect_get_constant_vectors): Adjust.
30117 2019-01-21 H.J. Lu <hongjiu.lu@intel.com>
30120 * config/i386/adxintrin.h: Just check _IMMINTRIN_H_INCLUDED.
30121 * config/i386/clflushoptintrin.h: Check _IMMINTRIN_H_INCLUDED
30122 instead of _X86INTRIN_H_INCLUDED.
30123 * onfig/i386/clwbintrin.h: Likewise.
30124 * config/i386/pkuintrin.h: Likewise.
30125 * config/i386/prfchwintrin.h: Likewise.
30126 * config/i386/rdseedintrin.h: Likewise.
30127 * config/i386/wbnoinvdintrin.h: Likewise.
30128 * config/i386/xsavecintrin.h: Likewise.
30129 * config/i386/xsavesintrin.h: Likewise.
30130 * config/i386/fxsrintrin.h: Enable _IMMINTRIN_H_INCLUDED check.
30131 * config/i386/xsaveintrin.h: Likewise.
30132 * config/i386/xsaveoptintrin.h: Likewise.
30133 * config/i386/x86intrin.h: Move "#include" <rdseedintrin.h>,
30134 <prfchwintrin.h>, <fxsrintrin.h>, <xsaveintrin.h>,
30135 <xsaveoptintrin.h>, <adxintrin.h>, <clwbintrin.h>,
30136 <clflushoptintrin.h>, <xsavesintrin.h>, <xsavecintrin.h>,
30137 <wbnoinvdintrin.h> and <pkuintrin.h> to ...
30138 * config/i386/immintrin.h: Here.
30140 2019-01-20 Martin Jambor <mjambor@suse.cz>
30143 * ipa-prop.h (struct ipa_func_body_info): Replaced field aa_walked
30144 with aa_walk_budget.
30145 * cgraph.h (ipa_polymorphic_call_context::get_dynamic_type): Add
30146 aa_walk_budget_p parameter.
30147 * ipa-fnsummary.c (unmodified_parm_1): New parameter fbi. Limit AA
30148 walk. Updated all callers.
30149 (unmodified_parm): New parameter fbi, pass it to unmodified_parm_1.
30150 (eliminated_by_inlining_prob): New parameter fbi, pass it on to
30152 (will_be_nonconstant_expr_predicate): New parameter fbi, removed
30153 parameter info. Extract info from fbi. Pass fbi to recursive calls
30154 and to unmodified_parm.
30155 (phi_result_unknown_predicate): New parameter fbi, removed parameter
30156 info, updated call to will_be_nonconstant_expr_predicate.
30157 (param_change_prob): New parameter fbi, limit AA walking.
30158 (analyze_function_body): Initialize aa_walk_budget in fbi. Update
30159 calls to various above functions.
30160 * ipa-polymorphic-call.c (get_dynamic_type): Add aa_walk_budget_p
30161 parameter. Use it to limit AA walking.
30162 * ipa-prop.c (detect_type_change_from_memory_writes): New parameter
30163 fbi, limit AA walk.
30164 (detect_type_change): New parameter fbi, pass it on to
30165 detect_type_change_from_memory_writes.
30166 (detect_type_change_ssa): Likewise.
30167 (aa_overwalked): Removed.
30168 (parm_preserved_before_stmt_p): Assume fbi is never NULL, stream line
30169 accordingly, adjust to the neew AA limiting scheme.
30170 (parm_ref_data_preserved_p): Likewise.
30171 (ipa_compute_jump_functions_for_edge): Adjust call to
30173 (ipa_analyze_call_uses): Likewise.
30174 (ipa_analyze_virtual_call_uses): Pass fbi to detect_type_change_ssa.
30175 (ipa_analyze_node): Initialize aa_walk_budget.
30176 (ipcp_transform_function): Likewise.
30177 * tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_stmt): Update call
30178 to get_dynamic_type.
30180 2019-01-19 Jakub Jelinek <jakub@redhat.com>
30182 * config/aarch64/aarch64.c (aarch64_stack_protect_guard): Move
30183 outside of #if CHECKING_P code.
30185 2019-01-19 Richard Sandiford <richard.sandiford@arm.com>
30187 * gimple-loop-versioning.cc (loop_versioning::dump_inner_likelihood):
30188 New function, split out from...
30189 (loop_versioning::analyze_stride): ...here.
30190 (loop_versioning::find_per_loop_multiplication): Use gassign.
30191 (loop_versioning::analyze_term_using_scevs): Return a success code.
30192 (loop_versioning::analyze_arbitrary_term): New function.
30193 (loop_versioning::analyze_address_fragment): Use
30194 analyze_arbitrary_term if all else fails.
30196 2019-01-18 Segher Boessenkool <segher@kernel.crashing.org>
30199 * config/rs6000/rs6000.md (*movsi_from_df): Allow only register
30202 2019-01-18 Richard Biener <rguenther@suse.de>
30204 PR tree-optimization/88903
30205 * tree-vect-stmts.c (vectorizable_shift): Verify we see all
30206 scalar stmts a SLP shift amount is composed of when detecting
30209 2019-01-18 Richard Earnshaw <rearnsha@arm.com>
30212 * config/arm/arm-cpus.in (mp): New feature.
30213 (sec): New feature.
30214 (fgroup ARMv7ve): Add mp and sec features.
30215 (arch armv7-a): Add options to allow mp and sec extensions.
30216 (cpu generic-armv7-a): Add options to allow mp and sec extensions.
30217 (cpu cortex-a5, cpu cortex-7, cpu cortex-a9): Add mp and sec
30218 extenstions to the base architecture.
30219 (cpu cortex-a8): Add sec extension to the base architecture.
30220 (cpu marvell-pj4): Add mp and sec extensions to the base architecture.
30221 * config/arm/t-aprofile (MULTILIB_MATCHES): Map all armv7-a arch
30222 variants down to the base v7-a varaint.
30223 * config/arm/t-multilib (v7_a_arch_variants): New variable.
30224 * doc/invoke.texi (ARM Options): Add +mp and +sec to the list
30225 of permitted extensions for -march=armv7-a and for
30226 -mcpu=generic-armv7-a.
30228 2019-01-18 Martin Liska <mliska@suse.cz>
30230 * params.def: Fix comment.
30231 * tree-profile.c (gimple_init_gcov_profiler): Bump function
30233 (gimple_gen_ic_func_profiler): Likewise.
30235 2019-01-18 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
30237 * config/aarch64/aarch64-opts.h (enum stack_protector_guard): New
30238 * config/aarch64/aarch64.c (aarch64_override_options_internal): Handle
30239 and put in error checks for stack protector guard options.
30240 (aarch64_stack_protect_guard): New.
30241 (TARGET_STACK_PROTECT_GUARD): Define.
30242 * config/aarch64/aarch64.md (UNSPEC_SSP_SYSREG): New.
30243 (reg_stack_protect_address<mode>): New.
30244 (stack_protect_set): Adjust for SSP_GLOBAL.
30245 (stack_protect_test): Likewise.
30246 * config/aarch64/aarch64.opt (-mstack-protector-guard-reg): New.
30247 (-mstack-protector-guard): Likewise.
30248 (-mstack-protector-guard-offset): Likewise.
30250 2019-01-18 Jakub Jelinek <jakub@redhat.com>
30252 PR tree-optimization/86214
30253 * tree-inline.h (struct copy_body_data): Add
30254 add_clobbers_to_eh_landing_pads member.
30255 * tree-inline.c (add_clobbers_to_eh_landing_pad): New function.
30256 (copy_edges_for_bb): Call it if EH edge destination is <
30257 id->add_clobbers_to_eh_landing_pads. Fix a comment typo.
30258 (expand_call_inline): Set id->add_clobbers_to_eh_landing_pads
30259 if flag_stack_reuse != SR_NONE and clear it afterwards.
30261 2019-01-18 Christophe Lyon <christophe.lyon@linaro.org>
30264 * doc/install.texi (with-multilib-list): Document for aarch64.
30266 2019-01-18 Jakub Jelinek <jakub@redhat.com>
30269 * config/arm/arm_neon.h: Fix #pragma GCC target syntax - replace
30270 (("..."))) with ("...").
30272 2019-01-18 Sebastian Huber <sebastian.huber@embedded-brains.de>
30274 * doc/extend.texi (Built-in Functions for Memory Model Aware
30275 Atomic Operations): Document atomic fetch and nand.
30277 2019-01-18 Martin Liska <mliska@suse.cz>
30278 Richard Biener <rguenther@suse.de>
30280 PR middle-end/88587
30281 * cgraph.h (create_version_clone_with_body): Add new argument
30283 * cgraphclones.c (cgraph_node::create_version_clone): Add
30284 DECL_ATTRIBUTES to a newly created decl. And call
30285 valid_attribute_p so that proper cl_target_optimization_node
30286 is set for the newly created declaration.
30287 * multiple_target.c (create_target_clone): Set DECL_ATTRIBUTES
30289 (expand_target_clones): Do not call valid_attribute_p, it must
30291 * tree-inline.c (copy_decl_for_dup_finish): Reset mode for
30294 2019-01-17 Jakub Jelinek <jakub@redhat.com>
30297 * config/aarch64/arm_neon.h: Fix #pragma GCC target syntax - replace
30298 (("..."))) with ("..."). Use arch=armv8.2-a+sha3 instead of
30299 arch=armv8.2-a+crypto for vsha512hq_u64 etc. intrinsics.
30301 2019-01-17 Martin Sebor <msebor@redhat.com>
30303 PR middle-end/88273
30304 * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range):
30305 Handle anti-ranges the same as no range at all.
30307 2018-01-17 Steve Ellcey <sellcey@cavium.com>
30309 * config/aarch64/aarch64.c (cgraph.h): New include.
30310 (intl.h): New include.
30311 (supported_simd_type): New function.
30312 (currently_supported_simd_type): Ditto.
30313 (aarch64_simd_clone_compute_vecsize_and_simdlen): Ditto.
30314 (aarch64_simd_clone_adjust): Ditto.
30315 (aarch64_simd_clone_usable): Ditto.
30316 (TARGET_SIMD_CLONE_COMPUTE_VECSIZE_AND_SIMDLEN): New macro.
30317 (TARGET_SIMD_CLONE_ADJUST): Ditto.
30318 (TARGET_SIMD_CLONE_USABLE): Ditto.
30319 * config/i386/i386.c (ix86_simd_clone_adjust): Add definition check.
30320 * omp-simd-clone.c (expand_simd_clones): Add targetm.simd_clone.adjust
30323 2019-01-17 Martin Sebor <msebor@redhat.com>
30325 PR tree-optimization/88800
30326 * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid checking
30327 NO_WARNING bit here. Avoid folding out-of-bounds calls.
30328 * gimple-ssa-warn-restrict.c (maybe_diag_offset_bounds): Remove
30329 redundant argument. Add new argument and issue diagnostics under
30330 its control. Detect out-of-bounds access even with warnings
30332 (check_bounds_or_overlap): Change return type. Add argument.
30333 (wrestrict_dom_walker::check_call): Adjust.
30334 * gimple-ssa-warn-restrict.h (check_bounds_or_overlap): Add argument.
30335 * tree-ssa-strlen.c (handle_builtin_strcpy): Adjust to change in
30336 check_bounds_or_overlap's return value.
30337 (handle_builtin_stxncpy): Same.
30338 (handle_builtin_strcat): Same.
30340 2019-01-17 Andrew Stubbs <ams@codesourcery.com>
30341 Kwok Cheung Yeung <kcy@codesourcery.com>
30342 Julian Brown <julian@codesourcery.com>
30343 Tom de Vries <tom@codesourcery.com>
30345 * doc/sourcebuild.texi: Document dg-add-options sqrt_insn.
30347 2019-01-17 Andrew Stubbs <ams@codesourcery.com>
30349 * doc/sourcebuild.texi: Document dg-require-effective-target
30350 llvm_binutils and offload_gcn.
30352 2019-01-17 Andrew Stubbs <ams@codesourcery.com>
30353 Kwok Cheung Yeung <kcy@codesourcery.com>
30354 Julian Brown <julian@codesourcery.com>
30355 Tom de Vries <tom@codesourcery.com>
30357 * doc/sourcebuild.texi: Document dg-required-effective-target
30360 2019-01-17 Andrew Stubbs <ams@codesourcery.com>
30361 Kwok Cheung Yeung <kcy@codesourcery.com>
30362 Julian Brown <julian@codesourcery.com>
30363 Tom de Vries <tom@codesourcery.com>
30364 Jan Hubicka <hubicka@ucw.cz>
30365 Martin Jambor <mjambor@suse.cz>
30367 * config.gcc: Add amdgcn*-*-amdhsa configuration.
30368 * configure.ac: Check for dlopen.
30369 * configure: Regenerate.
30371 2019-01-17 Andrew Stubbs <ams@codesourcery.com>
30372 Kwok Cheung Yeung <kcy@codesourcery.com>
30373 Julian Brown <julian@codesourcery.com>
30374 Tom de Vries <tom@codesourcery.com>
30375 Jan Hubicka <hubicka@ucw.cz>
30376 Martin Jambor <mjambor@suse.cz>
30378 * common/config/gcn/gcn-common.c: New file.
30379 * config/gcn/driver-gcn.c: New file.
30380 * config/gcn/gcn-builtins.def: New file.
30381 * config/gcn/gcn-hsa.h: New file.
30382 * config/gcn/gcn-modes.def: New file.
30383 * config/gcn/gcn-opts.h: New file.
30384 * config/gcn/gcn-passes.def: New file.
30385 * config/gcn/gcn-protos.h: New file.
30386 * config/gcn/gcn-run.c: New file.
30387 * config/gcn/gcn-tree.c: New file.
30388 * config/gcn/gcn.c: New file.
30389 * config/gcn/gcn.h: New file.
30390 * config/gcn/gcn.opt: New file.
30391 * config/gcn/t-gcn-hsa: New file.
30393 2019-01-17 Andrew Stubbs <ams@codesourcery.com>
30394 Kwok Cheung Yeung <kcy@codesourcery.com>
30395 Julian Brown <julian@codesourcery.com>
30396 Tom de Vries <tom@codesourcery.com>
30397 Jan Hubicka <hubicka@ucw.cz>
30398 Martin Jambor <mjambor@suse.cz>
30400 * config/gcn/constraints.md: New file.
30401 * config/gcn/gcn-valu.md: New file.
30402 * config/gcn/gcn.md: New file.
30403 * config/gcn/predicates.md: New file.
30405 2019-01-17 Eric Botcazou <ebotcazou@adacore.com>
30407 * gimple-ssa-isolate-paths.c (stmt_uses_name_in_undefined_way): Replace
30408 flag_non_call_exceptions with cfun->can_throw_non_call_exceptions.
30409 (stmt_uses_0_or_null_in_undefined_way): Likewise.
30410 * tree-ssa-alias.c (same_addr_size_stores_p): Likewise.
30412 2019-01-17 Tamar Christina <tamar.christina@arm.com>
30415 * config/aarch64/aarch64.md (STACK_CLASH_SVE_CFA_REGNUM): New.
30416 * config/aarch64/aarch64.c (aarch64_allocate_and_probe_stack_space): Use
30417 it and document registers.
30419 2019-01-17 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
30421 * config/aarch64/aarch64.c (ares_tunings): Define.
30422 * config/aarch64/aarch64-cores.def (ares): Use the above.
30424 2019-01-17 Wei Xiao <wei3.xiao@intel.com>
30428 2018-11-06 Wei Xiao <wei3.xiao@intel.com>
30430 * config/i386/avx512fintrin.h: Update VFIXUPIMM* intrinsics.
30431 (_mm512_fixupimm_round_pd): Update parameters and builtin.
30432 (_mm512_maskz_fixupimm_round_pd): Ditto.
30433 (_mm512_fixupimm_round_ps): Ditto.
30434 (_mm512_maskz_fixupimm_round_ps): Ditto.
30435 (_mm_fixupimm_round_sd): Ditto.
30436 (_mm_maskz_fixupimm_round_sd): Ditto.
30437 (_mm_fixupimm_round_ss): Ditto.
30438 (_mm_maskz_fixupimm_round_ss): Ditto.
30439 (_mm512_fixupimm_pd): Ditto.
30440 (_mm512_maskz_fixupimm_pd): Ditto.
30441 (_mm512_fixupimm_ps): Ditto.
30442 (_mm512_maskz_fixupimm_ps): Ditto.
30443 (_mm_fixupimm_sd): Ditto.
30444 (_mm_maskz_fixupimm_sd): Ditto.
30445 (_mm_fixupimm_ss): Ditto.
30446 (_mm_maskz_fixupimm_ss): Ditto.
30447 (_mm512_mask_fixupimm_round_pd): Update builtin.
30448 (_mm512_mask_fixupimm_round_ps): Ditto.
30449 (_mm_mask_fixupimm_round_sd): Ditto.
30450 (_mm_mask_fixupimm_round_ss): Ditto.
30451 (_mm512_mask_fixupimm_pd): Ditto.
30452 (_mm512_mask_fixupimm_ps): Ditto.
30453 (_mm_mask_fixupimm_sd): Ditto.
30454 (_mm_mask_fixupimm_ss): Ditto.
30455 * config/i386/avx512vlintrin.h:
30456 (_mm256_fixupimm_pd): Update parameters and builtin.
30457 (_mm256_maskz_fixupimm_pd): Ditto.
30458 (_mm256_fixupimm_ps): Ditto.
30459 (_mm256_maskz_fixupimm_ps): Ditto.
30460 (_mm_fixupimm_pd): Ditto.
30461 (_mm_maskz_fixupimm_pd): Ditto.
30462 (_mm_fixupimm_ps): Ditto.
30463 (_mm_maskz_fixupimm_ps): Ditto.
30464 (_mm256_mask_fixupimm_pd): Update builtin.
30465 (_mm256_mask_fixupimm_ps): Ditto.
30466 (_mm_mask_fixupimm_pd): Ditto.
30467 (_mm_mask_fixupimm_ps): Ditto.
30468 * config/i386/i386-builtin-types.def: Add new types and remove
30470 * config/i386/i386-builtin.def: Update builtin definitions.
30471 * config/i386/i386.c: Handle new builtin types and remove useless ones.
30472 * config/i386/sse.md: Update VFIXUPIMM* patterns.
30473 (<avx512>_fixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
30474 (<avx512>_fixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
30475 (<avx512>_fixupimm<mode>_mask<round_saeonly_name>): Update.
30476 (avx512f_sfixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
30477 (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
30478 (avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Update.
30479 * config/i386/subst.md:
30480 (round_saeonly_sd_mask_operand4): Add new subst_attr.
30481 (round_saeonly_sd_mask_op4): Ditto.
30482 (round_saeonly_expand_operand5): Ditto.
30483 (round_saeonly_expand): Update.
30485 2019-01-17 Wei Xiao <wei3.xiao@intel.com>
30489 2018-11-12 Wei Xiao <wei3.xiao@intel.com>
30491 * config/i386/sse.md: Combine VFIXUPIMM* patterns
30492 (<avx512>_fixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
30493 (<avx512>_fixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
30494 (<avx512>_fixupimm<mode>_mask<round_saeonly_name>): Remove.
30495 (avx512f_sfixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
30496 (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
30497 (avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Remove.
30499 2019-01-17 Wei Xiao <wei3.xiao@intel.com>
30503 2018-12-15 Jakub Jelinek <jakub@redhat.com>
30506 * config/i386/sse.md (UNSPEC_SFIXUPIMM): New unspec enumerator.
30507 (avx512f_sfixupimm<mode><mask_name><round_saeonly_name>): Use it
30508 instead of UNSPEC_FIXUPIMM.
30510 2019-01-17 Richard Biener <rguenther@suse.de>
30513 * dwarf2out.c (want_pubnames): Never generate pubnames sections
30514 and friends for the LTO part of debug info.
30516 2019-01-17 Jakub Jelinek <jakub@redhat.com>
30518 PR tree-optimization/86214
30519 * cfgexpand.c (add_stack_var_conflict): Don't add any conflicts
30522 PR rtl-optimization/88870
30523 * dce.c (deletable_insn_p): Never delete const/pure calls that can
30524 throw if we can't alter the cfg or delete dead exceptions.
30525 (mark_insn): Don't call find_call_stack_args for such calls.
30527 2019-01-17 Kewen Lin <linkw@gcc.gnu.org>
30529 * doc/extend.texi: Add four new prototypes for vec_ld and seven new
30530 prototypes for vec_st.
30531 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add entries
30532 for scalar address type variants of altivec_vec_ld/altivec_vec_st,
30533 mainly on signed/unsigned long long and double.
30535 2019-01-16 David Malcolm <dmalcolm@redhat.com>
30538 * combine.c (delete_noop_moves): Convert to "bool" return,
30539 returning true if any edges are eliminated.
30540 (combine_instructions): Also return true if delete_noop_moves
30543 2019-01-16 Tamar Christina <tamar.christina@arm.com>
30545 * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
30546 correct max nunits for endian swap.
30547 (aarch64_expand_fcmla_builtin): Correct subreg code.
30548 * config/aarch64/aarch64-simd.md (aarch64_fcmla_lane<rot><mode>,
30549 aarch64_fcmla_laneq<rot>v4hf, aarch64_fcmlaq_lane<rot><mode>): Correct
30552 2019-01-16 Uroš Bizjak <ubizjak@gmail.com>
30554 * config/alpha/alpha.c (alpha_gimplify_va_arg):
30555 Handle split indirect COMPLEX_TYPE arguments.
30557 2019-01-16 Richard Earnshaw <rearnsha@arm.com>
30560 * config/aarch64/aarch64-modes.def: Add comment about how the carry
30561 bit is set by add and compare.
30562 (CC_ADC): New CC_MODE.
30563 * config/aarch64/aarch64.c (aarch64_select_cc_mode): Use variables
30564 to cache the code and mode of X. Adjust the shape of a CC_Cmode
30565 comparison. Add detection for CC_ADCmode.
30566 (aarch64_get_condition_code_1): Update code support for CC_Cmode. Add
30568 * config/aarch64/aarch64.md (uaddv<mode>4): Use LTU with CCmode.
30569 (uaddvti4): Comparison result is in CC_ADCmode and the condition is GEU.
30570 (add<mode>3_compareC_cconly_imm): Delete. Merge into...
30571 (add<mode>3_compareC_cconly): ... this. Restructure the comparison
30572 to eliminate the need for zero-extending the operands.
30573 (add<mode>3_compareC_imm): Delete. Merge into ...
30574 (add<mode>3_compareC): ... this. Restructure the comparison to
30575 eliminate the need for zero-extending the operands.
30576 (add<mode>3_carryin): Use LTU for the overflow detection.
30577 (add<mode>3_carryinC): Use CC_ADCmode for the result of the carry out.
30578 Reexpress comparison for overflow.
30579 (add<mode>3_carryinC_zero): Update for change to add<mode>3_carryinC.
30580 (add<mode>3_carryinC): Likewise.
30581 (add<mode>3_carryinV): Use LTU for carry between partials.
30582 * config/aarch64/predicates.md (aarch64_carry_operation): Update
30583 handling of CC_Cmode and add CC_ADCmode.
30584 (aarch64_borrow_operation): Likewise.
30586 2019-01-16 Tamar Christina <tamar.christina@arm.com>
30588 * config/arm/arm-protos.h (neon_vcmla_lane_prepare_operands):
30589 Remove patternmode.
30590 * config/arm/arm.c (neon_vcmla_lane_prepare_operands): Likewise.
30591 * config/arm/neon.md (neon_vcmla_lane<rot><mode>,
30592 neon_vcmla_laneq<rot><mode>, neon_vcmlaq_lane<rot><mode>):
30593 Remove endianness conversion.
30595 2019-01-16 Martin Liska <mliska@suse.cz>
30597 * Makefile.in: Set TOOL_INCLUDE_DIR and NATIVE_SYSTEM_HEADER_DIR
30599 * config/gnu-user.h (TARGET_F951_OPTIONS): Add 'finclude%s/' as
30601 * gcc.c (add_sysrooted_hdrs_prefix): New function.
30602 (path_prefix_reset): Move up in the source file.
30603 (find_fortran_preinclude_file): Make complex search for the
30604 fortran header files.
30606 2019-01-15 Nikhil Benesch <nikhil.benesch@gmail.com>
30608 * godump.c (go_output_typedef): When outputting a typedef, refer
30609 to the underlying type by its name and not its structure.
30611 2019-01-15 David Malcolm <dmalcolm@redhat.com>
30614 * tree.c (build_function_type): Assert that arg_types is not
30617 2019-01-15 Richard Sandiford <richard.sandiford@arm.com>
30619 PR inline-asm/52813
30620 * doc/extend.texi: Document that listing the stack pointer in the
30621 clobber list of an asm is a deprecated feature.
30622 * common.opt (Wdeprecated): Moved from c-family/c.opt.
30623 * cfgexpand.c (asm_clobber_reg_is_valid): Issue a -Wdeprecated
30624 warning instead of an error for clobbers of the stack pointer.
30625 Add a note explaining why.
30627 2019-01-15 Richard Biener <rguenther@suse.de>
30630 * dwarf2out.c (gen_member_die): Do not generate inheritance
30633 2019-01-15 Richard Biener <rguenther@suse.de>
30635 PR tree-optimization/88855
30636 * tree-if-conv.c (combine_blocks): Collect
30637 SSA_NAME_OCCURS_IN_ABNORMAL_PHI from propagated out virtuals.
30639 2019-01-15 Tom de Vries <tdevries@suse.de>
30642 * config/nvptx/nvptx.c (nvptx_goacc_reduction_init): Handle
30643 lhs == NULL_TREE for gang-level reduction.
30645 2019-01-15 Richard Biener <rguenther@suse.de>
30646 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
30649 * ipa-pure-const.c (malloc_candidate_p_1): Add parameter visited and
30650 return true if SSA_NAME is already marked in visited bitmap.
30651 (malloc_candidate_p): Pass visited to malloc_candidate_p_1.
30653 2019-01-15 Jakub Jelinek <jakub@redhat.com>
30655 PR tree-optimization/88775
30656 * match.pd (cmp (convert1?@2 addr@0) (convert2? addr@1)): Optimize
30657 equal == 0 equality pointer comparisons some more if compared in
30658 integral types and either one points to an automatic var and the
30659 other to a global, or we can prove at least one points to the middle
30660 or both point to start or both point to end.
30662 2019-01-14 Andi Kleen <ak@linux.intel.com>
30664 * Makefile.in: Lower autofdo sampling rate by 10x.
30665 * Makefile.tpl: Dito.
30667 2019-01-14 Tom Honermann <tom@honermann.net>
30669 * defaults.h: Define CHAR8_TYPE.
30671 2019-01-14 Martin Sebor <msebor@redhat.com>
30674 * doc/extend.texi (Darwin Format Checks): Clarify.
30676 2019-01-14 Richard Biener <rguenther@suse.de>
30678 * genmatch.c (dt_simplify::gen_1): Change dumping dependent on
30679 whether we are in (simplify ...) or (match ...) context.
30681 2019-01-14 Jakub Jelinek <jakub@redhat.com>
30683 PR rtl-optimization/88796
30684 * emit-rtl.h (struct rtl_data): Add stack_protect_guard_decl field.
30685 * cfgexpand.c (stack_protect_prologue): Initialize
30686 crtl->stack_protect_guard_decl.
30687 * function.c (stack_protect_epilogue): Use it instead of calling
30688 targetm.stack_protect_guard again.
30689 * dse.c (check_mem_read_rtx): Ignore MEM_VOLATILE_P reads from
30690 MEMs with MEM_EXPR equal to crtl->stack_protect_guard or
30691 crtl->stack_protect_guard_decl.
30692 * config/i386/i386.c (ix86_stack_protect_guard): Set TREE_THIS_VOLATILE
30693 on the returned MEM_EXPR.
30695 2019-01-12 Tom de Vries <tdevries@suse.de>
30697 * config/nvptx/nvptx.c (nvptx_goacc_validate_dims_1): Alow setting
30698 vector length using -fopenacc-dim.
30700 2019-01-12 Tom de Vries <tdevries@suse.de>
30702 * config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Take larger vector
30703 lengths into account.
30705 2019-01-12 Svante Signell <svante.signell@gmail.com>
30707 * config/i386/gnu.h (TARGET_THREAD_SSP_OFFSET): Define.
30708 (TARGET_CAN_SPLIT_STACK): Define.
30709 (TARGET_THREAD_SPLIT_STACK_OFFSET): Define.
30711 2019-01-05 Jan Hubicka <hubicka@ucw.cz>
30713 * params.def (inline-unit-growth): Set to 40.
30715 2019-01-12 Jakub Jelinek <jakub@redhat.com>
30717 * tree-ssa-loop-ivopts.c (find_inv_vars): Fix a comment typo.
30719 2019-01-12 Tom de Vries <tdevries@suse.de>
30721 * config/nvptx/nvptx.c (nvptx_goacc_validate_dims_1): In offloading
30722 region calling vector-partitionable routine, set default_vector_length
30725 2019-01-12 Tom de Vries <tdevries@suse.de>
30727 * config/nvptx/nvptx.c (nvptx_goacc_validate_dims_1): Add an use new
30728 variable default_vector_length.
30730 2019-01-12 Tom de Vries <tdevries@suse.de>
30732 PR middle-end/88703
30733 * config/nvptx/nvptx.c (nvptx_goacc_validate_dims_1): Apply defaults
30734 from oacc_default_dims, as oacc_validate_dims would do it, and apply
30737 2019-01-12 Tom de Vries <tdevries@suse.de>
30739 * config/nvptx/nvptx.c (nvptx_goacc_validate_dims_1)
30740 (nvptx_goacc_validate_dims): Add used parameter.
30741 * doc/tm.texi: Regenerate.
30742 * omp-offload.c (oacc_parse_default_dims, oacc_validate_dims): Add
30743 argument to call to targetm.goacc.validate_dims.
30744 (default_goacc_validate_dims): Add used
30746 * target.def (validate_dims): Add used parameter in DEFHOOK.
30747 * targhooks.h (default_goacc_validate_dims): Add used parameter.
30749 2019-01-11 Jakub Jelinek <jakub@redhat.com>
30751 PR middle-end/85956
30753 * tree-inline.h (struct copy_body_data): Add adjust_array_error_bounds
30755 * tree-inline.c (remap_type_1): Formatting fix. If TYPE_MAX_VALUE of
30756 ARRAY_TYPE's TYPE_DOMAIN is newly error_mark_node, replace it with
30757 a dummy "omp dummy var" variable if id->adjust_array_error_bounds.
30758 * omp-low.c (new_omp_context): Set cb.adjust_array_error_bounds.
30760 2019-01-11 Vladimir Makarov <vmakarov@redhat.com>
30762 PR rtl-optimization/87305
30764 (setup_live_pseudos_and_spill_after_risky_transforms): Add code
30765 for little endian pseudos used as paradoxical subreg.
30767 2019-01-11 Jakub Jelinek <jakub@redhat.com>
30769 PR tree-optimization/88693
30770 * tree-ssa-strlen.c (get_min_string_length): Don't set *full_string_p
30771 for STRING_CSTs that don't contain any NUL characters in the first
30772 TREE_STRING_LENGTH bytes.
30774 2019-01-11 Alan Modra <amodra@gmail.com>
30778 * genattrtab.c (min_fn): Don't translate values.
30779 (min_attr_value): Return INT_MAX when the value can't be calculated.
30780 Return minimum among any values that can be calculated.
30781 (max_attr_value): Adjust.
30783 2019-01-11 Jakub Jelinek <jakub@redhat.com>
30785 * Makefile.in (PLUGIN_HEADERS): Add $(INSN_ATTR_H).
30787 2019-01-11 Steve Ellcey <sellcey@marvell.com>
30789 * config/aarch64/aarch64.c (aarch64_simd_call_p): New function.
30790 (aarch64_hard_regno_call_part_clobbered): Add insn argument.
30791 (aarch64_return_call_with_max_clobbers): New function.
30792 (TARGET_RETURN_CALL_WITH_MAX_CLOBBERS): New macro.
30793 * config/avr/avr.c (avr_hard_regno_call_part_clobbered): Add insn
30795 * config/i386/i386.c (ix86_hard_regno_call_part_clobbered): Ditto.
30796 * config/mips/mips.c (mips_hard_regno_call_part_clobbered): Ditto.
30797 * config/rs6000/rs6000.c (rs6000_hard_regno_call_part_clobbered): Ditto.
30798 * config/s390/s390.c (s390_hard_regno_call_part_clobbered): Ditto.
30799 * cselib.c (cselib_process_insn): Add argument to
30800 targetm.hard_regno_call_part_clobbered call.
30801 * ira-conflicts.c (ira_build_conflicts): Ditto.
30802 * ira-costs.c (ira_tune_allocno_costs): Ditto.
30803 * lra-constraints.c (inherit_reload_reg): Ditto.
30804 * lra-int.h (struct lra_reg): Add call_insn field, remove call_p field.
30805 * lra-lives.c (check_pseudos_live_through_calls): Add call_insn
30806 argument. Call targetm.return_call_with_max_clobbers.
30807 Add argument to targetm.hard_regno_call_part_clobbered call.
30808 (calls_have_same_clobbers_p): New function.
30809 (process_bb_lives): Add call_insn and last_call_insn variables.
30810 Pass call_insn to check_pseudos_live_through_calls.
30811 Modify if stmt to check targetm.return_call_with_max_clobbers.
30812 Update setting of flush variable.
30813 (lra_create_live_ranges_1): Set call_insn to NULL instead of call_p
30815 * lra.c (initialize_lra_reg_info_element): Set call_insn to NULL.
30816 * regcprop.c (copyprop_hardreg_forward_1): Add argument to
30817 targetm.hard_regno_call_part_clobbered call.
30818 * reginfo.c (choose_hard_reg_mode): Ditto.
30819 * regrename.c (check_new_reg_p): Ditto.
30820 * reload.c (find_equiv_reg): Ditto.
30821 * reload1.c (emit_reload_insns): Ditto.
30822 * sched-deps.c (deps_analyze_insn): Ditto.
30823 * sel-sched.c (init_regs_for_mode): Ditto.
30824 (mark_unavailable_hard_regs): Ditto.
30825 * targhooks.c (default_dwarf_frame_reg_mode): Ditto.
30826 * target.def (hard_regno_call_part_clobbered): Add insn argument.
30827 (return_call_with_max_clobbers): New target function.
30828 * doc/tm.texi: Regenerate.
30829 * doc/tm.texi.in (TARGET_RETURN_CALL_WITH_MAX_CLOBBERS): New hook.
30830 * hooks.c (hook_bool_uint_mode_false): Change to
30831 hook_bool_insn_uint_mode_false.
30832 * hooks.h (hook_bool_uint_mode_false): Ditto.
30834 2019-01-11 Steve Ellcey <sellcey@marvell.com>
30836 * config/aarch64/aarch64.c (aarch64_simd_call_p): New function.
30837 (aarch64_remove_extra_call_preserved_regs): New function.
30838 (TARGET_REMOVE_EXTRA_CALL_PRESERVED_REGS): New macro.
30839 * doc/tm.texi.in (TARGET_REMOVE_EXTRA_CALL_PRESERVED_REGS): New hook.
30840 * doc/tm.texi: Regenerate.
30841 * final.c (get_call_reg_set_usage): Call new hook.
30842 * target.def (remove_extra_call_preserved_regs): New hook.
30843 * targhooks.c (default_remove_extra_call_preserved_regs): New function.
30844 * targhooks.h (default_remove_extra_call_preserved_regs): New function.
30846 2019-01-11 Jakub Jelinek <jakub@redhat.com>
30849 * passes.c (finish_optimization_passes): Call print_combine_total_stats
30850 inside of pass_combine_1 dump rather than pass_profile_1.
30852 2019-01-11 Tom de Vries <tdevries@suse.de>
30854 * config/nvptx/nvptx.c (PTX_CTA_NUM_BARRIERS, PTX_PER_CTA_BARRIER)
30855 (PTX_NUM_PER_CTA_BARRIER, PTX_FIRST_PER_WORKER_BARRIER)
30856 (PTX_NUM_PER_WORKER_BARRIERS): Define.
30857 (nvptx_apply_dim_limits): Prevent vector_length 64 and
30860 2019-01-11 Tom de Vries <tdevries@suse.de>
30862 * config/nvptx/nvptx.c (PTX_CTA_SIZE): Move up.
30864 2019-01-11 Jan Beulich <jbeulich@suse.com>
30866 * config/i386/i386.md (rex64suffix): Add L suffix for SI.
30867 * config/i386/sse.md (cvtusi2<ssescalarmodesuffix>32<round_name>,
30868 sse2_cvtsi2sd): Add {l}.
30869 (sse2_cvtsi2sdq<round_name>): Make q conditional upon AT&T
30872 2019-01-10 Jakub Jelinek <jakub@redhat.com>
30875 * config/i386/sse.md (float<floatunssuffix>v2div2sf2): Turn into
30877 (*float<floatunssuffix>v2div2sf2): New define_insn.
30878 (float<floatunssuffix>v2div2sf2_mask): Turn into define_expand.
30879 (*float<floatunssuffix>v2div2sf2_mask): New define_insn.
30880 (*float<floatunssuffix>v2div2sf2_mask_1): Replace
30881 subrtxes (const_vector:V2SF [(const_int 0) (const_int 0)]) with
30882 match_operands with "const0_operand" "C".
30884 2019-01-10 Tamar Christina <tamar.christina@arm.com>
30886 * config/aarch64/aarch64-builtins.c
30887 (aarch64_init_builtins): Move aarch64_init_fcmla_laneq_builtins...
30888 (aarch64_init_simd_builtins): ...Here
30890 2019-01-10 Vladimir Makarov <vmakarov@redhat.com>
30892 PR rtl-optimization/87305
30894 (setup_live_pseudos_and_spill_after_risky_transforms): Check
30895 allocation for big endian pseudos used as paradoxical subregs and
30896 spill them if it is wrong.
30897 * lra-constraints.c (lra_constraints): Add a comment.
30899 2019-01-10 Richard Biener <rguenther@suse.de>
30901 PR tree-optimization/88792
30902 * tree-ssa-pre.c (get_representative_for): Do not return a
30905 2019-01-10 Jakub Jelinek <jakub@redhat.com>
30907 PR middle-end/84877
30909 * function.c (assign_stack_local_1): Revert the 2018-11-21 changes.
30910 (assign_parm_setup_block): Do the argument slot realignment here
30913 2019-01-10 Stefan Agner <stefan@agner.ch>
30916 * config/arm/arm.c (arm_option_override_internal): Force
30917 opts->x_inline_asm_unified to true only if TARGET_THUMB2_P.
30919 2019-01-10 Jakub Jelinek <jakub@redhat.com>
30922 * attribs.c (handle_dll_attribute): Clear TREE_STATIC after setting
30925 2019-01-10 Tamar Christina <tamar.christina@arm.com>
30927 * config/arm/arm-builtins.c
30928 (enum arm_type_qualifiers): Add qualifier_lane_pair_index.
30929 (MAC_LANE_PAIR_QUALIFIERS): New.
30930 (arm_expand_builtin_args): Use it.
30931 (arm_expand_builtin_1): Likewise.
30932 * config/arm/arm-protos.h (neon_vcmla_lane_prepare_operands): New.
30933 * config/arm/arm.c (neon_vcmla_lane_prepare_operands): New.
30934 * config/arm/arm-c.c (arm_cpu_builtins): Add __ARM_FEATURE_COMPLEX.
30935 * config/arm/arm_neon.h:
30936 (vcadd_rot90_f16): New.
30937 (vcaddq_rot90_f16): New.
30938 (vcadd_rot270_f16): New.
30939 (vcaddq_rot270_f16): New.
30942 (vcmla_lane_f16): New.
30943 (vcmla_laneq_f16): New.
30944 (vcmlaq_lane_f16): New.
30945 (vcmlaq_laneq_f16): New.
30946 (vcmla_rot90_f16): New.
30947 (vcmlaq_rot90_f16): New.
30948 (vcmla_rot90_lane_f16): New.
30949 (vcmla_rot90_laneq_f16): New.
30950 (vcmlaq_rot90_lane_f16): New.
30951 (vcmlaq_rot90_laneq_f16): New.
30952 (vcmla_rot180_f16): New.
30953 (vcmlaq_rot180_f16): New.
30954 (vcmla_rot180_lane_f16): New.
30955 (vcmla_rot180_laneq_f16): New.
30956 (vcmlaq_rot180_lane_f16): New.
30957 (vcmlaq_rot180_laneq_f16): New.
30958 (vcmla_rot270_f16): New.
30959 (vcmlaq_rot270_f16): New.
30960 (vcmla_rot270_lane_f16): New.
30961 (vcmla_rot270_laneq_f16): New.
30962 (vcmlaq_rot270_lane_f16): New.
30963 (vcmlaq_rot270_laneq_f16): New.
30964 (vcadd_rot90_f32): New.
30965 (vcaddq_rot90_f32): New.
30966 (vcadd_rot270_f32): New.
30967 (vcaddq_rot270_f32): New.
30970 (vcmla_lane_f32): New.
30971 (vcmla_laneq_f32): New.
30972 (vcmlaq_lane_f32): New.
30973 (vcmlaq_laneq_f32): New.
30974 (vcmla_rot90_f32): New.
30975 (vcmlaq_rot90_f32): New.
30976 (vcmla_rot90_lane_f32): New.
30977 (vcmla_rot90_laneq_f32): New.
30978 (vcmlaq_rot90_lane_f32): New.
30979 (vcmlaq_rot90_laneq_f32): New.
30980 (vcmla_rot180_f32): New.
30981 (vcmlaq_rot180_f32): New.
30982 (vcmla_rot180_lane_f32): New.
30983 (vcmla_rot180_laneq_f32): New.
30984 (vcmlaq_rot180_lane_f32): New.
30985 (vcmlaq_rot180_laneq_f32): New.
30986 (vcmla_rot270_f32): New.
30987 (vcmlaq_rot270_f32): New.
30988 (vcmla_rot270_lane_f32): New.
30989 (vcmla_rot270_laneq_f32): New.
30990 (vcmlaq_rot270_lane_f32): New.
30991 (vcmlaq_rot270_laneq_f32): New.
30992 * config/arm/arm_neon_builtins.def (vcadd90, vcadd270, vcmla0, vcmla90,
30993 vcmla180, vcmla270, vcmla_lane0, vcmla_lane90, vcmla_lane180,
30994 vcmla_lane270, vcmla_laneq0, vcmla_laneq90, vcmla_laneq180,
30995 vcmla_laneq270, vcmlaq_lane0, vcmlaq_lane90, vcmlaq_lane180,
30996 vcmlaq_lane270): New.
30997 * config/arm/neon.md (neon_vcmla_lane<rot><mode>,
30998 neon_vcmla_laneq<rot><mode>, neon_vcmlaq_lane<rot><mode>): New.
30999 * config/arm/arm.c (arm_arch8_3, arm_arch8_4): New.
31000 * config/arm/arm.h (TARGET_COMPLEX, arm_arch8_3, arm_arch8_4): New.
31001 (arm_option_reconfigure_globals): Use them.
31002 * config/arm/iterators.md (VDF, VQ_HSF): New.
31003 (VCADD, VCMLA): New.
31004 (VF_constraint, rot, rotsplit1, rotsplit2): Add V4HF and V8HF.
31005 * config/arm/neon.md (neon_vcadd<rot><mode>, neon_vcmla<rot><mode>):
31007 * config/arm/unspecs.md (UNSPEC_VCADD90, UNSPEC_VCADD270,
31008 UNSPEC_VCMLA, UNSPEC_VCMLA90, UNSPEC_VCMLA180, UNSPEC_VCMLA270): New.
31010 2019-01-10 Tamar Christina <tamar.christina@arm.com>
31012 * config/aarch64/aarch64-builtins.c (enum aarch64_type_qualifiers):
31013 Add qualifier_lane_pair_index.
31014 (emit-rtl.h): Include.
31015 (TYPES_QUADOP_LANE_PAIR): New.
31016 (aarch64_simd_expand_args): Use it.
31017 (aarch64_simd_expand_builtin): Likewise.
31018 (AARCH64_SIMD_FCMLA_LANEQ_BUILTINS, aarch64_fcmla_laneq_builtin_datum):
31020 (FCMLA_LANEQ_BUILTIN, AARCH64_SIMD_FCMLA_LANEQ_BUILTIN_BASE,
31021 AARCH64_SIMD_FCMLA_LANEQ_BUILTINS, aarch64_fcmla_lane_builtin_data,
31022 aarch64_init_fcmla_laneq_builtins, aarch64_expand_fcmla_builtin): New.
31023 (aarch64_init_builtins): Add aarch64_init_fcmla_laneq_builtins.
31024 (aarch64_expand_buildin): Add AARCH64_SIMD_BUILTIN_FCMLA_LANEQ0_V2SF,
31025 AARCH64_SIMD_BUILTIN_FCMLA_LANEQ90_V2SF,
31026 AARCH64_SIMD_BUILTIN_FCMLA_LANEQ180_V2SF,
31027 AARCH64_SIMD_BUILTIN_FCMLA_LANEQ2700_V2SF,
31028 AARCH64_SIMD_BUILTIN_FCMLA_LANEQ0_V4HF,
31029 AARCH64_SIMD_BUILTIN_FCMLA_LANEQ90_V4HF,
31030 AARCH64_SIMD_BUILTIN_FCMLA_LANEQ180_V4HF,
31031 AARCH64_SIMD_BUILTIN_FCMLA_LANEQ270_V4HF.
31032 * config/aarch64/iterators.md (FCMLA_maybe_lane): New.
31033 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
31034 Add __ARM_FEATURE_COMPLEX.
31035 * config/aarch64/aarch64-simd-builtins.def (fcadd90, fcadd270, fcmla0,
31036 fcmla90, fcmla180, fcmla270, fcmla_lane0, fcmla_lane90, fcmla_lane180,
31037 fcmla_lane270, fcmla_laneq0, fcmla_laneq90, fcmla_laneq180,
31038 fcmla_laneq270, fcmlaq_lane0, fcmlaq_lane90, fcmlaq_lane180,
31039 fcmlaq_lane270): New.
31040 * config/aarch64/aarch64-simd.md (aarch64_fcmla_lane<rot><mode>,
31041 aarch64_fcmla_laneq<rot>v4hf, aarch64_fcmlaq_lane<rot><mode>,
31042 aarch64_fcadd<rot><mode>, aarch64_fcmla<rot><mode>): New.
31043 * config/aarch64/arm_neon.h:
31044 (vcadd_rot90_f16): New.
31045 (vcaddq_rot90_f16): New.
31046 (vcadd_rot270_f16): New.
31047 (vcaddq_rot270_f16): New.
31050 (vcmla_lane_f16): New.
31051 (vcmla_laneq_f16): New.
31052 (vcmlaq_lane_f16): New.
31053 (vcmlaq_rot90_lane_f16): New.
31054 (vcmla_rot90_laneq_f16): New.
31055 (vcmla_rot90_lane_f16): New.
31056 (vcmlaq_rot90_f16): New.
31057 (vcmla_rot90_f16): New.
31058 (vcmlaq_laneq_f16): New.
31059 (vcmla_rot180_laneq_f16): New.
31060 (vcmla_rot180_lane_f16): New.
31061 (vcmlaq_rot180_f16): New.
31062 (vcmla_rot180_f16): New.
31063 (vcmlaq_rot90_laneq_f16): New.
31064 (vcmlaq_rot270_laneq_f16): New.
31065 (vcmlaq_rot270_lane_f16): New.
31066 (vcmla_rot270_laneq_f16): New.
31067 (vcmlaq_rot270_f16): New.
31068 (vcmla_rot270_f16): New.
31069 (vcmlaq_rot180_laneq_f16): New.
31070 (vcmlaq_rot180_lane_f16): New.
31071 (vcmla_rot270_lane_f16): New.
31072 (vcadd_rot90_f32): New.
31073 (vcaddq_rot90_f32): New.
31074 (vcaddq_rot90_f64): New.
31075 (vcadd_rot270_f32): New.
31076 (vcaddq_rot270_f32): New.
31077 (vcaddq_rot270_f64): New.
31081 (vcmla_lane_f32): New.
31082 (vcmla_laneq_f32): New.
31083 (vcmlaq_lane_f32): New.
31084 (vcmlaq_laneq_f32): New.
31085 (vcmla_rot90_f32): New.
31086 (vcmlaq_rot90_f32): New.
31087 (vcmlaq_rot90_f64): New.
31088 (vcmla_rot90_lane_f32): New.
31089 (vcmla_rot90_laneq_f32): New.
31090 (vcmlaq_rot90_lane_f32): New.
31091 (vcmlaq_rot90_laneq_f32): New.
31092 (vcmla_rot180_f32): New.
31093 (vcmlaq_rot180_f32): New.
31094 (vcmlaq_rot180_f64): New.
31095 (vcmla_rot180_lane_f32): New.
31096 (vcmla_rot180_laneq_f32): New.
31097 (vcmlaq_rot180_lane_f32): New.
31098 (vcmlaq_rot180_laneq_f32): New.
31099 (vcmla_rot270_f32): New.
31100 (vcmlaq_rot270_f32): New.
31101 (vcmlaq_rot270_f64): New.
31102 (vcmla_rot270_lane_f32): New.
31103 (vcmla_rot270_laneq_f32): New.
31104 (vcmlaq_rot270_lane_f32): New.
31105 (vcmlaq_rot270_laneq_f32): New.
31106 * config/aarch64/aarch64.h (TARGET_COMPLEX): New.
31107 * config/aarch64/iterators.md (UNSPEC_FCADD90, UNSPEC_FCADD270,
31108 UNSPEC_FCMLA, UNSPEC_FCMLA90, UNSPEC_FCMLA180, UNSPEC_FCMLA270): New.
31109 (FCADD, FCMLA): New.
31111 * config/arm/types.md (neon_fcadd, neon_fcmla): New.
31113 2019-01-09 Sandra Loosemore <sandra@codesourcery.com>
31117 * config/pa/pa.c: Change "can not" to "cannot".
31118 * gimple-ssa-evrp-analyze.c: Likewise.
31119 * ipa-icf.c: Likewise.
31120 * ipa-polymorphic-call.c: Likewise.
31121 * ipa-pure-const.c: Likewise.
31122 * lra-constraints.c: Likewise.
31123 * lra-remat.c: Likewise.
31124 * reload1.c: Likewise.
31125 * reorg.c: Likewise.
31126 * tree-ssa-uninit.c: Likewise.
31128 2019-01-09 Sandra Loosemore <sandra@codesourcery.com>
31132 * Makefile.in: Mechanically replace "can not" with "cannot".
31133 * alias.c: Likewise.
31134 * builtins.c: Likewise.
31135 * calls.c: Likewise.
31136 * cgraph.c: Likewise.
31137 * cgraph.h: Likewise.
31138 * cgraphclones.c: Likewise.
31139 * cgraphunit.c: Likewise.
31140 * combine-stack-adj.c: Likewise.
31141 * combine.c: Likewise.
31142 * common/config/i386/i386-common.c: Likewise.
31143 * config/aarch64/aarch64.c: Likewise.
31144 * config/alpha/sync.md: Likewise.
31145 * config/arc/arc.c: Likewise.
31146 * config/arc/predicates.md: Likewise.
31147 * config/arm/arm-c.c: Likewise.
31148 * config/arm/arm.c: Likewise.
31149 * config/arm/arm.h: Likewise.
31150 * config/arm/arm.md: Likewise.
31151 * config/arm/cortex-r4f.md: Likewise.
31152 * config/csky/csky.c: Likewise.
31153 * config/csky/csky.h: Likewise.
31154 * config/darwin-f.c: Likewise.
31155 * config/epiphany/epiphany.md: Likewise.
31156 * config/i386/i386.c: Likewise.
31157 * config/i386/sol2.h: Likewise.
31158 * config/m68k/m68k.c: Likewise.
31159 * config/mcore/mcore.h: Likewise.
31160 * config/microblaze/microblaze.md: Likewise.
31161 * config/mips/20kc.md: Likewise.
31162 * config/mips/sb1.md: Likewise.
31163 * config/nds32/nds32.c: Likewise.
31164 * config/nds32/predicates.md: Likewise.
31165 * config/pa/pa.c: Likewise.
31166 * config/rs6000/e300c2c3.md: Likewise.
31167 * config/rs6000/rs6000.c: Likewise.
31168 * config/s390/s390.h: Likewise.
31169 * config/sh/sh.c: Likewise.
31170 * config/sh/sh.md: Likewise.
31171 * config/spu/vmx2spu.h: Likewise.
31172 * cprop.c: Likewise.
31173 * dbxout.c: Likewise.
31174 * df-scan.c: Likewise.
31175 * doc/cfg.texi: Likewise.
31176 * doc/extend.texi: Likewise.
31177 * doc/fragments.texi: Likewise.
31178 * doc/gty.texi: Likewise.
31179 * doc/invoke.texi: Likewise.
31180 * doc/lto.texi: Likewise.
31181 * doc/md.texi: Likewise.
31182 * doc/objc.texi: Likewise.
31183 * doc/rtl.texi: Likewise.
31184 * doc/tm.texi: Likewise.
31186 * emit-rtl.c: Likewise.
31187 * emit-rtl.h: Likewise.
31188 * except.c: Likewise.
31189 * expmed.c: Likewise.
31190 * expr.c: Likewise.
31191 * fold-const.c: Likewise.
31192 * genautomata.c: Likewise.
31193 * gimple-fold.c: Likewise.
31194 * hard-reg-set.h: Likewise.
31195 * ifcvt.c: Likewise.
31196 * ipa-comdats.c: Likewise.
31197 * ipa-cp.c: Likewise.
31198 * ipa-devirt.c: Likewise.
31199 * ipa-fnsummary.c: Likewise.
31200 * ipa-icf.c: Likewise.
31201 * ipa-inline-transform.c: Likewise.
31202 * ipa-inline.c: Likewise.
31203 * ipa-polymorphic-call.c: Likewise.
31204 * ipa-profile.c: Likewise.
31205 * ipa-prop.c: Likewise.
31206 * ipa-pure-const.c: Likewise.
31207 * ipa-reference.c: Likewise.
31208 * ipa-split.c: Likewise.
31209 * ipa-visibility.c: Likewise.
31211 * ira-build.c: Likewise.
31212 * ira-color.c: Likewise.
31213 * ira-conflicts.c: Likewise.
31214 * ira-costs.c: Likewise.
31215 * ira-int.h: Likewise.
31216 * ira-lives.c: Likewise.
31219 * loop-invariant.c: Likewise.
31220 * loop-unroll.c: Likewise.
31221 * lower-subreg.c: Likewise.
31222 * lra-assigns.c: Likewise.
31223 * lra-constraints.c: Likewise.
31224 * lra-eliminations.c: Likewise.
31225 * lra-lives.c: Likewise.
31226 * lra-remat.c: Likewise.
31227 * lra-spills.c: Likewise.
31229 * lto-cgraph.c: Likewise.
31230 * lto-streamer-out.c: Likewise.
31231 * postreload-gcse.c: Likewise.
31232 * predict.c: Likewise.
31233 * profile-count.h: Likewise.
31234 * profile.c: Likewise.
31235 * recog.c: Likewise.
31237 * reload.c: Likewise.
31238 * reload1.c: Likewise.
31239 * reorg.c: Likewise.
31240 * resource.c: Likewise.
31241 * rtl.def: Likewise.
31243 * rtlanal.c: Likewise.
31244 * sched-deps.c: Likewise.
31245 * sched-ebb.c: Likewise.
31246 * sched-rgn.c: Likewise.
31247 * sel-sched-ir.c: Likewise.
31248 * sel-sched.c: Likewise.
31249 * shrink-wrap.c: Likewise.
31250 * simplify-rtx.c: Likewise.
31251 * symtab.c: Likewise.
31252 * target.def: Likewise.
31253 * toplev.c: Likewise.
31254 * tree-call-cdce.c: Likewise.
31255 * tree-cfg.c: Likewise.
31256 * tree-complex.c: Likewise.
31257 * tree-core.h: Likewise.
31258 * tree-eh.c: Likewise.
31259 * tree-inline.c: Likewise.
31260 * tree-loop-distribution.c: Likewise.
31261 * tree-nrv.c: Likewise.
31262 * tree-profile.c: Likewise.
31263 * tree-sra.c: Likewise.
31264 * tree-ssa-alias.c: Likewise.
31265 * tree-ssa-dce.c: Likewise.
31266 * tree-ssa-dom.c: Likewise.
31267 * tree-ssa-forwprop.c: Likewise.
31268 * tree-ssa-loop-im.c: Likewise.
31269 * tree-ssa-loop-ivcanon.c: Likewise.
31270 * tree-ssa-loop-ivopts.c: Likewise.
31271 * tree-ssa-loop-niter.c: Likewise.
31272 * tree-ssa-phionlycprop.c: Likewise.
31273 * tree-ssa-phiopt.c: Likewise.
31274 * tree-ssa-propagate.c: Likewise.
31275 * tree-ssa-threadedge.c: Likewise.
31276 * tree-ssa-threadupdate.c: Likewise.
31277 * tree-ssa-uninit.c: Likewise.
31278 * tree-ssanames.c: Likewise.
31279 * tree-streamer-out.c: Likewise.
31280 * tree.c: Likewise.
31281 * tree.h: Likewise.
31282 * vr-values.c: Likewise.
31284 2019-01-09 Uroš Bizjak <ubizjak@gmail.com>
31286 * config/i386/i386-protos.h (ix86_expand_xorsign): New prototype.
31287 (ix86_split_xorsign): Ditto.
31288 * config/i386/i386.c (ix86_expand_xorsign): New function.
31289 (ix86_split_xorsign): Ditto.
31290 * config/i386/i386.md (UNSPEC_XORSIGN): New unspec.
31291 (xorsign<mode>3): New expander.
31292 (xorsign<mode>3_1): New insn_and_split pattern.
31293 * config/i386/sse.md (xorsign<mode>3): New expander.
31295 2019-01-09 Eric Botcazou <ebotcazou@adacore.com>
31297 * config/sparc/sparc.md (*tablejump_sp32): Merge into...
31298 (*tablejump_sp64): Likewise.
31299 (*tablejump<P:mode>): ...this.
31300 (*call_address_sp32): Merge into...
31301 (*call_address_sp64): Likewise.
31302 (*call_address<P:mode>): ...this.
31303 (*call_symbolic_sp32): Merge into...
31304 (*call_symbolic_sp64): Likewise.
31305 (*call_symbolic<P:mode>): ...this.
31306 (call_value): Remove constraint and add predicate.
31307 (*call_value_address_sp32): Merge into...
31308 (*call_value_address_sp64): Likewise.
31309 (*call_value_address<P:mode>): ...this.
31310 (*call_value_symbolic_sp32): Merge into...
31311 (*call_value_symbolic_sp64): Likewise.
31312 (*call_value_symbolic<P:mode>): ...this.
31313 (*sibcall_symbolic_sp32): Merge into...
31314 (*sibcall_symbolic_sp64): Likewise.
31315 (*sibcall_symbolic<P:mode>): ...this.
31316 (sibcall_value): Remove constraint and add predicate.
31317 (*sibcall_value_symbolic_sp32): Merge into...
31318 (*sibcall_value_symbolic_sp64): Likewise.
31319 (*sibcall_value_symbolic<P:mode>): ...this.
31320 (window_save): Minor tweak.
31321 (*branch_sp32): Merge into...
31322 (*branch_sp64): Likewise.
31323 (*branch<P:mode>): ...this.
31325 2019-01-09 Eric Botcazou <ebotcazou@adacore.com>
31326 James Clarke <jrtc27@jrtc27.com>
31329 * config/sparc/sparc.c (sparc_legitimize_tls_address): Only use Pmode
31330 consistently in TLS address generation and adjust code to the renaming
31331 of patterns. Mark calls to __tls_get_addr as const.
31332 * config/sparc/sparc.md (tgd_hi22): Turn into...
31333 (tgd_hi22<P:mode>): ...this and use Pmode throughout.
31334 (tgd_lo10): Turn into...
31335 (tgd_lo10<P:mode>): ...this and use Pmode throughout.
31336 (tgd_add32): Merge into...
31337 (tgd_add64): Likewise.
31338 (tgd_add<P:mode>): ...this and use Pmode throughout.
31339 (tldm_hi22): Turn into...
31340 (tldm_hi22<P:mode>): ...this and use Pmode throughout.
31341 (tldm_lo10): Turn into...
31342 (tldm_lo10<P:mode>): ...this and use Pmode throughout.
31343 (tldm_add32): Merge into...
31344 (tldm_add64): Likewise.
31345 (tldm_add<P:mode>): ...this and use Pmode throughout.
31346 (tldm_call32): Merge into...
31347 (tldm_call64): Likewise.
31348 (tldm_call<P:mode>): ...this and use Pmode throughout.
31349 (tldo_hix22): Turn into...
31350 (tldo_hix22<P:mode>): ...this and use Pmode throughout.
31351 (tldo_lox10): Turn into...
31352 (tldo_lox10<P:mode>): ...this and use Pmode throughout.
31353 (tldo_add32): Merge into...
31354 (tldo_add64): Likewise.
31355 (tldo_add<P:mode>): ...this and use Pmode throughout.
31356 (tie_hi22): Turn into...
31357 (tie_hi22<P:mode>): ...this and use Pmode throughout.
31358 (tie_lo10): Turn into...
31359 (tie_lo10<P:mode>): ...this and use Pmode throughout.
31360 (tie_ld64): Use DImode throughout.
31361 (tie_add32): Merge into...
31362 (tie_add64): Likewise.
31363 (tie_add<P:mode>): ...this and use Pmode throughout.
31364 (tle_hix22_sp32): Merge into...
31365 (tle_hix22_sp64): Likewise.
31366 (tle_hix22<P:mode>): ...this and use Pmode throughout.
31367 (tle_lox22_sp32): Merge into...
31368 (tle_lox22_sp64): Likewise.
31369 (tle_lox22<P:mode>): ...this and use Pmode throughout.
31370 (*tldo_ldub_sp32): Merge into...
31371 (*tldo_ldub_sp64): Likewise.
31372 (*tldo_ldub<P:mode>): ...this and use Pmode throughout.
31373 (*tldo_ldub1_sp32): Merge into...
31374 (*tldo_ldub1_sp64): Likewise.
31375 (*tldo_ldub1<P:mode>): ...this and use Pmode throughout.
31376 (*tldo_ldub2_sp32): Merge into...
31377 (*tldo_ldub2_sp64): Likewise.
31378 (*tldo_ldub2<P:mode>): ...this and use Pmode throughout.
31379 (*tldo_ldsb1_sp32): Merge into...
31380 (*tldo_ldsb1_sp64): Likewise.
31381 (*tldo_ldsb1<P:mode>): ...this and use Pmode throughout.
31382 (*tldo_ldsb2_sp32): Merge into...
31383 (*tldo_ldsb2_sp64): Likewise.
31384 (*tldo_ldsb2<P:mode>): ...this and use Pmode throughout.
31385 (*tldo_ldub3_sp64): Use DImode throughout.
31386 (*tldo_ldsb3_sp64): Likewise.
31387 (*tldo_lduh_sp32): Merge into...
31388 (*tldo_lduh_sp64): Likewise.
31389 (*tldo_lduh<P:mode>): ...this and use Pmode throughout.
31390 (*tldo_lduh1_sp32): Merge into...
31391 (*tldo_lduh1_sp64): Likewise.
31392 (*tldo_lduh1<P:mode>): ...this and use Pmode throughout.
31393 (*tldo_ldsh1_sp32): Merge into...
31394 (*tldo_ldsh1_sp64): Likewise.
31395 (*tldo_ldsh1<P:mode>): ...this and use Pmode throughout.
31396 (*tldo_lduh2_sp64): Use DImode throughout.
31397 (*tldo_ldsh2_sp64): Likewise.
31398 (*tldo_lduw_sp32): Merge into...
31399 (*tldo_lduw_sp64): Likewise.
31400 (*tldo_lduw<P:mode>): ...this and use Pmode throughout.
31401 (*tldo_lduw1_sp64): Use DImode throughout.
31402 (*tldo_ldsw1_sp64): Likewise.
31403 (*tldo_ldx_sp64): Likewise.
31404 (*tldo_stb_sp32): Merge into...
31405 (*tldo_stb_sp64): Likewise.
31406 (*tldo_stb<P:mode>): ...this and use Pmode throughout.
31407 (*tldo_sth_sp32): Merge into...
31408 (*tldo_sth_sp64): Likewise.
31409 (*tldo_sth<P:mode>): ...this and use Pmode throughout.
31410 (*tldo_stw_sp32): Merge into...
31411 (*tldo_stw_sp64): Likewise.
31412 (*tldo_stw<P:mode>): ...this and use Pmode throughout.
31413 (*tldo_stx_sp64): Use DImode throughout.
31415 2018-01-09 Sudakshina Das <sudi.das@arm.com>
31417 * config/aarch64/aarch64.c (aarch64_override_options): Add case to
31418 check configure option to set BTI and Return Address Signing.
31419 * configure.ac: Add --enable-standard-branch-protection and
31420 --disable-standard-branch-protection.
31421 * configure: Regenerated.
31422 * doc/install.texi: Document the same.
31424 2018-01-09 Sudakshina Das <sudi.das@arm.com>
31425 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
31427 * config.gcc (aarch64*-*-*): Add aarch64-bti-insert.o.
31428 * config/aarch64/aarch64.h: Update comment for TRAMPOLINE_SIZE.
31429 * config/aarch64/aarch64.c (aarch64_asm_trampoline_template): Update
31431 * config/aarch64/aarch64-bti-insert.c: New file.
31432 * config/aarch64/aarch64-passes.def (INSERT_PASS_BEFORE): Insert bti
31434 * config/aarch64/aarch64-protos.h (make_pass_insert_bti): Declare the
31436 * config/aarch64/aarch64.md (unspecv): Add UNSPECV_BTI_NOARG,
31437 UNSPECV_BTI_C, UNSPECV_BTI_J and UNSPECV_BTI_JC.
31438 (bti_noarg, bti_j, bti_c, bti_jc): New define_insns.
31439 * config/aarch64/t-aarch64: Add rule for aarch64-bti-insert.o.
31441 2018-01-09 Sudakshina Das <sudi.das@arm.com>
31443 * config/aarch64/aarch64-protos.h (aarch64_bti_enabled): Declare.
31444 * config/aarch64/aarch64.c (aarch64_handle_no_branch_protection):
31445 Disable bti for -mbranch-protection=none.
31446 (aarch64_handle_standard_branch_protection): Enable bti for
31447 -mbranch-protection=standard.
31448 (aarch64_handle_bti_protection): Enable bti for "bti" in the string to
31449 -mbranch-protection.
31450 (aarch64_bti_enabled): Check if bti is enabled.
31451 * config/aarch64/aarch64.opt: Declare target variable.
31452 * doc/invoke.texi: Add bti to the -mbranch-protection documentation.
31454 2018-01-09 Sudakshina Das <sudi.das@arm.com>
31456 * config/aarch64/aarch64.c (aarch64_expand_prologue): Use new
31457 epilogue/prologue scratch registers EP0_REGNUM and EP1_REGNUM.
31458 (aarch64_expand_epilogue): Likewise.
31459 (aarch64_output_mi_thunk): Likewise.
31460 * config/aarch64/aarch64.h (REG_CLASS_CONTENTS): Change
31461 TAILCALL_ADDR_REGS to x16 and x17.
31462 * config/aarch64/aarch64.md: Define EP0_REGNUM and EP1_REGNUM.
31464 2018-01-09 Sudakshina Das <sudi.das@arm.com>
31466 * config/aarch64/aarch64-option-extensions.def: Define
31467 AARCH64_OPT_EXTENSION for memtag, rng, sb, ssbs and predres.
31468 * config/aarch64/aarch64.h (AARCH64_FL_RNG): New.
31469 (AARCH64_FL_MEMTAG, ARCH64_FL_SB, AARCH64_FL_SSBS): New.
31470 (AARCH64_FL_PREDRES): New.
31471 (AARCH64_FL_FOR_ARCH8_5): Add AARCH64_FL_SB, AARCH64_FL_SSBS and
31472 AARCH64_FL_PREDRES by default.
31473 * doc/invoke.texi: Document rng, memtag, sb, ssbs and predres.
31475 2018-01-09 Sudakshina Das <sudi.das@arm.com>
31477 * config/aarch64/aarch64-arches.def: Define AARCH64_ARCH for
31479 * config/aarch64/aarch64.h (AARCH64_FL_V8_5): New.
31480 (AARCH64_FL_FOR_ARCH8_5, AARCH64_ISA_V8_5): New.
31481 * doc/invoke.texi: Document ARMv8.5-A.
31483 2019-01-09 Alejandro Martinez <alejandro.martinezvicente@arm.com>
31485 * config/aarch64/aarch64-sve.md (copysign<mode>3): New define_expand.
31486 (xorsign<mode>3): Likewise.
31488 2019-01-09 Jelinek <jakub@redhat.com>
31490 PR middle-end/88758
31491 * tree.c (initializer_each_zero_or_onep) <case VECTOR_CST>: Use
31492 vector_cst_elt instead of VECTOR_CST_ENCODED_ELT.
31494 PR rtl-optimization/88331
31495 * function.c (assign_stack_local_1): Don't set dynamic_align_addr if
31496 not currently_expanding_to_rtl.
31498 2019-01-09 Eric Botcazou <ebotcazou@adacore.com>
31500 * doc/invoke.texi (-Os): Remove trailing spaces.
31501 (-finline-functions): Remove reference to -O2.
31503 2019-01-08 Jakub Jelinek <jakub@redhat.com>
31505 PR rtl-optimization/79593
31506 * config/i386/i386.md (reg = mem; mem = reg): New define_peephole2.
31508 * config/rs6000/rs6000.c (rs6000_delegitimize_address): Delegitimize
31509 UNSPEC_FUSION_GPR to its argument. Formatting fixes.
31511 2019-01-08 Eric Botcazou <ebotcazou@adacore.com>
31514 * config/sparc/sparc.c (function_arg_slotno): Set *PPREGNO & *PPADDING
31518 * config/sparc/sparc.c (sparc_delegitimize_address): Deal with naked
31519 UNSPECs and UNSPEC_MOVE_GOTDATA specifically.
31521 2019-01-08 H.J. Lu <hongjiu.lu@intel.com>
31524 * config/i386/i386.c (ix86_avx_u128_mode_exit): Call
31525 ix86_avx_u128_mode_entry.
31527 2019-01-08 Martin Liska <mliska@suse.cz>
31529 PR tree-optimization/88753
31530 * tree-switch-conversion.c (switch_conversion::build_one_array):
31531 Come up with local variable constructor. Convert first to
31532 type of constructor values.
31534 2019-01-08 Richard Biener <rguenther@suse.de>
31536 PR tree-optimization/86554
31537 * tree-ssa-sccvn.c (eliminate_dom_walker, rpo_elim,
31538 rpo_avail): Move earlier.
31539 (visit_nary_op): When value-numbering to expressions
31540 with different overflow behavior make sure there's an
31541 available expression on the path.
31543 2019-01-08 Sam Tebbs <sam.tebbs@arm.com>
31545 * config/aarch64/aarch64.c (BRANCH_PROTECT_STR_MAX,
31546 aarch64_parse_branch_protection,
31547 struct aarch64_branch_protect_type,
31548 aarch64_handle_no_branch_protection,
31549 aarch64_handle_standard_branch_protection,
31550 aarch64_validate_mbranch_protection,
31551 aarch64_handle_pac_ret_protection,
31552 aarch64_handle_attr_branch_protection,
31553 accepted_branch_protection_string,
31554 aarch64_pac_ret_subtypes,
31555 aarch64_branch_protect_types,
31556 aarch64_handle_pac_ret_leaf): Define.
31557 (aarch64_override_options_after_change_1, aarch64_override_options):
31558 Add check for accepted_branch_protection_string.
31559 (aarch64_option_save): Save accepted_branch_protection_string.
31560 (aarch64_option_restore): Save accepted_branch_protection_string.
31561 * config/aarch64/aarch64.c (aarch64_attributes): Add branch-protection.
31562 * config/aarch64/aarch64.opt: Add mbranch-protection. Deprecate
31563 msign-return-address.
31564 * doc/invoke.texi: Add mbranch-protection.
31566 2019-01-08 Alan Modra <amodra@gmail.com>
31569 * genattrtab.c (max_attr_value, min_attr_value, or_attr_value):
31570 Delete "unknownp" parameter. Adjust callers. Handle
31571 CONST_INT, PLUS, MINUS, and MULT.
31572 (attr_value_aligned): Renamed from or_attr_value.
31573 (min_attr_value): Return INT_MIN for unhandled rtl case..
31574 (min_fn): ..and translate to INT_MAX here.
31575 (write_length_unit_log): Modify to cope without "unknown".
31576 (write_attr_value): Handle IF_THEN_ELSE.
31578 2019-01-07 Richard Sandiford <richard.sandiford@arm.com>
31580 * tree-vect-stmts.c (vectorizable_store): Don't use the dataref_offset
31581 optimization for masked stores.
31583 2019-01-07 Richard Sandiford <richard.sandiford@arm.com>
31585 PR middle-end/88567
31586 * tree-vect-loop.c (get_initial_defs_for_reduction): Pass the
31587 output vector directly to duplicate_and_interleave instead of
31588 going through a temporary. Postpone insertion of ctor_seq to
31589 the end of the loop.
31591 2019-01-07 Richard Earnshaw <rearnsha@arm.com>
31594 * config/aarch64/aarch64.c (aarch64_expand_subvti): New parameter
31595 unsigned_p. Handle signed and unsigned overflow correction as
31597 * config/aarch64/aarch64-protos.h (aarch64_expand_subvti): Update
31599 * config/aarch64/aarch64.md (addv<mode>4): Use aarch64_plus_operand
31601 (add<mode>3_compareV_imm): Make this callable for expanding.
31602 (subv<GPI:mode>4): Use register_operand for operand 1. Use
31603 aarch64_plus_operand for operand 2.
31604 (subv<GPI:mode>_insn): New insn pattern.
31605 (subv<GPI:mode>_imm): Likewise.
31606 (negv<GPI:mode>3): New expand pattern.
31607 (negv<GPI:mode>_insn): New insn pattern.
31608 (negv<GPI:mode>_cmp_only): Likewise.
31609 (cmpv<GPI:mode>_insn): Likewise.
31610 (subvti4): Use register_operand for operand 1. Update call to
31611 aarch64_expand_subvti.
31612 (usubvti4): Likewise.
31613 (negvti3): New expand pattern.
31614 (negdi_carryout): New insn pattern.
31615 (negvdi_carryinV): New insn pattern.
31616 (sub<mode3>_compare1_imm): Delete named insn pattern, make anonymous
31617 version the named version.
31618 (peepholes to convert to sub<mode3>_compare1_imm): Adjust order of
31620 (usub<GPI:mode>3_carryinC, usub<GPI:mode>3_carryinC_z1): New insn
31622 (usub<GPI:mode>3_carryinC_z2, usub<GPI:mode>3_carryinC): New insn
31624 (sub<mode>3_carryinCV, sub<mode>3_carryinCV_z1_z2): Delete.
31625 (sub<mode>3_carryinCV_z1, sub<mode>3_carryinCV_z2): Delete.
31626 (sub<mode>3_carryinCV): Delete.
31627 (sub<GPI:mode>3_carryinV): New expand pattern.
31628 sub<mode>3_carryinV, sub<mode>3_carryinV_z2): New insn patterns.
31630 2019-01-07 Richard Biener <rguenther@suse.de>
31632 * tree-ssa-uncprop.c (ssa_equip_hash_traits): Remove in favor
31633 of tree_operand_hash.
31635 2019-01-07 Richard Sandiford <richard.sandiford@arm.com>
31637 PR tree-optimization/88598
31638 * tree.h (single_nonzero_element): Declare.
31639 * tree.c (single_nonzero_element): New function.
31640 * match.pd: Fold certain reductions of X & CST to X[I] & CST[I]
31641 if I is the only nonzero element of CST.
31643 2019-01-07 Richard Sandiford <richard.sandiford@arm.com>
31645 PR tree-optimization/88598
31646 * tree.h (initializer_each_zero_or_onep): Declare.
31647 * tree.c (initializer_each_zero_or_onep): New function.
31648 (signed_or_unsigned_type_for): Handle float types too.
31649 (unsigned_type_for, signed_type_for): Update comments accordingly.
31650 * match.pd: Fold x * { 0 or 1, 0 or 1, ...} to
31651 x & { 0 or -1, 0 or -1, ... }.
31653 2019-01-07 Jonathan Wakely <jwakely@redhat.com>
31655 * doc/install.texi: Replace references to x86_64-unknown-linux-gnu
31656 with x86_64-pc-linux-gnu.
31658 2019-01-07 Tom de Vries <tdevries@suse.de>
31661 * config/nvptx/nvptx.c (has_vector_partitionable_routine_calls_p): New
31663 (nvptx_goacc_validate_dims): Force vl32 if calling vector-partitionable
31666 2019-01-07 Jakub Jelinek <jakub@redhat.com>
31668 * config/i386/sse.md (vec_extract<mode><ssehalfvecmodelower>): Use
31669 V_256_512 iterator instead of V_512 and TARGET_AVX instead of
31670 TARGET_AVX512F as condition.
31673 * dwarf2out.c (const_ok_for_output_1): Remove redundant call to
31674 const_not_ok_for_debug_p target hook.
31675 (mem_loc_descriptor) <case UNSPEC>: Only call const_ok_for_output_1
31676 on UNSPEC and subexpressions thereof if all subexpressions of the
31677 UNSPEC are CONSTANT_P.
31679 PR tree-optimization/88676
31680 * tree-ssa-phiopt.c (two_value_replacement): New function.
31681 (tree_ssa_phiopt_worker): Call it.
31684 * cfgexpand.c (expand_stack_vars): Only align prev_offset to
31685 ASAN_MIN_RED_ZONE_SIZE, not to maximum of that and alignb.
31688 * tree-vect-generic.c: Include insn-config.h and recog.h.
31689 (expand_vector_piecewise): Add defaulted ret_type argument,
31690 if non-NULL, use that in preference to type for the result type.
31691 (expand_vector_parallel): Formatting fix.
31692 (do_vec_conversion, do_vec_narrowing_conversion,
31693 expand_vector_conversion): New functions.
31694 (expand_vector_operations_1): Call expand_vector_conversion
31695 for VEC_CONVERT ifn calls.
31696 * internal-fn.def (VEC_CONVERT): New internal function.
31697 * internal-fn.c (expand_VEC_CONVERT): New function.
31698 * fold-const-call.c (fold_const_vec_convert): New function.
31699 (fold_const_call): Use it for CFN_VEC_CONVERT.
31700 * doc/extend.texi (__builtin_convertvector): Document.
31702 2019-01-07 Tom de Vries <tdevries@suse.de>
31704 * config/nvptx/nvptx-protos.h (nvptx_output_red_partition): Declare.
31705 * config/nvptx/nvptx.c (vector_red_size, vector_red_align,
31706 vector_red_partition, vector_red_sym): New global variables.
31707 (nvptx_option_override): Initialize vector_red_sym.
31708 (nvptx_declare_function_name): Restore red_partition register.
31709 (nvptx_file_end): Emit code to declare the vector reduction variables.
31710 (nvptx_output_red_partition): New function.
31711 (nvptx_expand_shared_addr): Add vector argument. Use it to handle
31712 large vector reductions.
31713 (enum nvptx_builtins): Add NVPTX_BUILTIN_VECTOR_ADDR.
31714 (nvptx_init_builtins): Add VECTOR_ADDR.
31715 (nvptx_expand_builtin): Update call to nvptx_expand_shared_addr.
31716 Handle nvptx_expand_shared_addr.
31717 (nvptx_get_shared_red_addr): Add vector argument and handle large
31719 (nvptx_goacc_reduction_setup): Add offload_attrs argument and handle
31721 (nvptx_goacc_reduction_init): Likewise.
31722 (nvptx_goacc_reduction_fini): Likewise.
31723 (nvptx_goacc_reduction_teardown): Likewise.
31724 (nvptx_goacc_reduction): Update calls to nvptx_goacc_reduction_{setup,
31725 init,fini,teardown}.
31726 (nvptx_init_axis_predicate): Initialize vector_red_partition.
31727 (nvptx_set_current_function): Init vector_red_partition.
31728 * config/nvptx/nvptx.md (UNSPECV_RED_PART): New unspecv.
31729 (nvptx_red_partition): New insn.
31730 * config/nvptx/nvptx.h (struct machine_function): Add red_partition.
31732 2019-01-07 Tom de Vries <tdevries@suse.de>
31735 * config/nvptx/nvptx.c (nvptx_process_pars): Don't emit barriers for
31738 2019-01-07 Tom de Vries <tdevries@suse.de>
31740 * config/nvptx/nvptx.c (oacc_bcast_partition): Declare.
31741 (nvptx_option_override): Init oacc_bcast_partition.
31742 (nvptx_init_oacc_workers): New function.
31743 (nvptx_declare_function_name): Call nvptx_init_oacc_workers.
31744 (nvptx_needs_shared_bcast): New function.
31745 (nvptx_find_par): Generalize to enable vectors to use shared-memory
31746 to propagate state.
31747 (nvptx_shared_propagate): Initialize vector bcast partition and
31748 synchronization state.
31749 (nvptx_single): Generalize to enable vectors to use shared-memory
31750 to propagate state.
31751 (nvptx_process_pars): Likewise.
31752 (nvptx_set_current_function): Initialize oacc_broadcast_partition.
31753 * config/nvptx/nvptx.h (struct machine_function): Add
31754 bcast_partition and sync_bar members.
31756 2019-01-07 Tom de Vries <tdevries@suse.de>
31758 * config/nvptx/nvptx.c (nvptx_welformed_vector_length_p)
31759 (nvptx_apply_dim_limits): New function.
31760 (nvptx_goacc_validate_dims_1): Allow PTX_MAX_VECTOR_LENGTH larger than
31763 2019-01-07 Tom de Vries <tdevries@suse.de>
31765 * config/nvptx/nvptx.c (nvptx_goacc_validate_dims_1): Move warnings to
31766 as late as possible.
31768 2019-01-07 Tom de Vries <tdevries@suse.de>
31770 * config/nvptx/nvptx.c (PTX_VECTOR_LENGTH): Remove.
31771 (PTX_DEFAULT_VECTOR_LENGTH, PTX_MAX_VECTOR_LENGTH): Define.
31772 (nvptx_goacc_validate_dims_1, nvptx_dim_limit)
31773 (nvptx_goacc_reduction_fini): Use PTX_DEFAULT_VECTOR_LENGTH,
31774 PTX_MAX_VECTOR_LENGTH and PTX_WARP_SIZE instead of PTX_VECTOR_LENGTH.
31776 2019-01-07 Tom de Vries <tdevries@suse.de>
31778 * config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Add asserts.
31780 2019-01-07 Tom de Vries <tdevries@suse.de>
31782 * omp-offload.c (oacc_get_min_dim): New function.
31783 * omp-offload.h (oacc_get_min_dim): Declare.
31785 2018-12-26 Mateusz B <mateuszb@poczta.onet.pl>
31788 * config/i386/i386.c (function_value_ms_64): Return small sturct in
31789 AX_REG and float/double in FIRST_SSE_REG for 4 or 8 byte modes.
31791 2019-01-05 Jan Hubicka <hubicka@ucw.cz>
31795 2017-05-22 Jan Hubicka <hubicka@ucw.cz>
31797 * ipa-inline.c (edge_badness): Use inlined_time instead of
31798 inline_summaries->get.
31800 2019-01-05 Jan Hubicka <hubicka@ucw.cz>
31802 * opts.c (enable_fdo_optimizations): Enable
31803 version-loops-for-strides, loop-interchange, unrol-and-jam
31804 and tree-loop-distribution.
31805 * invoke.texi: Document newly enabled options.
31807 2019-01-05 Jan Hubicka <hubicka@ucw.cz>
31809 * doc/invoke.texi (max-inline-insns-small): New parameters.
31810 * ipa-inline.c (want_early_inline_function_p): simplify.
31811 (want_inline_small_function_p): Fix pasto from previous patch;
31812 use max-inline-insns-small bound.
31813 * params.def (max-inline-insns-small): New param.
31814 * ipa-fnsummary.c (analyze_function_body): Initialize time/size
31815 variables correctly.
31817 2019-01-05 Jan Hubicka <hubicka@ucw.cz>
31819 * doc/invoke.texi: Document max-inline-insns-size,
31820 uninlined-function-insns, uninlined-function-time,
31821 uninlined-thunk-insns and uninlined-thunk-time.
31822 * params.def: Add max-inline-insns-size,
31823 uninlined-function-insns, uninlined-function-time,
31824 uninlined-thunk-insns and uninlined-thunk-time.
31825 * ipa-fnsummary.c (compute_fn_summary, analyze_function_body): Use
31827 * ipa-inline.c (can_inline_edge_by_limits_p,
31828 want_inline_small_function_p): Use new parameters.
31830 2019-01-05 Jan Hubicka <hubicka@ucw.cz>
31832 * ipa-fnsummary.c (analyze_function_body): Fix accounting of time.
31834 2019-01-05 Jakub Jelinek <jakub@redhat.com>
31836 PR middle-end/82564
31838 * expr.c (expand_assignment): For calls returning VLA structures
31839 if to_rtx is not a MEM, force it into a stack temporary.
31842 * dwarf2out.c (const_ok_for_output_1): Reject MINUS that contains
31843 SYMBOL_REF, CODE_LABEL or UNSPEC in subexpressions of second argument.
31844 Reject PLUS that contains SYMBOL_REF, CODE_LABEL or UNSPEC in
31845 subexpressions of both operands.
31846 (mem_loc_descriptor): Handle UNSPEC if target hook acks it and all the
31847 subrtxes are CONSTANT_P.
31848 * config/i386/i386.c (ix86_const_not_ok_for_debug_p): Revert
31849 2018-11-09 changes.
31851 2019-01-04 Jan Hubicka <hubicka@ucw.cz>
31853 * params.def (hot-bb-count-ws-permille): Set to 990.
31855 2019-01-04 Martin Sebor <msebor@redhat.com>
31858 * attribs.c (decls_mismatched_attributes): Avoid warning for attribute
31861 2019-01-04 Martin Sebor <msebor@redhat.com>
31864 * doc/extend.texi (attribute alloc_align, alloc_size): Update.
31866 2019-01-04 Jakub Jelinek <jakub@redhat.com>
31868 * gdbinit.in: Turn off pagination for the skip commands, restore
31869 it to previous state afterwards.
31871 2019-01-04 Jakub Jelinek <jakub@redhat.com>
31874 * config/i386/i386.c (ix86_expand_divmod_libfunc): Use mode instead
31875 of GET_MODE (opN) as modes of the libcall arguments.
31877 2019-01-04 Jan Beulich <jbeulich@suse.com>
31879 * config/i386/sse.md
31880 (<avx512>_cmp<mode>3<mask_scalar_merge_name><round_saeonly_name>,
31881 <avx512>_cmp<mode>3<mask_scalar_merge_name>,
31882 <avx512>_ucmp<mode>3<mask_scalar_merge_name>,
31883 <avx512>_ucmp<mode>3<mask_scalar_merge_name>,
31884 avx512f_vmcmp<mode>3<round_saeonly_name>,
31885 avx512f_vmcmp<mode>3_mask<round_saeonly_name>,
31886 avx512f_maskcmp<mode>3,
31887 <avx512>_cvt<ssemodesuffix>2mask<mode>,
31888 <avx512>_cvt<ssemodesuffix>2mask<mode>,
31889 *<avx512>_cvtmask2<ssemodesuffix><mode>,
31890 *<avx512>_cvtmask2<ssemodesuffix><mode>,
31891 <avx512>_eq<mode>3<mask_scalar_merge_name>_1,
31892 <avx512>_eq<mode>3<mask_scalar_merge_name>_1,
31893 <avx512>_gt<mode>3<mask_scalar_merge_name>,
31894 <avx512>_gt<mode>3<mask_scalar_merge_name>,
31895 <avx512>_testm<mode>3<mask_scalar_merge_name>,
31896 <avx512>_testnm<mode>3<mask_scalar_merge_name>,
31897 *<avx512>_testm<VI1248_AVX512VLBW:mode>3_zext,
31898 *<avx512>_testm<VI1248_AVX512VLBW:mode>3_zext_mask,
31899 *<avx512>_testnm<VI1248_AVX512VLBW:mode>3_zext,
31900 *<avx512>_testnm<VI1248_AVX512VLBW:mode>3_zext_mask,
31901 avx512cd_maskb_vec_dup<mode>,
31902 avx512cd_maskw_vec_dup<mode>,
31903 avx512dq_fpclass<mode><mask_scalar_merge_name>,
31904 avx512dq_vmfpclass<mode>,
31905 avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>): Use =k
31908 2019-01-03 Martin Sebor <msebor@redhat.com>
31910 PR tree-optimization/88659
31911 * calls.c (maybe_warn_nonstring_arg): Avoid assuming maxlen is set.
31913 2019-01-03 Aaron Sawdey <acsawdey@linux.ibm.com>
31915 * config/rs6000/rs6000-string.c (expand_block_move): Don't use
31916 unaligned vsx and avoid lxvd2x/stxvd2x.
31917 (gen_lvx_v4si_move): New function.
31919 2019-01-03 Tom de Vries <tdevries@suse.de>
31921 * config/nvptx/nvptx.c (MACH_VECTOR_LENGTH, MACH_MAX_WORKERS): Define.
31922 (init_axis_dim, nvptx_mach_max_workers, nvptx_mach_vector_length): New
31924 * config/nvptx/nvptx.h (struct machine_function): Add axis_dims.
31926 2019-01-03 Tom de Vries <tdevries@suse.de>
31928 * config/nvptx/nvptx.c (struct offload_attrs): New.
31929 (populate_offload_attrs): New function. Factor mask extraction out of
31930 nvptx_reorg. Add extraction of dimensions.
31931 (nvptx_reorg): Use populate_offload_attrs.
31933 2019-01-03 Tom de Vries <tdevries@suse.de>
31935 * config/nvptx/nvptx.c (nvptx_goacc_validate_dims_1): Add early-out
31936 cases for oacc_min_dims_p and routine_p. Add asserts for
31937 oacc_default_dims_p and offload_region_p.
31939 2019-01-03 Tom de Vries <tdevries@suse.de>
31941 * config/nvptx/nvptx.c (nvptx_goacc_validate_dims_1): New function,
31942 factored out of ...
31943 (nvptx_goacc_validate_dims): ... here.
31945 2019-01-03 Jan Hubicka <hubicka@ucw.cz>
31947 PR tree-optimization/85574
31948 * tree-ssa-uncprop.c (struct equiv_hash_elt): Remove unused
31950 (struct ssa_equip_hash_traits): Declare.
31951 (val_ssa_equiv): Use custom hash traits using operand_equal_p.
31953 2019-01-03 Jakub Jelinek <jakub@redhat.com>
31956 * dwarf2out.c (modified_type_die): If type is equal to sizetype,
31957 change it to qualified_type.
31959 2019-01-03 Jan Hubicka <hubicka@ucw.cz>
31961 * ipa-utils.c (scale_ipa_profile_for_fn): Break out from ...
31962 (ipa_merge_profiles): ... here; do not ICE on thunks and aliases.
31964 2019-01-02 Martin Sebor <msebor@redhat.com>
31965 Jeff Law <law@redhat.com>
31967 * gimple-fold.c (strlen_range_kind): Remove SRK_LENRANGE_2.
31968 (get_range_strlen_tree): Update appropriately.
31970 * gimple-fold.h (get_range_strlen): Drop unused last argument.
31972 * gimple-fold.c (gimple_fold_builtin_strlen): Use set_strlen_range
31973 rather than set_range_info.
31974 * tree-ssa-strlen.c (set_strlen_range): Extracted from
31975 maybe_set_strlen_range. Handle potentially boundary crossing
31976 cases more conservatively.
31977 (maybe_set_strlen_range): Parts refactored into set_strlen_range.
31978 Call set_strlen_range.
31979 * tree-ssa-strlen.h (set_strlen_range): Add prototype.
31981 PR middle-end/88663
31982 * gimple-fold.c (get_range_strlen): Update prototype to no longer
31983 need the flexp argument.
31984 (get_range_strlen_tree): Drop flexp argument. Drop flexp argument
31985 from calls to get_range_strlen. Update comments. Just update
31986 VAL for an unterminated const char array and let the reset of the
31987 code handle it normally. No longer try to set *flexp. Adjust
31989 (get_range_strlen): Update for the new get_range_strlen API.
31990 (get_maxval_strlen): Similarly.
31991 (gimple_fold_builtin_strlen): Handle update meaning of return value
31992 from get_range_strlen.
31993 * gimple-ssa-sprintf.c (get_string_length): Update for the new
31994 get_range_strlen API.
31996 2019-01-02 Jan Hubicka <hubicka@ucw.cz>
31999 * varpool.c (varpool_node::ctor_useable_for_folding_p): Also return
32000 false at WPA time when body was removed.
32002 2019-01-02 Martin Liska <mliska@suse.cz>
32004 PR tree-optimization/88650
32005 * predict.c (set_even_probabilities): Calculate probability
32006 remainer only when really used.
32008 2019-01-02 Richard Biener <rguenther@suse.de>
32010 PR middle-end/88651
32011 * tree-data-ref.c (analyze_subscript_affine_affine): Use
32012 widest_ints when mangling max_stmt_execution results.
32014 2019-01-02 Richard Biener <rguenther@suse.de>
32016 PR tree-optimization/88621
32017 * tree-ssa-loop-im.c (gather_mem_refs_stmt): Fix pastos, avoid
32018 bitfields when canoncalizing.
32020 2019-01-02 Richard Biener <rguenther@suse.de>
32023 * config/i386/x86-tune-costs.h (intel_cost): Adjust
32024 cost of cheap SSE instruction.
32026 2019-01-02 Richard Biener <rguenther@suse.de>
32029 * ipa-icf.h (sem_item_optimizer::sort_congruence_split): Declare.
32030 * ipa-icf.c (sem_item_optimizer::sort_congruence_split): New
32032 (sem_item_optimizer::do_congruence_step_f): Sort the congruence
32033 set after UIDs before splitting them.
32035 2019-01-01 Martin Sebor <msebor@redhat.com>
32036 Jeff Law <law@redhat.com>
32038 * gimple-fold.c (get_range_strlen_tree): Record if the computed
32039 length is optimistic. If it is, then arrange to compute the
32040 conservative length as well.
32042 * gimple-fold.h (get_range_strlen): Update prototype.
32043 * builtins.c (check_access): Update call to get_range_strlen to use
32044 c_strlen_data pointer. Change various variable accesses to instead
32045 pull data from the c_strlen_data structure.
32046 (check_strncat_sizes, expand_builtin_strncat): Likewise.
32047 * calls.c (maybe_warn_nonstring_arg): Likewise.
32048 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Likewise. Reset
32049 minimum length if maximum lengh is unknown.
32050 * gimple-ssa-sprintf.c (get_string_length): Likewise. Drop code
32051 that used c_strlen, it's no longer needed. Restructure slightly.
32052 (format_string): Set unlikely range appropriately.
32053 * gimple-fold.c (get_range_strlen): Update comments. Fix minor
32055 (get_range_strlen): Accept c_strlen_data pointer for external
32056 call sites as well. Pass through to call to internal get_range_strlen.
32057 Adjust minlen, maxlen and maxbound as needed.
32058 (get_maxval_strlen): Update comments.
32059 (gimple_fold_builtin_strlen): Update call to get_range_strlen
32060 to use c_strlen_data pointer. Change variable accesses to instead
32061 use c_strlen_data data members.
32063 * gimple-fold.c (get_range_strlen): Update prototype.
32064 (get_range_strlen_tree): Update prototype. Drop minlen/maxlen
32065 local variables. Use pdata to return information to caller.
32066 Update calls to get_range_strlen. Update pdata->maxbound.
32067 (get_range_strlen -- static version): Similarly.
32068 (get_range_strlen -- extern version): Update for internal
32069 get_range_strlen API change. Convert to external data format.
32070 (get_maxval_strlen): Similarly.
32072 2019-01-01 Jan Hubicka <hubicka@ucw.cz>
32074 * coverage.c (get_coverage_counts): Use current_function_decl.
32075 * profile.c (read_thunk_profile): New function.
32076 (branch_prob): Add THUNK parameter.
32077 * tree-profile.c (tree_profiling): Handle thunks.
32078 * value-prof.c (init_node_map): Handle thunks.
32079 * value-prof.h (branch_prob): Upate prototype.
32080 (read_thunk_profile): Declare.
32082 2019-01-01 Jakub Jelinek <jakub@redhat.com>
32084 Update copyright years.
32086 * gcc.c (process_command): Update copyright notice dates.
32087 * gcov-dump.c (print_version): Ditto.
32088 * gcov.c (print_version): Ditto.
32089 * gcov-tool.c (print_version): Ditto.
32090 * gengtype.c (create_file): Ditto.
32091 * doc/cpp.texi: Bump @copying's copyright year.
32092 * doc/cppinternals.texi: Ditto.
32093 * doc/gcc.texi: Ditto.
32094 * doc/gccint.texi: Ditto.
32095 * doc/gcov.texi: Ditto.
32096 * doc/install.texi: Ditto.
32097 * doc/invoke.texi: Ditto.
32099 Copyright (C) 2019 Free Software Foundation, Inc.
32101 Copying and distribution of this file, with or without modification,
32102 are permitted in any medium without royalty provided the copyright
32103 notice and this notice are preserved.