1. 28 Feb, 2017 1 commit
  2. 03 Feb, 2017 1 commit
    • Simplify creation of target_clones (PR lto/66295) · 46a2ab58
      2017-02-03  Martin Liska  <mliska@suse.cz>
      
      	PR lto/66295
      	* multiple_target.c (create_dispatcher_calls): Redirect edge
      	from a caller of a dispatcher.
      	(expand_target_clones): Make the clones local.
      	(ipa_target_clone): Do both target clones and resolvers.
      	(ipa_dispatcher_calls): Remove the pass.
      	(pass_dispatcher_calls::gate): Likewise.
      	(make_pass_dispatcher_calls): Likewise.
      	* passes.def (pass_target_clone): Put as very first IPA early
      	pass.
      2017-02-03  Martin Liska  <mliska@suse.cz>
      
      	PR lto/66295
      	* gcc.target/i386/mvc9.c: New test.
      
      From-SVN: r245155
      Martin Liska committed
  3. 01 Jan, 2017 1 commit
  4. 21 Dec, 2016 1 commit
    • re PR bootstrap/78817 (stage2 bootstrap failure in vec.h:1613:5: error: argument… · 0dba7960
      re PR bootstrap/78817 (stage2 bootstrap failure in vec.h:1613:5: error: argument 1 null where non-null expected after r243661)
      
      	PR bootstrap/78817
      	* tree-pass.h (make_pass_post_ipa_warn): Declare.
      	* builtins.c (validate_arglist): Adjust get_nonnull_args call.
      	Check for NULL pointer argument to nonnull arg here.
      	(validate_arg): Revert 2016-12-14 changes.
      	* calls.h (get_nonnull_args): Remove declaration.
      	* tree-ssa-ccp.c: Include diagnostic-core.h.
      	(pass_data_post_ipa_warn): New variable.
      	(pass_post_ipa_warn): New class.
      	(pass_post_ipa_warn::execute): New method.
      	(make_pass_post_ipa_warn): New function.
      	* tree.h (get_nonnull_args): Declare.
      	* tree.c (get_nonnull_args): New function.
      	* calls.c (maybe_warn_null_arg): Removed.
      	(maybe_warn_null_arg): Removed.
      	(initialize_argument_information): Revert 2016-12-14 changes.
      	* passes.def: Add pass_post_ipa_warn after first ccp after IPA.
      c-family/
      	* c-common.c (struct nonnull_arg_ctx): New type.
      	(check_function_nonnull): Return bool instead of void.  Use
      	nonnull_arg_ctx as context rather than just location_t.
      	(check_nonnull_arg): Adjust for the new context type, set
      	warned_p to true if a warning has been diagnosed.
      	(check_function_arguments): Return bool instead of void.
      	* c-common.h (check_function_arguments): Adjust prototype.
      c/
      	* c-typeck.c (build_function_call_vec): If check_function_arguments
      	returns true, set TREE_NO_WARNING on CALL_EXPR.
      cp/
      	* typeck.c (cp_build_function_call_vec): If check_function_arguments
      	returns true, set TREE_NO_WARNING on CALL_EXPR.
      	* call.c (build_over_call): Likewise.
      
      From-SVN: r243874
      Jakub Jelinek committed
  5. 02 Dec, 2016 1 commit
  6. 25 Nov, 2016 2 commits
    • re PR tree-optimization/78343 (Loop is not eliminated) · 59ec925b
      2016-11-24  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/78343
      	* passes.def: Add CD-DCE pass after loop splitting.
      	* tree-ssa-dce.c (find_obviously_necessary_stmts): Move
      	SCEV init/finalize ...
      	(perform_tree_ssa_dce): ... here.  Deal with being
      	executed inside the loop pipeline in aggressive mode.
      
      	* gcc.dg/tree-ssa/sccp-2.c: New testcase.
      	* gcc.dg/autopar/uns-outer-6.c: Adjust.
      	* gcc.dg/tree-ssa/20030808-1.c: Likewise.
      	* gcc.dg/tree-ssa/20040305-1.c: Likewise.
      	* gcc.dg/vect/pr38529.c: Likewise.
      
      From-SVN: r242872
      Richard Biener committed
    • [PR 70965] Schedule extra rebuild_cgraph_edges · 54e606f0
      2016-11-25  Martin Jambor  <mjambor@suse.cz>
      
      	PR tree-optimization/70965
      	* passes.def (pass_build_ssa_passes): Add pass_rebuild_cgraph_edges.
      
      gcc/testsuite/
      	* g++.dg/pr70965.C: New test.
      
      From-SVN: r242867
      Martin Jambor committed
  7. 22 Nov, 2016 1 commit
    • OpenMP offloading to NVPTX: middle-end changes · 9669b00b
      	* internal-fn.c (expand_GOMP_SIMT_LANE): New.
      	(expand_GOMP_SIMT_VF): New.
      	(expand_GOMP_SIMT_LAST_LANE): New.
      	(expand_GOMP_SIMT_ORDERED_PRED): New.
      	(expand_GOMP_SIMT_VOTE_ANY): New.
      	(expand_GOMP_SIMT_XCHG_BFLY): New.
      	(expand_GOMP_SIMT_XCHG_IDX): New.
      	* internal-fn.def (GOMP_SIMT_LANE): New.
      	(GOMP_SIMT_VF): New.
      	(GOMP_SIMT_LAST_LANE): New.
      	(GOMP_SIMT_ORDERED_PRED): New.
      	(GOMP_SIMT_VOTE_ANY): New.
      	(GOMP_SIMT_XCHG_BFLY): New.
      	(GOMP_SIMT_XCHG_IDX): New.
      	* omp-low.c (omp_maybe_offloaded_ctx): New, outlined from...
      	(create_omp_child_function): ...here.  Set "omp target entrypoint"
      	or "omp declare target" attribute based on is_gimple_omp_offloaded.
      	(omp_max_simt_vf): New.  Use it...
      	(omp_max_vf): ...here.
      	(lower_rec_input_clauses): Add reduction lowering for SIMT execution.
      	(lower_lastprivate_clauses): Likewise, for "lastprivate" lowering.
      	(lower_omp_ordered): Likewise, for "ordered" lowering.
      	(expand_omp_simd): Add SIMT transforms.
      	(pass_data_lower_omp): Add PROP_gimple_lomp_dev.
      	(execute_omp_device_lower): New.
      	(pass_data_omp_device_lower): New.
      	(pass_omp_device_lower): New pass.
      	(make_pass_omp_device_lower): New.
      	* passes.def (pass_omp_device_lower): Position new pass.
      	* tree-pass.h (PROP_gimple_lomp_dev): Define.
      	(make_pass_omp_device_lower): Declare.
      
      From-SVN: r242710
      Alexander Monakov committed
  8. 28 Oct, 2016 1 commit
    • GIMPLE store merging pass · f663d9ad
      2016-10-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
      
      	PR middle-end/22141
      	* Makefile.in (OBJS): Add gimple-ssa-store-merging.o.
      	* common.opt (fstore-merging): New Optimization option.
      	* opts.c (default_options_table): Add entry for
      	OPT_ftree_store_merging.
      	* fold-const.h (can_native_encode_type_p): Declare prototype.
      	* fold-const.c (can_native_encode_type_p): Define.
      	* params.def (PARAM_STORE_MERGING_ALLOW_UNALIGNED): Define.
      	(PARAM_MAX_STORES_TO_MERGE): Likewise.
      	* timevar.def (TV_GIMPLE_STORE_MERGING): New timevar.
      	* passes.def: Insert pass_tree_store_merging.
      	* tree-pass.h (make_pass_store_merging): Declare extern
      	prototype.
      	* gimple-ssa-store-merging.c: New file.
      	* doc/invoke.texi (Optimization Options): Document
      	-fstore-merging.
      	(--param documentation): Document store-merging-allow-unaligned
      	and max-stores-to-merge.
      
      2016-10-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
                  Jakub Jelinek  <jakub@redhat.com>
                  Andrew Pinski  <pinskia@gmail.com>
      
      	PR middle-end/22141
      	PR rtl-optimization/23684
      	* gcc.c-torture/execute/pr22141-1.c: New test.
      	* gcc.c-torture/execute/pr22141-2.c: Likewise.
      	* gcc.target/aarch64/ldp_stp_1.c: Adjust for -fstore-merging.
      	* gcc.target/aarch64/ldp_stp_4.c: Likewise.
      	* gcc.dg/store_merging_1.c: New test.
      	* gcc.dg/store_merging_2.c: Likewise.
      	* gcc.dg/store_merging_3.c: Likewise.
      	* gcc.dg/store_merging_4.c: Likewise.
      	* gcc.dg/store_merging_5.c: Likewise.
      	* gcc.dg/store_merging_6.c: Likewise.
      	* gcc.dg/store_merging_7.c: Likewise.
      	* gcc.target/i386/pr22141.c: Likewise.
      	* gcc.target/i386/pr34012.c: Add -fno-store-merging to dg-options.
      	* g++.dg/init/new17.C: Likewise.
      
      
      
      Co-Authored-By: Andrew Pinski <pinskia@gmail.com>
      Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
      
      From-SVN: r241649
      Kyrylo Tkachov committed
  9. 20 Oct, 2016 1 commit
    • loop splitting · 28df8730
      (approved at https://gcc.gnu.org/ml/gcc-patches/2015-12/msg00648.html )
      
      	* common.opt (-fsplit-loops): New flag.
      	* passes.def (pass_loop_split): Add.
      	* opts.c (default_options_table): Add OPT_fsplit_loops entry at -O3.
      	(enable_fdo_optimizations): Add loop splitting.
      	* timevar.def (TV_LOOP_SPLIT): Add.
      	* tree-pass.h (make_pass_loop_split): Declare.
      	* tree-ssa-loop-manip.h (rewrite_into_loop_closed_ssa_1): Declare.
      	* tree-ssa-loop-unswitch.c: Include tree-ssa-loop-manip.h,
      	* tree-ssa-loop-split.c: New file.
      	* Makefile.in (OBJS): Add tree-ssa-loop-split.o.
      	* doc/invoke.texi (fsplit-loops): Document.
      	* doc/passes.texi (Loop optimization): Add paragraph about loop
      	splitting.
      
      testsuite/
      	* gcc.dg/loop-split.c: New test.
      	* gcc.dg/tree-ssa/ifc-9.c: Update.
      	* gcc.dg/tree-ssa/ifc-10.c: Update.
      
      From-SVN: r241374
      Michael Matz committed
  10. 18 Oct, 2016 1 commit
    • Makefile.in (OBJS): Add gimple-ssa-warn-alloca.o. · adc577c5
      	* Makefile.in (OBJS): Add gimple-ssa-warn-alloca.o.
      	* passes.def: Add two instances of pass_walloca.
      	* tree-pass.h (make_pass_walloca): New.
      	* gimple-ssa-warn-walloca.c: New file.
      	* doc/invoke.texi: Document -Walloca, -Walloca-larger-than=, and
      	-Wvla-larger-than= options.
      
      From-SVN: r241318
      Aldy Hernandez committed
  11. 21 Sep, 2016 1 commit
    • PR middle-end/49905 - Better sanity checking on sprintf src & dest to · 88d0c3f0
      gcc/ChangeLog:
      
      	PR middle-end/49905
      	* Makefile.in (OBJS): Add gimple-ssa-sprintf.o.
      	* config/linux.h (TARGET_PRINTF_POINTER_FORMAT): Redefine.
      	* config/linux.c (gnu_libc_printf_pointer_format): New function.
      	* config/sol2.h (TARGET_PRINTF_POINTER_FORMAT): Same.
      	* config/sol2.c (solaris_printf_pointer_format): New function.
      	* doc/invoke.texi (-Wformat-length, -fprintf-return-value): New
      	options.
      	* doc/tm.texi.in (TARGET_PRINTF_POINTER_FORMAT): Document.
      	* doc/tm.texi: Regenerate.
      	* gimple-fold.h (get_range_strlen): New function.
      	(get_maxval_strlen): Declare existing function.
      	* gimple-fold.c (get_range_strlen): Add arguments and compute both
      	maximum and minimum.
      	 (get_range_strlen): Define overload.
      	(get_maxval_strlen): Adjust.
      	* gimple-ssa-sprintf.c: New file and pass.
      	* passes.def (pass_sprintf_length): Add new pass.
      	* targhooks.h (default_printf_pointer_format): Declare new function.
      	(gnu_libc_printf_pointer_format): Same.
      	(solaris_libc_printf_pointer_format): Same.
      	* targhooks.c (default_printf_pointer_format): Define new function.
      	* tree-pass.h (make_pass_sprintf_length): Declare new function.
      	* print-tree.c: Increase buffer size.
      
      gcc/c-family/ChangeLog:
      
      	PR middle-end/49905
      	* c.opt: Add -Wformat-length and -fprintf-return-value.
      
      gcc/testsuite/ChangeLog:
      
      	PR middle-end/49905
      	* gcc.dg/builtin-stringop-chk-1.c: Adjust.
      	* gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: New test.
      	* gcc.dg/tree-ssa/builtin-sprintf-warn-2.c: New test.
      	* gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: New test.
      	* gcc.dg/tree-ssa/builtin-sprintf-warn-4.c: New test.
      	* gcc.dg/tree-ssa/builtin-sprintf.c: New test.
      	* gcc.dg/tree-ssa/builtin-sprintf-2.c: New test.
      
      From-SVN: r240298
      Martin Sebor committed
  12. 20 Sep, 2016 1 commit
    • Add Early VRP · 973625a0
      gcc/ChangeLog:
      
      2016-09-21  Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      	* doc/invoke.texi: Document -fdump-tree-evrp.
      	* passes.def: Define new pass_early_vrp.
      	* timevar.def: Define new TV_TREE_EARLY_VRP.
      	* tree-pass.h (make_pass_early_vrp): New.
      	* tree-ssa-propagate.c: Make replace_uses_in non static.
      	* tree-ssa-propagate.h: Export replace_uses_in.
      	* tree-vrp.c (extract_range_for_var_from_comparison_expr): New.
      	(extract_range_from_assert): Factor out
      	extract_range_for_var_from_comparison_expr.
      	(vrp_initialize_lattice): New.
      	(vrp_initialize): Factor out vrp_initialize_lattice.
      	(vrp_valueize): Fix it to reject complex value ranges.
      	(vrp_free_lattice): New.
      	(evrp_dom_walker::before_dom_children): Likewise.
      	(evrp_dom_walker::after_dom_children): Likewise.
      	(evrp_dom_walker::push_value_range): Likewise.
      	(evrp_dom_walker::pop_value_range): Likewise.
      	(execute_early_vrp): Likewise.
      	(execute_vrp): Call vrp_initialize_lattice and
      	vrp_free_lattice.
      	(make_pass_early_vrp): New.
      
      
      gcc/testsuite/ChangeLog:
      
      2016-09-21  Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      	* g++.dg/tree-ssa/pr31146-2.C: Run with -fno-tree-evrp as evrp also
      	does the same transformation.
      	* g++.dg/warn/pr33738.C: XFAIL as optimization now happens in ccp.
      	* gcc.dg/tree-ssa/evrp1.c: New test.
      	* gcc.dg/tree-ssa/evrp2.c: New test.
      	* gcc.dg/tree-ssa/evrp3.c: New test.
      	* gcc.dg/tree-ssa/pr20657.c: Check for the pattern in evrp dump.
      	* gcc.dg/tree-ssa/pr22117.c: Likewise.
      	* gcc.dg/tree-ssa/pr61839_2.c: Likewise.
      	* gcc.dg/tree-ssa/pr64130.c: Likewise.
      	* gcc.dg/tree-ssa/pr37508.c: Change the pattern to be checked as
      	foling now happens early.
      	* gcc.dg/tree-ssa/vrp04.c: Likewise.
      	* gcc.dg/tree-ssa/vrp06.c: Likewise.
      	* gcc.dg/tree-ssa/vrp16.c: Likewise.
      	* gcc.dg/tree-ssa/vrp25.c: Likewise.
      	* gcc.dg/tree-ssa/vrp67.c: Likewise.
      
      From-SVN: r240291
      Kugan Vivekanandarajah committed
  13. 18 Sep, 2016 1 commit
    • passes.def (pass_early_thread_jumps): Schedule after forwprop. · b720e919
      	* passes.def (pass_early_thread_jumps): Schedule after forwprop.
      	* tree-pass.h (make_pass_early_thread_jumps): Declare.
      	* tree-ssa-threadbackward.c (fsm_find_thread_path,
      	fsm_find_thread_path, profitable_jump_thread_path,
      	fsm_find_control_statement_thread_paths,
      	find_jump_threads_backwards): Add speed_p parameter.
      	(pass_data_early_thread_jumps): New pass.
      	(make_pass_early_thread_jumps): New function.
      
      	* g++.dg/predict-loop-exit-1.C: Disable early jump threading.
      	* g++.dg/predict-loop-exit-2.C: Disable early jump threading.
      	* g++.dg/predict-loop-exit-3.C: Disable early jump threading.
      	* gcc.dg/tree-ssa/pr69196-1.c: Disable early jump threading.
      	* gcc.dg/tree-ssa/vrp01.c: Disable early jump threading.
      	* gcc.dg/tree-ssa/ssa-dom-thread-2b.c: Disable early jump threading.
      	* gcc.dg/tree-ssa/pr68198.c: Scan ethread dump.
      	* gcc.dg/tree-ssa/ssa-thread-13.c: Scan ethread dump.
      	* gcc.dg/tree-ssa/vrp56.c: Scan ethread dump.
      	* gcc.dg/tree-ssa/vrp92.c: Scan ethread dump.
      	* gcc.dg/uninit-15.c: Swap xfailed and non-xfailed alternative.
      
      From-SVN: r240221
      Jan Hubicka committed
  14. 18 Aug, 2016 1 commit
    • tree-pass.h (make_pass_materialize_all_clones): Declare. · f0251020
      2016-08-18  Richard Biener  <rguenther@suse.de>
      
      	* tree-pass.h (make_pass_materialize_all_clones): Declare.
      	* ipa.c (pass_data_materialize_all_clones, pass_materialize_all_clones,
      	make_pass_materialize_all_clones): New simple IPA pass encapsulating
      	clone materialization.
      	* passes.def (all_late_ipa_passes): Start with
      	pass_materialize_all_clones.
      	* cgraphunit.c (symbol_table::compile): Remove call to
      	materialize_all_clones.
      	* tree-into-ssa.c: Include statistics.h.
      	(update_ssa): Count number of times we do incremental/rewrite
      	SSA update.
      
      From-SVN: r239567
      Richard Biener committed
  15. 27 May, 2016 1 commit
    • tree-ssa-threadedge.c: Remove include of tree-ssa-threadbackward.h. · 8b2ef235
      	* tree-ssa-threadedge.c: Remove include of tree-ssa-threadbackward.h.
      	(thread_across_edge): Remove calls to find_jump_threads_backwards.
      	* passes.def: Add jump threading passes before DOM/VRP.
      	* tree-ssa-threadbackward.c (find_jump_threads_backwards): Change
      	argument to a basic block from an edge.  Remove tests which are
      	handled elsewhere.
      	(pass_data_thread_jumps, class pass_thread_jumps): New.
      	(pass_thread_jumps::gate, pass_thread_jumps::execute): New.
      	(make_pass_thread_jumps): Likewise.
      	* tree-pass.h (make_pass_thread_jumps): Declare.
      
      	* gcc.dg/tree-ssa/pr21417.c: Update expected output.
      	* gcc.dg/tree-ssa/pr66752-3.c: Likewise.
      	* gcc.dg/tree-ssa/pr68198.c: Likewise.
      	* gcc.dg/tree-ssa/pr69196-1.c: Likewise.
      	* gcc.dg/tree-ssa/pr69270-3.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-dom-thread-2b.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-dom-thread-2g.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-dom-thread-2h.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-dom-thread-6.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-dom-thread-7.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-dom-thread-12.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-dom-thread-13.c: Likewise.
      	* gcc.dg/tree-ssa/vrp56.c: Likewise.
      
      From-SVN: r236831
      Jeff Law committed
  16. 19 May, 2016 1 commit
    • re PR tree-optimization/70729 (Loop marked with omp simd pragma is not vectorized) · 43c0068e
      2016-05-19  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/70729
      	* passes.def: Move LIM pass before PRE.  Remove no longer
      	required copyprop and move first DCE out of the loop pipeline.
      
      	* gcc.dg/autopar/outer-6.c: Adjust to avoid redundant store.
      	* gcc.dg/graphite/scop-18.c: Likewise.
      	* gcc.dg/pr41783.c: Disable LIM.
      	* gcc.dg/tree-ssa/loadpre10.c: Likewise.
      	* gcc.dg/tree-ssa/loadpre23.c: Likewise.
      	* gcc.dg/tree-ssa/loadpre24.c: Likewise.
      	* gcc.dg/tree-ssa/loadpre25.c: Likewise.
      	* gcc.dg/tree-ssa/loadpre4.c: Likewise.
      	* gcc.dg/tree-ssa/loadpre8.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-pre-16.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-pre-18.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-pre-20.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-pre-3.c: Likewise.
      	* gfortran.dg/pr42108.f90: Likewise.
      
      From-SVN: r236440
      Richard Biener committed
  17. 18 May, 2016 1 commit
  18. 03 May, 2016 1 commit
    • gimplify.h (get_initialized_tmp_var): Add allow_ssa parameter default true. · 381cdae4
      2016-05-03  Richard Biener  <rguenther@suse.de>
      
      	* gimplify.h (get_initialized_tmp_var): Add allow_ssa parameter
      	default true.
      	(gimplify_arg): Likewise.
      	* gimplify.c (gimplify_expr): Add overload with allow_ssa parameter,
      	re-writing the result to a decl if required.
      	(internal_get_tmp_var): Add allow_ssa parameter
      	and override into_ssa with it.
      	(get_formal_tmp_var): Adjust.
      	(get_initialized_tmp_var): Add allow_ssa parameter.
      	(gimplify_arg): Add allow_ssa parameter and avoid generating
      	SSA names for the result false.
      	(gimplify_call_expr): If the call may return twice do not
      	gimplify parameters into SSA.
      	(prepare_gimple_addressable): Do not allow an SSA name as
      	temporary.
      	(gimplify_modify_expr): Adjust assert.  For noreturn calls
      	with a SSA name LHS adjust its def.
      	(gimplify_save_expr): Do not allow an SSA name as save-expr
      	result.
      	(gimplify_one_sizepos): Do not allow an SSA name as a sizepos.
      	(gimplify_body): Init GIMPLE SSA data structures and gimplify
      	into-SSA.
      	(gimplify_scan_omp_clauses): Make sure OMP_CLAUSE_SIZE is not
      	an SSA name.  Likewise for OMP_CLAUSE_REDUCTION operands.
      	(gimplify_omp_for): Likewise for OMP_CLAUSE_DECL.  Likewise
      	for OMP_FOR_COND,  OMP_FOR_INCR and OMP_CLAUSE_LINEAR_STEP.
      	(optimize_target_teams): Do not allow SSA names for clause operands.
      	(gimplify_expr): Likewise for where we mark the result addressable.
      	* passes.def (pass_init_datastructures): Remove.
      	* tree-into-ssa.c (mark_def_sites): Ignore existing SSA names.
      	(rewrite_stmt): Likewise.
      	* tree-inline.c (initialize_cfun): Properly transfer SSA state.
      	(replace_locals_op): Replace SSA names.
      	(copy_gimple_seq_and_replace_locals): Init src_cfun.
      	* gimple-low.c (lower_builtin_setjmp): Deal with SSA.
      	* cgraph.c (release_function_body): Free CFG annotations only
      	when we have a CFG.  Simplify.
      	* gimple-fold.c (gimplify_and_update_call_from_tree): Use
      	force_gimple_operand instead of get_initialized_tmp_var.
      	* tree-pass.h (make_pass_init_datastructures): Remove.
      	* tree-ssa.c (execute_init_datastructures): Remove.
      	(pass_data_init_datastructures): Likewise.
      	(class pass_init_datastructures): Likewise.
      	(make_pass_init_datastructures): Likewise.
      	* omp-low.c (create_omp_child_function): Init SSA data structures.
      	(grid_expand_target_grid_body): Likewise.
      	* tree-cfg.c (move_block_to_fn): Double-check the DEF is an SSA
      	name before adding it to names_to_release.
      	(remove_bb): Always release SSA defs.
      	* tree-ssa-ccp.c (get_default_value): Check SSA_NAME_VAR
      	before dereferencing it.
      	* cgraphunit.c (init_lowered_empty_function): Always
      	int SSA data structures.
      	* tree-ssanames.c (release_defs): Remove assert that we are in
      	SSA form.
      	* trans-mem.c (diagnose_tm_1): Handle SSA name function.
      
      	c-family/
      	* cilk.c (cilk_gimplify_call_params_in_spawned_fn): Do not
      	allow call args to gimplify to SSA names.
      
      	* gcc.dg/pr30172-1.c: Adjust.
      	* gcc.dg/pr63743.c: Likewise.
      	* gcc.dg/tm/pr51696.c: Likewise.
      	* c-c++-common/tm/safe-1.c: Likewise.
      	* gcc.dg/tree-prof/val-prof-3.c: Likewise.
      	* gcc.dg/plugin/self-assign-test-1.c: XFAIL case that needs CSE.
      	* g++.dg/plugin/self-assign-test-1.C: Likewise.
      	* g++.dg/plugin/self-assign-test-2.C: Likewise.
      
      From-SVN: r235817
      Richard Biener committed
  19. 17 Apr, 2016 1 commit
    • Add pass parameter to TERMINATE_PASS_LIST · 17e7ab87
      2016-04-17  Tom de Vries  <tom@codesourcery.com>
      
      	PR other/68875
      	* pass_manager.h (TERMINATE_PASS_LIST): Add pass argument.
      	* passes.c (pass_manager::pass_manager): Declare and init p_start in
      	INSERT_PASSES_AFTER.  Add pass parameter to TERMINATE_PASS_LIST, and
      	check if it's equal to p_start.
      	* passes.def: Add arguments to TERMINATE_PASS_LISTs.
      
      From-SVN: r235071
      Tom de Vries committed
  20. 16 Feb, 2016 1 commit
    • re PR c/69835 (-Wnonnull diagnoses parameter comparisons with NULL even when… · bf14eba2
      re PR c/69835 (-Wnonnull diagnoses parameter comparisons with NULL even when those could have changed)
      
      	PR c/69835
      	* common.opt (Wnonnull-compare): New warning.
      	* doc/invoke.texi (-Wnonnull): Remove text about comparison
      	of arguments against NULL.
      	(-Wnonnull-compare): Document.
      	* Makefile.in (OBJS): Add gimple-ssa-nonnull-compare.o.
      	* tree-pass.h (make_pass_warn_nonnull_compare): Declare.
      	* passes.def (pass_warn_nonnull_compare): Add.
      	* gimple-ssa-nonnull-compare.c: New file.
      c-family/
      	* c.opt (Wnonnull-compare): Enable for -Wall.
      c/
      	* c-typeck.c (build_binary_op): Revert 2015-09-09 change.
      cp/
      	* typeck.c (cp_build_binary_op): Revert 2015-09-09 change.
      testsuite/
      	* c-c++-common/nonnull-1.c: Use -Wnonnull-compare instead of
      	-Wnonnull in dg-options.
      	* c-c++-common/nonnull-2.c: New test.
      
      From-SVN: r233472
      Jakub Jelinek committed
  21. 10 Feb, 2016 1 commit
  22. 19 Jan, 2016 1 commit
    • Merge of HSA · b2b40051
      2016-01-19  Martin Jambor  <mjambor@suse.cz>
      	    Martin Liska  <mliska@suse.cz>
      	    Michael Matz <matz@suse.de>
      
      libgomp/
      	* plugin/Makefrag.am: Add HSA plugin requirements.
      	* plugin/configfrag.ac (HSA_RUNTIME_INCLUDE): New variable.
      	(HSA_RUNTIME_LIB): Likewise.
      	(HSA_RUNTIME_CPPFLAGS): Likewise.
      	(HSA_RUNTIME_INCLUDE): New substitution.
      	(HSA_RUNTIME_LIB): Likewise.
      	(HSA_RUNTIME_LDFLAGS): Likewise.
      	(hsa-runtime): New configure option.
      	(hsa-runtime-include): Likewise.
      	(hsa-runtime-lib): Likewise.
      	(PLUGIN_HSA): New substitution variable.
      	Fill HSA_RUNTIME_INCLUDE and HSA_RUNTIME_LIB according to the new
      	configure options.
      	(PLUGIN_HSA_CPPFLAGS): Likewise.
      	(PLUGIN_HSA_LDFLAGS): Likewise.
      	(PLUGIN_HSA_LIBS): Likewise.
      	Check that we have access to HSA run-time.
      	* libgomp-plugin.h (offload_target_type): New element
      	OFFLOAD_TARGET_TYPE_HSA.
      	* libgomp.h (gomp_target_task): New fields firstprivate_copies and
      	args.
      	(bool gomp_create_target_task): Updated.
      	(gomp_device_descr): Extra parameter of run_func and async_run_func,
      	new field can_run_func.
      	* libgomp_g.h (GOMP_target_ext): Update prototype.
      	* oacc-host.c (host_run): Added a new parameter args.
      	* target.c (calculate_firstprivate_requirements): New function.
      	(copy_firstprivate_data): Likewise.
      	(gomp_target_fallback_firstprivate): Use them.
      	(gomp_target_unshare_firstprivate): New function.
      	(gomp_get_target_fn_addr): Allow returning NULL for shared memory
      	devices.
      	(GOMP_target): Do host fallback for all shared memory devices.  Do not
      	pass any args to plugins.
      	(GOMP_target_ext): Introduce device-specific argument parameter args.
      	Allow host fallback if device shares memory.  Do not remap data if
      	device has shared memory.
      	(gomp_target_task_fn): Likewise.  Also treat shared memory devices
      	like host fallback for mappings.
      	(GOMP_target_data): Treat shared memory devices like host fallback.
      	(GOMP_target_data_ext): Likewise.
      	(GOMP_target_update): Likewise.
      	(GOMP_target_update_ext): Likewise.  Also pass NULL as args to
      	gomp_create_target_task.
      	(GOMP_target_enter_exit_data): Likewise.
      	(omp_target_alloc): Treat shared memory devices like host fallback.
      	(omp_target_free): Likewise.
      	(omp_target_is_present): Likewise.
      	(omp_target_memcpy): Likewise.
      	(omp_target_memcpy_rect): Likewise.
      	(omp_target_associate_ptr): Likewise.
      	(gomp_load_plugin_for_device): Also load can_run.
      	* task.c (GOMP_PLUGIN_target_task_completion): Free
      	firstprivate_copies.
      	(gomp_create_target_task): Accept new argument args and store it to
      	ttask.
      	* plugin/plugin-hsa.c: New file.
      
      gcc/
      	* Makefile.in (OBJS): Add new source files.
      	(GTFILES): Add hsa.c.
      	* common.opt (disable_hsa): New variable.
      	(-Whsa): New warning.
      	* config.in (ENABLE_HSA): New.
      	* configure.ac: Treat hsa differently from other accelerators.
      	(OFFLOAD_TARGETS): Define ENABLE_OFFLOADING according to
      	$enable_offloading.
      	(ENABLE_HSA): Define ENABLE_HSA according to $enable_hsa.
      	* doc/install.texi (Configuration): Document --with-hsa-runtime,
      	--with-hsa-runtime-include, --with-hsa-runtime-lib and
      	--with-hsa-kmt-lib.
      	* doc/invoke.texi (-Whsa): Document.
      	(hsa-gen-debug-stores): Likewise.
      	* lto-wrapper.c (compile_images_for_offload_targets): Do not attempt
      	to invoke offload compiler for hsa acclerator.
      	* opts.c (common_handle_option): Determine whether HSA offloading
      	should be performed.
      	* params.def (PARAM_HSA_GEN_DEBUG_STORES): New parameter.
      	* builtin-types.def (BT_FN_VOID_UINT_PTR_INT_PTR): New.
      	(BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_INT_INT): Removed.
      	(BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_PTR): New.
      	* gimple-low.c (lower_stmt): Also handle GIMPLE_OMP_GRID_BODY.
      	* gimple-pretty-print.c (dump_gimple_omp_for): Also handle
      	GF_OMP_FOR_KIND_GRID_LOOP.
      	(dump_gimple_omp_block): Also handle GIMPLE_OMP_GRID_BODY.
      	(pp_gimple_stmt_1): Likewise.
      	* gimple-walk.c (walk_gimple_stmt): Likewise.
      	* gimple.c (gimple_build_omp_grid_body): New function.
      	(gimple_copy): Also handle GIMPLE_OMP_GRID_BODY.
      	* gimple.def (GIMPLE_OMP_GRID_BODY): New.
      	* gimple.h (enum gf_mask): Added GF_OMP_PARALLEL_GRID_PHONY,
      	GF_OMP_FOR_KIND_GRID_LOOP, GF_OMP_FOR_GRID_PHONY and
      	GF_OMP_TEAMS_GRID_PHONY.
      	(gimple_statement_omp_single_layout): Updated comments.
      	(gimple_build_omp_grid_body): New function.
      	(gimple_has_substatements): Also handle GIMPLE_OMP_GRID_BODY.
      	(gimple_omp_for_grid_phony): New function.
      	(gimple_omp_for_set_grid_phony): Likewise.
      	(gimple_omp_parallel_grid_phony): Likewise.
      	(gimple_omp_parallel_set_grid_phony): Likewise.
      	(gimple_omp_teams_grid_phony): Likewise.
      	(gimple_omp_teams_set_grid_phony): Likewise.
      	(gimple_return_set_retbnd): Also handle GIMPLE_OMP_GRID_BODY.
      	* omp-builtins.def (BUILT_IN_GOMP_OFFLOAD_REGISTER): New.
      	(BUILT_IN_GOMP_OFFLOAD_UNREGISTER): Likewise.
      	(BUILT_IN_GOMP_TARGET): Updated type.
      	* omp-low.c: Include symbol-summary.h, hsa.h and params.h.
      	(adjust_for_condition): New function.
      	(get_omp_for_step_from_incr): Likewise.
      	(extract_omp_for_data): Moved parts to adjust_for_condition and
      	get_omp_for_step_from_incr.
      	(build_outer_var_ref): Handle GIMPLE_OMP_GRID_BODY.
      	(fixup_child_record_type): Bail out if receiver_decl is NULL.
      	(scan_sharing_clauses): Handle OMP_CLAUSE__GRIDDIM_.
      	(scan_omp_parallel): Do not create child functions for phony
      	constructs.
      	(check_omp_nesting_restrictions): Handle GIMPLE_OMP_GRID_BODY.
      	(scan_omp_1_op): Checking assert we are not remapping to
      	ERROR_MARK.  Also also handle GIMPLE_OMP_GRID_BODY.
      	(parallel_needs_hsa_kernel_p): New function.
      	(expand_parallel_call): Register apprpriate parallel child
      	functions as HSA kernels.
      	(grid_launch_attributes_trees): New type.
      	(grid_attr_trees): New variable.
      	(grid_create_kernel_launch_attr_types): New function.
      	(grid_insert_store_range_dim): Likewise.
      	(grid_get_kernel_launch_attributes): Likewise.
      	(get_target_argument_identifier_1): Likewise.
      	(get_target_argument_identifier): Likewise.
      	(get_target_argument_value): Likewise.
      	(push_target_argument_according_to_value): Likewise.
      	(get_target_arguments): Likewise.
      	(expand_omp_target): Call get_target_arguments instead of looking
      	up for teams and thread limit.
      	(grid_expand_omp_for_loop): New function.
      	(grid_arg_decl_map): New type.
      	(grid_remap_kernel_arg_accesses): New function.
      	(grid_expand_target_kernel_body): New function.
      	(expand_omp): Call it.
      	(lower_omp_for): Do not emit phony constructs.
      	(lower_omp_taskreg): Do not emit phony constructs but create for them
      	a temporary variable receiver_decl.
      	(lower_omp_taskreg): Do not emit phony constructs.
      	(lower_omp_teams): Likewise.
      	(lower_omp_grid_body): New function.
      	(lower_omp_1): Call it.
      	(grid_reg_assignment_to_local_var_p): New function.
      	(grid_seq_only_contains_local_assignments): Likewise.
      	(grid_find_single_omp_among_assignments_1): Likewise.
      	(grid_find_single_omp_among_assignments): Likewise.
      	(grid_find_ungridifiable_statement): Likewise.
      	(grid_target_follows_gridifiable_pattern): Likewise.
      	(grid_remap_prebody_decls): Likewise.
      	(grid_copy_leading_local_assignments): Likewise.
      	(grid_process_kernel_body_copy): Likewise.
      	(grid_attempt_target_gridification): Likewise.
      	(grid_gridify_all_targets_stmt): Likewise.
      	(grid_gridify_all_targets): Likewise.
      	(execute_lower_omp): Call grid_gridify_all_targets.
      	(make_gimple_omp_edges): Handle GIMPLE_OMP_GRID_BODY.
      	* tree-core.h (omp_clause_code): Added OMP_CLAUSE__GRIDDIM_.
      	(tree_omp_clause): Added union field dimension.
      	* tree-pretty-print.c (dump_omp_clause): Handle OMP_CLAUSE__GRIDDIM_.
      	* tree.c (omp_clause_num_ops): Added number of arguments of
      	OMP_CLAUSE__GRIDDIM_.
      	(omp_clause_code_name): Added name of OMP_CLAUSE__GRIDDIM_.
      	(walk_tree_1): Handle OMP_CLAUSE__GRIDDIM_.
      	* tree.h (OMP_CLAUSE_GRIDDIM_DIMENSION): New.
      	(OMP_CLAUSE_SET_GRIDDIM_DIMENSION): Likewise.
      	(OMP_CLAUSE_GRIDDIM_SIZE): Likewise.
      	(OMP_CLAUSE_GRIDDIM_GROUP): Likewise.
      	* passes.def: Schedule pass_ipa_hsa and pass_gen_hsail.
      	* tree-pass.h (make_pass_gen_hsail): Declare.
      	(make_pass_ipa_hsa): Likewise.
      	* ipa-hsa.c: New file.
      	* lto-section-in.c (lto_section_name): Add hsa section name.
      	* lto-streamer.h (lto_section_type): Add hsa section.
      	* timevar.def (TV_IPA_HSA): New.
              * hsa-brig-format.h: New file.
      	* hsa-brig.c: New file.
      	* hsa-dump.c: Likewise.
      	* hsa-gen.c: Likewise.
      	* hsa.c: Likewise.
      	* hsa.h: Likewise.
      	* toplev.c (compile_file): Call hsa_output_brig.
      	* hsa-regalloc.c: New file.
      
      gcc/fortran/
      	* types.def (BT_FN_VOID_UINT_PTR_INT_PTR): New.
      	(BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_INT_INT): Removed.
      	(BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_PTR): New.
      
      gcc/lto/
      	* lto-partition.c: Include "hsa.h"
      	(add_symbol_to_partition_1): Put hsa implementations into the
      	same partition as host implementations.
      
      liboffloadmic/
      	* plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_async_run): New
      	unused parameter.
      	(GOMP_OFFLOAD_run): Likewise.
      
      include/
      	* gomp-constants.h (GOMP_DEVICE_HSA): New macro.
      	(GOMP_VERSION_HSA): Likewise.
      	(GOMP_TARGET_ARG_DEVICE_MASK): Likewise.
      	(GOMP_TARGET_ARG_DEVICE_ALL): Likewise.
      	(GOMP_TARGET_ARG_SUBSEQUENT_PARAM): Likewise.
      	(GOMP_TARGET_ARG_ID_MASK): Likewise.
      	(GOMP_TARGET_ARG_NUM_TEAMS): Likewise.
      	(GOMP_TARGET_ARG_THREAD_LIMIT): Likewise.
      	(GOMP_TARGET_ARG_VALUE_SHIFT): Likewise.
      	(GOMP_TARGET_ARG_HSA_KERNEL_ATTRIBUTES): Likewise.
      
      From-SVN: r232549
      Martin Jambor committed
  23. 18 Jan, 2016 2 commits
    • Add pass_parallelize_loops to pass_oacc_kernels · a98d4647
      2016-01-18  Tom de Vries  <tom@codesourcery.com>
      
      	* passes.def: Add pass_parallelize_loops to pass_oacc_kernels.
      
      	* gcc.dg/autopar/outer-1.c: Update for new parloops instantiation.
      	* gcc.dg/autopar/outer-2.c: Same.
      	* gcc.dg/autopar/outer-3.c: Same.
      	* gcc.dg/autopar/outer-4.c: Same.
      	* gcc.dg/autopar/outer-5.c: Same.
      	* gcc.dg/autopar/outer-6.c: Same.
      	* gcc.dg/autopar/parallelization-1.c: Same.
      	* gcc.dg/autopar/parloops-exit-first-loop-alt-2.c: Same.
      	* gcc.dg/autopar/parloops-exit-first-loop-alt-3.c: Same.
      	* gcc.dg/autopar/parloops-exit-first-loop-alt-4.c: Same.
      	* gcc.dg/autopar/parloops-exit-first-loop-alt-5.c: Same.
      	* gcc.dg/autopar/parloops-exit-first-loop-alt-6.c: Same.
      	* gcc.dg/autopar/parloops-exit-first-loop-alt-7.c: Same.
      	* gcc.dg/autopar/parloops-exit-first-loop-alt-pr66652.c: Same.
      	* gcc.dg/autopar/parloops-exit-first-loop-alt.c: Same.
      	* gcc.dg/autopar/pr39500-1.c: Same.
      	* gcc.dg/autopar/pr39500-2.c: Same.
      	* gcc.dg/autopar/pr46193.c: Same.
      	* gcc.dg/autopar/pr46194.c: Same.
      	* gcc.dg/autopar/pr49580.c: Same.
      	* gcc.dg/autopar/pr49960-1.c: Same.
      	* gcc.dg/autopar/pr49960.c: Same.
      	* gcc.dg/autopar/pr68373.c: Same.
      	* gcc.dg/autopar/reduc-1.c: Same.
      	* gcc.dg/autopar/reduc-1char.c: Same.
      	* gcc.dg/autopar/reduc-1short.c: Same.
      	* gcc.dg/autopar/reduc-2.c: Same.
      	* gcc.dg/autopar/reduc-2char.c: Same.
      	* gcc.dg/autopar/reduc-2short.c: Same.
      	* gcc.dg/autopar/reduc-3.c: Same.
      	* gcc.dg/autopar/reduc-4.c: Same.
      	* gcc.dg/autopar/reduc-6.c: Same.
      	* gcc.dg/autopar/reduc-7.c: Same.
      	* gcc.dg/autopar/reduc-8.c: Same.
      	* gcc.dg/autopar/reduc-9.c: Same.
      	* gcc.dg/autopar/uns-outer-4.c: Same.
      	* gcc.dg/autopar/uns-outer-5.c: Same.
      	* gcc.dg/autopar/uns-outer-6.c: Same.
      	* gfortran.dg/parloops-exit-first-loop-alt-2.f95: Same.
      	* gfortran.dg/parloops-exit-first-loop-alt.f95: Same.
      
      From-SVN: r232513
      Tom de Vries committed
    • Add oacc_kernels_p argument to pass_parallelize_loops · 61d9c527
      2016-01-18  Tom de Vries  <tom@codesourcery.com>
      
      	* omp-low.c (set_oacc_fn_attrib): Make extern.
      	* omp-low.h (set_oacc_fn_attrib): Declare.
      	* tree-parloops.c (struct reduction_info): Add reduc_addr field.
      	(create_call_for_reduction_1): Handle case that reduc_addr is non-NULL.
      	(create_parallel_loop, gen_parallel_loop, try_create_reduction_list):
      	Add and handle function parameter oacc_kernels_p.
      	(find_reduc_addr, get_omp_data_i_param): New function.
      	(ref_conflicts_with_region, oacc_entry_exit_ok_1)
      	(oacc_entry_exit_single_gang, oacc_entry_exit_ok): New function.
      	(parallelize_loops): Add and handle function parameter oacc_kernels_p.
      	Calculate dominance info.  Skip loops that are not in a kernels region
      	in oacc_kernels_p mode.  Skip inner loops of parallelized loops.
      	(pass_parallelize_loops::execute): Call parallelize_loops with
      	oacc_kernels_p argument.
      	(pass_parallelize_loops::clone, pass_parallelize_loops::set_pass_param):
      	New member function.
      	(pass_parallelize_loops::bool oacc_kernels_p): New member var.
      	* passes.def: Add argument to pass_parallelize_loops instantation.
      
      From-SVN: r232512
      Tom de Vries committed
  24. 16 Jan, 2016 1 commit
  25. 04 Jan, 2016 1 commit
  26. 18 Dec, 2015 1 commit
  27. 16 Dec, 2015 1 commit
    • Add pass_oacc_ipa · 597a8ab9
      2015-12-16  Tom de Vries  <tom@codesourcery.com>
      
      	* opts.c (default_options_optimization): Set fipa-pta on by default for
      	fopenacc.
      	* passes.def: Move kernels pass group to pass_ipa_oacc.
      	* tree-pass.h (make_pass_oacc_kernels2): Remove.
      	(make_pass_ipa_oacc, make_pass_ipa_oacc_kernels): Declare.
      	* tree-ssa-loop.c (pass_oacc_kernels2, make_pass_oacc_kernels2): Remove.
      	(pass_ipa_oacc, pass_ipa_oacc_kernels): New pass.
      	(make_pass_ipa_oacc, make_pass_ipa_oacc_kernels): New function.
      	* tree-ssa-structalias.c (pass_ipa_pta::clone): New function.
      
      	* g++.dg/ipa/devirt-37.C: Update for new fre2 pass.
      	* g++.dg/ipa/devirt-40.C: Same.
      	* g++.dg/tree-ssa/pr61034.C: Same.
      	* gcc.dg/ipa/ipa-pta-1.c: Update for new pta1 pass.
      	* gcc.dg/ipa/ipa-pta-10.c: Same.
      	* gcc.dg/ipa/ipa-pta-11.c: Same.
      	* gcc.dg/ipa/ipa-pta-14.c: Same.
      	* gcc.dg/ipa/ipa-pta-16.c: Same.
      	* gcc.dg/ipa/ipa-pta-2.c: Same.
      	* gcc.dg/ipa/ipa-pta-5.c: Same.
      	* gcc.dg/ipa/ipa-pta-6.c: Same.
      	* gcc.dg/torture/ipa-pta-1.c: Same.
      	* gcc.dg/ipa/ipa-pta-13.c: Update for new fre2 and pta1 pass.
      	* gcc.dg/ipa/ipa-pta-3.c: Same.
      	* gcc.dg/ipa/ipa-pta-4.c: Same.
      
      From-SVN: r231690
      Tom de Vries committed
  28. 15 Dec, 2015 1 commit
    • c-common.c (c_common_attribute_table): Handle "omp declare target link" attribute. · 4a38b02b
      gcc/c-family/
      	* c-common.c (c_common_attribute_table): Handle "omp declare target
      	link" attribute.
      gcc/
      	* cgraphunit.c (output_in_order): Do not assemble "omp declare target
      	link" variables in ACCEL_COMPILER.
      	* gimplify.c (gimplify_adjust_omp_clauses): Do not remove mapping of
      	"omp declare target link" variables.
      	* omp-low.c (scan_sharing_clauses): Do not remove mapping of "omp
      	declare target link" variables.
      	(add_decls_addresses_to_decl_constructor): For "omp declare target link"
      	variables output address of the artificial pointer instead of address of
      	the variable.  Set most significant bit of the size to mark them.
      	(pass_data_omp_target_link): New pass_data.
      	(pass_omp_target_link): New class.
      	(find_link_var_op): New static function.
      	(make_pass_omp_target_link): New function.
      	* passes.def: Add pass_omp_target_link.
      	* tree-pass.h (make_pass_omp_target_link): Declare.
      	* varpool.c (symbol_table::output_variables): Do not assemble "omp
      	declare target link" variables in ACCEL_COMPILER.
      gcc/lto/
      	* lto.c: Include stringpool.h and fold-const.h.
      	(offload_handle_link_vars): New static function.
      	(lto_main): Call offload_handle_link_vars.
      libgomp/
      	* libgomp.h (REFCOUNT_LINK): Define.
      	(struct splay_tree_key_s): Add link_key.
      	* target.c (gomp_map_vars): Treat REFCOUNT_LINK objects as not mapped.
      	Replace target address of the pointer with target address of newly
      	mapped object in the splay tree.  Set link pointer on target to the
      	device address of the mapped object.
      	(gomp_unmap_vars): Restore target address of the pointer in the splay
      	tree for REFCOUNT_LINK objects after unmapping.
      	(gomp_load_image_to_device): Set refcount to REFCOUNT_LINK for "omp
      	declare target link" objects.
      	(gomp_unload_image_from_device): Replace j with i.  Force unmap of all
      	"omp declare target link" objects, which were mapped for the image.
      	(gomp_exit_data): Restore target address of the pointer in the splay
      	tree for REFCOUNT_LINK objects after unmapping.
      	* testsuite/libgomp.c/target-link-1.c: New file.
      
      From-SVN: r231655
      Ilya Verbin committed
  29. 11 Dec, 2015 1 commit
  30. 04 Dec, 2015 1 commit
    • Add fuzzing coverage support · 95e7bbb8
      	* sancov.c: New file.
      	* Makefile.in (OBJS): Add sancov.o.
      	* invoke.texi (-fsanitize-coverage=trace-pc): Describe.
      	* passes.def (sancov_pass): Add.
      	* tree-pass.h  (sancov_pass): Add.
      	* common.opt (-fsanitize-coverage=trace-pc): Add.
      	* sanitizer.def (BUILT_IN_SANITIZER_COV_TRACE_PC): Add.
      	* builtins.def (DEF_SANITIZER_BUILTIN): Enable for
      	flag_sanitize_coverage.
      
      From-SVN: r231296
      Dmitry Vyukov committed
  31. 25 Nov, 2015 1 commit
    • Add pass_oacc_kernels pass group in passes.def · b5f34b42
      2015-11-25  Tom de Vries  <tom@codesourcery.com>
      
      	* omp-low.c (pass_expand_omp_ssa::clone): New function.
      	* passes.def: Add pass_oacc_kernels pass group.
      	* tree-ssa-loop-ch.c (pass_ch::clone): New function.
      
      	* g++.dg/tree-ssa/copyprop-1.C: Update after adding new dce1.
      	* gcc.dg/pr23911.c: Same.
      	* gcc.dg/tree-ssa/20030709-2.c: Same.
      	* gcc.dg/tree-ssa/20030731-2.c: Same.
      	* gcc.dg/tree-ssa/20040729-1.c: Same.
      	* gcc.dg/tree-ssa/cfgcleanup-1.c: Same.
      	* gcc.dg/tree-ssa/loop-36.c: Same.
      	* gcc.dg/tree-ssa/pr21086.c: Same.
      	* gcc.dg/tree-ssa/ssa-dce-1.c: Same.
      	* gcc.dg/tree-ssa/ssa-dce-2.c: Same.
      	* gcc.dg/vect/pr26359.c: Same.
      	* c-c++-common/restrict-2.c: Update after adding new lim1.
      	* c-c++-common/restrict-4.c: Same.
      	* g++.dg/tree-ssa/pr33615.C: Same.
      	* g++.dg/tree-ssa/restrict1.C: Same.
      	* gcc.dg/tm/pub-safety-1.c: Same.
      	* gcc.dg/tm/reg-promotion.c: Same.
      	* gcc.dg/tree-ssa/20050314-1.c: Same.
      	* gcc.dg/tree-ssa/loop-32.c: Same.
      	* gcc.dg/tree-ssa/loop-33.c: Same.
      	* gcc.dg/tree-ssa/loop-34.c: Same.
      	* gcc.dg/tree-ssa/loop-35.c: Same.
      	* gcc.dg/tree-ssa/loop-7.c: Same.
      	* gcc.dg/tree-ssa/pr23109.c: Same.
      	* gcc.dg/tree-ssa/restrict-3.c: Same.
      	* gcc.dg/tree-ssa/restrict-5.c: Same.
      	* gcc.dg/tree-ssa/ssa-lim-1.c: Same.
      	* gcc.dg/tree-ssa/ssa-lim-10.c: Same.
      	* gcc.dg/tree-ssa/ssa-lim-11.c: Same.
      	* gcc.dg/tree-ssa/ssa-lim-12.c: Same.
      	* gcc.dg/tree-ssa/ssa-lim-2.c: Same.
      	* gcc.dg/tree-ssa/ssa-lim-3.c: Same.
      	* gcc.dg/tree-ssa/ssa-lim-6.c: Same.
      	* gcc.dg/tree-ssa/ssa-lim-7.c: Same.
      	* gcc.dg/tree-ssa/ssa-lim-8.c: Same.
      	* gcc.dg/tree-ssa/ssa-lim-9.c: Same.
      	* gcc.dg/tree-ssa/structopt-1.c: Same.
      	* gfortran.dg/pr32921.f: Same.
      	* g++.dg/tree-ssa/pr19637.C: Update after adding new dom1.
      	* g++.dg/tree-ssa/pr61009.C: Same.
      	* g++.dg/tree-ssa/ssa-dom.C: Same.
      	* gcc.dg/pr20115-1.c: Same.
      	* gcc.dg/tree-prof/20050826-2.c: Same.
      	* gcc.dg/tree-prof/cmpsf-1.c: Same.
      	* gcc.dg/tree-ssa/20030821-1.c: Same.
      	* gcc.dg/tree-ssa/20030922-2.c: Same.
      	* gcc.dg/tree-ssa/20031022-1.c: Same.
      	* gcc.dg/tree-ssa/20040615-1.c: Same.
      	* gcc.dg/tree-ssa/20040624-1.c: Same.
      	* gcc.dg/tree-ssa/pr21417.c: Same.
      	* gcc.dg/tree-ssa/pr61607.c: Same.
      	* gcc.dg/tree-ssa/slsr-27.c: Same.
      	* gcc.dg/tree-ssa/slsr-28.c: Same.
      	* gcc.dg/tree-ssa/slsr-29.c: Same.
      	* gcc.dg/tree-ssa/ssa-dom-branch-1.c: Same.
      	* gcc.dg/tree-ssa/ssa-dom-cse-3.c: Same.
      	* gcc.dg/tree-ssa/ssa-dom-thread-1.c: Same.
      	* gcc.dg/tree-ssa/ssa-dom-thread-2a.c: Same.
      	* gcc.dg/tree-ssa/ssa-dom-thread-2b.c: Same.
      	* gcc.dg/tree-ssa/ssa-dom-thread-2c.c: Same.
      	* gcc.dg/tree-ssa/ssa-dom-thread-2d.c: Same.
      	* gcc.dg/tree-ssa/ssa-dom-thread-2e.c: Same.
      	* gcc.dg/tree-ssa/ssa-dom-thread-2f.c: Same.
      	* gcc.dg/tree-ssa/ssa-dom-thread-4.c: Same.
      	* gcc.dg/tree-ssa/ssa-dom-thread-5.c: Same.
      	* gcc.dg/tree-ssa/ssa-dom-thread-6.c: Same.
      	* gcc.dg/tree-ssa/ssa-dom-thread-7.c: Same.
      	* gcc.dg/tree-ssa/ssa-thread-12.c: Same.
      	* gcc.dg/tree-ssa/vrp47.c: Same.
      	* gcc.dg/tree-ssa/copy-headers.c: Update after adding ch1.
      	* gcc.dg/tree-ssa/foldconst-2.c: Same.
      	* gcc.dg/tree-ssa/loop-40.c: Same.
      	* gcc.dg/gomp/notify-new-function-3.c: Update after adding ompexpssa1.
      
      From-SVN: r230907
      Tom de Vries committed
  32. 16 Nov, 2015 5 commits
    • Remove first_pass_instance from pass_ccp · c06883ac
      2015-11-16  Tom de Vries  <tom@codesourcery.com>
      
      	* passes.def: Add arg to pass_ccp pass instantiation.
      	* tree-ssa-ccp.c (ccp_finalize): Add param nonzero_p.  Use nonzero_p
      	instead of first_pass_instance.
      	(do_ssa_ccp): Add and handle param nonzero_p.
      	(pass_ccp::pass_ccp): Initialize nonzero_p.
      	(pass_ccp::set_pass_param): New member function.  Set nonzero_p.
      	(pass_ccp::execute): Call do_ssa_ccp with extra arg.
      	(pass_ccp::nonzero_p): New private member.
      
      From-SVN: r230419
      Tom de Vries committed
    • Remove first_pass_instance from pass_object_sizes · 813ccd83
      2015-11-16  Tom de Vries  <tom@codesourcery.com>
      
      	* passes.def: Add arg to pass_object_sizes pass instantiation.
      	* tree-object-size.c (pass_object_sizes::pass_object_sizes): Initialize
      	insert_min_max_p.
      	(pass_object_sizes::set_pass_param): New member function.  Set
      	insert_min_max_p.
      	(pass_object_sizes::insert_min_max_p): New private member.
      	(pass_object_sizes::execute): Use insert_min_max_p instead of
      	first_pass_instance.
      
      From-SVN: r230418
      Tom de Vries committed
    • Remove first_pass_instance from pass_dominator · 5ce8d99a
      2015-11-16  Tom de Vries  <tom@codesourcery.com>
      
      	* passes.def: Add arg to pass_dominator pass instantiation.
      	* tree-pass.h (first_pass_instance): Remove pass_dominator-related bit
      	of comment.
      	* tree-ssa-dom.c (pass_dominator::pass_dominator): Initialize
      	may_peel_loop_headers_p.
      	(pass_dominator::set_pass_param): New member function.  Set
      	may_peel_loop_headers_p.
      	(pass_dominator::may_peel_loop_headers_p): New private member.
      	(pass_dominator::execute): Use may_peel_loop_headers_p instead of
      	first_pass_instance.
      
      From-SVN: r230417
      Tom de Vries committed
    • Remove first_pass_instance from pass_reassoc · 2162bfe1
      2015-11-16  Tom de Vries  <tom@codesourcery.com>
      
      	* passes.def: Add arg to pass_reassoc pass instantiation.
      	* tree-ssa-reassoc.c (reassoc_insert_powi_p): New static variable.
      	(acceptable_pow_call, reassociate_bb): Use reassoc_insert_powi_p instead
      	of first_pass_instance.
      	(execute_reassoc): Add and handle insert_powi_p parameter.
      	(pass_reassoc::insert_powi_p): New private member.
      	(pass_reassoc::pass_reassoc): Initialize insert_powi_p.
      	(pass_reassoc::set_pass_param): New member function.  Set insert_powi_p.
      	(pass_reassoc::execute): Call execute_reassoc with extra arg.
      
      From-SVN: r230416
      Tom de Vries committed
    • Remove first_pass_instance from pass_vrp · b0c77505
      2015-11-16  Tom de Vries  <tom@codesourcery.com>
      
      	* gdbhooks.py (class PassNames): Handle extra arg NEXT_PASS argument.
      	* gen-pass-instances.awk (handle_line): Same.
      	* pass_manager.h (class pass_manager): Define and undefine
      	NEXT_PASS_WITH_ARG.
      	* passes.c (opt_pass::set_pass_param): New function.
      	(pass_manager::pass_manager): Define and undefine NEXT_PASS_WITH_ARG.
      	* passes.def: Add extra arg to NEXT_PASS (pass_vrp).
      	* tree-pass.h (gimple_opt::set_pass_param): Declare.
      	* tree-vrp.c (vrp_finalize, execute_vrp): Add and handle
      	warn_array_bounds_p parameter.
      	(pass_vrp::pass_vrp): Initialize warn_array_bounds_p.
      	(pass_vrp::set_pass_param): New function.
      	(pass_vrp::execute): Add warn_array_bounds_p arg to execute_vrp call.
      	(pass_vrp::warn_array_bounds_p): New private member.
      
      From-SVN: r230415
      Tom de Vries committed
  33. 13 Nov, 2015 1 commit
    • [Patch,tree-optimization]: Add new path Splitting pass on tree ssa · 8fe17e23
      representation
      
      	* Makefile.in (OBJS): Add gimple-ssa-split-paths.o
      	* common.opt (-fsplit-paths): New flag controlling path splitting.
      	* doc/invoke.texi (fsplit-paths): Document.
      	* opts.c (default_options_table): Add -fsplit-paths to -O2.
      	* passes.def: Add split_paths pass.
      	* timevar.def (TV_SPLIT_PATHS): New timevar.
      	* tracer.c: Include "tracer.h"
      	(ignore_bb_p): No longer static.
      	(transform_duplicate): New function, broken out of tail_duplicate.
      	(tail_duplicate): Use transform_duplicate.
      	* tracer.h (ignore_bb_p): Declare
      	(transform_duplicate): Likewise.
      	* tree-pass.h (make_pass_split_paths): Declare.
      	* gimple-ssa-split-paths.c: New file.
      
      	* gcc.dg/tree-ssa/split-path-1.c: New test.
      
      Co-Authored-By: Jeff Law <law@redhat.com>
      
      From-SVN: r230364
      Ajit Agarwal committed
  34. 30 Oct, 2015 1 commit
    • Makefile.in (OBJS): Add multiple_target.o. · 3b1661a9
      2015-10-30  Evgeny Stupachenko  <evstupac@gmail.com>
      
      gcc/
      	* Makefile.in (OBJS): Add multiple_target.o.
      	* attrib.c (make_attribute): Moved from config/i386/i386.c
      	* config/i386/i386.c (make_attribute): Deleted.
      	* multiple_target.c (create_dispatcher_calls): New.
      	(get_attr_len): Ditto.
      	(get_attr_str): Ditto.
      	(separate_attrs): Ditto.
      	(is_valid_asm_symbol): Ditto.
      	(create_new_asm_name): Ditto.
      	(create_target_clone): Ditto.
      	(expand_target_clones): Ditto.
      	(ipa_target_clone): Ditto.
      	(ipa_dispatcher_calls): Ditto.
      	* passes.def (pass_target_clone): Two new ipa passes.
      	* tree-pass.h (make_pass_target_clone): Ditto.
      	* doc/extend.texi (target_clones): New attribute description.
      gcc/c-family/
      	* c-common.c (handle_target_clones_attribute): New.
      	(c_common_attribute_table): Add handle_target_clones_attribute.
      	(handle_always_inline_attribute): Add check on target_clones attribute.
      	(handle_target_attribute): Ditto.
      gcc/testsuite/
      	* gcc.dg/mvc1.c: New test for multiple targets cloning.
      	* gcc.dg/mvc2.c: Ditto.
      	* gcc.dg/mvc3.c: Ditto.
      	* gcc.dg/mvc4.c: Ditto.
      	* gcc.dg/mvc5.c: Ditto.
      	* gcc.dg/mvc6.c: Ditto.
      	* gcc.dg/mvc7.c: Ditto.
      	* g++.dg/ext/mvc1.C: Ditto.
      	* g++.dg/ext/mvc2.C: Ditto.
      	* g++.dg/ext/mvc3.C: Ditto.
      	* g++.dg/ext/mvc4.C: Ditto.
      
      From-SVN: r229595
      Evgeny Stupachenko committed