Commit Graph

61986 Commits

Author SHA1 Message Date
Richard Biener dd6f2cf98c re PR target/69345 (459.GemsFDTD regression)
2016-01-20  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/69345
	* tree-ssa-sccvn.h (VN_INFO_RANGE_INFO): New inline function.
	(VN_INFO_PTR_INFO): Likewise.
	* tree-ssa-sccvn.c (set_ssa_val_to): Avoid clearing points-to
	info when it is equal between non-dominating SSA names.
	* tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
	Make sure to look at original SSA infos.

From-SVN: r232603
2016-01-20 08:36:32 +00:00
Jeff Law bf0bb9703a Add BZ markers
From-SVN: r232602
2016-01-20 00:55:43 -07:00
Jeff Law bcff091388 [PATCH] [target/25114] Improve comparisons against some small integers for m68k
* config/m68k/predicates.md (pow2_m1_operand): New predicate
	extracted from ...
	(reg_or_pow2_m1_operand): Call pow2_m1_operand.
	(pc_or_label_operand): New predicate.
	* config/m68k/m68k.md: Add new peephole2 patterns for GTU/LEU
	tests for small integers that are 2^n - 1.

	* gcc.target/m68k/pr25114.c: New test.

From-SVN: r232601
2016-01-20 00:54:26 -07:00
Jonathan Wakely 74ba78f51a * doc/invoke.texi (Options Summary): Add '.' after @xref.
From-SVN: r232599
2016-01-20 00:26:13 +00:00
Jeff Law 89d0fecd2d re PR tree-optimization/69347 (excessive compile time with -O2)
PR middle-end/69347
	* tree-ssa-threadbackwards.c
	(fsm_find_control_statement_thread_paths): Do not try to lookup
	FSM paths for SSA_NAMEs appearing in abnormal PHIs.

From-SVN: r232593
2016-01-19 16:03:26 -07:00
Kugan Vivekanandarajah ac0653cf6d lto.texi: Remove text that says only Gold has linker plugin support.
gcc/ChangeLog:

2016-01-20  Kugan Vivekanandarajah  <kuganv@linaro.org>

	* doc/lto.texi: Remove text that says only Gold has linker plugin
	support.

From-SVN: r232587
2016-01-19 21:49:32 +00:00
Eric Botcazou af33ba0d93 dwarf2out.c (need_endianity_attribute_p): New inline predicate.
* dwarf2out.c (need_endianity_attribute_p): New inline predicate.
	(base_type_die): Add REVERSE parameter and attach DW_AT_endianity to
	the DIE accordingly.
	(modified_type_die): Add REVERSE parameter and pass it recursively,
	as well as to base_type_die.  Adjust presence check accordingly.
	(base_type_for_mode): Adjust call to modified_type_die.
	(add_type_attribute): Add REVERSE parameter and pass it to
	modified_type_die.
	(generic_parameter_die): Adjust call to add_type_attribute.
	(add_scalar_info): Likewise.
	(add_subscript_info): Likewise.
	(gen_array_type_die): Likewise.
	(gen_descr_array_type_die): Likewise.
	(gen_entry_point_die): Likewise.
	(gen_enumeration_type_die): Likewise.
	(gen_formal_parameter_die): Likewise.
	(gen_subprogram_die): Likewise.
	(gen_variable_die ): Likewise.
	(gen_const_die): Likewise.
	(gen_field_die): Likewise.
	(gen_pointer_type_die): Likewise.
	(gen_reference_type_die): Likewise.
	(gen_ptr_to_mbr_type_die): Likewise.
	(gen_inheritance_die): Likewise.
	(gen_subroutine_type_die): Likewise.
	(gen_typedef_die): Likewise.
	(force_type_die): Adjust call to modified_type_die.

From-SVN: r232585
2016-01-19 21:08:10 +00:00
Sandra Loosemore d0899488d9 standards.texi: Copy-editing for grammar, markup, and sentence flow throughout the file.
2016-01-19  Sandra Loosemore <sandra@codesourcery.com>

	gcc/
	* doc/standards.texi: Copy-editing for grammar, markup, and sentence
	flow throughout the file.  Fix broken link to Objective-C 2.0
	documentation.
	* doc/invoke.texi: More copy-editing; fix numerous typos and spelling
	errors.

