gcc.git
10 years agoipa-prop.h (jump_func_type): Removed value IPA_JF_KNOWN_TYPE.
Martin Jambor [Fri, 14 Nov 2014 20:07:39 +0000 (21:07 +0100)]
ipa-prop.h (jump_func_type): Removed value IPA_JF_KNOWN_TYPE.

2014-11-14  Martin Jambor  <mjambor@suse.cz>

* ipa-prop.h (jump_func_type): Removed value IPA_JF_KNOWN_TYPE.
(ipa_pass_through_data): Removed field type_preserved.
(ipa_ancestor_jf_data): removed fields type and type_preserved.
(ipa_jump_func): Removed field known_type.
(ipa_get_jf_known_type_offset): Removed.
(ipa_get_jf_known_type_base_type): Likewise.
(ipa_get_jf_known_type_component_type): Likewise.
(ipa_get_jf_ancestor_type): Likewise.
* ipa-cp.c (print_ipcp_constant_value): Removed BINFO handling.
(ipa_get_jf_pass_through_result): Likewise.
(ipa_get_jf_ancestor_result): Always build ptr_node_type accesses.
(values_equal_for_ipcp_p): Removed BINFO handling.
(ipa_get_indirect_edge_target_1): Updated comment.
* ipa-prop.c (ipa_print_node_jump_functions_for_edge): Removed handling
of IPA_JF_KNOWN_TYPE jump functions.  Do not print removed fields.
(ipa_set_jf_known_type): Removed.
(ipa_set_jf_simple_pass_through): Do not set removed fields.  Update
all callers.
(ipa_set_jf_arith_pass_through): Likewise.
(ipa_set_ancestor_jf): Likewise.
(ipa_binfo_from_known_type_jfunc): Removed.
(prop_type_change_info): Removed fields known_current_type and
multiple_types_encountered.
(extr_type_from_vtbl_ptr_store): Removed.
(check_stmt_for_type_change): Do not attempt to identify changed type.
(detect_type_change_from_memory_writes): Do not set the removed fields,
always set jfunc to unknown.
(compute_complex_assign_jump_func): Do not detect dynamic type change.
(compute_complex_ancestor_jump_func): Likewise.
(compute_known_type_jump_func): Removed.
(ipa_compute_jump_functions_for_edge): Do not detect dynamic type
change.  Do not comute known type jump functions.
(combine_known_type_and_ancestor_jfs): Removed.
(update_jump_functions_after_inlining): Removed handling of
IPA_JF_KNOWN_TYPE jump functions.  Do not set removed fields.
(ipa_write_jump_function): Do not stream removed fields or known type
jump functions.
(ipa_read_jump_function): Likewise.

From-SVN: r217589

10 years agolra-int.h (lra_create_live_ranges): Add parameter.
Vladimir Makarov [Fri, 14 Nov 2014 20:06:11 +0000 (20:06 +0000)]
lra-int.h (lra_create_live_ranges): Add parameter.

2014-11-14  Vladimir Makarov  <vmakarov@redhat.com>

* lra-int.h (lra_create_live_ranges): Add parameter.
* lra-lives.c (temp_bitmap): Move higher.
(initiate_live_solver): Move temp_bitmap initialization into
lra_live_ranges_init.
(finish_live_solver): Move temp_bitmap clearing into
live_ranges_finish.
(process_bb_lives): Add parameter.  Use it to control live info
update and dead insn elimination.  Pass it to mark_regno_live and
mark_regno_dead.
(lra_create_live_ranges): Add parameter.  Pass it to
process_bb_lives.
(lra_live_ranges_init, lra_live_ranges_finish): See changes in
initiate_live_solver and finish_live_solver.
* lra-remat.c (do_remat): Process insn non-operand hard regs too.
Use temp_bitmap to update avail_cands.
* lra.c (lra): Pass new parameter to lra_create_live_ranges.  Move
check with lra_need_for_spill_p after live range pass.  Switch on
rematerialization pass.

From-SVN: r217588

10 years agoipa-prop.h (ipa_get_jf_pass_through_type_preserved): use agg_preserved flag instead.
Martin Jambor [Fri, 14 Nov 2014 20:03:19 +0000 (21:03 +0100)]
ipa-prop.h (ipa_get_jf_pass_through_type_preserved): use agg_preserved flag instead.

2014-11-14  Martin Jambor  <mjambor@suse.cz>

* ipa-prop.h (ipa_get_jf_pass_through_type_preserved): use
agg_preserved flag instead.
(ipa_get_jf_ancestor_type_preserved): Likewise.
(ipa_node_params): Rename known_vals to known_csts, update all users.
New field known_contexts.
(ipa_get_indirect_edge_target): Update prototype.
(ipcp_poly_ctx_values_pool): Declare.
(ipa_context_from_jfunc): Likewise.
* ipa-inline.h (estimate_ipcp_clone_size_and_time): Updated prototype.
* cgraph.h (ipa_polymorphic_call_context): New method equal_to.  New
parameter newline of method dump.
* ipa-cp.c (ctxlat): New field.
(ipcp_values_pool): Renamed to ipcp_cst_values_pool, updated all users.
(ipcp_poly_ctx_values_pool):New variable.
(ipa_get_poly_ctx_lat): New function.
(print_ipcp_constant_value): New overloaded function for contexts.
(print_all_lattices): Also print contexts.
(ipa_topo_info): New field contexts;
(set_all_contains_variable): Also set the flag in the context lattice.
(initialize_node_lattices): Likewise for flag bottom.
(ipa_get_jf_ancestor_result): Removed BINFO handling.
(ipa_value_from_jfunc): Likewise.
(ipa_context_from_jfunc): New function.
(values_equal_for_ipcp_p): New overloaded function for contexts.
(allocate_and_init_ipcp_value): Construct the value.
(allocate_and_init_ipcp_value): New overloaded function for contexts.
(propagate_scalar_accross_jump_function): Removed handling of
KNOWN_TYPE jump functions.
(propagate_context_accross_jump_function): New function.
(propagate_constants_accross_call): Also propagate contexts.
(ipa_get_indirect_edge_target_1): Work on contexts rather than BINFOs.
(ipa_get_indirect_edge_target): Likewise.
(devirtualization_time_bonus): Likewise.
(gather_context_independent_values): Create and populate known_contexts
vector rather than known_binfos.
(perform_estimation_of_a_value): Work on contexts rather than BINFOs.
(estimate_local_effects): Likewise.
(add_all_node_vals_to_toposort): Also add contexts to teir topological
sort.
(ipcp_propagate_stage): Also propagate effects of contexts.
(ipcp_discover_new_direct_edges): Receive and pass known_contexts to
ipa_get_indirect_edge_target_1.
(cgraph_edge_brings_value_p): New overloaded function for contexts.
(create_specialized_node): Work on contexts rather than BINFOs.
(find_more_contexts_for_caller_subset): New function.
(known_contexts_useful_p): New function.
(copy_useful_known_contexts): Likewise.
(modify_known_vectors_with_val): Likewise.
(ipcp_val_in_agg_replacements_p): Renamed to
ipcp_val_agg_replacement_ok_p, return true for all offset indicating
non-aggregate.
(ipcp_val_agg_replacement_ok_p): New overloaded function for contexts.
(decide_about_value): Work on contexts rather than BINFOs.
(decide_whether_version_node): Likewise.
(ipcp_driver): Initialize the new alloc pool.
* ipa-prop.c (ipa_print_node_jump_functions_for_edge): Prettify
printing of edge contexts.
(ipa_set_ancestor_jf): Replace assert with conditional setting of
type_preserved to false.
(update_jump_functions_after_inlining): Use access function instead of
reading agg_preserved directly.  Store combined context in the ancestor
case.
(try_make_edge_direct_virtual_call): Work on contexts rather than
BINFOs.
(update_indirect_edges_after_inlining): Get context from
ipa_context_from_jfunc.
(ipa_free_node_params_substructures): Free also known_contexts.
(ipa_free_all_structures_after_ipa_cp): Free the new alloc pool.
(ipa_free_all_structures_after_iinln): Likewise.
* ipa-inline-analysis.c (evaluate_properties_for_edge): Work on
contexts rather than BINFOs.
(estimate_edge_devirt_benefit): Likewise.
(estimate_edge_size_and_time): Likewise.
(estimate_calls_size_and_time): Likewise.
(estimate_node_size_and_time): Likewise.
(estimate_ipcp_clone_size_and_time): Likewise.
(do_estimate_edge_time): Likewise.
(do_estimate_edge_size): Likewise.
(do_estimate_edge_hints): Likewise.
* ipa-polymorphic-call.c (ipa_polymorphic_call_context::dump): New
parameter newline, ouput newline only when it is set.
(ipa_polymorphic_call_context::equal_to): New method.

testsuite/
* g++.dg/ipa/devirt-11.C: Dont't run ipa-cp, remove times constraint
from the dump scan.
* g++.dg/ipa/devirt-21.C: Xfail.
* g++.dg/ipa/devirt-24.C: Likewise.
* g++.dg/ipa/devirt-10.C: Removed times constraint from the dump scan.
* g++.dg/ipa/devirt-41.C: Updated the dump scan.
* g++.dg/ipa/devirt-44.C: Likewise.
* g++.dg/ipa/devirt-43.C: Xfail.

From-SVN: r217587

10 years agoipa-cp.c (ipcp_value_source): Converted to a template class.
Martin Jambor [Fri, 14 Nov 2014 19:58:18 +0000 (20:58 +0100)]
ipa-cp.c (ipcp_value_source): Converted to a template class.

2014-11-14  Martin Jambor  <mjambor@suse.cz>

* ipa-cp.c (ipcp_value_source): Converted to a template class.  All
users converted to the same specialization as the using class/function
or specialization on tree.
(ipcp_value): Likewise.
(ipcp_lattice): Likewise.
(ipcp_agg_lattice): Now derived from tree specialization of
ipcp_lattice.
(values_topo): Moved to new class value_topo_info.
(ipa_lat_is_single_const): Turned into ipcp_lattice::is_single_const.
Updated all callers.
(print_lattice): Turned into ipcp_lattice::print.  Updated all
callers.
(value_topo_info): New class template.
(ipa_topo_info): New field constants.  New constructor.
(build_toporder_info): Do not clear stack_top, only checkign assert
it.
(set_lattice_to_bottom): Turned into ipcp_lattice::set_to_bottom.
Updated all callers.
(set_lattice_contains_variable): Turned into
ipcp_lattice::set_contains_variable.  Updated all callers.
(add_value_source): Turned into ipcp_value::add_source.  Updated all
callers.
(allocate_and_init_ipcp_value): New function.
(add_value_to_lattice): Turned into ipcp_lattice::add_value.  Last
parameter got default a value.  Updated all callers.
(add_scalar_value_to_lattice): Removed, users converted to using
ipcp_lattice::add_value with default value of the last parameter.
(add_val_to_toposort): Turned to value_topo_info::add_val.  Updated
all callers.
(propagate_effects): Made method of value_topo_info.
(cgraph_edge_brings_value_p): Now a template function.
(get_info_about_necessary_edges): Likewise.
(gather_edges_for_value): Likewise.
(perhaps_add_new_callers): Likewise.
(decide_about_value): Likewise.
* ipa-prop.h (ipcp_lattice): Remove fowrward declaration.

From-SVN: r217586

10 years ago* doc/install.texi (--with-diagnostics-color=): Document.
Jakub Jelinek [Fri, 14 Nov 2014 19:41:33 +0000 (20:41 +0100)]
* doc/install.texi (--with-diagnostics-color=): Document.

From-SVN: r217585

10 years agotree-ssa.dce.c (eliminate_unnecessary_stmts): Eliminate IFN_GOMP_SIMD_LANE without...
Jakub Jelinek [Fri, 14 Nov 2014 19:41:00 +0000 (20:41 +0100)]
tree-ssa.dce.c (eliminate_unnecessary_stmts): Eliminate IFN_GOMP_SIMD_LANE without lhs as useless.

* tree-ssa.dce.c (eliminate_unnecessary_stmts): Eliminate
IFN_GOMP_SIMD_LANE without lhs as useless.

From-SVN: r217584

10 years agoruntime: set library name based on compiler name
Ian Lance Taylor [Fri, 14 Nov 2014 18:02:50 +0000 (18:02 +0000)]
runtime: set library name based on compiler name

Different compilers may have different release cadences or ABI
incompatibilities, so it does not make sense to use the same library
name for runtime libraries intended for different compilers.

This CL causes a libgo built by llgo to receive the name libgo-llgo.
Likewise, libgobegin is named libgobegin-llgo.

From-SVN: r217583

10 years agoipa-pure-const.c (struct funct_state_d): Add can_free field.
Jakub Jelinek [Fri, 14 Nov 2014 17:46:50 +0000 (18:46 +0100)]
ipa-pure-const.c (struct funct_state_d): Add can_free field.

* ipa-pure-const.c (struct funct_state_d): Add can_free field.
(varying_state): Add true for can_free.
(check_call): For builtin or internal !nonfreeing_call_p set
local->can_free.
(check_stmt): For asm volatile and asm with "memory" set
local->can_free.
(analyze_function): Clear local->can_free initially, continue
calling check_stmt until all flags are computed, dump can_free
flag.
(pure_const_write_summary): Write can_free flag.
(pure_const_read_summary): Read it back.
(propagate_pure_const): Propagate also can_free flag, set
w->nonfreeing_fn if it is false after propagation.
* cgraph.h (cgraph_node): Add nonfreeing_fn member.
* gimple.c: Include ipa-ref.h, lto-streamer.h and cgraph.h.
(nonfreeing_call_p): Return cgraph nonfreeing_fn flag if set.
Also return true for IFN_ABNORMAL_DISPATCHER.
* cgraph.c (cgraph_node::dump): Dump nonfreeing_fn flag.
* lto-cgraph.c (lto_output_node): Write nonfreeing_fn flag.
(input_overwrite_node): Read it back.

