aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2017-12-12go-lang.c (TARGET_AIX): Define if not defined.Tony Reix2-1/+11
* go-lang.c (TARGET_AIX): Define if not defined. (go_langhook_init): Set nil_check_size_threshold to -1 on AIX. Co-Authored-By: Ian Lance Taylor <iant@golang.org> From-SVN: r255582
2017-12-12Fix g++.old-deja/g++.pt/const2.C on SolarisRainer Orth2-2/+8
* lib/gcc-dg.exp (process-message): Avoid additional whitespace in $expmsg. From-SVN: r255580
2017-12-12re PR tree-optimization/83385 ([graphite] Wrong code w/ -O1 ↵Richard Biener4-32/+53
-floop-nest-optimize) 2017-12-12 Richard Biener <rguenther@suse.de> PR tree-optimization/83385 * graphite-scop-detection.c (get_order, order): Remove. (bb_to_rpo): New global. (cmp_pbbs): Adjust. (build_scops): Sort pbbs in RPO order. * gcc.dg/graphite/pr83385.c: New testcase. From-SVN: r255579
2017-12-12[Patch combine] Don't create vector mode ZERO_EXTEND from subregsJames Greenhalgh2-1/+8
The code in simplify set to handle transforming the paradoxical subreg expression: (set FOO (subreg:M (mem:N BAR) 0)) in to: (set FOO (zero_extend:M (mem:N BAR))) Does not consider the case where M is a vector mode, allowing it to construct (for example): (zero_extend:V4SI (mem:SI)) For one, this has the wrong semantics - but fortunately we fail long before then in expand_compound_operation. We need to explicitly reject vector modes from this transformation. gcc/ * combine.c (simplify_set): Do not transform subregs to zero_extends if the destination mode is a vector mode. From-SVN: r255578
2017-12-12re PR c/82679 (Uses of typedefs of arrays of _Atomic-qualified types are ↵Marek Polacek4-1/+21
rejected) PR c/82679 * c-decl.c (grokdeclarator): Check declspecs insted of atomicp. * gcc.dg/c11-atomic-5.c: New test. From-SVN: r255577
2017-12-12re PR rtl-optimization/83363 (wrong code at -O2 -fno-forward-propagate)Jakub Jelinek3-0/+53
PR rtl-optimization/83363 PR rtl-optimization/83364 * gcc.dg/pr83363.c: New test. * gcc.dg/pr83364.c: New test. From-SVN: r255576
2017-12-12re PR tree-optimization/83359 (ICE in expand_LOOP_DIST_ALIAS, at ↵Jakub Jelinek6-26/+156
internal-fn.c:2362) 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
2017-12-12re PR tree-optimization/80631 (Compiling with -O3 -mavx2 gives wrong code)Jakub Jelinek6-39/+280
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
2017-12-12re PR middle-end/81889 (bogus warnings with -Wmaybe-uninitialized -O3)Richard Biener5-1/+49
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
2017-12-12Enable VAES support [2/5]Julia Koval12-2/+214
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
2017-12-12Enable VAES support [1/5]Julia Koval9-4/+49
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
2017-12-12[IEPM] Introduce debug hook for inline entry point markersAlexandre Oliva6-0/+16
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
2017-12-12[SFN] Introduce -gstatement-frontiers option, enable debug markersAlexandre Oliva6-2/+30
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
2017-12-12[SFN] introduce statement frontier notes, still disabledAlexandre Oliva45-154/+895
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
2017-12-12[SFN] stabilize find_bb_boundariesAlexandre Oliva2-1/+43
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
2017-12-12[SFN] not-quite-boilerplate changes in preparation to introduce nonbind markersAlexandre Oliva27-172/+447
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
2017-12-12[SFN] boilerplate changes in preparation to introduce nonbind markersAlexandre Oliva40-104/+277
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
2017-12-12[SFN] adjust RTL insn-walking APIAlexandre Oliva6-37/+58
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
2017-12-12Expensive selftests: torture testing for fix-it boundary conditions (PR c/82050)David Malcolm8-9/+234
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
2017-12-12Daily bump.GCC Administrator1-1/+1
From-SVN: r255562
2017-12-12Fix the new pr83361.c testcaseSegher Boessenkool2-1/+5
gcc/testsuite/ * gcc.dg/pr83361.c: Add -Wno-div-by-zero to dg-options. From-SVN: r255559
2017-12-11Remove a stray line.Martin Sebor1-2/+0
From-SVN: r255558
2017-12-11PR c/81544 - attribute noreturn and warn_unused_result on the same functionMartin Sebor6-0/+1072
PR c/81544 - attribute noreturn and warn_unused_result on the same function accepted Add tests missed in r255469. From-SVN: r255557
2017-12-11altivec-12.c (main): Add tests for vec_avg.Carl Love14-79/+635
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
2017-12-11altivec.h (vec_extract_fp32_from_shorth, [...]): Add #defines.Carl Love16-18/+737
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
2017-12-11[PR80693] drop value of parallel SETs dropped by combineAlexandre Oliva5-0/+110
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
2017-12-11recog.c (store_data_bypass_p_1): New function.Jakub Jelinek2-72/+50
* 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
2017-12-11ifcvt: Call fixup_partitions (PR83361)Segher Boessenkool4-0/+54
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
2017-12-11rs6000.c (rs6000_gimple_fold_builtin): Add support for early folding of ↵Will Schmidt4-0/+64
splat_u{8,16,32}. [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
2017-12-11intrinsic.texi (MAXLOC): Update documentation for character arrays and KIND ↵Thomas Koenig2-10/+26
argument. 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
2017-12-11aarch64.c (aarch64_print_operand): Don't start output_operand_lossage first ↵Jakub Jelinek2-3/+10
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
2017-12-11re PR fortran/83379 (Intermittent failure of min/maxval_char*.f90 test cases)Thomas Koenig5-12/+21
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
2017-12-11re PR fortran/45689 ([F03] Missing transformational intrinsic in the ↵Thomas Koenig5-47/+145
trans_func_f2003 list) 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
2017-12-11Fix stack overflow with autofdo (PR83355)Andi Kleen3-1/+9
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
2017-12-11re PR tree-optimization/83320 (Mismatched free() / delete / delete [] in ↵Bin Cheng2-2/+8
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
2017-12-11Daily bump.GCC Administrator1-1/+1
From-SVN: r255537
2017-12-10* ChangeLog: Fix whitespace some more.Uros Bizjak1-12/+12
From-SVN: r255534
2017-12-10ChangeLog: Fix whitespace.Uros Bizjak2-22/+23
* ChangeLog: Fix whitespace. * testsuite/ChangeLog: Ditto. From-SVN: r255533
2017-12-10re PR fortran/53478 (gfortran segfaults when module name clashes with C ↵Dominique d'Humieres14-26/+81
binding name of procedure) 2017-12-10 Dominique d'Humieres <dominiq@lps.ens.fr> PR fortran/53478 * gfortran.h (gfc_find_case_gsymbol): New prototype. * symbol.c (gfc_find_case_gsymbol): New procedure, case insensistive version of gfc_find_gsymbol. * resolve.c (resolve_common_blocks): Use it. Replace %s with %qs where needed. * gfortran.dg/binding_label_tests_4.f03: Update dg-error. * gfortran.dg/binding_label_tests_6.f03: Likewise. * gfortran.dg/binding_label_tests_7.f03: Likewise. * gfortran.dg/binding_label_tests_8.f03: Likewise. * gfortran.dg/binding_label_tests_10_main.f03: Likewise. * gfortran.dg/binding_label_tests_11_main.f03: Likewise. * gfortran.dg/binding_label_tests_13_main.f03: Likewise. * gfortran.dg/test_common_binding_labels_3_main.f03: Likewise. * gfortran.dg/binding_label_tests_29.f90: New test. From-SVN: r255530
2017-12-10* doc/install.texi (Specific): Tweak link to mkssoftware.com.Gerald Pfeifer2-1/+5
From-SVN: r255529
2017-12-10re PR tree-optimization/83337 (ICE at -O3 x86_64-linux-gnu: in ↵Jakub Jelinek5-0/+149
interpret_rhs_expr, at tree-scalar-evolution.c:1775) PR tree-optimization/83337 * gimple-loop-interchange.cc (compute_access_stride): Handle bitfield DRs properly. * gcc.dg/tree-ssa/loop-interchange-14.c: New test. * gcc.dg/tree-ssa/loop-interchange-15.c: New test. From-SVN: r255528
2017-12-10Daily bump.GCC Administrator1-1/+1
From-SVN: r255527
2017-12-09re PR fortran/82934 (Segfault on assumed character length in allocate)Steven G. Kargl4-8/+60
2017-12-09 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/82934 PR fortran/83318 * match.c (gfc_match_allocate): Enforce F2008:C631. 2017-12-09 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/82934 PR fortran/83318 * gfortran.dg/allocate_assumed_charlen_2.f90: new test. From-SVN: r255524
2017-12-09re PR lto/83338 (SPEC CPU2017 510.parest_r ICE)Jakub Jelinek4-2/+41
PR tree-optimization/83338 * tree-vect-stmts.c (vectorizable_operation): Handle POINTER_DIFF_EXPR vectorization as MINUS_EXPR with a subsequent VIEW_CONVERT_EXPR from vector of unsigned integers to vector of signed integers. * gcc.dg/vect/pr83338.c: New test. From-SVN: r255523
2017-12-09re PR fortran/83316 (ICE: minval/maxval and characters)Thomas Koenig6-0/+50
2017-12-09 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/83316 * arith.c (gfc_character2character): New function. * arith.h: Add prototype. * simplify.c (gfc_convert_constant): Handle character type. 2017-12-09 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/83316 * gfortran.dg/minval_char_5.f90: New test. From-SVN: r255522
2017-12-09Daily bump.GCC Administrator1-1/+1
From-SVN: r255520
2017-12-08[multiple changes]Vladimir Makarov4-1/+33
2017-12-08 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/83317 * lra-constraints.c (process_address_1): Add insn code check. 2017-12-08 Jakub Jelinek <jakub@redhat.com> PR rtl-optimization/83317 * gcc.target/i386/pr83317.c: New test. From-SVN: r255517
2017-12-08re PR rtl-optimization/81595 (ICE: verify_flow_info failed (error: multiple ↵Jakub Jelinek2-0/+44
hot/cold transitions found)) PR rtl-optimization/81595 * gcc.c-torture/compile/pr81595.c: New test. From-SVN: r255516
2017-12-08re PR tree-optimization/83323 (186.crafty miscompares)Michael Matz8-34/+67
Fix PR83323 * gimple-loop-jam (unroll_jam_possible_p): Correct test for head-controlled loops and loop BBs. * common.opt (funroll-and-jam): Remove, instead ... (floop-unroll-and-jam): ... reuse this option. * opts.c (default_options_table): Use OPT_floop_unroll_and_jam. * doc/invoke.texi (-funroll-and-jam): Move docu to ... (-floop-unroll-and-jam): ... this option. testsuite/ * gcc.dg/pr83323.c: New test. * gcc.dg/unroll-and-jam.c: Use -floop-unroll-and-jam. From-SVN: r255514
2017-12-08ipa-polymorphic-call.c (noncall_stmt_may_be_vtbl_ptr_store): Fix a comment ↵Jakub Jelinek3-2/+8
typo, get_base_ref_and_offset -> get_ref_base_and_extent. * ipa-polymorphic-call.c (noncall_stmt_may_be_vtbl_ptr_store): Fix a comment typo, get_base_ref_and_offset -> get_ref_base_and_extent. * ipa-prop.c (stmt_may_be_vtbl_ptr_store): Likewise. From-SVN: r255513