From-SVN: r232583
2016-01-19 15:44:11 -05:00
Wilco Dijkstra a88d10cb99 [Patch] Fix spurious warning in ccmp.c
2016-01-19  Wilco Dijkstra  <wdijkstr@arm.com>

	* ccmp.c (expand_ccmp_expr_1): Avoid spurious unused warnings.

From-SVN: r232576
2016-01-19 18:02:48 +00:00
Jan Hubicka ceda2c69d5 re PR ipa/66223 (Diagnostic of pure virtual function call broken, including __cxa_pure_virtual)
PR ipa/66223
	* ipa-devirt.c (is_cxa_pure_virtual_p): New function.
	(maybe_record_node): Record cxa_pure_virtual as the only possible
	target if there are not ohter candidates.
	(possible_polymorphic_call_target_p): Accept cxa_pure_virtual.

	* g++.dg/ipa/devirt-50.C: New testcase.

From-SVN: r232572
2016-01-19 16:49:50 +00:00
Richard Biener b1b6d906cd hsa-gen.c (get_memory_order_name): Use MEMMODEL_ constants and name.
2016-01-19  Richard Biener  <rguenther@suse.de>

	* hsa-gen.c (get_memory_order_name): Use MEMMODEL_ constants
	and name.
	(get_memory_order): Likewise.

From-SVN: r232571
2016-01-19 15:10:40 +00:00
Kirill Yukhin f4d0971224 Fix ICE in vectorizable_store ().
gcc/
	* tree-vect-stmts.c (vectorizable_store): Check
	rhs vectype.

From-SVN: r232568
2016-01-19 14:37:23 +00:00
David Malcolm d6874f5662 Fix memory chunk corruption for opts_obstack (PR jit/68446)
gcc/ChangeLog:
	PR jit/68446
	* gcc.c (driver::decode_argv): Add call to
	init_opts_obstack before init_options_struct.
	* opts.c (init_opts_obstack): Remove idempotency.
	(init_options_struct): Replace call to init_opts_obstack
	with a gcc_assert to verify that it has already been called.
	* toplev.c (toplev::main): Add call to init_opts_obstack before
	calls to init_options_struct.
	(toplev::finalize): Move cleanup of opts_obstack next to
	cleanup of save_decoded_options, clearing the latter, and
	save_decoded_options_count.

From-SVN: r232567
2016-01-19 14:35:16 +00:00
Kyrylo Tkachov 962801c550 [ARM] PR target/69135: Mark ARMv8 vcvt instructions as unconditional
PR target/69135
	* config/arm/vfp.md (l<vrint_pattern><su_optab><mode>si2): Set "conds"
	attribute to unconditional.  Remove %? from output template.

	* gcc.target/arm/pr69135_1.c: New test.

From-SVN: r232566
2016-01-19 14:30:23 +00:00
Wilco Dijkstra 078fe40a48 [PATCH 4/4] Add CCMP selection based on rtx costs
2015-01-19  Wilco Dijkstra  <wdijkstr@arm.com>
		Jiong Wang  <jiong.wang@arm.com>

    gcc/
	* ccmp.c (expand_ccmp_expr_1): Cost the instruction sequences
	generated from different expand order.

    gcc/testsuite/
        * gcc.target/aarch64/ccmp_1.c: Add new tests.


Co-Authored-By: Jiong Wang <jiong.wang@arm.com>

From-SVN: r232565
2016-01-19 14:14:56 +00:00
Wilco Dijkstra 786298dc13 [PATCH 3/4] Add support for rtx costing of CCMP on AArch64
2015-01-19  Wilco Dijkstra  <wdijkstr@arm.com>

    gcc/
        * /config/aarch64/aarch64.c (aarch64_if_then_else_costs):
        Add support for CCMP costing.