From-SVN: r217582

10 years agosanopt.c: Include tree-ssa-operands.h.
Jakub Jelinek [Fri, 14 Nov 2014 17:28:11 +0000 (18:28 +0100)]
sanopt.c: Include tree-ssa-operands.h.

* sanopt.c: Include tree-ssa-operands.h.
(struct sanopt_info): Add has_freeing_call_p,
has_freeing_call_computed_p, imm_dom_path_with_freeing_call_p,
imm_dom_path_with_freeing_call_computed_p, freeing_call_events,
being_visited_p fields.
(struct sanopt_ctx): Add asan_check_map field.
(imm_dom_path_with_freeing_call, maybe_optimize_ubsan_null_ifn,
maybe_optimize_asan_check_ifn): New functions.
(sanopt_optimize_walker): Use them, optimize even ASAN_CHECK
internal calls.
(pass_sanopt::execute): Call sanopt_optimize even for
-fsanitize=address.
* gimple.c (nonfreeing_call_p): Return true for non-ECF_LEAF
internal calls.

Co-Authored-By: Marek Polacek <polacek@redhat.com>
From-SVN: r217581

10 years ago[Vectorizer] Tidy up vect_create_epilog / use_scalar_result
Alan Lawrence [Fri, 14 Nov 2014 17:20:40 +0000 (17:20 +0000)]
[Vectorizer] Tidy up vect_create_epilog / use_scalar_result

* tree-vect-loop.c (vect_create_epilog_for_reduction): Move code for
'if (extract_scalar_result)' to the only place that it is true.

From-SVN: r217580

10 years agoe.54.2.c (main): Use N / 8 instead of 32 as block_size.
Jakub Jelinek [Fri, 14 Nov 2014 17:19:55 +0000 (18:19 +0100)]
e.54.2.c (main): Use N / 8 instead of 32 as block_size.

* libgomp.c/examples-4/e.54.2.c (main): Use N / 8 instead
of 32 as block_size.
* libgomp.fortran/examples-4/e.54.2.f90 (e_54_1): Use n / 8
instead of 32 as block_size.

From-SVN: r217579

10 years ago* dwarf2.def (DW_AT_APPLE_optimized, DW_AT_APPLE_flags)
Shinichiro Hamaji [Fri, 14 Nov 2014 17:18:34 +0000 (17:18 +0000)]
* dwarf2.def (DW_AT_APPLE_optimized, DW_AT_APPLE_flags)
(DW_AT_APPLE_isa, DW_AT_APPLE_block)
(DW_AT_APPLE_major_runtime_vers, DW_AT_APPLE_runtime_class)
(DW_AT_APPLE_omit_frame_ptr, DW_AT_APPLE_property_name)
(DW_AT_APPLE_property_getter, DW_AT_APPLE_property_setter)
(DW_AT_APPLE_property_attribute, DW_AT_APPLE_objc_complete_type)
(DW_AT_APPLE_property): New macros.

From-SVN: r217578

10 years agosemantics.c (end_maybe_infinite_loop): Use fold_non_dependent_expr.
Paolo Carlini [Fri, 14 Nov 2014 16:59:52 +0000 (16:59 +0000)]
semantics.c (end_maybe_infinite_loop): Use fold_non_dependent_expr.

2014-11-14  Paolo Carlini  <paolo.carlini@oracle.com>

* semantics.c (end_maybe_infinite_loop): Use fold_non_dependent_expr.
* parser.c (cp_parser_omp_clause_collapse): Likewise.
(cp_parser_enumerator_definition): Don't call
instantiate_non_dependent_expr...
* decl.c (build_enumerator): ... call fold_non_dependent_expr here.
* typeck2.c (massage_init_elt): Use fold_non_dependent_expr.
* constexpr.c (maybe_constant_value): Allow VIEW_CONVERT_EXPR in
the final gcc_assert.

* constexpr.c (fold_non_dependent_expr): Add.
* cp-tree.h (fold_non_dependent_expr): Declare it.
* call.c (null_ptr_cst_p): Use it.
* pt.c (tsubst_copy_and_build, build_non_dependent_expr): Likewise.
* semantics.c (begin_maybe_infinite_loop): Likewise.
* typeck.c (cp_build_binary_op): Likewise.
* typeck2.c (check_narrowing): Likewise.

* pt.c (fold_non_dependent_expr): Rename to
instantiate_non_dependent_expr.
(fold_non_dependent_expr_sfinae): Rename to
instantiate_non_dependent_expr_sfinae.
(convert_nontype_argument, build_non_dependent_expr): Adjust.
* decl.c (compute_array_index_type): Likewise.
* parser.c (cp_parser_parenthesized_expression_list,
cp_parser_enumerator_definition, cp_parser_omp_clause_collapse):
Likewise.
* semantics.c (end_maybe_infinite_loop, finish_static_assert):
Likewise.
* typeck.c (cxx_alignas_expr): Likewise.
* typeck2.c (store_init_value, massage_init_elt): Likewise.
* call.c: Adjust comments.
* class.c: Likewise.
* constexpr.c: Likewise.
* decl2.c: Likewise.
* tree.c: Likewise.

From-SVN: r217577

10 years agomt_allocator.cc: Fix assumption that sizeof(void *) is equal to sizeof(size_t).
Joel Sherrill [Fri, 14 Nov 2014 16:57:20 +0000 (16:57 +0000)]
mt_allocator.cc: Fix assumption that sizeof(void *) is equal to sizeof(size_t).

2014-11-14  Joel Sherrill <joel.sherrill@oarcorp.com>

* src/c++98/mt_allocator.cc: Fix assumption that sizeof(void *) is
equal to sizeof(size_t). The m32c breaks this assumption.

From-SVN: r217576

10 years agoDon't enable IFUNC by default for Android and uclibc
H.J. Lu [Fri, 14 Nov 2014 16:43:23 +0000 (16:43 +0000)]
Don't enable IFUNC by default for Android and uclibc

* config.gcc (default_gnu_indirect_function): Set to yes
for i[34567]86-*-linux* and x86_64-*-linux* if not targeting
Android nor uclibc.

From-SVN: r217575

10 years agoaarch64-simd.md (*aarch64_simd_ld1r<mode>): Use VALL mode iterator instead of VALLDI.
Felix Yang [Fri, 14 Nov 2014 15:51:22 +0000 (15:51 +0000)]
aarch64-simd.md (*aarch64_simd_ld1r<mode>): Use VALL mode iterator instead of VALLDI.

        * config/aarch64/aarch64-simd.md (*aarch64_simd_ld1r<mode>): Use
        VALL mode iterator instead of VALLDI.

Co-Authored-By: Jiji Jiang <jiangjiji@huawei.com>
From-SVN: r217573

10 years agooptc-save-gen.awk: Output cl_target_option_eq...
Jan Hubicka [Fri, 14 Nov 2014 15:48:47 +0000 (15:48 +0000)]
optc-save-gen.awk: Output cl_target_option_eq...

* optc-save-gen.awk: Output cl_target_option_eq,
cl_target_option_hash, cl_target_option_stream_out,
cl_target_option_stream_in functions.
* opth-gen.awk: Output prototypes for
cl_target_option_eq and cl_target_option_hash.
* lto-streamer.h (cl_target_option_stream_out,
cl_target_option_stream_in): Declare.
* tree.c (cl_option_hash_hash): Use cl_target_option_hash.
(cl_option_hash_eq): Use cl_target_option_eq.
* tree-streamer-in.c (unpack_value_fields): Stream in
TREE_TARGET_OPTION.
* lto-streamer-out.c (DFS::DFS_write_tree_body): Follow
DECL_FUNCTION_SPECIFIC_TARGET.
(hash_tree): Hash TREE_TARGET_OPTION; visit
DECL_FUNCTION_SPECIFIC_TARGET.
* tree-streamer-out.c (streamer_pack_tree_bitfields): Skip
TS_TARGET_OPTION.
(streamer_write_tree_body): Output TS_TARGET_OPTION.

* lto.c (compare_tree_sccs_1): Compare cl_target_option_eq.

From-SVN: r217572

10 years agooptc-save-gen.awk: Output cl_target_option_eq...
Jan Hubicka [Fri, 14 Nov 2014 15:47:53 +0000 (16:47 +0100)]
optc-save-gen.awk: Output cl_target_option_eq...

* optc-save-gen.awk: Output cl_target_option_eq,
cl_target_option_hash, cl_target_option_stream_out,
cl_target_option_stream_in functions.
* opth-gen.awk: Output prototypes for
cl_target_option_eq and cl_target_option_hash.
* lto-streamer.h (cl_target_option_stream_out,
cl_target_option_stream_in): Declare.
* tree.c (cl_option_hash_hash): Use cl_target_option_hash.
(cl_option_hash_eq): Use cl_target_option_eq.
* tree-streamer-in.c (unpack_value_fields): Stream in
TREE_TARGET_OPTION.
* lto-streamer-out.c (DFS::DFS_write_tree_body): Follow
DECL_FUNCTION_SPECIFIC_TARGET.
(hash_tree): Hash TREE_TARGET_OPTION; visit
DECL_FUNCTION_SPECIFIC_TARGET.
* tree-streamer-out.c (streamer_pack_tree_bitfields): Skip
TS_TARGET_OPTION.
(streamer_write_tree_body): Output TS_TARGET_OPTION.

* lto.c (compare_tree_sccs_1): Compare cl_target_option_eq.

From-SVN: r217571

10 years agoMakefile.am (AM_CXXFLAGS): Use -std=gnu++11.
Uros Bizjak [Fri, 14 Nov 2014 14:23:51 +0000 (15:23 +0100)]
Makefile.am (AM_CXXFLAGS): Use -std=gnu++11.

* sanitizer_common/Makefile.am (AM_CXXFLAGS): Use -std=gnu++11.
* asan/Makefile.am (AM_CXXFLAGS): Ditto.
* lsan/Makefile.am (AM_CXXFLAGS): Ditto.
* interception/Makefile.am (AM_CXXFLAGS): Ditto.
* tsan/Makefile.am (AM_CXXFLAGS): Ditto.
* libbacktrace/Makefile.am (AM_CXXFLAGS): Ditto.
* ubsan/Makefile.am (AM_CXXFLAGS): Ditto.
* sanitizer_common/Makefile.in: Regenerate.
* asan/Makefile.in: Ditto.
* lsan/Makefile.in: Ditto.
* interception/Makefile.in: Ditto.
* tsan/Makefile.in: Ditto.
* libbacktrace/Makefile.in: Ditto.
* ubsan/Makefile.in: Ditto.

From-SVN: r217562

10 years agogimple-fold.h (gimple_fold_stmt_to_constant_1): Add 2nd valueization hook defaulted...
Richard Biener [Fri, 14 Nov 2014 13:32:56 +0000 (13:32 +0000)]
gimple-fold.h (gimple_fold_stmt_to_constant_1): Add 2nd valueization hook defaulted to no_follow_ssa_edges.

2014-11-14  Richard Biener  <rguenther@suse.de>

* gimple-fold.h (gimple_fold_stmt_to_constant_1): Add 2nd
valueization hook defaulted to no_follow_ssa_edges.
* gimple-fold.c (gimple_fold_stmt_to_constant_1): Pass
2nd valueization hook to gimple_simplify.
* tree-ssa-ccp.c (valueize_op_1): New function to be
used for gimple_simplify called via gimple_fold_stmt_to_constant_1.
(ccp_fold): Adjust.
* tree-vrp.c (vrp_valueize_1): New function to be
used for gimple_simplify called via gimple_fold_stmt_to_constant_1.
(vrp_visit_assignment_or_call): Adjust.

From-SVN: r217560

10 years agoDefine C++11 version of std::ios_base::failure.
Jonathan Wakely [Fri, 14 Nov 2014 12:17:57 +0000 (12:17 +0000)]
Define C++11 version of std::ios_base::failure.

* config/abi/pre/gnu.ver: Add new exports.
* include/bits/ios_base.h (ios_base::failure): New definition using
abi_tag.
(io_errc, make_error_code, make_error_category, iostream_category):
Define.
* include/std/system_error (system_error): Add char* constructors.
* src/c++11/Makefile.am: Add new file.
* src/c++11/Makefile.in: Regenerate.
* src/c++11/cxx11-ios_failure.cc: New file.
* src/c++98/ios_failure.cc: Compile old definition without abi_tag.
* testsuite/27_io/ios_base/failure/cxx11.cc: New.
* testsuite/27_io/ios_base/failure/what-1.cc: Allow string returned by
ios_base::failure::what() to contain additional data.
* testsuite/27_io/ios_base/failure/what-2.cc: Likewise..
* testsuite/27_io/ios_base/failure/what-3.cc: Likewise..
* testsuite/27_io/ios_base/failure/what-big.cc: Likewise..

From-SVN: r217559

10 years agoFix patch mangling with --inline option
Tom de Vries [Fri, 14 Nov 2014 12:09:45 +0000 (12:09 +0000)]
Fix patch mangling with --inline option

2014-11-14  Tom de Vries  <tom@codesourcery.com>

* mklog: Move reading of .diff file up and add comment.  Copy diff_lines
to orig_diff_lines.  Use orig_diff_lines when appending patch.

From-SVN: r217558

10 years agomangle.c (find_substitution): Look for abi_tag on class templates.
Jonathan Wakely [Fri, 14 Nov 2014 12:02:09 +0000 (12:02 +0000)]
mangle.c (find_substitution): Look for abi_tag on class templates.

gcc/cp:
* mangle.c (find_substitution): Look for abi_tag on class templates.

gcc/testsuite:
* g++.dg/abi/abi-tag11.C: New.

From-SVN: r217557

