1. 12 Dec, 2017 16 commits
    • re PR c/82679 (Uses of typedefs of arrays of _Atomic-qualified types are rejected) · 49e6a6c0
      	PR c/82679
      	* c-decl.c (grokdeclarator): Check declspecs insted of atomicp.
      
      	* gcc.dg/c11-atomic-5.c: New test.
      
      From-SVN: r255577
      Marek Polacek committed
    • re PR rtl-optimization/83363 (wrong code at -O2 -fno-forward-propagate) · 6c939c2e
      	PR rtl-optimization/83363
      	PR rtl-optimization/83364
      	* gcc.dg/pr83363.c: New test.
      	* gcc.dg/pr83364.c: New test.
      
      From-SVN: r255576
      Jakub Jelinek committed
    • re PR tree-optimization/83359 (ICE in expand_LOOP_DIST_ALIAS, at internal-fn.c:2362) · 555758de
      	PR tree-optimization/83359
      	* tree-cfg.h (fold_loop_internal_call): Declare.
      	* tree-vectorizer.c (fold_loop_internal_call): Moved to ...
      	* tree-cfg.c (fold_loop_internal_call): ... here.  No longer static.
      	(find_loop_dist_alias): New function.
      	(move_sese_region_to_fn): If any dloop->orig_loop_num value is
      	updated, also adjust any corresponding LOOP_DIST_ALIAS internal
      	calls.
      
      	* gcc.dg/graphite/pr83359.c: New test.
      
      From-SVN: r255575
      Jakub Jelinek committed
    • re PR tree-optimization/80631 (Compiling with -O3 -mavx2 gives wrong code) · 12c667b5
      	PR tree-optimization/80631
      	* tree-vect-loop.c (get_initial_def_for_reduction): Fix comment typo.
      	(vect_create_epilog_for_reduction): Add INDUC_VAL and INDUC_CODE
      	arguments, for INTEGER_INDUC_COND_REDUCTION use INDUC_VAL instead of
      	hardcoding zero as the value if COND_EXPR is never true.  For
      	INTEGER_INDUC_COND_REDUCTION don't emit the final COND_EXPR if
      	INDUC_VAL is equal to INITIAL_DEF, and use INDUC_CODE instead of
      	hardcoding MAX_EXPR as the reduction operation.
      	(is_nonwrapping_integer_induction): Allow negative step.
      	(vectorizable_reduction): Compute INDUC_VAL and INDUC_CODE for
      	vect_create_epilog_for_reduction, if no value is suitable, don't
      	use INTEGER_INDUC_COND_REDUCTION for now.  Formatting fixes.
      
      	* gcc.dg/vect/pr80631-1.c: New test.
      	* gcc.dg/vect/pr80631-2.c: New test.
      	* gcc.dg/vect/pr65947-13.c: Expect integer induc cond reduction
      	vectorization.
      
      From-SVN: r255574
      Jakub Jelinek committed
    • re PR middle-end/81889 (bogus warnings with -Wmaybe-uninitialized -O3) · 5b0c69ae
      2017-12-12  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/81889
      	* tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness): Use
      	range info from the non-wrapping IV instead of just the range
      	of the type.
      
      	* gfortran.dg/pr81889.f90: New testcase.
      	* gcc.dg/tree-ssa/pr64183.c: Adjust.
      
      From-SVN: r255573
      Richard Biener committed
    • Enable VAES support [2/5] · e157d456
      gcc/
      	* config.gcc: Add vaesintrin.h.
      	* config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI_V64QI): New type.
      	* config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
      	__builtin_ia32_vaesdec_v32qi, __builtin_ia32_vaesdec_v64qi): New builtins.
      	* config/i386/i386.c (ix86_expand_args_builtin): Handle new type.
      	* config/i386/immintrin.h: Include vaesintrin.h.
      	* config/i386/sse.md (vaesdec_<mode>): New pattern.
      	* config/i386/vaesintrin.h (_mm256_aesdec_epi128, _mm512_aesdec_epi128,
      	_mm_aesdec_epi128): New intrinsics.
      
      gcc/testsuite/
      	* gcc.target/i386/avx512-check.h: Handle bit_VAES.
      	* gcc.target/i386/avx512f-aesdec-2.c: New test.
      	* gcc.target/i386/avx512fvl-vaes-1.c: Ditto.
      	* gcc.target/i386/avx512vl-aesdec-2.c: Ditto.
      	* gcc.target/i386/i386.exp (check_effective_target_avx512vaes): New.
      
      From-SVN: r255572
      Julia Koval committed
    • Enable VAES support [1/5] · b7b0a4fa
      gcc/
      	* common/config/i386/i386-common.c (OPTION_MASK_ISA_VAES_SET,
      	OPTION_MASK_ISA_VAES_UNSET): New.
      	(ix86_handle_option): Handle -mvaes.
      	* config/i386/cpuid.h: Define bit_VAES.
      	* config/i386/driver-i386.c (host_detect_local_cpu): Detect -mvaes.
      	* config/i386/i386-c.c (__VAES__): New.
      	* config/i386/i386.c (ix86_target_string): Add -mvaes.
      	(ix86_valid_target_attribute_inner_p): Ditto.
      	* config/i386/i386.h (TARGET_VAES, TARGET_VAES_P): New.
      	* config/i386/i386.opt: Add -mvaes.
      	* doc/invoke.texi: Ditto.
      
      From-SVN: r255571
      Julia Koval committed
    • [IEPM] Introduce debug hook for inline entry point markers · 102d484d
      The inline_entry hook will be given a definition in a later patch.
      
      for  gcc/ChangeLog
      
      	* debug.h (gcc_debug_hooks): Add inline_entry.
      	* dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
      	* debug.c (do_nothing_debug_hooks): Likewise.
      	* vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
      	* dwarf2out.c (dwarf2_debug_hooks): Likewise.
      	(dwarf2_lineno_debug_hooks): Likewise.
      
      From-SVN: r255570
      Alexandre Oliva committed
    • [SFN] Introduce -gstatement-frontiers option, enable debug markers · 8697bf9f
      Introduce a command line option to enable statement frontiers, enabled
      by default in optimized builds with DWARF2+ debug information.
      
      This patch depends on an earlier patch that completed the
      infrastructure for debug markers, and on another patch that turns -g
      into a negatable option prefix.
      
      for  gcc/ChangeLog
      
      	* common.opt (gstatement-frontiers): New, setting
      	debug_nonbind_markers_p.
      	* rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): Activate.
      	* toplev.c (process_options): Autodetect value for debug statement
      	frontiers option.
      	* tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): Activate.
      	* doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers): New.
      
      From-SVN: r255569
      Alexandre Oliva committed
    • [SFN] introduce statement frontier notes, still disabled · 96a95ac1
      This patch completes the infrastructure for the introduction of
      statement frontiers in C-family languages.
      
      It brings in all the code remaining code needed to introduce and
      transform begin stmt trees, gimple stmts, insns and notes, and
      ultimately use them to generate the is_stmt column in DWARF2+ line
      number tables/programs, however none of it is activated: the option
      that would do so will be introduced in a subsequent patch.
      
      This patch depends on an earlier patch with not-quite-boilerplate
      changes towards SFN.
      
      for  gcc/c-family/ChangeLog
      
      	* c-semantics.c (pop_stmt_list): Move begin stmt marker into
      	subsequent statement list.
      
      for  gcc/c/ChangeLog
      
      	* c-objc-common.h (LANG_HOOKS_EMITS_BEGIN_STMT): Redefine as true.
      	* c-parser.c (add_debug_begin_stmt): New.
      	(c_parser_declaration_or_fndef): Call it.
      	(c_parser_compound_statement_nostart): Likewise.
      	(c_parser_statement_after_labels): Likewise.
      	* c-typeck (c_finish_stmt_expr): Skip begin stmts markers.
      
      for  gcc/cp/ChangeLog
      
      	* constexpr.c (check_constexpr_ctor_body_1): Skip begin stmt
      	markers.
      	(constexpr_fn_retval): Likewise.
      	(potential_constant_expression_1): Likewise.
      	(cxx_eval_statement_list): Check that a begin stmt marker is
      	not used as the value of a statement list.
      	(cxx_eval_constant_expression): Return begin stmt markers
      	unchanged.
      	* cp-array-notation.c (stmt_location): New.
      	(cp_expand_cond_array_notations): Use it.
      	* cp-objcp-common.h (LANG_HOOKS_EMITS_BEGIN_STMT): Redefine as true.
      	* parser.c (add_debug_begin_stmt): New.
      	(cp_parser_statement): Call it.
      	* pt.c (tsubst_copy): Handle begin stmt markers.
      
      for  gcc/ChangeLog
      
      	* cfgexpand.c (expand_gimple_basic_block): Handle begin stmt
      	markers.  Integrate source bind into debug stmt expand loop.
      	(pass_expand::execute): Check debug marker limit.  Avoid deep
      	TER and expand debug locations for debug bind insns only.
      	* cse.c (insn_live_p): Keep nonbind markers and debug bindings
      	followed by them.
      	* df-scan.c (df_insn_delete): Accept out-of-block debug insn.
      	* final.c (reemit_insn_block_notes): Take current block from
      	nonbind markers.  Declare note where it's first set.
      	(final_scan_insn): Handle begin stmt notes.  Emit is_stmt according to
      	begin stmt markers if enabled.
      	(notice_source_line): Handle nonbind markers.  Fail if their
      	location is unknown or that of builtins.
      	(rest_of_handle_final): Convert begin stmt markers to notes if
      	var-tracking didn't run.
      	(rest_of_clean_state): Skip begin stmt markers.
      	* gimple-pretty-print.c (dump_gimple_debug): Handle begin stmt
      	markers.
      	* function.c (allocate_struct_function): Set begin_stmt_markers.
      	* function.h (struct function): Add debug_marker_count counter
      	and debug_nonbind_markers flag.
      	* gimple-iterator.c (gsi_remove): Adjust debug_marker_count.
      	* gimple-low.c (lower_function_body): Adjust
      	debug_nonbind_markers.
      	(lower_stmt): Drop or skip gimple debug stmts.
      	(lower_try_catch): Skip debug stmts.
      	* gimple.c (gimple_build_debug_begin_stmt): New.
      	(gimple_copy): Increment debug_marker_count if copying one.
      	* gimple.h (gimple_build_debug_begin_stmt): Declare.
      	* gimplify.c (rexpr_location): New.
      	(rexpr_has_location): New.
      	(warn_switch_unreachable_r): Handle gimple debug stmts.
      	(shortcut_cond_r): Call expr_location.
      	(find_goto): New.
      	(find_goto_label): New.
      	(shortcut_cond_expr): Call expr_has_location, expr_location, and
      	find_goto_label.
      	(gimplify_cond_expr): Call find_goto_label, expr_has_location, and
      	expr_location.
      	(gimplify_expr): Handle begin stmt markers.  Reject debug expr decls.
      	* langhooks-def.h (LANG_HOOKS_EMITS_BEGIN_STMT): New.  Add to...
      	(LANG_HOOKS_INITIALIZER): ... this.
      	* langhooks.h (struct lang_hooks): Add emits_begin_stmt.
      	* lra-contraints.c (inherit_reload_reg): Tolerate between-blocks
      	debug insns.
      	(update_ebb_live_info): Skip debug insn markers.
      	* lra.c (debug_insn_static_data): Rename to...
      	(debug_bind_static_data): ... this.
      	(debug_marker_static_data): New.
      	(lra_set_insn_recog_data): Select one of the above depending
      	on debug insn kind.
      	(lra_update_isn_regno_info): Don't assume debug insns have
      	freqs.
      	(push_insns): Skip debug insns.
      	* lto-streamer-in.c (input_function): Drop debug stmts
      	depending on active options.  Adjust debug_nonbind_markers.
      	* params.def (PARAM_MAX_DEBUG_MARKER_COUNT): New.
      	* print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
      	begin stmt marker notes.
      	(print_insn): Likewise.
      	* recog.c (extract_insn): Recognize rtl for debug markers.
      	* rtl.def (DEBUG_MARKER): New.
      	* tree-inline.c: Include params.h.
      	(remap_gimple_stmt): Handle nonbind markers.
      	(maybe_move_debug_stmts_to_successors): Likewise.
      	(copy_debug_stmt): Likewise.
      	* tree-iterator.c (append_to_statement_list_1): Append begin stmt
      	markers regardless of no side effects.
      	(tsi_link_before): Don't update container's side effects when adding
      	a begin stmt marker.
      	(tsi_link_after): Likewise.
      	(expr_first): Skip begin stmt markers.
      	(expr_last): Likewise.
      	* tree-pretty-print (dump_generic_node): Handle begin stmt markers.
      	* tree-ssa-threadedge.c (propagate_threaded_block_debug_info):
      	Disregard nonbind markers.
      	* tree.c (make_node_stat): Don't set side effects for begin stmt
      	markers.
      	(build1_stat): Likewise.
      	* tree.def (DEBUG_BEGIN_STMT): New.
      	* tree.h (GOTO_DESTINATION): Require a GOTO_EXPR.
      	* var-tracking.c (delete_debug_insns): Renamed to...
      	(delete_vta_debug_insns): ... this.
      	(reemit_marker_as_note): New.
      	(vt_initialize): Reemit markers.
      	(delete_vta_debug_insns): Likewise.
      	(vt_debug_insns_local): Reemit or delete markers.
      	(variable_tracking_main_1): Likewise.
      	* doc/generic.texi (DEBUG_BEGIN_STMT): Document.
      	* doc/gimple.texi (gimple_debug_begin_stmt_p): New.
      	(gimple_debug_nonbind_marker_p): New.
      	(gimple_build_debug_bind): Adjust.
      	(gimple_build_debug_begin_stmt): New.
      	* doc/invoke.texi (max-debug-marker-count): New param.
      	* doc/rtl.texi (debug_implicit_ptr, entry_value): New.
      	(debug_parameter_ref, debug_marker): New.
      	(NOTE_INSN_BEGIN_STMT): New.
      	(DEBUG_INSN): Describe begin stmt markers.
      
      From-SVN: r255568
      Alexandre Oliva committed
    • [SFN] stabilize find_bb_boundaries · eb8b3474
      If find_bb_boundaries is given a block with zero or one nondebug insn
      beside debug insns, it shouldn't purge dead edges, because without
      debug insns we wouldn't purge them at that point.  Doing so may change
      the order in which edges are processed, and ultimately lead to
      different transformations to the CFG and then to different
      optimizations.
      
      We shouldn't, however, retain debug insns after control flow insns, so
      if we find debug insns after a single insn that happens to be a
      control flow insn, do the debug insn cleanups, but still refrain from
      purging dead edges at that point.
      
      
      for  gcc/ChangeLog
      
      	* cfgbuild.c (find_bb_boundaries): Don't purge dead edges if,
      	without debug insns, we wouldn't, but clean up debug insns
      	after a control flow insn nevertheless.
      
      From-SVN: r255567
      Alexandre Oliva committed
    • [SFN] not-quite-boilerplate changes in preparation to introduce nonbind markers · 65f4b875
      This patch adjusts numerous parts of the compiler that would
      malfunction should they find debug markers at points where they may be
      introduced.  The changes purport to allow the compiler to pass
      bootstrap-debug-lean (-fcompare-debug in stage3) at various
      optimization levels, as well as bootstrap-debug-lib (-fcompare-debug
      for target libraries), even after the compiler is changed so that
      debug markers are introduced in code streams at spots where earlier
      debug stmts, insns and notes wouldn't normally appear.
      
      This patch depends on an earlier SFN boilerplate patch, and on another
      SFN patch that introduces new RTL insn-walking functions.
      
      for  gcc/ChangeLog
      
      	* cfgcleanup.c (delete_unreachable_blocks): Use alternate
      	block removal order if MAY_HAVE_DEBUG_BIND_INSNS.
      	* cfgexpand.c (label_rtx_for_bb): Skip debug insns.
      	* cfgrtl.c (try_redirect_by_replacing_jump): Skip debug insns.
      	(rtl_tidy_fallthru_edge): Likewise.
      	(rtl_verify_fallthru): Likewise.
      	(rtl_verify_bb_layout): Likewise.
      	(skip_insns_after_block): Likewise.
      	(duplicate_insn_chain): Use DEBUG_BIND_INSN_P.
      	* dwarf2out.c: Include print-rtl.h.
      	(dwarf2out_next_real_insn): New.
      	(dwarf2out_var_location): Call it.  Disregard begin stmt markers.
      	Dump debug binds in asm comments.
      	* gimple-iterator.c (gimple_find_edge_insert_loc): Skip debug stmts.
      	* gimple-iterator.h (gsi_start_bb_nondebug): Remove; adjust
      	callers to use gsi_start_nondebug_bb instead.
      	(gsi_after_labels): Skip gimple debug stmts.
      	(gsi_start_nondebug): New.
      	* gimple-loop-interchange.c (find_deps_in_bb_for_stmt): Adjust.
      	(proper_loop_form_for_interchange): Adjust.
      	* gimple-low.c (gimple_seq_may_fallthru): Take last nondebug stmt.
      	* gimple.h (gimple_seq_last_nondebug_stmt): New.
      	* gimplify.c (last_stmt_in_scope): Skip debug stmts.
      	(collect_fallthrough_labels): Likewise.
      	(should_warn_for_implicit_fallthrough): Likewise.
      	(warn_implicit_fallthrough_r): Likewise.
      	(expand_FALLTHROUGH_r): Likewise.
      	* graphite-isl-ast-to-gimple.c (gsi_insert_earliest): Adjust.
      	(graphite_copy_stmts_from_block): Skip nonbind markers.
      	* haifa-sched.c (sched_extend_bb): Skip debug insns.
      	* ipa-icf-gimple.c (func_checker::compare_bb): Adjust.
      	* jump.c (clean_barriers): Skip debug insns.
      	* omp-expand.c (expand_parallel_call): Skip debug insns.
      	(expand_task_call): Likewise.
      	(remove_exit_barrier): Likewise.
      	(expand_omp_taskreg): Likewise.
      	(expand_omp_for_init_counts): Likewise.
      	(expand_omp_for_generic): Likewise.
      	(expand_omp_for_static_nochunk): Likewise.
      	(expand_omp_for_static_chunk): Likewise.
      	(expand_omp_simd): Likewise.
      	(expand_omp_taskloop_for_outer): Likewise.
      	(expand_omp_taskloop_for_inner): Likewise.
      	(expand_oacc_for): Likewise.
      	(expand_omp_sections): Likewise.
      	(expand_omp_single): Likewise.
      	(expand_omp_synch): Likewise.
      	(expand_omp_atomic_load): Likewise.
      	(expand_omp_atomic_store): Likewise.
      	(expand_omp_atomic_fetch_op): Likewise.
      	(expand_omp_atomic_pipeline): Likewise.
      	(expand_omp_atomic_mutex): Likewise.
      	(expand_omp_target): Likewise.
      	(grid_expand_omp_for_loop): Likewise.
      	(grid_expand_target_grid_body): Likewise.
      	(build_omp_regions_1): Likewise.
      	* omp-low.c (check_combined_parallel): Skip debug stmts.
      	* postreload.c (fixup_debug_insns): Skip nonbind debug insns.
      	* regcprop.c (find_oldest_value_reg): Ensure REGNO is not a pseudo.
      	* sese.c (sese_trivially_empty_bb_p): Call is_gimple_debug in
      	test.
      	* tree-cfg.c (make_blobs_1): Skip debug stmts.
      	(make_edges): Likewise.
      	(cleanup_dead_labels): Likewise.
      	(gimple_can_merge_blocks_p): Likewise.
      	(stmt_starts_bb_p): Likewise.
      	(gimple_block_label): Likewise.
      	(gimple_redirect_edge_and_branch): Likewise.
      	* tree-cfgcleanup.c (remove_forwarder_block): Rearrange skipping
      	of debug stmts.
      	(execute_cleanup_cfg_post_optimizing): Dump enumerated decls with
      	TDF_SLIM.
      	* tree-pretty-print (print_declaration): Omit initializer in slim
      	dumps.
      	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark begin stmt
      	markers.
      	(eliminate_unnecessary_stmts): Stabilize block removal order.
      	* tree-ssa-tail-merge.c (find_duplicate): Skip debug stmts.
      	* var-tracking.c (get_first_insn): New.
      	(vt_emit_notes): Call it.
      	(vt_initialize): Walk any insns before the first BB.
      	(delete_debug_insns): Likewise.
      
      From-SVN: r255566
      Alexandre Oliva committed
    • [SFN] boilerplate changes in preparation to introduce nonbind markers · 36f52e8f
      This patch introduces a number of new macros and functions that will
      be used to distinguish between different kinds of debug stmts, insns
      and notes, namely, preexisting debug bind ones and to-be-introduced
      nonbind markers.
      
      In a seemingly mechanical way, it adjusts several uses of the macros
      and functions, so that they refer to narrower categories when
      appropriate.
      
      These changes, by themselves, should not have any visible effect in
      the compiler behavior, since the upcoming debug markers are never
      created with this patch alone.
      
      for  gcc/ChangeLog
      
      	* gimple.h (enum gimple_debug_subcode): Add
      	GIMPLE_DEBUG_BEGIN_STMT.
      	(gimple_debug_begin_stmt_p): New.
      	(gimple_debug_nonbind_marker_p): New.
      	* tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): New.
      	(MAY_HAVE_DEBUG_BIND_STMTS): Renamed from....
      	(MAY_HAVE_DEBUG_STMTS): ... this.  Check both.
      	* insn-notes.def (BEGIN_STMT): New.
      	* rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): New.
      	(MAY_HAVE_DEBUG_BIND_INSNS): Renamed from....
      	(MAY_HAVE_DEBUG_INSNS): ... this.  Check both.
      	(NOTE_MARKER_LOCATION, NOTE_MARKER_P): New.
      	(DEBUG_BIND_INSN_P, DEBUG_MARKER_INSN_P): New.
      	(INSN_DEBUG_MARKER_KIND): New.
      	(GEN_RTX_DEBUG_MARKER_BEGIN_STMT_PAT): New.
      	(INSN_VAR_LOCATION): Check for VAR_LOCATION.
      	(INSN_VAR_LOCATION_PTR): New.
      	* cfgexpand.c (expand_debug_locations): Handle debug bind insns
      	only.
      	(expand_gimple_basic_block): Likewise.  Emit debug temps for TER
      	deps only if debug bind insns are enabled.
      	(pass_expand::execute): Avoid deep TER and expand
      	debug locations for debug bind insns only.
      	* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Narrow
      	debug stmts special handling down to debug bind stmts.
      	* combine.c (try_combine): Narrow debug insns special handling
      	down to debug bind insns.
      	* cse.c (delete_trivially_dead_insns): Handle debug bindings.
      	Narrow debug insns preexisting special handling down to debug
      	bind insns.
      	* dce.c (rest_of_handle_ud_dce): Narrow debug insns special
      	handling down to debug bind insns.
      	* function.c (instantiate_virtual_regs): Skip debug markers,
      	adjust handling of debug binds.
      	* gimple-ssa-backprop.c (backprop::prepare_change): Try debug
      	temp insertion iff MAY_HAVE_DEBUG_BIND_STMTS.
      	* haifa-sched.c (schedule_insn): Narrow special handling of debug
      	insns to debug bind insns.
      	* ipa-param-manipulation.c (ipa_modify_call_arguments): Narrow
      	special handling of debug stmts to debug bind stmts.
      	* ipa-split.c (split_function): Likewise.
      	* ira.c (combine_and_move_insns): Adjust debug bind insns only.
      	* loop-unroll.c (apply_opt_in_copies): Adjust tests on bind
      	debug insns.
      	* reg-stack.c (convert_regs_1): Use DEBUG_BIND_INSN_P.
      	* regrename.c (build_def_use): Likewise.
      	* regcprop.c (copyprop_hardreg_forward_1): Likewise.
      	(pass_cprop_hardreg): Narrow special casing of debug insns to
      	debug bind insns.
      	* regstat.c (regstat_init_n_sets_and_refs): Likewise.
      	* reload1.c (reload): Likewise.
      	* sese.c (sese_insert_phis_for_liveouts): Narrow special
      	casing of debug stmts to debug bind stmts.
      	* shrink-wrap.c (move_insn_for_shrink_wrap): Likewise.
      	* ssa-iterators.h (num_imm_uses): Likewise.
      	* tree-cfg.c (gimple_merge_blocks): Narrow special casing of
      	debug stmts to debug bind stmts.
      	* tree-inline.c	(tree_function_versioning): Narrow special casing
      	of debug stmts to debug bind stmts.
      	* tree-loop-distribution.c (generate_loops_for_partition):
      	Narrow special casing of debug stmts to debug bind stmts.
      	* tree-sra.c (analyze_access_subtree): Narrow special casing
      	of debug stmts to debug bind stmts.
      	* tree-ssa-dce.c (remove_dead_stmt): Narrow special casing of debug
      	stmts to debug bind stmts.
      	* tree-ssa-loop-ivopt.c (remove_unused_ivs): Narrow special
      	casing of debug stmts to debug bind stmts.
      	* tree-ssa-reassoc.c (reassoc_remove_stmt): Likewise.
      	* tree-ssa-tail-merge.c (tail_merge_optimize): Narrow special
      	casing of debug stmts to debug bind stmts.
      	* tree-ssa-threadedge.c (propagate_threaded_block_debug_info):
      	Likewise.
      	* tree-ssa.c (flush_pending_stmts): Narrow special casing of
      	debug stmts to debug bind stmts.
      	(gimple_replace_ssa_lhs): Likewise.
      	(insert_debug_temp_for_var_def): Likewise.
      	(insert_debug_temps_for_defs): Likewise.
      	(reset_debug_uses): Likewise.
      	* tree-ssanames.c (release_ssa_name_fn): Likewise.
      	* tree-vect-loop-manip.c (adjust_debug_stmts_now): Likewise.
      	(adjust_debug_stmts): Likewise.
      	(adjust_phi_and_debug_stmts): Likewise.
      	(vect_do_peeling): Likewise.
      	* tree-vect-loop.c (vect_transform_loop): Likewise.
      	* valtrack.c (propagate_for_debug): Use BIND_DEBUG_INSN_P.
      	* var-tracking.c (adjust_mems): Narrow special casing of debug
      	insns to debug bind insns.
      	(dv_onepart_p, dataflow_set_clar_at_call, use_type): Likewise.
      	(compute_bb_dataflow, vt_find_locations): Likewise.
      	(vt_expand_loc, emit_notes_for_changes): Likewise.
      	(vt_init_cfa_base): Likewise.
      	(vt_emit_notes): Likewise.
      	(vt_initialize): Likewise.
      	(vt_finalize): Likewise.
      
      From-SVN: r255565
      Alexandre Oliva committed
    • [SFN] adjust RTL insn-walking API · f40dd646
      This patch removes unused RTL functions, introduces alternate ones for
      use in a later SFN patch, and regroups other related functions so that
      they appear in a more consistent order.
      
      for  gcc/ChangeLog
      
      	* emit-rtl.c (next_nondebug_insn, prev_nondebug_insn): Reorder.
      	(next_nonnote_nondebug_insn, prev_nonnote_nondebug_insn): Reorder.
      	(next_nonnote_nondebug_insn_bb): New.
      	(prev_nonnote_nondebug_insn_bb): New.
      	(prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove.
      	* rtl.h	(prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove decls.
      	(prev_nonnote_nondebug_insn_bb): Declare.
      	(next_nonnote_nondebug_insn_bb): Declare.
      	* cfgbuild.c (find_bb_boundaries): Adjust to skip debug insns.
      	* cfgrtl.c (get_last_bb_insn): Likewise.
      	* lra.c (push_insns): Likewise.
      
      From-SVN: r255564
      Alexandre Oliva committed
    • Expensive selftests: torture testing for fix-it boundary conditions (PR c/82050) · 421b29d6
      This patch adds selftest coverage for the fix for PR c/82050.
      
      The selftest iterates over various "interesting" column and line-width
      values to try to shake out bugs in the fix-it printing routines, a kind
      of "torture" selftest.
      
      Unfortunately this selftest is noticably slower than the other selftests;
      adding it to diagnostic-show-locus.c led to:
        -fself-test: 40218 pass(es) in 0.172000 seconds
      slowing down to:
        -fself-test: 97315 pass(es) in 6.109000 seconds
      for an unoptimized build (e.g. when hacking with --disable-bootstrap).
      
      Given that this affects the compile-edit-test cycle of the "gcc"
      subdirectory, this felt like an unacceptable amount of overhead to add.
      
      I attempted to optimize the test by reducing the amount of coverage, but
      the test seems useful, and there seems to be a valid role for "torture"
      selftests.
      
      Hence this patch adds a:
        gcc.dg/plugin/expensive_selftests_plugin.c
      with the responsibility for running "expensive" selftests, and adds the
      expensive test there.  The patch moves a small amount of code from
      selftest::run_tests into a helper class so that the plugin can print
      a useful summary line (to reassure us that the tests are actually being
      run).
      
      With that, the compile-edit-test cycle of the "gcc" subdir is unaffected;
      the plugin takes:
        expensive_selftests_plugin: 26641 pass(es) in 3.127000 seconds
      which seems reasonable within the much longer time taken by "make check"
      (I optimized some of the overhead away, hence the reduction from 6 seconds
      above down to 3 seconds).
      
      gcc/ChangeLog:
      	PR c/82050
      	* selftest-run-tests.c (selftest::run_tests): Move start/finish code
      	to...
      	* selftest.c (selftest::test_runner::test_runner): New ctor.
      	(selftest::test_runner::~test_runner): New dtor.
      	* selftest.h (class selftest::test_runner): New class.
      
      gcc/testsuite/ChangeLog:
      	PR c/82050
      	* gcc.dg/plugin/expensive-selftests-1.c: New file.
      	* gcc.dg/plugin/expensive_selftests_plugin.c: New file.
      	* gcc.dg/plugin/plugin.exp (plugin_test_list): Add the above.
      
      From-SVN: r255563
      David Malcolm committed
    • Daily bump. · cd147a26
      From-SVN: r255562
      GCC Administrator committed
  2. 11 Dec, 2017 16 commits
    • Fix the new pr83361.c testcase · 0473f725
      
      gcc/testsuite/
      	* gcc.dg/pr83361.c: Add -Wno-div-by-zero to dg-options.
      
      From-SVN: r255559
      Segher Boessenkool committed
    • Remove a stray line. · b50829fe
      From-SVN: r255558
      Martin Sebor committed
    • PR c/81544 - attribute noreturn and warn_unused_result on the same function · eedff701
      PR c/81544 - attribute noreturn and warn_unused_result on the same function
      accepted 
      
      Add tests missed in r255469.
      
      From-SVN: r255557
      Martin Sebor committed
    • altivec-12.c (main): Add tests for vec_avg. · 0242c7f0
      gcc/testsuite/ChangeLog:
      
      2017-12-07  Carl Love  <cel@us.ibm.com>
      
      	* gcc.target/powerpc/altivec-12.c (main):  Add tests for vec_avg.
      	* gcc.target/powerpc/builtins-1.c: Renamed builtins-1.h.
      	* gcc.target/powerpc/builtins-1.h: Add tests for vec_and,
      	vec_andc, vec_cpsgn, vec_mergeh,vec_mergel, vec_nor, vec_or,
      	vec_sel, vec_xor, vec_all_eq, vec_all_ge, vec_all_gt, vec_all_le,
      	vec_all_lt, vec_all_ne,	vec_any_eq,vec_any_ge, vec_any_gt,vec_any_le,
      	vec_any_lt, vec_any_ne, vec_cntlz, vec_round, vec_rsqrt, vec_rsqrte,
      	vec_splat, vec_div, vec_mul,vec_ctf, vec_cts, vec_ctu.
      	* gcc.target/powerpc/builtins-1-be.c: New file, big endian
      	test file for tests in builtins-1.h.
      	* gcc.target/powerpc/builtins-1-le.c: New file, little endian
      	test file for tests in builtins-1.h.
      	* gcc.target/powerpc/builtins-2.c (main): Add tests for vec_ctf,
      	vec_cts, vec_ctu.
      	* gcc.target/powerpc/builtins-3-runnable.c (test_result_sp): Fix printf
      	conversion character.
       	* gcc.target/powerpc/fold-vec-minmax-char.c (test1_min, test2_min,
      	test4_min, test1_max, test2_max): Add tests for vec_max and vec_min.
       	* gcc.target/powerpc/fold-vec-minmax-int.c (test4_min, test5_min,
      	test7_min, test8_min): Add tests for vec_min.
       	* gcc.target/powerpc/fold-vec-minmax-longlong.c (test7_max, test8_max,
      	test9_max, test10_max): Add tests for and vec_max.
       	* gcc.target/powerpc/fold-vec-minmax-short.c (test4_min, test5_min,
      	tes7_min, test8_min): Add tests for and vec_min.
       	* gcc.target/powerpc/p8vector-builtin-8.c (foo): Add test for vec_adds,
      	vec_subs, vec_sum2s, vec_sum4s.
       	* gcc.target/powerpc/vsx-splats-p8.c: New file to test vec_splats.
      	* gcc.target/vsx-vector-5.c (arg1_tests_d, arg1_tests_d): Add
      	tests for vec_ceil, vec_floor, vec_nearbyint, vec_sqrt.
      	* gcc.target/vsx-vector-7.c (foo): Add tests for vec_sel.
      	* gcc.target/vsx-vector-abss.c: New file to test vec_abss.
      
      From-SVN: r255556
      Carl Love committed
    • altivec.h (vec_extract_fp32_from_shorth, [...]): Add #defines. · 4ded4b23
      gcc/ChangeLog:
      
      2017-12-11  Carl Love  <cel@us.ibm.com>
      
      	* config/rs6000/altivec.h (vec_extract_fp32_from_shorth,
      	vec_extract_fp32_from_shortl]): Add #defines.
      	* config/rs6000/rs6000-builtin.def (VSLDOI_2DI): Add macro expansion.
      	* config/rs6000/rs6000-c.c (ALTIVEC_BUILTIN_VEC_UNPACKH,
      	ALTIVEC_BUILTIN_VEC_UNPACKL, ALTIVEC_BUILTIN_VEC_AND,
      	ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SRL,
      	ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VEC_SLD,
      	ALTIVEC_BUILTIN_VEC_SLL): Add expansions.
      	* doc/extend.texi: Add documentation for the added builtins.
      
      gcc/testsuite/ChangeLog:
      
      2017-12-11  Carl Love  <cel@us.ibm.com>
      	* gcc.target/powerpc/altivec-7.c: Renamed altivec-7.h.
      	* gcc.target/powerpc/altivec-7.h (main): Add testcases for vec_unpackl.
      	Add dg-final tests for the instructions generated.
      	* gcc.target/powerpc/altivec-7-be.c: New file to test on big endian.
      	* gcc.target/powerpc/altivec-7-le.c: New file to test on little endian.
      	* gcc.target/powerpc/altivec-13.c (foo): Add vec_sld, vec_srl,
      	 vec_sro testcases. Add dg-final tests for the instructions generated.
      	* gcc.target/powerpc/builtins-3-p8.c (test_vsi_packs_vui,
      	test_vsi_packs_vsi, test_vsi_packs_vssi, test_vsi_packs_vusi,
      	test_vsi_packsu-vssi, test_vsi_packsu-vusi, test_vsi_packsu-vsll,
      	test_vsi_packsu-vull, test_vsi_packsu-vsi, test_vsi_packsu-vui): Add
      	testcases. Add dg-final tests for new instructions.
      	* gcc.target/powerpc/p8vector-builtin-2.c (vbschar_eq, vbchar_eq,
      	vuchar_eq, vbint_eq, vsint_eq, viint_eq, vuint_eq, vbool_eq, vbint_ne,
      	vsint_ne, vuint_ne, vbool_ne, vsign_ne, vuns_ne, vbshort_ne): Add
      	tests.
      	Add dg-final instruction tests.
      	* gcc.target/powerpc/vsx-vector-6.c: Renamed vsx-vector-6.h.
      	* gcc.target/powerpc/vsx-vector-6.h (vec_andc,vec_nmsub, vec_nmadd,
      	vec_or, vec_nor, vec_andc, vec_or, vec_andc, vec_msums): Add tests.
      	Add dg-final tests for the generated instructions.
      	* gcc.target/powerpc/builtins-3.c (test_sll_vsc_vsc_vsuc,
      	test_sll_vuc_vuc, test_sll_vsi_vsi_vuc, test_sll_vui_vui_vuc,
      	test_sll_vbll_vull, test_sll_vbll_vbll_vus, test_sll_vp_vp_vuc,
      	test_sll_vssi_vssi_vuc, test_sll_vusi_vusi_vuc, test_slo_vsc_vsc_vsc,
      	test_slo_vuc_vuc_vsc, test_slo_vsi_vsi_vsc, test_slo_vsi_vsi_vuc,
      	test_slo_vui_vui_vsc, test_slo_vui_vui_vuc, test_slo_vsll_slo_vsll_vsc,
      	test_slo_vsll_slo_vsll_vuc, test_slo_vull_slo_vull_vsc,
      	test_slo_vull_slo_vull_vuc, test_slo_vp_vp_vsc, test_slo_vp_vp_vuc,
      	test_slo_vssi_vssi_vsc, test_slo_vssi_vssi_vuc, test_slo_vusi_vusi_vsc,
      	test_slo_vusi_vusi_vuc, test_slo_vusi_vusi_vuc, test_slo_vf_vf_vsc,
      	test_slo_vf_vf_vuc, test_cmpb_float): Add tests.
      
      From-SVN: r255555
      Carl Love committed
    • [PR80693] drop value of parallel SETs dropped by combine · b92977ee
      When combine drops a REG_UNUSED SET in a parallel, we have to clear
      cached values, so that, even if the REGs remain used (e.g. because
      they were referenced in the used SET_SRC), we will not use properties
      of the dropped modified value as if they applied to the preserved
      original one.
      
      We fail to adjust REG_N_SETS.
      
      for  gcc/ChangeLog
      
      	PR rtl-optimization/80693
      	PR rtl-optimization/81019
      	PR rtl-optimization/81020
      	* combine.c (distribute_notes): Reset any REG_UNUSED REGs that
      	are not mentioned in i3.  Place the REG_UNUSED note on i2,
      	possibly modified to REG_DEAD, if it did not originate in i3.
      
      for  gcc/testsuite/ChangeLog
      
      	PR rtl-optimization/80693
      	PR rtl-optimization/81019
      	PR rtl-optimization/81020
      	* gcc.dg/pr80693.c: New.
      	* gcc.dg/pr81019.c: New.
      
      From-SVN: r255554
      Alexandre Oliva committed
    • recog.c (store_data_bypass_p_1): New function. · 0a2c5149
      	* recog.c (store_data_bypass_p_1): New function.
      	(store_data_bypass_p): Handle USE in a PARALLEL like CLOBBER.  Use
      	store_data_bypass_p_1 to avoid code duplication.  Formatting fixes.
      
      From-SVN: r255553
      Jakub Jelinek committed
    • ifcvt: Call fixup_partitions (PR83361) · 9221f990
      After converting a conditional branch to an unconditional trap to a
      conditional trap, if the original trap is still reachable from another
      path, it may be that it is in a hot basic block  and only reachable from
      cold blocks.  Fix that up.
      
      
      	PR rtl-optimization/83361
      	* ifcvt.c (if_convert): Call fixup_partitions.
      
      gcc/testsuite/
      	PR rtl-optimization/83361
      	* gcc.dg/pr83361.c: New testcase.
      
      From-SVN: r255550
      Segher Boessenkool committed
    • rs6000.c (rs6000_gimple_fold_builtin): Add support for early folding of splat_u{8,16,32}. · a5648717
      [gcc]
      
      2017-12-11  Will Schmidt  <will_schmidt@vnet.ibm.com>
      
      	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
      	early folding of splat_u{8,16,32}.
      
      [testsuite]
      
      2017-12-11  Will Schmidt  <will_schmidt@vnet.ibm.com>
      
      	* gcc.target/powerpc/fold-vec-splat-misc-invalid.c: New.
      
      From-SVN: r255549
      Will Schmidt committed
    • intrinsic.texi (MAXLOC): Update documentation for character arrays and KIND argument. · 243501b7
      2017-12-11  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	* intrinsic.texi (MAXLOC): Update documentation for
      	character arrays and KIND argument.
      	(MINLOC): Likewise.
      
      From-SVN: r255546
      Thomas Koenig committed
    • aarch64.c (aarch64_print_operand): Don't start output_operand_lossage first… · ee61f880
      aarch64.c (aarch64_print_operand): Don't start output_operand_lossage first argument with capital letter.
      
      	* config/aarch64/aarch64.c (aarch64_print_operand): Don't start
      	output_operand_lossage first argument with capital letter.
      	(aarch64_override_options): Don't start error and sorry first argument
      	with capital letter.
      
      From-SVN: r255544
      Jakub Jelinek committed
    • re PR fortran/83379 (Intermittent failure of min/maxval_char*.f90 test cases) · 5e20aef8
      2017-12-11  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/83379
      	* gfortran.dg/minval_char_1.f90: Correct logic for mask
      	calculation.
      	* gfortran.dg/minval_char_2.f90: Likewise.
      	* gfortran.dg/maxval_char_1.f90: Likewise.
      	* gfortran.dg/maxval_char_2.f90: Likewise.
      
      From-SVN: r255543
      Thomas Koenig committed
    • re PR fortran/45689 ([F03] Missing transformational intrinsic in the trans_func_f2003 list) · 317fa064
      2017-12-11  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/45689
      	* simplify.c (min_max_choose): Add prototype.
      	(gfc_count): Format correctly.
      	(simplify_transformation): Pass array argument to init_result_expr.
      	(gfc_simplify_minval_maxval): Remove.
      	(gfc_min): New function.
      	(gfc_simplify_minval): Call simplify_transformation.
      	(gfc_max): New function.
      	(gfc_simplify_maxval): Call simplify_transformation.
      
      2017-12-11  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/45689
      	* gfortran.dg/minval_parameter_1.f90: New test.
      	* gfortran.dg/maxval_parameter_1.f90: New test.
      
      From-SVN: r255542
      Thomas Koenig committed
    • Fix stack overflow with autofdo (PR83355) · ad3f54ab
      g++.dg/bprob* is failing currently with autofdo.
      
      Running in gdb shows that there is a very deep recursion in get_index_by_decl until it
      overflows the stack.
      
      gcc/:
      2017-12-11  Andi Kleen  <ak@linux.intel.com>
      
      	PR gcov-profile/83355
      	* auto-profile.c (string_table::get_index_by_decl): Don't
      	recurse when abstract origin points to itself.
      
      From-SVN: r255540
      Andi Kleen committed
    • re PR tree-optimization/83320 (Mismatched free() / delete / delete [] in… · 46bb9d29
      re PR tree-optimization/83320 (Mismatched free() / delete / delete []  in gimple-loop-interchange.cc:948)
      
      	PR tree-optimization/83320
      	* gimple-loop-interchange.cc (free_data_refs_with_aux): Use delete.
      	(prune_datarefs_not_in_loop): Ditto.
      
      From-SVN: r255539
      Bin Cheng committed
    • Daily bump. · 138d2a81
      From-SVN: r255537
      GCC Administrator committed
  3. 10 Dec, 2017 6 commits
  4. 09 Dec, 2017 2 commits