From-SVN: r232564
2016-01-19 14:10:49 +00:00
Wilco Dijkstra 786e3c064c [PATCH 2/4] Add support for float CCMP
2015-01-19  Wilco Dijkstra  <wdijkstr@arm.com>

    gcc/
        * ccmp.c (ccmp_candidate_p): Remove integer-only restriction.
        * config/aarch64/aarch64.md (fccmp<mode>): New pattern.
        (fccmpe<mode>): Likewise.
        (fcmp): Rename to fcmp and globalize pattern.
        (fcmpe): Likewise.
        * config/aarch64/aarch64.c (aarch64_gen_ccmp_first): Add FP support.
        (aarch64_gen_ccmp_next): Add FP support.

    gcc/testsuite/

        * gcc.target/aarch64/ccmp_1.c: New testcase.

From-SVN: r232563
2016-01-19 14:09:49 +00:00
Wilco Dijkstra c8012fbce9 [Patch 1/4] Simplify the representation of CCMP patterns by using
2015-01-19  Wilco Dijkstra  <wdijkstr@arm.com>

    gcc/
        * target.def (gen_ccmp_first): Update documentation.
        (gen_ccmp_next): Likewise.
        * doc/tm.texi (gen_ccmp_first): Update documentation.
        (gen_ccmp_next): Likewise.
        * ccmp.c (expand_ccmp_expr): Extract cmp_code from return value of
        expand_ccmp_expr_1.  Improve comments.
        * config/aarch64/aarch64.md (ccmp_and): Use if_then_else for ccmp.
        (ccmp_ior<mode>): Remove pattern.
        (cmp<mode>): Remove expand.
        (cmp): Globalize pattern.
        (cstorecc4): Use cc_register.
        (mov<mode>cc): Remove ccmp_cc_register check.
        * config/aarch64/aarch64.c (aarch64_get_condition_code_1):
        Simplify after removal of CC_DNE/* modes.
        (aarch64_ccmp_mode_to_code): Remove.
        (aarch64_print_operand): Remove 'K' case.  Merge 'm' and 'M' cases.
        In 'k' case use integer as condition.
        (aarch64_nzcv_codes): Remove inverted cases.
        (aarch64_code_to_ccmode): Remove.
        (aarch64_gen_ccmp_first): Use cmp pattern directly.  Return the correct
        comparison with CC register to be used in folowing CCMP/branch/CSEL.
        (aarch64_gen_ccmp_next): Use previous comparison and mode in CCMP
        pattern.  Return the comparison with CC register.  Invert conditions
        when bitcode is OR.
        * config/aarch64/aarch64-modes.def: Remove CC_DNE/* modes.
        * config/aarch64/predicates.md (ccmp_cc_register): Remove.

From-SVN: r232561
2016-01-19 13:59:56 +00:00
Jan Hubicka 756f4e9049 cgraphunit.c (cgraph_node::reset): Clear thunk info and instrumented_version.
* cgraphunit.c (cgraph_node::reset): Clear thunk info and
	instrumented_version.

From-SVN: r232560
2016-01-19 13:28:32 +00:00
Richard Biener 879c27e3a3 re PR tree-optimization/69336 (Constant value not detected)
2016-01-19  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/69336
	* tree-ssa-scopedtables.c (avail_expr_hash): Handle all
	handled components with get_ref_base_and_extent.
	(equal_mem_array_ref_p): Adjust.

	* g++.dg/tree-ssa/pr69336.C: New testcase.

From-SVN: r232559
2016-01-19 13:27:11 +00:00
Jakub Jelinek 015337d35b re PR debug/65779 (undefined local symbol on powerpc [regression])
PR debug/65779
	* shrink-wrap.c: Include valtrack.h.
	(move_insn_for_shrink_wrap): Add DEBUG argument.  If
	MAY_HAVE_DEBUG_INSNS, call dead_debug_add on DEBUG_INSNs
	in between insn and where it will be moved to.  Call
	dead_debug_insert_temp.
	(prepare_shrink_wrap): Adjust caller.  Call dead_debug_local_init
	first and dead_debug_local_finish at the end.
	For uses and defs bitmap, handle all regs in between REGNO and
	END_REGNO, not just the first one.

	* gcc.dg/pr65779.c: New test.

From-SVN: r232558
2016-01-19 14:21:04 +01:00
Richard Biener e2c768b644 re PR tree-optimization/69352 (profiledbootstrap failure with --with-build-config=bootstrap-lto)
2016-01-19  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/69352
	* tree-ssa-scopedtables.c (avail_expr_hash): Check for size == -1.
	(equal_mem_array_ref_p): Constrain size and max size properly.
	Compare the reverse flag.

	* gcc.dg/torture/pr69352.c: New testcase.

From-SVN: r232557
2016-01-19 13:19:01 +00:00
Bernd Schmidt d20c47fc86 * ira.c (ira): Update regstat data if we deleted insns.
From-SVN: r232556
2016-01-19 13:02:17 +00:00
Jakub Jelinek 569efc34eb re PR rtl-optimization/68955 (wrong code at -O3 on x86-64-linux-gnu in 32-bit mode)
PR rtl-optimization/68955
	PR rtl-optimization/64557
	* dse.c (record_store, check_mem_read_rtx): Don't call get_addr
	here.  Fix up formatting.
	* alias.c (get_addr): Handle VALUE +/- CONST_SCALAR_INT_P.

	* gcc.dg/torture/pr68955.c: New test.

From-SVN: r232554
2016-01-19 13:34:45 +01:00
Jan Hubicka e9191ad3ab re PR lto/69133 (LTO segfault in lto_get_decl_name_mapping() on 483.xalancbmk with -flto-partition=none)
PR lto/69133
	* cgraphunit.c (cgraph_node::expand_thunk): When forcing gimple
	assume that the node has body.
	* cgraph.c (cgraph_node::get_untransformed_body): Use gimple_body_p
	check.
	* g++.dg/lto/pr69133_0.C: New testcase.
	* g++.dg/lto/pr69133_1.C: New testcase.

From-SVN: r232552
2016-01-19 11:57:41 +00:00
Jan Hubicka 150be262b9 lto-streamer-out.c (lto_output): Do not stream instrumentation thunks.
* lto-streamer-out.c (lto_output): Do not stream instrumentation
	thunks.

From-SVN: r232551
2016-01-19 11:55:10 +00:00
Jan Hubicka ae4bbcb233 symtab.c (symtab_node::asm_name): Do not call printable name directly.
* symtab.c (symtab_node::asm_name): Do not call printable name directly.
	(symtab_node::name): Report name as unnamed if DECL_NAME is not set.

From-SVN: r232550
2016-01-19 11:51:18 +00:00
Martin Jambor b2b4005150 Merge of HSA
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
2016-01-19 11:35:10 +01:00
Jeff Law 2bedb645f2 re PR tree-optimization/69320 (wrong code generation at -O2 and higher)
2016-01-18  Jeff Law  <law@redhat.com>

	PR tree-optimization/69320
	* tree-ssa-dom.c (record_edge_info): For comparisons against a boolean
	ranged object, do nothing if the RHS constant is not [0..1].
	(optimize_stmt): Comparing a boolean ranged object against a
	constant outside [0..1] results in a compile-time constant.

	* tree-ssanames.c (ssa_name_has_boolean_range): Remove unnecessary
	test.

	PR tree-optimization/69320
	* gcc.c-torture/pr69320-1.c: New test.
	* gcc.c-torture/pr69320-2.c: New test.
	* gcc.c-torture/pr69320-3.c: New test.
	* gcc.c-torture/pr69320-4.c: New test.

From-SVN: r232548
2016-01-18 23:43:54 -07:00
Sandra Loosemore b0b662cc56 invoke.texi (Invoking GCC): Add new section to menu.
2016-01-18  Sandra Loosemore <sandra@codesourcery.com>

	gcc/
	* doc/invoke.texi (Invoking GCC): Add new section to menu.
	(Option Summary): Update to reflect new section and moved options.
	(C++ Dialect Options): Move -fstats to new section.
	(Debugging Options): Move all dump, statistics, and other GCC
	developer options to new section.  Rewrite section introduction
	and re-order remaining options to put the more basic ones first.
	(Optimization Options): Move -fira-verbose and -flto-report* to
	new section.
	(Developer Options): New section incorporating moved options.
	* doc/cppopts.texi (-dM): Update cross-reference.

From-SVN: r232541
2016-01-18 17:47:09 -05:00
Richard Henderson 89f0a62ebc re PR target/69176 (ICE in in final_scan_insn, at final.c:2981 on aarch64-linux-gnu)
PR target/69176

  * config/aarch64/aarch64.md (add<GPI>3): Move long immediate
  operands to pseudo only if CSE is expected.  Split long immediate
  operands only after reload, and for the stack pointer.
  (*add<GPI>3_pluslong): Remove.
  (*addsi3_aarch64, *adddi3_aarch64): Merge into...
  (*add<GPI>3_aarch64): ... here.  Add r/rk/Upl alternative.
  (*addsi3_aarch64_uxtw): Add r/rk/Upl alternative.
  (*add<GPI>3 peepholes): New.
  (*add<GPI>3 splitters): New.
  * config/aarch64/constraints.md (Upl): New.
  * config/aarch64/predicates.md (aarch64_pluslong_strict_immedate): New.

From-SVN: r232540
2016-01-18 12:56:13 -08:00
Richard Biener b555a2e4c3 re PR tree-optimization/69297 (Performance regression after r230020)
2016-01-18  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/69297
	* tree-vect-slp.c (vect_bb_slp_scalar_cost): Count each scalar
	stmt at most once.
	(vect_bb_vectorization_profitable_p): Clear visited flag again.

	* gcc.dg/vect/costmodel/x86_64/costmodel-pr69297.c: New testcase.

From-SVN: r232519
2016-01-18 14:25:56 +00:00
Yuri Rumyantsev 305708cedd re PR middle-end/68542 (10% 481.wrf performance regression)
gcc/

2016-01-18  Yuri Rumyantsev  <ysrumyan@gmail.com>

	PR middle-end/68542
	* fold-const.c (fold_binary_op_with_conditional_arg): Bail out for case
	of mixind vector and scalar types.
	(fold_relational_const): Add handling of vector
	comparison with boolean result.
	* tree-cfg.c (verify_gimple_comparison): Add argument CODE, allow
	comparison of vector operands with boolean result for EQ/NE only.
	(verify_gimple_assign_binary): Adjust call for verify_gimple_comparison.
	(verify_gimple_cond): Likewise.
	* tree-vrp.c (extract_code_and_val_from_cond_with_ops): Modify check on
	valid type of VAL.

From-SVN: r232518
2016-01-18 14:14:35 +00:00
Joseph Myers 969028053f Handle Octeon 3 not supporting MIPS paired-single instructions.
The Octeon 3 processor does not support the MIPS paired-single
instructions.  This results in illegal instruction errors in the
testsuite when vectorization tests try to use those instructions.

This patch teaches the compiler about that lack of support, so that
warnings are given when -mpaired-single (or something implying it) is
used when compiling for such a processor.  I chose to test
TARGET_OCTEON as the simplest conditional; since the older Octeon
processors don't support hard float at all, I don't think the choice
matters for them.  Tests that then failed with the warning were
updated to disable them for Octeon.

Tested with no regressions for cross to mips64el-linux-gnu (Octeon
3).

gcc:
	* config/mips/mips.h (ISA_HAS_PAIRED_SINGLE): Require
	!TARGET_OCTEON.

gcc/testsuite:
	* gcc.target/mips/mips-3d-1.c: Use forbid_cpu=octeon.* in
	dg-options.
	* gcc.target/mips/mips-3d-2.c: Likewise.
	* gcc.target/mips/mips-3d-3.c: Likewise.
	* gcc.target/mips/mips-3d-4.c: Likewise.
	* gcc.target/mips/mips-3d-5.c: Likewise.
	* gcc.target/mips/mips-3d-6.c: Likewise.
	* gcc.target/mips/mips-3d-7.c: Likewise.
	* gcc.target/mips/mips-3d-8.c: Likewise.
	* gcc.target/mips/mips-3d-9.c: Likewise.
	* gcc.target/mips/mips-ps-1.c: Likewise.
	* gcc.target/mips/mips-ps-2.c: Likewise.
	* gcc.target/mips/mips-ps-3.c: Likewise.
	* gcc.target/mips/mips-ps-4.c: Likewise.
	* gcc.target/mips/mips-ps-5.c: Likewise.
	* gcc.target/mips/mips-ps-6.c: Likewise.
	* gcc.target/mips/mips-ps-7.c: Likewise.
	* gcc.target/mips/mips-ps-type.c: Likewise.
	* gcc.target/mips/mips-ps-type-2.c: Likewise.
	* gcc.target/mips/mips16-attributes-6.c: Likewise.

From-SVN: r232517
2016-01-18 13:30:43 +00:00
Richard Biener 46ec7a061e re PR tree-optimization/69308 (ifcombine joins together floating point expression with side effects)
2016-01-18  Richard Biener  <rguenther@suse.de>

	PR middle-end/69308
	* gimple.c (gimple_could_trap_p_1): Handle GIMPLE_COND.

From-SVN: r232516
2016-01-18 13:03:54 +00:00
Tom de Vries a98d464768 Add pass_parallelize_loops to pass_oacc_kernels
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
2016-01-18 12:52:42 +00:00
Tom de Vries 61d9c5274e Add oacc_kernels_p argument to pass_parallelize_loops
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
2016-01-18 12:52:32 +00:00
Tom de Vries 12db081402 Allow pass_parallelize_loops to be run outside the loop pipeline
2016-01-18  Tom de Vries  <tom@codesourcery.com>

	* tree-parloops.c (pass_parallelize_loops::execute): Allow
	pass_parallelize_loops to be run outside the loop pipeline.

From-SVN: r232511
2016-01-18 12:52:23 +00:00
Alan Lawrence 806f2c1b28 Enhance SCEV to follow copies of SSA_NAMEs.
(Fixes missed vectorization of gcc.dg/vect/pr65947-2.c.)

        * tree-scalar-evolution.c (follow_copies_to_constant): New.
        (analyze_initial_condition, analyze_scalar_evolution_1): Call previous.

From-SVN: r232509
2016-01-18 12:46:54 +00:00
Alan Lawrence 70c1e88677 Equate MEM_REFs and ARRAY_REFs in tree-ssa-scopedtables.c
PR target/63679

gcc/:

	* tree-ssa-scopedtables.c (avail_expr_hash): Hash MEM_REF and ARRAY_REF
	using get_ref_base_and_extent.
	(equal_mem_array_ref_p): New.
	(hashable_expr_equal_p): Add call to previous.

gcc/testsuite/:

        * gcc.dg/tree-ssa/ssa-dom-cse-5.c: New.
        * gcc.dg/tree-ssa/ssa-dom-cse-6.c: New.
        * gcc.dg/tree-ssa/ssa-dom-cse-7.c: New.

From-SVN: r232508
2016-01-18 12:40:43 +00:00
Alan Lawrence 88bed19634 Make SRA scalarize constant-pool loads
PR target/63679

gcc/ChangeLog:
    
	* tree-sra.c (disqualified_constants, constant_decl_p): New.
	(sra_initialize): Allocate disqualified_constants.
	(sra_deinitialize): Free disqualified_constants.
	(disqualify_candidate): Update disqualified_constants when appropriate.
	(create_access): Scan for constant-pool entries as we go along.
	(scalarizable_type_p): Add check against type_contains_placeholder_p.
	(maybe_add_sra_candidate): Allow constant-pool entries.
	(load_assign_lhs_subreplacements): Bind debug for constant pool vars.
	(initialize_constant_pool_replacements): New.
	(sra_modify_assign): Avoid mangling assignments created by previous,
	and don't generate writes into constant pool.
	(sra_modify_function_body): Call initialize_constant_pool_replacements.
    
gcc/testsuite/:

	* gcc.dg/tree-ssa/sra-17.c: New.
	* gcc.dg/tree-ssa/sra-18.c: New.

From-SVN: r232506
2016-01-18 12:29:02 +00:00
Ilya Enkovich 3dd5f42e90 i386.c (scalar_to_vector_candidate_p): Support andnot instruction.
gcc/

	* config/i386/i386.c (scalar_to_vector_candidate_p): Support
	andnot instruction.
	(scalar_chain::convert_op): Likewise.
	* config/i386/i386.md (*andndi3_doubleword): New.

gcc/testsuite/

	* gcc.target/i386/pr65105-5.c: Adjust to andn generation.

From-SVN: r232500
2016-01-18 10:35:56 +00:00
Richard Biener 995b6fe0f4 re PR tree-optimization/69170 (ICE (segfault) in find_uses_to_rename_use)
2016-01-18  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/69170
	* tree-vect-slp.c (vect_build_slp_tree): Verify we are not
	building a vector from scalar results of a pattern stmt.

	* gcc.dg/torture/pr69170.c: New testcase.

From-SVN: r232496
2016-01-18 09:14:14 +00:00
Jakub Jelinek 99e18f02b6 haifa-sched.c (autopref_multipass_init): Work around -Wmaybe-uninitialized warning.
* haifa-sched.c (autopref_multipass_init): Work around
	-Wmaybe-uninitialized warning.

From-SVN: r232495
2016-01-18 10:02:42 +01:00
Thomas Preud'homme 39d44c531f arm.c (thumb1_reorg): Check that the comparison is against the constant 0.
2016-01-18  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * config/arm/arm.c (thumb1_reorg): Check that the comparison is
    against the constant 0.

From-SVN: r232493
2016-01-18 03:22:35 +00:00
Bill Schmidt 5b3d5f769b re PR tree-optimization/68799 (lto ICE on powerpc64le-linux-gnu builing python 2.7.x)
2016-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	PR tree-optimization/68799
	* gimple-ssa-strength-reduction.c (create_phi_basis): Directly
	look up phi candidates in the statement-candidate map.
	(phi_add_costs): Likewise.
	(record_phi_increments): Likewise.
	(phi_incr_cost): Likewise.
	(ncd_with_phi): Likewise.
	(all_phi_incrs_profitable): Likewise.

From-SVN: r232491
2016-01-18 02:43:06 +00:00
Jakub Jelinek 3f217497ca omp-low.c (mark_loops_in_oacc_kernels_region): Work around -Wmaybe-uninitialized warning.
* omp-low.c (mark_loops_in_oacc_kernels_region): Work around
	-Wmaybe-uninitialized warning.

From-SVN: r232484
2016-01-17 19:04:47 +01:00
Sandra Loosemore b81946e524 invoke.texi (Invoking GCC): Add new section to menu.
2016-01-16  Sandra Loosemore <sandra@codesourcery.com>

	gcc/
	* doc/invoke.texi (Invoking GCC): Add new section to menu.
	(Option Summary): Update to reflect new section and moved options.
	(C++ Dialect Options): Move -fvtable-verify and related options.
	(Debugging Options): Move Sanitizer, Pointer Bounds Checker,
	and profiling-related options.
	(Optimization Options): Move profile generation options and
	-fstack-protector and related options.
	(Instrumentation Options): New section incorporating moved options.
	(Code Generation Options): Move -finstrument-functions and
	related options, -fstack-check, -fstack-limit*, and -fbounds-check.

From-SVN: r232475
2016-01-16 18:06:43 -05:00
Tom de Vries 2d73a9d279 Move pass_expand_omp_ssa out of pass_parallelize_loops
2016-01-16  Tom de Vries  <tom@codesourcery.com>

	* passes.def: Move pass_expand_omp_ssa out of pass_parallelize_loops.

From-SVN: r232473
2016-01-16 22:19:05 +00:00
Tom de Vries 0b0521ba46 Release_defs in expand_omp_atomic_fetch_op
2016-01-16  Tom de Vries  <tom@codesourcery.com>

	* omp-low.c (expand_omp_atomic_fetch_op):  Release defs of update stmt.

From-SVN: r232472
2016-01-16 22:18:56 +00:00