10 years agofold-const.c (fold_negate_expr): Don't fold INTEGER_CST if that overflows when SANITI...
Marek Polacek [Fri, 14 Nov 2014 11:57:05 +0000 (11:57 +0000)]
fold-const.c (fold_negate_expr): Don't fold INTEGER_CST if that overflows when SANITIZE_SI_OVERFLOW is on.

* fold-const.c (fold_negate_expr): Don't fold INTEGER_CST if
that overflows when SANITIZE_SI_OVERFLOW is on.  Guard -(-A)
folding with TYPE_OVERFLOW_SANITIZED.

* c-c++-common/ubsan/overflow-negate-3.c: New test.

From-SVN: r217556

10 years agore PR sanitizer/63839 (ICE: tree check: expected ssa_name, have var_decl in simplify_...
Marek Polacek [Fri, 14 Nov 2014 11:22:12 +0000 (11:22 +0000)]
re PR sanitizer/63839 (ICE: tree check: expected ssa_name, have var_decl in simplify_builtin_call, at tree-ssa-forwprop.c:1441 with -fsanitize=unreachable)

PR sanitizer/63839
* asan.c (ATTR_CONST_NORETURN_NOTHROW_LEAF_LIST,
ATTR_COLD_CONST_NORETURN_NOTHROW_LEAF_LIST): Define.
* builtin-attrs.def (ATTR_COLD_CONST_NORETURN_NOTHROW_LEAF_LIST):
Define.
* builtins.c (fold_builtin_0): Don't include ubsan.h.  Don't
instrument BUILT_IN_UNREACHABLE here.
* sanitizer.def (BUILT_IN_UBSAN_HANDLE_BUILTIN_UNREACHABLE): Make
const.
* sanopt.c (pass_sanopt::execute): Instrument BUILT_IN_UNREACHABLE.
* tree-ssa-ccp.c (optimize_unreachable): Bail out if
SANITIZE_UNREACHABLE.
* ubsan.c (ubsan_instrument_unreachable): Rewrite for GIMPLE.
* ubsan.h (ubsan_instrument_unreachable): Adjust declaration.
testsuite/
* c-c++-common/ubsan/pr63839.c: New test.
* c-c++-common/ubsan/unreachable-2.c: New test.

From-SVN: r217553

10 years ago[RS6000] Remove vec_shl and (hopefully) fix vec_shr
Alan Lawrence [Fri, 14 Nov 2014 11:18:21 +0000 (11:18 +0000)]
[RS6000] Remove vec_shl and (hopefully) fix vec_shr

* config/rs6000/vector.md (vec_shl_<mode>): Remove.
(vec_shr_<mode>): Reverse shift if BYTES_BIG_ENDIAN.

From-SVN: r217552

10 years agoFix ChangeLog date
Alan Lawrence [Fri, 14 Nov 2014 10:53:24 +0000 (10:53 +0000)]
Fix ChangeLog date

From-SVN: r217551

10 years ago[Vectorizer]Make reductions-via-shifts and vec_shr_optab endianness-neutral
Alan Lawrence [Fri, 14 Nov 2014 10:48:34 +0000 (10:48 +0000)]
[Vectorizer]Make reductions-via-shifts and vec_shr_optab endianness-neutral

        * optabs.c (shift_amt_for_vec_perm_mask): Remove code conditional on
        BYTES_BIG_ENDIAN.
        * tree-vect-loop.c (calc_vec_perm_mask_for_shift,
        vect_create_epilog_for_reduction): Likewise.
        * doc/md.texi (vec_shr_m): Clarify direction of shifting.

From-SVN: r217550

10 years agore PR target/63724 ([AArch64] Inefficient immediate expansion and hoisting.)
Ramana Radhakrishnan [Fri, 14 Nov 2014 09:44:17 +0000 (09:44 +0000)]
re PR target/63724 ([AArch64] Inefficient immediate expansion and hoisting.)

Fix PR target/63724

2014-11-14  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

PR target/63724
        * config/aarch64/aarch64.c (aarch64_expand_mov_immediate): Split out
        numerical immediate handling to...
        (aarch64_internal_mov_immediate): ...this. New.
        (aarch64_rtx_costs): Use aarch64_internal_mov_immediate.
        (aarch64_mov_operand_p): Relax predicate.
        * config/aarch64/aarch64.md (mov<mode>:GPI): Do not expand CONST_INTs.
        (*movsi_aarch64): Turn into define_insn_and_split and new alternative
        for 'n'.
        (*movdi_aarch64): Likewise.

From-SVN: r217546

10 years agomatch.pd: Implement more binary patterns exercised by fold_stmt.
Richard Biener [Fri, 14 Nov 2014 09:30:08 +0000 (09:30 +0000)]
match.pd: Implement more binary patterns exercised by fold_stmt.

2014-11-14  Richard Biener  <rguenther@suse.de>

* match.pd: Implement more binary patterns exercised by
fold_stmt.
* fold-const.c (sing_bit_p): Export.
(exact_inverse): Likewise.
(fold_binary_loc): Remove patterns here.
(tree_unary_nonnegative_warnv_p): Use CASE_CONVERT.
* fold-const.h (sing_bit_p): Declare.
(exact_inverse): Likewise.

* gcc.c-torture/execute/shiftopt-1.c: XFAIL invalid parts.

From-SVN: r217545

10 years ago* tree.c (build_common_builtin_nodes): Remove doubled ECF_LEAF.
Marek Polacek [Fri, 14 Nov 2014 08:55:11 +0000 (08:55 +0000)]
* tree.c (build_common_builtin_nodes): Remove doubled ECF_LEAF.

From-SVN: r217543

10 years agogenmatch.c (add_operator): Allow CONSTRUCTOR.
Richard Biener [Fri, 14 Nov 2014 08:37:41 +0000 (08:37 +0000)]
genmatch.c (add_operator): Allow CONSTRUCTOR.

2014-11-14  Richard Biener  <rguenther@suse.de>

* genmatch.c (add_operator): Allow CONSTRUCTOR.
(dt_node::gen_kids): Handle CONSTRUCTOR not as GENERIC.
(parser::parse_op): Allow to iterate over predicates.

From-SVN: r217541

10 years agoconfigure.ac (--with-diagnostics-color): New configure option, default to --with...
Jakub Jelinek [Fri, 14 Nov 2014 07:30:27 +0000 (08:30 +0100)]
configure.ac (--with-diagnostics-color): New configure option, default to --with-diagnostics-color=auto.

* configure.ac (--with-diagnostics-color): New configure
option, default to --with-diagnostics-color=auto.
* toplev.c (process_options): Use DIAGNOSTICS_COLOR_DEFAULT
to determine -fdiagnostics-color= option default.
* doc/invoke.texi (-fdiagnostics-color=): Document new
default.
* configure: Regenerated.
* config.in: Regenerated.

From-SVN: r217540

10 years agore PR tree-optimization/63841 (Incorrect strlen optimization after complete unroll)
Teresa Johnson [Fri, 14 Nov 2014 06:35:35 +0000 (06:35 +0000)]
re PR tree-optimization/63841 (Incorrect strlen optimization after complete unroll)

2014-11-13  Teresa Johnson  <tejohnson@google.com>

gcc:
PR tree-optimization/63841
* tree-ssa-strlen.c (strlen_optimize_stmt): Ignore clobbers.

2014-11-13  Teresa Johnson  <tejohnson@google.com>

gcc/testsuite:
PR tree-optimization/63841
* g++.dg/tree-ssa/pr63841.C: Remove prints, use abort.

From-SVN: r217537

10 years ago* cas_n.c (libat_compare_exchange): Add missing cast.
Andrew Waterman [Fri, 14 Nov 2014 06:05:51 +0000 (06:05 +0000)]
* cas_n.c (libat_compare_exchange): Add missing cast.

From-SVN: r217536

10 years agoregex.h: Support embedded zeros in sub_match comparisons (DR 2217)
Daniel Kruegler [Fri, 14 Nov 2014 04:23:06 +0000 (04:23 +0000)]
regex.h: Support embedded zeros in sub_match comparisons (DR 2217)

2014-11-13  Daniel Kruegler  <daniel.kruegler@gmail.com>

* include/bits/regex.h: Support embedded zeros in sub_match
comparisons (DR 2217)
* testsuite/28_regex/sub_match/embedded_zeros_cmp.cc:
Add test cases for embedded zeros

From-SVN: r217535

10 years agotimevar.def (TV_SCHED_FUSION): New time var.
Bin Cheng [Fri, 14 Nov 2014 02:32:38 +0000 (02:32 +0000)]
timevar.def (TV_SCHED_FUSION): New time var.

* timevar.def (TV_SCHED_FUSION): New time var.
* passes.def (pass_sched_fusion): New pass.
* config/arm/arm.c (TARGET_SCHED_FUSION_PRIORITY): New.
(extract_base_offset_in_addr, fusion_load_store): New.
(arm_sched_fusion_priority): New.
(arm_option_override): Disable scheduling fusion by default
on non-armv7 processors or ldrd/strd isn't preferred.
* sched-int.h (struct _haifa_insn_data): New field.
(INSN_FUSION_PRIORITY, FUSION_MAX_PRIORITY, sched_fusion): New.
* sched-rgn.c (rest_of_handle_sched_fusion): New.
(pass_data_sched_fusion, pass_sched_fusion): New.
(make_pass_sched_fusion): New.
* haifa-sched.c (sched_fusion): New.
(insn_cost): Handle sched_fusion.
(priority): Handle sched_fusion by calling target hook.
(enum rfs_decision): New enum value.
(rfs_str): New element for RFS_FUSION.
(rank_for_schedule): Support sched_fusion.
(schedule_insn, max_issue, prune_ready_list): Handle sched_fusion.
(schedule_block, fix_tick_ready): Handle sched_fusion.
* common.opt (flag_schedule_fusion): New.
* tree-pass.h (make_pass_sched_fusion): New.
* target.def (fusion_priority): New.
* doc/tm.texi.in (TARGET_SCHED_FUSION_PRIORITY): New.
* doc/tm.texi: Regenerated.
* doc/invoke.texi (-fschedule-fusion): New.

testsuite:
* gcc.target/arm/ldrd-strd-pair-1.c: New test.
* gcc.target/arm/vfp-1.c: Improve scanning string.

From-SVN: r217533

10 years agore PR debug/63581 (undefined references in debug_info)
Rong Xu [Fri, 14 Nov 2014 00:30:31 +0000 (00:30 +0000)]
re PR debug/63581 (undefined references in debug_info)

2014-11-13  Rong Xu  <xur@google.com>

gcc:
PR debug/63581
* cfgrtl.c (emit_barrier_after_bb): Append the barrier to the
  footer, instead of unconditionally overwritten

gcc/testsuite:
PR debug/63581
* g++.dg/tree-prof/pr63581.C: New test.

From-SVN: r217530

10 years agocgraph.h (clear_outer_type): Make public.
Martin Jambor [Fri, 14 Nov 2014 00:22:28 +0000 (01:22 +0100)]
cgraph.h (clear_outer_type): Make public.

2014-11-14  Martin Jambor  <mjambor@suse.cz>

* cgraph.h (clear_outer_type): Make public.  Fix comment.
* ipa-devirt.c (possible_polymorphic_call_targets): Use
clear_outer_type when resetting the context.

From-SVN: r217529

10 years agoDaily bump.
GCC Administrator [Fri, 14 Nov 2014 00:16:25 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r217528

10 years agore PR bootstrap/63853 (The use of strchrnul breaks bootstrap on x86_64-apple-darwin14.)
Dominique d'Humieres [Thu, 13 Nov 2014 22:06:15 +0000 (22:06 +0000)]
re PR bootstrap/63853 (The use of strchrnul breaks bootstrap on x86_64-apple-darwin14.)

2014-11-13  Dominique Dhumieres  <dominiq@lps.ens.fr>

PR bootstrap/63853
gcc/
* gcc.c (handle_foffload_option): Replace strchrnul with strchr.
* lto-wrapper.c (parse_env_var, append_offload_options): Likewise.

From-SVN: r217524

10 years agoFix format of ChangeLog entry from r217505.
Teresa Johnson [Thu, 13 Nov 2014 21:54:42 +0000 (21:54 +0000)]
Fix format of ChangeLog entry from r217505.

From-SVN: r217523

10 years agolibsanitizer merge from upstream r221802
Kostya Serebryany [Thu, 13 Nov 2014 20:41:38 +0000 (20:41 +0000)]
libsanitizer merge from upstream r221802

From-SVN: r217518

10 years agoaccess.c: Include <stdlib.h>.
Marek Polacek [Thu, 13 Nov 2014 18:07:44 +0000 (18:07 +0000)]
access.c: Include <stdlib.h>.

* intrinsics/access.c: Include <stdlib.h>.
* intrinsics/chdir.c: Likewise.
* intrinsics/chmod.c: Likewise.
* intrinsics/link.c: Likewise.
* intrinsics/perror.c: Likewise.
* intrinsics/rename.c: Likewise.
* intrinsics/symlnk.c: Likewise.
* intrinsics/unlink.c: Likewise.

From-SVN: r217514

10 years agoRemove VEC_RSHIFT_EXPR tree code, now unused
Alan Lawrence [Thu, 13 Nov 2014 16:35:06 +0000 (16:35 +0000)]
Remove VEC_RSHIFT_EXPR tree code, now unused

* fold-const.c (const_binop): Remove code handling VEC_RSHIFT_EXPR.
* tree-cfg.c (verify_gimple_assign_binary): Likewise.
* tree-inline.c (estimate_operator_cost): Likewise.
* tree-pretty-print.c (dump_generic_node, op_code_prio, op_symbol_code):
Likewise.

* tree-vect-generic.c (expand_vector_operations_1): Remove assertion
against VEC_RSHIFT_EXPR.

* optabs.h (expand_vec_shift_expr): Remove.
* optabs.c (optab_for_tree_code): Remove case VEC_RSHIFT_EXPR.
(expand_vec_shift_expr): Remove.
* tree.def (VEC_RSHIFT_EXPR): Remove

From-SVN: r217510

10 years ago[Vectorizer] Use a VEC_PERM_EXPR instead of VEC_RSHIFT_EXPR; expand appropriate VEC_P...
Alan Lawrence [Thu, 13 Nov 2014 16:27:37 +0000 (16:27 +0000)]
[Vectorizer] Use a VEC_PERM_EXPR instead of VEC_RSHIFT_EXPR; expand appropriate VEC_PERM_EXPRs using vec_shr_optab

* optabs.c (can_vec_perm_p): Update comment, does not consider vec_shr.
(shift_amt_for_vec_perm_mask): New.
(expand_vec_perm_1): Use vec_shr_optab if second vector is const0_rtx
and mask appropriate.

* tree-vect-loop.c (calc_vec_perm_mask_for_shift): New.
(have_whole_vector_shift): New.
(vect_model_reduction_cost): Call have_whole_vector_shift instead of
looking for vec_shr_optab.
(vect_create_epilog_for_reduction): Likewise; also rename local variable
have_whole_vector_shift to reduce_with_shift; output VEC_PERM_EXPRs
instead of VEC_RSHIFT_EXPRs.

* tree-vect-stmts.c (vect_gen_perm_mask_checked): Extend comment.

From-SVN: r217509

10 years ago[Vectorizer] Split vect_gen_perm_mask into _checked and _any variants
Alan Lawrence [Thu, 13 Nov 2014 16:20:13 +0000 (16:20 +0000)]
[Vectorizer] Split vect_gen_perm_mask into _checked and _any variants

* tree-vectorizer.h (vect_gen_perm_mask): Remove.
(vect_gen_perm_mask_checked, vect_gen_perm_mask_any): New.

tree_vec_data_refs.c (vect_permute_load_chain, vec_permute_store_chain,
vec_shift_permute_load_chain): Replace vect_gen_perm_mask & assert
with vect_gen_perm_mask_checked.

* tree-vect-stmts.c (vectorizable_mask_load_store, vectorizable_load):
Likewise.

(vect_gen_perm_mask_checked): New.
(vect_gen_perm_mask): Remove can_vec_perm_p check, rename to...
(vect_gen_perm_mask_any): ...this.

(perm_mask_for_reverse): Call can_vec_perm_p and
vect_gen_perm_mask_checked.

From-SVN: r217508

10 years agoipa-utils.h: Fix typo in comments.
Felix Yang [Thu, 13 Nov 2014 16:04:30 +0000 (16:04 +0000)]
ipa-utils.h: Fix typo in comments.

        * ipa-utils.h: Fix typo in comments.
        * ipa-profile.c: Likewise.
        * tree-ssa-loop-ivcanon.c: Fix typo in comments and debugging dump.

From-SVN: r217507

10 years agore PR tree-optimization/63841 (Incorrect strlen optimization after complete unroll)
Teresa Johnson [Thu, 13 Nov 2014 15:36:48 +0000 (15:36 +0000)]
re PR tree-optimization/63841 (Incorrect strlen optimization after complete unroll)

2014-11-13  Teresa Johnson  <tejohnson@google.com>

gcc:
PR tree-optimization/63841
* tree.c (initializer_zerop): A clobber does not zero initialize.

gcc/testsuite:
PR tree-optimization/63841
* g++.dg/tree-ssa/pr63841.C: New test.

From-SVN: r217505

10 years agooptabs.c (prepare_operand): Gracefully fail if the mode of X does not match the opera...
Ulrich Weigand [Thu, 13 Nov 2014 14:13:53 +0000 (14:13 +0000)]
optabs.c (prepare_operand): Gracefully fail if the mode of X does not match the operand mode expected by...

* optabs.c (prepare_operand): Gracefully fail if the mode of X
does not match the operand mode expected by the insn pattern.

From-SVN: r217501

10 years ago[PATCH 4/4] OpenMP 4.0 offloading to Intel MIC: non-fallback testing.
Andrey Turetskiy [Thu, 13 Nov 2014 14:07:09 +0000 (14:07 +0000)]
[PATCH 4/4] OpenMP 4.0 offloading to Intel MIC: non-fallback testing.

libgomp/
* Makefile.in: Regenerate.
* configure: Regenerate.
* configure.ac: Set up offload_additional_options,
offload_additional_lib_paths and offload_targets.
* testsuite/Makefile.am: Export environment variables: OFFLOAD_TARGETS,
OFFLOAD_ADDITIONAL_OPTIONS, OFFLOAD_ADDITIONAL_LIB_PATHS.
* testsuite/Makefile.in: Regenerate.
* testsuite/lib/libgomp.exp (libgomp_init): Append
offload_additional_lib_paths to LD_LIBRARY_PATH.  Append
offload_additional_options to ALWAYS_CFLAGS.  Append liboffloadmic
build directory to LD_LIBRARY_PATH for intelmic offload targets.

Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
From-SVN: r217500

10 years ago[PATCH 3/4] OpenMP 4.0 offloading to Intel MIC: libgomp plugin.
Ilya Verbin [Thu, 13 Nov 2014 14:05:49 +0000 (14:05 +0000)]
[PATCH 3/4] OpenMP 4.0 offloading to Intel MIC: libgomp plugin.

liboffloadmic/
* Makefile.in: Regenerate.
* configure: Regenerate.
* configure.ac: Add subdirectory 'plugin'.
* plugin/Makefile.am: New file.
* plugin/Makefile.in: New file, generated by automake.
* plugin/aclocal.m4: New file, generated by aclocal.
* plugin/configure: New file, generated by autoconf.
* plugin/configure.ac: New file.
* plugin/libgomp-plugin-intelmic.cpp: New file.
* plugin/offload_target_main.cpp: New file.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
From-SVN: r217499

10 years ago[PATCH 2/4] OpenMP 4.0 offloading to Intel MIC: liboffloadmic.
Kirill Yukhin [Thu, 13 Nov 2014 14:03:17 +0000 (14:03 +0000)]
[PATCH 2/4] OpenMP 4.0 offloading to Intel MIC: liboffloadmic.

* Makefile.def: Add liboffloadmic to target_modules.  Make
liboffloadmic depend on libgomp's configure, libstdc++ and libgcc.
* Makefile.in: Regenerate.
* configure: Regenerate.
* configure.ac: Add liboffloadmic to target binaries.
Restrict liboffloadmic for POSIX and i*86, and x86_64 architectures.
Add liboffloadmic to noconfig list when C++ is not supported.

config/
* target-posix: New file.

libcilkrts/
* configure.tgt: Use config/target-posix.

liboffloadmic/
Initial commit.  Imported from upstream:
https://www.openmprtl.org/sites/default/files/liboffload_oss.tgz
* Makefile.am: New file.
* Makefile.in: New file, generated by automake.
* aclocal.m4: New file, generated by aclocal.
* configure: New file, generated by autoconf.
* configure.ac: New file.
* configure.tgt: Ditto.
* doc/doxygen/config: Ditto.
* doc/doxygen/header.tex: Ditto.
* include/coi/common/COIEngine_common.h: Ditto.
* include/coi/common/COIMacros_common.h: Ditto.
* include/coi/common/COIPerf_common.h : Ditto.
* include/coi/common/COIResult_common.h : Ditto.
* include/coi/common/COITypes_common.h: Ditto.
* include/coi/sink/COIBuffer_sink.h: Ditto.
* include/coi/sink/COIPipeline_sink.h: Ditto.
* include/coi/sink/COIProcess_sink.h: Ditto.
* include/coi/source/COIBuffer_source.h: Ditto.
* include/coi/source/COIEngine_source.h: Ditto.
* include/coi/source/COIEvent_source.h: Ditto.
* include/coi/source/COIPipeline_source.h: Ditto.
* include/coi/source/COIProcess_source.h: Ditto.
* include/myo/myo.h: Ditto.
* include/myo/myoimpl.h: Ditto.
* include/myo/myotypes.h: Ditto.
* liboffloadmic_host.spec.in: Ditto.
* liboffloadmic_target.spec.in: Ditto.
* runtime/cean_util.cpp: Ditto.
* runtime/cean_util.h: Ditto.
* runtime/coi/coi_client.cpp: Ditto.
* runtime/coi/coi_client.h: Ditto.
* runtime/coi/coi_server.cpp: Ditto.
* runtime/coi/coi_server.h: Ditto.
* runtime/compiler_if_host.cpp: Ditto.
* runtime/compiler_if_host.h: Ditto.
* runtime/compiler_if_target.cpp: Ditto.
* runtime/compiler_if_target.h: Ditto.
* runtime/dv_util.cpp: Ditto.
* runtime/dv_util.h: Ditto.
* runtime/emulator/coi_common.h: Ditto.
* runtime/emulator/coi_device.cpp: Ditto.
* runtime/emulator/coi_device.h: Ditto.
* runtime/emulator/coi_host.cpp: Ditto.
* runtime/emulator/coi_host.h: Ditto.
* runtime/emulator/coi_version_asm.h: Ditto.
* runtime/emulator/coi_version_linker_script.map: Ditto.
* runtime/emulator/myo_client.cpp: Ditto.
* runtime/emulator/myo_service.cpp: Ditto.
* runtime/emulator/myo_service.h: Ditto.
* runtime/emulator/myo_version_asm.h: Ditto.
* runtime/emulator/myo_version_linker_script.map: Ditto.
* runtime/liboffload_error.c: Ditto.
* runtime/liboffload_error_codes.h: Ditto.
* runtime/liboffload_msg.c: Ditto.
* runtime/liboffload_msg.h: Ditto.
* runtime/mic_lib.f90: Ditto.
* runtime/offload.h: Ditto.
* runtime/offload_common.cpp: Ditto.
* runtime/offload_common.h: Ditto.
* runtime/offload_engine.cpp: Ditto.
* runtime/offload_engine.h: Ditto.
* runtime/offload_env.cpp: Ditto.
* runtime/offload_env.h: Ditto.
* runtime/offload_host.cpp: Ditto.
* runtime/offload_host.h: Ditto.
* runtime/offload_myo_host.cpp: Ditto.
* runtime/offload_myo_host.h: Ditto.
* runtime/offload_myo_target.cpp: Ditto.
* runtime/offload_myo_target.h: Ditto.
* runtime/offload_omp_host.cpp: Ditto.
* runtime/offload_omp_target.cpp: Ditto.
* runtime/offload_orsl.cpp: Ditto.
* runtime/offload_orsl.h: Ditto.
* runtime/offload_table.cpp: Ditto.
* runtime/offload_table.h: Ditto.
* runtime/offload_target.cpp: Ditto.
* runtime/offload_target.h: Ditto.
* runtime/offload_target_main.cpp: Ditto.
* runtime/offload_timer.h: Ditto.
* runtime/offload_timer_host.cpp: Ditto.
* runtime/offload_timer_target.cpp: Ditto.
* runtime/offload_trace.cpp: Ditto.
* runtime/offload_trace.h: Ditto.
* runtime/offload_util.cpp: Ditto.
* runtime/offload_util.h: Ditto.
* runtime/ofldbegin.cpp: Ditto.
* runtime/ofldend.cpp: Ditto.
* runtime/orsl-lite/include/orsl-lite.h: Ditto.
* runtime/orsl-lite/lib/orsl-lite.c: Ditto.
* runtime/orsl-lite/version.txt: Ditto.
* runtime/use_mpss2.txt: Ditto.

From-SVN: r217498

10 years agomatch.pd: Add tcc_comparison...
Richard Biener [Thu, 13 Nov 2014 13:58:59 +0000 (13:58 +0000)]
match.pd: Add tcc_comparison...

2014-11-13  Richard Biener  <rguenther@suse.de>

* match.pd: Add tcc_comparison, inverted_tcc_comparison
and inverted_tcc_comparison_with_nans operator lists.
Use tcc_comparison in the truth_valued_p predicate definition.
Restrict logical_inverted_value with bit_xor to integral types.
Build a boolean true for simplifying x |^ !x because of
vector types.  Implement patterns from forward_propagate_comparison
* tree-ssa-forwprop.c (forward_propagate_comparison): Remove.
(get_prop_dest_stmt): Likewise.
(pass_forwprop::execute): Do not call it.
* fold-const.c (fold_unary_loc): Remove the pattern here.

* gcc.dg/tree-ssa/forwprop-28.c: Adjust.

From-SVN: r217496

10 years ago[PATCH 1/4] OpenMP 4.0 offloading to Intel MIC: mkoffload.
Ilya Verbin [Thu, 13 Nov 2014 13:57:58 +0000 (13:57 +0000)]
[PATCH 1/4] OpenMP 4.0 offloading to Intel MIC: mkoffload.

gcc/
* config.gcc (*-intelmic-* | *-intelmicemul-*): Add i386/t-intelmic to
tmake_file.
(i[34567]86-*-* | x86_64-*-*): Build mkoffload$(exeext) with the
accelerator compiler.
* config/i386/intelmic-mkoffload.c: New file.
* config/i386/t-intelmic: Ditto.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
From-SVN: r217495

10 years ago[PATCH 7/7] OpenMP 4.0 offloading infrastructure: testsuite.
Andrey Turetskiy [Thu, 13 Nov 2014 13:56:22 +0000 (13:56 +0000)]
[PATCH 7/7] OpenMP 4.0 offloading infrastructure: testsuite.

libgomp/
* testsuite/lib/libgomp.exp
(check_effective_target_offload_device): New.
* testsuite/libgomp.c++/c++.exp: Include tests from subdirectories.
* testsuite/libgomp.c++/examples-4/e.51.5.C: New test.
* testsuite/libgomp.c++/examples-4/e.53.2.C: Ditto.
* testsuite/libgomp.c/examples-4/e.50.1.c: Ditto.
* testsuite/libgomp.c/examples-4/e.50.2.c: Ditto.
* testsuite/libgomp.c/examples-4/e.50.3.c: Ditto.
* testsuite/libgomp.c/examples-4/e.50.4.c: Ditto.
* testsuite/libgomp.c/examples-4/e.50.5.c: Ditto.
* testsuite/libgomp.c/examples-4/e.51.1.c: Ditto.
* testsuite/libgomp.c/examples-4/e.51.2.c: Ditto.
* testsuite/libgomp.c/examples-4/e.51.3.c: Ditto.
* testsuite/libgomp.c/examples-4/e.51.4.c: Ditto.
* testsuite/libgomp.c/examples-4/e.51.6.c: Ditto.
* testsuite/libgomp.c/examples-4/e.51.7.c: Ditto.
* testsuite/libgomp.c/examples-4/e.52.1.c: Ditto.
* testsuite/libgomp.c/examples-4/e.52.2.c: Ditto.
* testsuite/libgomp.c/examples-4/e.53.1.c: Ditto.
* testsuite/libgomp.c/examples-4/e.53.3.c: Ditto.
* testsuite/libgomp.c/examples-4/e.53.4.c: Ditto.
* testsuite/libgomp.c/examples-4/e.53.5.c: Ditto.
* testsuite/libgomp.c/examples-4/e.54.2.c: Ditto.
* testsuite/libgomp.c/examples-4/e.54.3.c: Ditto.
* testsuite/libgomp.c/examples-4/e.54.4.c: Ditto.
* testsuite/libgomp.c/examples-4/e.54.5.c: Ditto.
* testsuite/libgomp.c/examples-4/e.54.6.c: Ditto.
* testsuite/libgomp.c/examples-4/e.55.1.c: Ditto.
* testsuite/libgomp.c/examples-4/e.55.2.c: Ditto.
* testsuite/libgomp.c/examples-4/e.56.3.c: Ditto.
* testsuite/libgomp.c/examples-4/e.56.4.c: Ditto.
* testsuite/libgomp.c/examples-4/e.57.1.c: Ditto.
* testsuite/libgomp.c/examples-4/e.57.2.c: Ditto.
* testsuite/libgomp.c/examples-4/e.57.3.c: Ditto.
* testsuite/libgomp.c/target-7.c: Fix test.
* testsuite/libgomp.fortran/examples-4/e.50.1.f90: New test.
* testsuite/libgomp.fortran/examples-4/e.50.2.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.50.3.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.50.4.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.50.5.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.51.1.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.51.2.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.51.3.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.51.4.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.51.5.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.51.6.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.51.7.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.52.1.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.52.2.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.53.1.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.53.2.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.53.3.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.53.4.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.53.5.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.54.2.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.54.3.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.54.4.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.54.5.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.54.6.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.55.1.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.55.2.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.56.3.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.56.4.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.57.1.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.57.2.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.57.3.f90: Ditto.

Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
From-SVN: r217494

10 years ago[PATCH 6/7] OpenMP 4.0 offloading infrastructure: option handling.
Bernd Schmidt [Thu, 13 Nov 2014 13:54:07 +0000 (13:54 +0000)]
[PATCH 6/7] OpenMP 4.0 offloading infrastructure: option handling.

gcc/
* common.opt (foffload, foffload-abi): New options.
* config/i386/i386.c (ix86_offload_options): New static function.
(TARGET_OFFLOAD_OPTIONS): Define.
* coretypes.h (enum offload_abi): New enum.
* doc/tm.texi: Regenerate.
* doc/tm.texi.in (TARGET_OFFLOAD_OPTIONS): Document.
* gcc.c (offload_targets): New static variable.
(handle_foffload_option): New static function.
(driver_handle_option): Handle OPT_foffload_.
(driver::maybe_putenv_OFFLOAD_TARGETS): Set OFFLOAD_TARGET_NAMES
according to offload_targets.
* hooks.c (hook_charptr_void_null): New hook.
* hooks.h (hook_charptr_void_null): Declare.
* lto-opts.c: Include lto-section-names.h.
(lto_write_options): Append options from target offload_options hook and
store them to offload_lto section.  Do not store target-specific,
driver and diagnostic options in offload_lto section.
* lto-wrapper.c (merge_and_complain): Handle OPT_foffload_ and
OPT_foffload_abi_.
(append_compiler_options, append_linker_options)
(append_offload_options): New static functions.
(compile_offload_image): Add new arguments with options.
Call append_compiler_options and append_offload_options.
(compile_images_for_offload_targets): Add new arguments with options.
(find_and_merge_options): New static function.
(run_gcc): Outline options handling into the new functions:
find_and_merge_options, append_compiler_options, append_linker_options.
* opts.c (common_handle_option): Don't handle OPT_foffload_.
Forbid OPT_foffload_abi_ for non-offload compiler.
* target.def (offload_options): New target hook.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
From-SVN: r217493

10 years ago[PATCH 5/7] OpenMP 4.0 offloading infrastructure: libgomp.
Jakub Jelinek [Thu, 13 Nov 2014 13:49:47 +0000 (14:49 +0100)]
[PATCH 5/7] OpenMP 4.0 offloading infrastructure: libgomp.

libgomp/
* libgomp.map (GOMP_4.0.1): New symbol version.
Add GOMP_offload_register.
* libgomp_target.h: New file.
* splay-tree.h: New file.
* target.c: Include config.h, libgomp_target.h, dlfcn.h, splay-tree.h.
(gomp_target_init): New forward declaration.
(gomp_is_initialized): New static variable.
(splay_tree_node, splay_tree, splay_tree_key): New typedefs.
(struct target_mem_desc, struct splay_tree_key_s, offload_image_descr):
New structures.
(offload_images, num_offload_images, devices, num_devices): New static
variables.
(splay_compare): New static function.
(struct gomp_device_descr): New structure.
(gomp_get_num_devices): Call gomp_target_init.
(resolve_device, gomp_map_vars_existing, gomp_map_vars, gomp_unmap_tgt)
(gomp_unmap_vars, gomp_update, gomp_init_device): New static functions.
(GOMP_offload_register): New function.
(GOMP_target): Arrange for host callback to be performed in a separate
initial thread and contention group, inheriting ICVs from
gomp_global_icv etc.  Call gomp_map_vars and gomp_unmap_vars.
Add device initialization and lookup for target function in splay tree.
(GOMP_target_data): Add device initialization and call gomp_map_vars.
(GOMP_target_end_data): Call gomp_unmap_vars.
(GOMP_target_update): Add device initialization and call gomp_update.
(gomp_load_plugin_for_device, gomp_register_images_for_device)
(gomp_target_init): New static functions.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Thomas Schwinge <thomas@codesourcery.com>
From-SVN: r217492

10 years ago[PATCH 4/7] OpenMP 4.0 offloading infrastructure: lto-wrapper.
Ilya Verbin [Thu, 13 Nov 2014 13:47:46 +0000 (13:47 +0000)]
[PATCH 4/7] OpenMP 4.0 offloading infrastructure: lto-wrapper.

gcc/
* gcc.c (spec_host_machine, accel_dir_suffix): New variables.
(process_command): Tweak path construction for the possibility
of being configured as an offload compiler.
(driver::maybe_putenv_OFFLOAD_TARGETS): New function.
(driver::main): Call maybe_putenv_OFFLOAD_TARGETS.
(driver::set_up_specs): Tweak path construction for the possibility of
being configured as an offload compiler.
* lto-wrapper.c (OFFLOAD_TARGET_NAMES_ENV): Define.
(offload_names, offloadbegin, offloadend): New static variables.
(free_array_of_ptrs, parse_env_var, access_check, compile_offload_image)
(compile_images_for_offload_targets, copy_file, find_offloadbeginend):
New static functions.
(run_gcc): Determine whether offload sections are present.  If so, run
compile_images_for_offload_targets and return the names of new generated
objects to linker.  If there are offload sections, but no LTO sections,
then return the copies of input objects without link-time recompilation.

lto-plugin/
* lto-plugin.c (OFFLOAD_SECTION, OFFLOAD_SECTION_LEN): Define.
(struct plugin_objfile): Add new field "offload".
(process_offload_section): New static function.
(claim_file_handler): Claim file if it contains offload sections.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Bernd Schmidt <bernds@codesourcery.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
From-SVN: r217491

10 years ago[PATCH 3/7] OpenMP 4.0 offloading infrastructure: Offload tables.
Ilya Verbin [Thu, 13 Nov 2014 13:44:04 +0000 (13:44 +0000)]
[PATCH 3/7] OpenMP 4.0 offloading infrastructure: Offload tables.

gcc/
* Makefile.in (GTFILES): Add omp-low.h to list of GC files.
* cgraphunit.c: Include omp-low.h.
* doc/tm.texi: Regenerate.
* doc/tm.texi.in (TARGET_RECORD_OFFLOAD_SYMBOL): Document.
* gengtype.c (open_base_files): Add omp-low.h to ifiles.
* lto-cgraph.c (output_offload_tables): New function.
(input_offload_tables): Likewise.
* lto-section-in.c (lto_section_name): Add "offload_table".
* lto-section-names.h (OFFLOAD_VAR_TABLE_SECTION_NAME): Define.
(OFFLOAD_FUNC_TABLE_SECTION_NAME): Likewise.
* lto-streamer-out.c (lto_output): Call output_offload_tables.
* lto-streamer.h (lto_section_type): Add LTO_section_offload_table.
(output_offload_tables, input_offload_tables): Declare.
* omp-low.c: Include common/common-target.h and lto-section-names.h.
(offload_funcs, offload_vars): New global <tree, va_gc> vectors.
(expand_omp_target): Add child_fn into offload_funcs vector.
(add_decls_addresses_to_decl_constructor): New function.
(omp_finish_file): Likewise.
* omp-low.h (omp_finish_file, offload_funcs, offload_vars): Declare.
* target.def (record_offload_symbol): New DEFHOOK.
* toplev.c: Include omp-low.h.
(compile_file): Call omp_finish_file.
* varpool.c: Include omp-low.h.
(varpool_node::get_create): Add decl into offload_vars vector.

gcc/lto/
* lto/lto.c (read_cgraph_and_symbols): Call input_offload_tables.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Bernd Schmidt <bernds@codesourcery.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
From-SVN: r217489

10 years agogenmatch.c (dt_node::gen_kids): Fix placement of break statement.
Richard Biener [Thu, 13 Nov 2014 13:41:11 +0000 (13:41 +0000)]
genmatch.c (dt_node::gen_kids): Fix placement of break statement.

2014-11-13  Richard Biener  <rguenther@suse.de>

* genmatch.c (dt_node::gen_kids): Fix placement of break statement.

From-SVN: r217487

10 years ago[PATCH 2/7] OpenMP 4.0 offloading infrastructure: LTO streaming.
Ilya Verbin [Thu, 13 Nov 2014 13:37:38 +0000 (13:37 +0000)]
[PATCH 2/7] OpenMP 4.0 offloading infrastructure: LTO streaming.

gcc/
* cgraph.c: Include context.h.
(cgraph_node::create): Set node->offloadable and g->have_offload if
decl have "omp declare target" attribute.
* cgraph.h (symtab_node): Add need_lto_streaming and offloadable flags.
* cgraphunit.c: Include lto-section-names.h.
(ipa_passes): Call ipa_write_summaries if there is something to write to
OFFLOAD_SECTION_NAME_PREFIX sections.
(symbol_table::compile): Set flag_generate_lto if there is something to
offload.
Replace flag_lto with flag_generate_lto before lto_streamer_hooks_init.
* context.c (gcc::context::context): Initialize have_offload with false.
* context.h (class context): Add have_offload flag.
* ipa-inline-analysis.c (inline_generate_summary): Do not exit under
flag_generate_lto.
(inline_free_summary): Always remove hooks.
* lto-cgraph.c (referenced_from_other_partition_p): Ignore references
from non-offloadable nodes while streaming a node into offload section.
(reachable_from_other_partition_p): Likewise.
(select_what_to_stream): New function.
(compute_ltrans_boundary): Do not call
lto_set_symtab_encoder_in_partition if the node should not be streamed.
* lto-section-names.h (OFFLOAD_SECTION_NAME_PREFIX): Define.
(section_name_prefix): Declare.
* lto-streamer.c (section_name_prefix): New variable.
(lto_get_section_name): Use section_name_prefix instead of
LTO_SECTION_NAME_PREFIX.
* lto-streamer.h (select_what_to_stream): Declare.
* omp-low.c: Include context.h.
(is_targetreg_ctx): New function.
(scan_sharing_clauses): Use offloadable flag, instead of an attribute.
(create_omp_child_function, check_omp_nesting_restrictions): Use new
is_targetreg_ctx function.  Replace usage of "omp declare target"
attribute with a cgraph_node flag offloadable.
(expand_omp_target): Set mark_force_output for offloadable functions.
(lower_omp_critical): Set offloadable flag for omp critical symbol.
* passes.c (ipa_write_summaries): New argument offload_lto_mode.  Call
select_what_to_stream.  Do not call lto_set_symtab_encoder_in_partition
if the node should not be streamed out.
* tree-pass.h (ipa_write_summaries): New bool argument.
* varpool.c: Include context.h.
(varpool_node::get_create): Set node->offloadable and g->have_offload if
decl have "omp declare target" attribute.

gcc/lto/
* lto-object.c (lto_obj_add_section): Use section_name_prefix instead of
LTO_SECTION_NAME_PREFIX.
* lto-partition.c (lto_promote_cross_file_statics): Call
select_what_to_stream.
* lto.c (lto_section_with_id): Use section_name_prefix instead of
LTO_SECTION_NAME_PREFIX.
(read_cgraph_and_symbols): Read OFFLOAD_SECTION_NAME_PREFIX sections, if
being built as an offload compiler.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Bernd Schmidt <bernds@codesourcery.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
From-SVN: r217486

10 years ago[PATCH 1/7] OpenMP 4.0 offloading infrastructure: configure and make
Bernd Schmidt [Thu, 13 Nov 2014 13:28:56 +0000 (13:28 +0000)]
[PATCH 1/7] OpenMP 4.0 offloading infrastructure: configure and make

* configure: Regenerate.
* configure.ac (--enable-as-accelerator-for)
(--enable-offload-targets): New configure options.
gcc/
* Makefile.in (real_target_noncanonical, accel_dir_suffix)
(enable_as_accelerator): New variables substituted by configure.
(libsubdir, libexecsubdir, unlibsubdir): Tweak for the possibility of
being configured as an offload compiler.
(DRIVER_DEFINES): Pass new defines DEFAULT_REAL_TARGET_MACHINE and
ACCEL_DIR_SUFFIX.
(install-cpp, install-common, install_driver, install-gcc-ar): Do not
install for the offload compiler.
* config.in: Regenerate.
* configure: Regenerate.
* configure.ac (real_target_noncanonical, accel_dir_suffix)
(enable_as_accelerator): Compute new variables.
(ACCEL_COMPILER): Define if the compiler is built as the accel compiler.
(OFFLOAD_TARGETS): List of target names suitable for offloading.
(ENABLE_OFFLOADING): Define if list of offload targets is not empty.
gcc/cp/
* Make-lang.in (c++.install-common): Do not install for the offload
compiler.
gcc/doc/
* install.texi (Options specification): Document
--enable-as-accelerator-for and --enable-offload-targets.
gcc/fortran/
* Make-lang.in (fortran.install-common): Do not install for the offload
compiler.
libgcc/
* Makefile.in (crtoffloadbegin$(objext)): New rule.
(crtoffloadend$(objext)): Likewise.
* configure: Regenerate.
* configure.ac (accel_dir_suffix): Compute new variable.
(extra_parts): Add crtoffloadbegin.o and crtoffloadend.o
if enable_offload_targets is not empty.
* offloadstuff.c: New file.
libgomp/
* config.h.in: Regenerate.
* configure: Regenerate.
* configure.ac: Check for libdl, required for plugin support.
(PLUGIN_SUPPORT): Define if plugins are supported.
(enable_offload_targets): Support Intel MIC targets.
(OFFLOAD_TARGETS): List of target names suitable for offloading.
lto-plugin/
* Makefile.am (libexecsubdir): Tweak for the possibility of being
configured for offload compiler.
(accel_dir_suffix, real_target_noncanonical): New variables substituted
by configure.
* Makefile.in: Regenerate.
* configure: Regenerate.
* configure.ac (accel_dir_suffix, real_target_noncanonical): Compute new
variables.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Thomas Schwinge <thomas@codesourcery.com>
From-SVN: r217485

10 years agoUse POINTER_SIZE to check for pointer size
H.J. Lu [Thu, 13 Nov 2014 13:08:12 +0000 (13:08 +0000)]
Use POINTER_SIZE to check for pointer size

PR tree-optimization/63828
* ipa-polymorphic-call.c (possible_placement_new): Check
POINTER_SIZE, instead of BITS_PER_WORD, for pointer size.

From-SVN: r217483

10 years agoPR 60324 Unbounded stack allocations in libgfortran.
Janne Blomqvist [Thu, 13 Nov 2014 12:05:01 +0000 (14:05 +0200)]
PR 60324 Unbounded stack allocations in libgfortran.

2014-11-13  Janne Blomqvist  <jb@gcc.gnu.org>

PR libfortran/60324
* configure: Regenerated.
* configure.ac (AM_CFLAGS): Add Werror=vla.
* libgfortran.h (gfc_alloca): Remove macro.
(fc_strdup_notrim): New prototype.
* intrinsics/access.c (access_func): Use fc_strdup rather than
stack allocation.
* intrinsics/chdir.c (chdir_i4_sub): Likewise.
(chdir_i8_sub): Likewise.
* intrinsics/chmod.c (chmod_internal): New function, move logic
here.
(chmod_func): Call chmod_internal.
* intrinsics/env.c (getenv): Use fc_strdup rather than stack
allocation.
(get_environment_variable_i4): Likewise.
* intrinsics/execute_command_line.c (execute_command_line):
Likewise.
* intrinsics/hostnm.c (hostnm_0): New function, use static buffer
rather than VLA.
(hostnm_i4_sub): Call hostnm_0.
(hostnm_i8_sub): Likewise.
(hostnm): Likewise.
* intrinsics/link.c (link_internal): New function, use fc_strdup
rather than stack allocation.
(link_i4_sub): Call link_internal.
(link_i8_sub): Likewise.
(link_i4): Likewise.
(link_i8): Likewise.
* intrinsics/perror.c (perror_sub): Use fc_strdup rather than
stack allocation.
* intrinsics/random.c (random_seed_i4): Use static buffer rather
than VLA, use _Static_assert to make sure it's big enough.
* intrinsics/rename.c (rename_internal): New function, use
fc_strdup rather than stack allocation.
(rename_i4_sub): Call rename_internal.
(rename_i8_sub): Likewise.
(rename_i4): Likewise.
(rename_i8): Likewise.
* intrinsics/stat.c (stat_i4_sub_0): Use fc_strdup rather than
stack allocation.
(stat_i8_sub_0): Likewise.
* intrinsics/symlink.c (symlnk_internal): New function, use
fc_strdup rather than stack allocation.
(symlnk_i4_sub): Call symlnk_internal.
(symlnk_i8_sub): Likewise.
(symlnk_i4): Likewise.
(symlnk_i8): Likewise.
* intrinsics/system.c (system_sub): Use fc_strdup rather than
stack allocation.
* intrinsics/unlink.c (unlink_i4_sub): Likewise.
* io/file_pos.c (READ_CHUNK): Make it a macro rather than variable.
* io/list_read.c (nml_get_obj_data): Use fixed stack buffer, fall
back to xmalloc/free for large sizes.
* io/read.c (read_f): Likewise.
* io/transfer.c (MAX_READ): Make it a macro rather than variable.
(WRITE_CHUNK): Likewise.
* io/write_float.def (write_float): Use fixed stack buffer, fall
back to xmalloc/free for large sizes.
* runtime/string.c (fc_strdup_notrim): New function.

From-SVN: r217480

10 years agotm.texi.in (SELECT_CC_MODE): Update example.
Eric Botcazou [Thu, 13 Nov 2014 11:44:26 +0000 (11:44 +0000)]
tm.texi.in (SELECT_CC_MODE): Update example.

* doc/tm.texi.in (SELECT_CC_MODE): Update example.
(REVERSIBLE_CC_MODE): Fix example.
(REVERSE_CONDITION): Fix typo.
* doc/tm.texi: Regenerate.

From-SVN: r217476

10 years agoRun pass_expand_omp_ssa after pass_paralellize_loops
Tom de Vries [Thu, 13 Nov 2014 10:51:58 +0000 (10:51 +0000)]
Run pass_expand_omp_ssa after pass_paralellize_loops

2014-11-13  Tom de Vries  <tom@codesourcery.com>

* omp-low.c (pass_data_expand_omp): Set properties_provided to
PROP_gimple_eomp.
(pass_expand_omp::gate): Remove function.  Move gate expression to ...
(pass_expand_omp::execute): ... here, as new variable gate.  Add early
exit if gate is false.
(pass_data pass_data_expand_omp_ssa): New pass_data.
(class pass_expand_omp_ssa): New pass.
(make_pass_expand_omp_ssa): New function.
* passes.def (pass_parallelize_loops): Use PUSH_INSERT_PASSES_WITHIN
instead of NEXT_PASS.
(pass_expand_omp_ssa): Add after pass_parallelize_loops.
* tree-parloops.c (gen_parallel_loop): Remove call to omp_expand_local.
(pass_parallelize_loops::execute): Don't do cleanups TODO_cleanup_cfg
and TODO_rebuild_alias yet.  Add TODO_update_ssa.  Set
cfun->omp_expand_needed.
* tree-pass.h: Add define PROP_gimple_eomp.
(make_pass_expand_omp_ssa): Declare.

From-SVN: r217474

10 years agoline-map.h: Include EXPR, so that unused variable warnings do not occur.
Manuel López-Ibáñez [Thu, 13 Nov 2014 10:46:56 +0000 (10:46 +0000)]
line-map.h: Include EXPR, so that unused variable warnings do not occur.

* include/line-map.h: Include EXPR, so that unused variable warnings
do not occur.

From-SVN: r217473

10 years agoEnable libcc1 on Solaris
Rainer Orth [Thu, 13 Nov 2014 10:22:22 +0000 (10:22 +0000)]
Enable libcc1 on Solaris

* configure.ac (libcc1_cv_lib_sockets): Check for -lsocket -lnsl.
* configure: Regenerate.
* connection.cc: Include <string.h>.
        * libcc1.cc (libcc1_compile): Use AF_UNIX instead of AF_LOCAL.

From-SVN: r217471

10 years agotree.h (TYPE_OVERFLOW_SANITIZED): Define.
Marek Polacek [Thu, 13 Nov 2014 10:17:51 +0000 (10:17 +0000)]
tree.h (TYPE_OVERFLOW_SANITIZED): Define.

* tree.h (TYPE_OVERFLOW_SANITIZED): Define.
* fold-const.c (fold_binary_loc): Use it.
* match.pd: Likewise.

From-SVN: r217470

10 years agocp-tree.h (cp_build_function_call): Remove prototype.
Kai Tietz [Thu, 13 Nov 2014 09:46:53 +0000 (10:46 +0100)]
cp-tree.h (cp_build_function_call): Remove prototype.

2014-11-13  Kai Tietz  <ktietz@redhat.com>

* cp-tree.h (cp_build_function_call): Remove prototype.
(cp_build_addr_expr_strict): Likewise.
(build_typed_address): Likewise.
* typeck.c (build_typed_address): Removed.
(cp_build_addr_expr_strict): Make static.
(cp_build_function_call): Likewise.

From-SVN: r217469

10 years agoRename struct in gcc/lra-lives.c
Kirill Yukhin [Thu, 13 Nov 2014 09:12:09 +0000 (09:12 +0000)]
Rename struct in gcc/lra-lives.c

gcc/
* gcc/lra-lives.c (struct bb_data): Rename to ...
(struct bb_data_pseudos): ... this.
(initiate_live_solver): Update struct name.

From-SVN: r217468

10 years agotarget-supports.exp (error_h): New check.
Alexander Ivchenko [Thu, 13 Nov 2014 09:08:18 +0000 (09:08 +0000)]
target-supports.exp (error_h): New check.

gcc/testsuite/
* lib/target-supports.exp (error_h): New check.
(libc_has_complex_functions): Ditto.
(tgmath_h): Ditto.
* gcc.dg/builtins-59.c: Add libc_has_complex_functions check.
* gcc.dg/builtins-61.c: Likewise.
* gcc.dg/builtins-67.c: Disable test for Bionic.
* gcc.dg/strlenopt-14g.c: Likewise.
* gcc.dg/strlenopt-14gf.c: Likewise.
* gcc.dg/c99-tgmath-1.c: Add tgmath_h check.
* gcc.dg/c99-tgmath-2.c: Likewise.
* gcc.dg/c99-tgmath-3.c: Likewise.
* gcc.dg/c99-tgmath-4.c: Likewise.
* gcc.dg/dfp/convert-dfp-round-thread.c: Add error_h check.

From-SVN: r217467

10 years agomatch.pd: Implement conditional expression patterns.
Richard Biener [Thu, 13 Nov 2014 08:53:23 +0000 (08:53 +0000)]
match.pd: Implement conditional expression patterns.

2014-11-13  Richard Biener  <rguenther@suse.de>

* match.pd: Implement conditional expression patterns.
* tree-ssa-forwprop.c (forward_propagate_into_cond): Remove
them here.
(combine_cond_exprs): Remove.
(pass_forwprop::execute): Do not call combine_cond_exprs.
* fold-const.c (fold_ternary_loc): Remove patterns here.
(pedantic_omit_one_operand_loc): Remove.

From-SVN: r217465

10 years agore PR tree-optimization/61559 (FAIL: gcc.dg/builtin-bswap-8.c on i686 with -mmovbe)
Richard Biener [Thu, 13 Nov 2014 08:45:29 +0000 (08:45 +0000)]
re PR tree-optimization/61559 (FAIL: gcc.dg/builtin-bswap-8.c on i686 with -mmovbe)

2014-12-13  Richard Biener  <rguenther@suse.de>

PR middle-end/61559
* match.pd: Implement bswap patterns for transforms checked by
gcc.dg/builtin-bswap-8.c.

From-SVN: r217464

10 years agodivmodhi.S: Add support for the G10 architecture.
Nick Clifton [Thu, 13 Nov 2014 08:34:41 +0000 (08:34 +0000)]
divmodhi.S: Add support for the G10 architecture.

* config/rl78/divmodhi.S: Add support for the G10 architecture.
Use START_FUNC and END_FUNC macros to enable linker garbage
collection.
* config/rl78/divmodqi.S: Likewise.
* config/rl78/divmodsi.S: Likewise.
* config/rl78/mulsi3.S: Likewise.
* config/rl78/lib2div.c: Remove G10 functions.
* config/rl78/lib2muls.c: Likewise.
* config/rl78/t-rl8 (HOST_LIBGCC2_CFLAGS): Define.
* config/rl78/vregs.h (START_FUNC): New macro.
(END_FUNC): New macro.

From-SVN: r217463

10 years agore PR libstdc++/63775 ([C++11] Regex range with leading dash (-) not working)
Tim Shen [Thu, 13 Nov 2014 07:40:01 +0000 (07:40 +0000)]
re PR libstdc++/63775 ([C++11] Regex range with leading dash (-) not working)

PR libstdc++/63775
* include/bits/regex_compiler.h (_Compiler<>::_M_expression_term,
_BracketMatcher<>::_M_make_range): Throw regex_erorr on invalid range
like [z-a]. Change _M_expression_term interface.
* include/bits/regex_compiler.tcc (
_Compiler<>::_M_insert_bracket_matcher,
_Compiler<>::_M_expression_term): Rewrite bracket expression parsing.
* testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc:
Add testcases and move file out of extended.

From-SVN: r217461

10 years agolra.c (lra): Switch off rematerialization pass.
Vladimir Makarov [Thu, 13 Nov 2014 05:07:52 +0000 (05:07 +0000)]
lra.c (lra): Switch off rematerialization pass.

2014-11-13  Vladimir Makarov  <vmakarov@redhat.com>

* lra.c (lra): Switch off rematerialization pass.

From-SVN: r217459

10 years agocommon.opt (flra-remat): New.
Vladimir Makarov [Thu, 13 Nov 2014 03:02:49 +0000 (03:02 +0000)]
common.opt (flra-remat): New.

2014-11-12  Vladimir Makarov  <vmakarov@redhat.com>

* common.opt (flra-remat): New.
* opts.c (default_options_table): Add entry for flra_remat.
* timevar_def (TV_LRA_REMAT): New.
* doc/invoke.texi (-flra-remat): Add description of the new
option.
* doc/passes.texi (-flra-remat): Remove lra-equivs.c and
lra-saves.c.  Add lra-remat.c.
* Makefile.in (OBJS): Add lra-remat.o.
* lra-remat.c: New file.
* lra.c: Add info about the rematerialization pass in the top
comment.
(collect_non_operand_hard_regs, add_regs_to_insn_regno_info):
Process unallocatable regs too.
(lra_constraint_new_insn_uid_start): Remove.
(lra): Add code for calling rematerialization sub-pass.
* lra-int.h (lra_constraint_new_insn_uid_start): Remove.
(lra_constrain_insn, lra_remat): New prototypes.
(lra_eliminate_regs_1): Add parameter.
* lra-lives.c (make_hard_regno_born, make_hard_regno_dead):
Process unallocatable hard regs too.
(process_bb_lives): Ditto.
* lra-spills.c (remove_pseudos): Add argument to
lra_eliminate_regs_1 call.
* lra-eliminations.c (lra_eliminate_regs_1): Add parameter.  Use it
for sp offset calculation.
(lra_eliminate_regs): Add argument for lra_eliminate_regs_1 call.
(eliminate_regs_in_insn): Add parameter.  Use it for sp offset
calculation.
(process_insn_for_elimination): Add argument for
eliminate_regs_in_insn call.
* lra-constraints.c (get_equiv_with_elimination):  Add argument
for lra_eliminate_regs_1 call.
(process_addr_reg): Add parameter.  Use it.
(process_address_1): Ditto.  Add argument for process_addr_reg
call.
(process_address): Ditto.
(curr_insn_transform): Add parameter.  Use it.  Add argument for
process_address calls.
(lra_constrain_insn): New function.
(lra_constraints): Add argument for curr_insn_transform call.

From-SVN: r217458

10 years agoopts-global.c (postpone_unknown_option_warning): Fix spelling.
Manuel López-Ibáñez [Thu, 13 Nov 2014 01:08:06 +0000 (01:08 +0000)]
opts-global.c (postpone_unknown_option_warning): Fix spelling.

2014-11-13  Manuel López-Ibáñez  <manu@gcc.gnu.org>

* opts-global.c (postpone_unknown_option_warning): Fix spelling.
(print_ignored_options): Fix quoting.
* opts.c (common_handle_option): Likewise.
(set_debug_level): Likewise.
* toplev.c (process_options): Likewise.

From-SVN: r217457

10 years agoDaily bump.
GCC Administrator [Thu, 13 Nov 2014 00:16:35 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r217456

10 years agocompiler: Do not count package uses from ambiguous lookups.
Ian Lance Taylor [Thu, 13 Nov 2014 00:10:37 +0000 (00:10 +0000)]
compiler: Do not count package uses from ambiguous lookups.

When using dot imports, it is possible to
have an imported symbol name that matches
the name of a struct field in a composite
literal.  Do not consider the imported
package to be used in this situation.
Fixes issue 6427.

From-SVN: r217453

10 years agostd::shared_ptr atomic operations
Jonathan Wakely [Wed, 12 Nov 2014 23:55:11 +0000 (23:55 +0000)]
std::shared_ptr atomic operations

PR libstdc++/57250
* config/abi/pre/gnu.ver: Export new symbols.
* include/Makefile.am: Add new header.
* include/Makefile.in: Regenerate.
* include/bits/shared_ptr_atomic.h: Define atomic access functions.
* include/std/memory: Include new header.
* src/c++11/shared_ptr.cc (_Sp_locker): Define and use mutex pool.
* testsuite/20_util/shared_ptr/atomic/1.cc: New.
* testsuite/20_util/shared_ptr/atomic/2.cc: New.
* testsuite/20_util/shared_ptr/atomic/3.cc: New.

From-SVN: r217452

10 years agore PR ipa/63838 (ipa-pure-const miscomputes can_throw)
Jakub Jelinek [Wed, 12 Nov 2014 23:09:15 +0000 (00:09 +0100)]
re PR ipa/63838 (ipa-pure-const miscomputes can_throw)

PR ipa/63838
* ipa-pure-const.c (propagate_nothrow): Walk w->indirect_calls
chain instead of node->indirect_calls.  Put !can_throw into
conditions of all the loops.

* g++.dg/ipa/pr63838.C: New test.

From-SVN: r217449

10 years agoUse gen_rtx_REG to set pic_offset_table_rtx
H.J. Lu [Wed, 12 Nov 2014 21:50:20 +0000 (21:50 +0000)]
Use gen_rtx_REG to set pic_offset_table_rtx

* config/i386/i386.c (x86_output_mi_thunk): Use gen_rtx_REG to
set pic_offset_table_rtx.

From-SVN: r217448

10 years agoImplement MIPS o32 FPXX, FP64, FP64A ABI extensions.
Matthew Fortune [Wed, 12 Nov 2014 21:39:46 +0000 (21:39 +0000)]
Implement MIPS o32 FPXX, FP64, FP64A ABI extensions.

2014-11-12  Matthew Fortune  <matthew.fortune@imgtec.com>

gcc/
* common/config/mips/mips-common.c (mips_handle_option): Ensure
that -mfp32, -mfp64 disable -mfpxx and -mfpxx disables -mfp64.
* config.gcc (--with-fp-32): New option.
(--with-odd-spreg-32): Likewise.
* config.in (HAVE_AS_DOT_MODULE): New config define.
* config/mips/mips-protos.h
(mips_secondary_memory_needed): New prototype.
(mips_hard_regno_caller_save_mode): Likewise.
* config/mips/mips.c (mips_get_reg_raw_mode): New static prototype.
(mips_get_arg_info): Assert that V2SFmode is only handled specially
with TARGET_PAIRED_SINGLE_FLOAT.
(mips_return_mode_in_fpr_p): Likewise.
(mips16_call_stub_mode_suffix): Likewise.
(mips_get_reg_raw_mode): New static function.
(mips_return_fpr_pair): O32 return values span two registers.
(mips16_build_call_stub): Likewise.
(mips_function_value_regno_p): Support both FP return registers.
(mips_output_64bit_xfer): Use mthc1 whenever TARGET_HAS_MXHC1.  Add
specific cases for TARGET_FPXX to move via memory.
(mips_dwarf_register_span): For TARGET_FPXX pretend that modes larger
than UNITS_PER_FPREG 'span' one register.
(mips_dwarf_frame_reg_mode): New static function.
(mips_file_start): Switch to using .module instead of .gnu_attribute.
No longer support FP ABI 4 (-mips32r2 -mfp64), replace with FP ABI 6.
Add FP ABI 5 (-mfpxx) and FP ABI 7 (-mfp64 -mno-odd-spreg).
(mips_save_reg, mips_restore_reg): Always represent DFmode frame
slots with two CFI directives even for O32 FP64.
(mips_for_each_saved_gpr_and_fpr): Account for fixed_regs when
saving/restoring callee-saved registers.
(mips_hard_regno_mode_ok_p): Implement O32 FP64A extension.
(mips_secondary_memory_needed): New function.
(mips_option_override): ABI check for TARGET_FLOATXX.  Disable
odd-numbered single-precision registers when using TARGET_FLOATXX.
Implement -modd-spreg and defaults.
(mips_conditional_register_usage): Redefine O32 FP64 to match O32 FP32
callee-saved behaviour.
(mips_hard_regno_caller_save_mode): Implement.
(TARGET_GET_RAW_RESULT_MODE): Define target hook.
(TARGET_GET_RAW_ARG_MODE): Define target hook.
(TARGET_DWARF_FRAME_REG_MODE): Define target hook.
* config/mips/mips.h (TARGET_FLOAT32): New macro.
(TARGET_O32_FP64A_ABI): Likewise.
(TARGET_CPU_CPP_BUILTINS): TARGET_FPXX is __mips_fpr==0. Add
_MIPS_SPFPSET builtin define.
(MIPS_FPXX_OPTION_SPEC): New macro.
(OPTION_DEFAULT_SPECS): Pass through --with-fp-32=* to -mfp and
--with-odd-spreg-32=* to -m[no-]odd-spreg.
(ISA_HAS_ODD_SPREG): New macro.
(ISA_HAS_MXHC1): True for anything other than -mfp32.
(ASM_SPEC): Pass through mfpxx, mfp64, -mno-odd-spreg and -modd-spreg.
(MIN_FPRS_PER_FMT): Redefine in terms of TARGET_ODD_SPREG.
(HARD_REGNO_CALLER_SAVE_MODE): Define.  Implement O32 FPXX extension
(HARD_REGNO_CALL_PART_CLOBBERED): Likewise.
(SECONDARY_MEMORY_NEEDED): Likewise.
(FUNCTION_ARG_REGNO_P): Update for O32 FPXX and FP64 extensions.
* config/mips/mips.md (define_attr enabled): Implement O32 FPXX and
FP64A ABI extensions.
(move_doubleword_fpr<mode>): Use ISA_HAS_MXHC1 instead of
TARGET_FLOAT64.
* config/mips/mips.opt (mfpxx): New target option.
(modd-spreg): Likewise.
* config/mips/mti-elf.h (DRIVER_SELF_SPECS): Infer FP ABI from arch.
* config/mips/mti-linux.h (DRIVER_SELF_SPECS): Likewise and remove
fp64 sysroot.
* config/mips/t-mti-elf: Remove fp64 multilib.
* config/mips/t-mti-linux: Likewise.
* configure.ac: Detect .module support.
* configure: Regenerate.
* doc/invoke.texi: Document -mfpxx, -modd-spreg, -mno-odd-spreg option.
* doc/install.texi (--with-fp-32, --with-odd-spreg-32): Document new
options.

gcc/testsuite/
* gcc.target/mips/args-1.c: Handle __mips_fpr == 0.
* gcc.target/mips/call-clobbered-1.c: New.
* gcc.target/mips/call-clobbered-2.c: New.
* gcc.target/mips/call-clobbered-3.c: New.
* gcc.target/mips/call-clobbered-4.c: New.
* gcc.target/mips/call-clobbered-5.c: New.
* gcc.target/mips/call-saved-4.c: New.
* gcc.target/mips/call-saved-5.c: New.
* gcc.target/mips/call-saved-6.c: New.
* gcc.target/mips/mips.exp: Support -mfpxx, -ffixed-f*,
and -m[no-]odd-spreg.  Use _MIPS_SPFPSET to determine default
odd-spreg option.  Account for -modd-spreg in minimum arch code.
* gcc.target/mips/movdf-1.c: New.
* gcc.target/mips/movdf-2.c: New.
* gcc.target/mips/movdf-3.c: New.
* gcc.target/mips/oddspreg-1.c: New.
* gcc.target/mips/oddspreg-2.c: New.
* gcc.target/mips/oddspreg-3.c: New.
* gcc.target/mips/oddspreg-4.c: New.
* gcc.target/mips/oddspreg-5.c: New.
* gcc.target/mips/oddspreg-6.c: New.

libgcc/
* config/mips/mips16.S: Set .module when supported.  Update O32
FP64 calling convention and use for FPXX when possible.  Add FPXX
calling convention fallback case.

From-SVN: r217446

10 years agoInitialize PIC register for large PIC model C++ thunk
H.J. Lu [Wed, 12 Nov 2014 21:16:14 +0000 (21:16 +0000)]
Initialize PIC register for large PIC model C++ thunk

gcc/

PR target/63815
* config/i386/i386.c (ix86_init_large_pic_reg): New.  Extracted
from ...
(ix86_init_pic_reg): Here.  Use ix86_init_large_pic_reg.
(x86_output_mi_thunk): Set PIC register to %r11.  Call
ix86_init_large_pic_reg to initialize PIC register.

gcc/testsuite/

PR target/63815
* g++.dg/other/pr63815.C: New test.

From-SVN: r217445

10 years agoDR 1510 PR c++/60420
Paolo Carlini [Wed, 12 Nov 2014 20:43:09 +0000 (20:43 +0000)]
DR 1510 PR c++/60420

/cp
2014-11-12  Paolo Carlini  <paolo.carlini@oracle.com>

DR 1510
PR c++/60420
* cp-tree.h (struct cp_decl_specifier_seq): Add decltype_p bool field.
* decl.c (grokdeclarator): Use it.
* parser.c (cp_parser_simple_type_specifier): Likewise.
* pt.c (tsubst, case DECLTYPE_TYPE): Use tf_ignore_bad_quals.

/testsuite
2014-11-12  Paolo Carlini  <paolo.carlini@oracle.com>

DR 1510
PR c++/60420
* g++.dg/cpp0x/decltype61.C: New.

From-SVN: r217444

10 years agosdbout.c (sdbout_symbol): Eliminate register only if decl isn't a global variable.
Kai Tietz [Wed, 12 Nov 2014 20:04:50 +0000 (21:04 +0100)]
sdbout.c (sdbout_symbol): Eliminate register only if decl isn't a global variable.

2014-11-12  Kai Tietz  <ktietz@redhat.com>

        * sdbout.c (sdbout_symbol): Eliminate register only
        if decl isn't a global variable.

From-SVN: r217443

10 years agoImplement resolutions of LWG 2399, 2400 and 2401.
Jonathan Wakely [Wed, 12 Nov 2014 19:41:36 +0000 (19:41 +0000)]
Implement resolutions of LWG 2399, 2400 and 2401.

* include/bits/shared_ptr.h (shared_ptr, weak_ptr): Define
_Convertible alias template to simplify constraints.
(shared_ptr(unique_ptr<TD>&&)): Constrain (LWG 2399).
* include/bits/shared_ptr_base.h: Likewise.
(_Sp_counted_deleter::_M_get_deleter()): Use addressof (LWG 2400).
* include/std/functional (function::operator=(nullptr_t)): Add
noexcept (LWG 2401).
* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust dg-error.
* testsuite/20_util/shared_ptr/cons/void_neg.cc: Adjust dg-error.

From-SVN: r217442

10 years agoAdd a testcase for PR tree-optimization/63835
H.J. Lu [Wed, 12 Nov 2014 18:56:50 +0000 (18:56 +0000)]
Add a testcase for PR tree-optimization/63835

PR tree-optimization/63835
* gcc.dg/pr63835.c: New test.

From-SVN: r217441

10 years agoAdd bounds checking to vqdm*_lane intrinsics via a qualifier that also flips endianness
Alan Lawrence [Wed, 12 Nov 2014 18:51:53 +0000 (18:51 +0000)]
Add bounds checking to vqdm*_lane intrinsics via a qualifier that also flips endianness

gcc/:

* config/aarch64/aarch64.c (aarch64_simd_lane_bounds): Display indices.

* config/aarch64/aarch64-builtins.c (enum aarch64_type_qualifiers): Add
qualifier_lane_index.
(aarch64_types_ternop_lane_qualifiers, TYPES_TERNOP_LANE): Rename to...
(aarch64_types_quadop_lane_qualifiers, TYPES_QUADOP_LANE): ...these.
(aarch64_types_ternop_lane_qualifiers, TYPES_TERNOP_LANE): New.

(aarch64_types_getlane_qualifiers): Rename to...
(aarch64_types_binop_imm_qualifiers): ...this.
(TYPES_SHIFTIMM): Follow renaming.
(TYPES_GETLANE): Rename to...
(TYPE_GETREG): ...this.

(aarch64_types_setlane_qualifiers): Rename to...
(aarch64_type_ternop_imm_qualifiers): ...this.
(TYPES_SHIFTINSERT, TYPES_SHIFTACC): Follow renaming.
(TYPES_SETLANE): Follow renaming above, and rename self to...
(TYPE_SETREG): ...this.

(enum builtin_simd_arg): Add SIMD_ARG_LANE_INDEX.
(aarch64_simd_expand_args): Add range check and endianness-flip.

(aarch64_simd_expand_builtin): Add mapping for qualifier_lane_index.

* config/aarch64/aarch64-simd.md
(aarch64_sq<r>dmulh_lane<mode>_internal *2): Rename to...
(aarch64_sq<r>dmulh_lane<mode>): ...this, and remove lane bounds check.
(aarch64_sqdmulh_lane<mode> *2, aarch64_sqrdmulh_lane<mode> *2): Delete.

(aarch64_sq<r>dmulh_laneq<mode>_internal): Rename to...
(aarch64_sq<r>dmulh_lane<mode>): ...this.

(aarch64_sqdml<SBINQOPS:as>l_lane<mode>_internal *2): Rename to...
(aarch64_sqdml<SBINQOPS:as>l_lane<mode>): ...this.

(aarch64_sqdml<SBINQOPS:as>l_laneq<mode>_internal *2): Rename to...
(aarch64_sqdml<SBINQOPS:as>l_laneq<mode>): ...this.

(aarch64_sqdmull_lane<mode>_internal *2): Rename to...
(aarch64_sqdmull_lane<mode>): ...this.

(aarch64_sqdmull_laneq<mode>_internal *2): Rename to...
(aarch64_sqdmull_laneq<mode>): ...this.

(aarch64_sqdmulh_laneq<mode>, aarch64_sqrdmulh_laneq<mode>,
(aarch64_sqdmlal_lane<mode>, aarch64_sqdmlal_laneq<mode>,
aarch64_sqdmlsl_lane<mode>, aarch64_sqdmlsl_laneq<mode>,
aarch64_sqdmull_lane<mode>, aarch64_sqdmull_laneq<mode>): Delete.

(aarch64_sqdmlal2_lane<mode>, aarch64_sqdmlal2_laneq<mode>,
aarch64_sqdmlsl2_lane<mode>, aarch64_sqdmlsl2_laneq<mode>,
aarch64_sqdmull2_lane<mode>, aarch64_sqdmull2_laneq<mode>): Remove
bounds check and lane flip.

* config/aarch64/aarch64-simd-builtins.def (be_checked_get_lane,
get_dregoi, get_dregci, getdregxi, get_qregoi,get_qregci, get_qregxi,
set_qregoi, set_qregci, set_qregxi): Change qualifiers to GETREG.

(sqdmlal_lane, sqdmlsl_lane, sqdmlal_laneq, sqdmlsl_laneq,
sqdmlal2_lane, sqdmlsl2_lane, sqdmlal2_laneq, sqdmlsl2_laneq): Follow
renaming of TERNOP_LANE to QUADOP_LANE.

(sqdmull_lane, sqdmull_laneq, sqdmull2_lane, sqdmull2_laneq,
sqdmulh_lane, sqdmulh_laneq, sqrdmulh_lane, sqrdmulh_laneq): Set
qualifiers to TERNOP_LANE.

gcc/testsuite/:

         * gcc.target/aarch64/simd/vqdmlal_high_lane_s16_indices_1.c: New test.
         * gcc.target/aarch64/simd/vqdmlal_high_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlal_high_laneq_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlal_high_laneq_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlal_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlal_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlal_laneq_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlal_laneq_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlalh_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlals_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlsl_high_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlsl_high_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlsl_high_laneq_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlsl_high_laneq_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlsl_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlsl_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlsl_laneq_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlsl_laneq_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlslh_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlsls_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmulh_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmulh_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmulh_laneq_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmulh_laneq_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmulhh_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmulhq_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmulhq_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmulhq_laneq_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmulhq_laneq_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmulhs_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmull_high_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmull_high_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmull_high_laneq_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmull_high_laneq_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmull_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmull_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmull_laneq_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmull_laneq_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmullh_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmulls_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqrdmulh_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqrdmulh_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqrdmulh_laneq_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqrdmulh_laneq_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqrdmulhh_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqrdmulhq_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqrdmulhq_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqrdmulhq_laneq_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqrdmulhq_laneq_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqrdmulhs_lane_s32_indices_1.c: Likewise.

From-SVN: r217440

10 years agoFix ChangeLog of previous commit, r217438:
Tobias Burnus [Wed, 12 Nov 2014 18:45:17 +0000 (19:45 +0100)]
Fix ChangeLog of previous commit, r217438:

        * Makefile.def: Make all-gcc depend on all-isl.

From-SVN: r217439

10 years agoMakefile.def: Remove CLooG.
Tobias Burnus [Wed, 12 Nov 2014 18:42:03 +0000 (19:42 +0100)]
Makefile.def: Remove CLooG.

2014-11-11  Tobias Burnus  <burnus@net-b.de>

        * Makefile.def: Remove CLooG.
        * Makefile.in: Regenerate.

From-SVN: r217438

10 years ago387-1.c (dg-skip-if): Use *-*-* target selector.
Uros Bizjak [Wed, 12 Nov 2014 18:32:57 +0000 (19:32 +0100)]
387-1.c (dg-skip-if): Use *-*-* target selector.

* gcc.target/i386/387-1.c (dg-skip-if): Use *-*-* target selector.
* gcc.target/i386/387-2.c (dg-skip-if): Ditto.
* gcc.target/i386/387-5.c (dg-skip-if): Ditto.
* gcc.target/i386/387-6.c (dg-skip-if): Ditto.
* gcc.target/i386/cmov7.c (dg-skip-if): Ditto.
* gcc.target/i386/funcspec-2.c (dg-skip-if): Ditto.
* gcc.target/i386/funcspec-3.c (dg-skip-if): Ditto.
* gcc.target/i386/funcspec-8.c (dg-skip-if): Ditto.
* gcc.target/i386/funcspec-9.c (dg-skip-if): Ditto.
* gcc.target/i386/gcc-have-sync-compare-and-swap-1.c (dg-skip-if):
Ditto.
* gcc.target/i386/gcc-have-sync-compare-and-swap-2.c (dg-skip-if):
Ditto.
* gcc.target/i386/isa-1.c (dg-skip-if): Ditto.
* gcc.target/i386/isa-6.c (dg-skip-if): Ditto.
* gcc.target/i386/isa-9.c (dg-skip-if): Ditto.
* gcc.target/i386/lea.c (dg-skip-if): Ditto.
* gcc.target/i386/memcpy-strategy-1.c (dg-skip-if): Ditto.
* gcc.target/i386/memcpy-strategy-2.c (dg-skip-if): Ditto.
* gcc.target/i386/memcpy-vector_loop-1.c (dg-skip-if): Ditto.
* gcc.target/i386/memcpy-vector_loop-2.c (dg-skip-if): Ditto.
* gcc.target/i386/memset-vector_loop-1.c (dg-skip-if): Ditto.
* gcc.target/i386/memset-vector_loop-2.c (dg-skip-if): Ditto.
* gcc.target/i386/pad-10.c (dg-skip-if): Ditto.
* gcc.target/i386/pad-2.c (dg-skip-if): Ditto.
* gcc.target/i386/pad-3.c (dg-skip-if): Ditto.
* gcc.target/i386/pad-4.c (dg-skip-if): Ditto.
* gcc.target/i386/pad-5a.c (dg-skip-if): Ditto.
* gcc.target/i386/pad-5b.c (dg-skip-if): Ditto.
* gcc.target/i386/pad-6a.c (dg-skip-if): Ditto.
* gcc.target/i386/pad-6b.c (dg-skip-if): Ditto.
* gcc.target/i386/pad-7.c (dg-skip-if): Ditto.
* gcc.target/i386/pad-8.c (dg-skip-if): Ditto.
* gcc.target/i386/pad-9.c (dg-skip-if): Ditto.
* gcc.target/i386/pentium4-not-mull.c (dg-skip-if): Ditto.
* gcc.target/i386/pr42589.c (dg-skip-if): Ditto.
* gcc.target/i386/sse-19.c (dg-skip-if): Ditto.
* gcc.target/i386/sse2-init-v2di-2.c (dg-skip-if): Ditto.
* gcc.target/i386/ssefn-1.c (dg-skip-if): Ditto.
* gcc.target/i386/ssetype-1.c (dg-skip-if): Ditto.
* gcc.target/i386/ssetype-2.c (dg-skip-if): Ditto.
* gcc.target/i386/ssetype-5.c (dg-skip-if): Ditto.
* gcc.target/i386/vect-double-1.c (dg-skip-if): Ditto.

From-SVN: r217437

10 years agoMakefile.in (CLOOGLIBS, CLOOGINC): Remove.
Tobias Burnus [Wed, 12 Nov 2014 18:28:36 +0000 (19:28 +0100)]
Makefile.in (CLOOGLIBS, CLOOGINC): Remove.

2014-11-12  Tobias Burnus  <burnus@net-b.de>

        * Makefile.in (CLOOGLIBS, CLOOGINC): Remove.
        * configure.ac: Ditto.
        * graphite-interchange.c: Remove HAVE_CLOOG block.
        * config.in: Regenerate.
        * configure: Regenerate.

From-SVN: r217436

10 years agopr45852.c: Simplify target selector.
Uros Bizjak [Wed, 12 Nov 2014 17:45:29 +0000 (18:45 +0100)]
pr45852.c: Simplify target selector.

* gcc.target/i386/pr45852.c: Simplify target selector.
* gcc.target/i386/pr63495.c: Ditto.
* gcc.target/i386/pr39496.c: Ditto.
* gcc.target/i386/pr36613.c: Ditto.

From-SVN: r217432

10 years ago[AArch64] Let LR register alloctable
Jiong Wang [Wed, 12 Nov 2014 17:15:57 +0000 (17:15 +0000)]
[AArch64] Let LR register alloctable

  gcc/
    * config/aarch64/aarch64.h (CALL_USED_REGISTERS): Mark LR as caller-save.
    (EPILOGUE_USES): Guard the check by epilogue_completed.
    * config/aarch64/aarch64.c (aarch64_layout_frame): Explictly check for LR.
    (aarch64_can_eliminate): Check LR_REGNUM liveness.

  gcc/testsuite/
    * gcc.target/aarch64/lr_free_1.c: New testcase for -fomit-frame-pointer.
    * gcc.target/aarch64/lr_free_2.c: New testcase for leaf
    -fno-omit-frame-pointer.

From-SVN: r217431

10 years agoFix typo in *<arith_shift_insn>_shiftsi
Ramana Radhakrishnan [Wed, 12 Nov 2014 17:07:12 +0000 (17:07 +0000)]
Fix typo in *<arith_shift_insn>_shiftsi

From-SVN: r217430

10 years agoCast strtol return to unsigned long
Kirill Yukhin [Wed, 12 Nov 2014 16:24:30 +0000 (16:24 +0000)]
Cast strtol return to unsigned long

* testsuite/test-strtol.c (run_tests): Cast strtol return to
unsigned long.

From-SVN: r217429