aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2015-12-03[RTL-ifcvt] PR rtl-optimization/68624: Clean up logic that checks for ↵Kyrylo Tkachov4-19/+61
clobbering conflicts across basic blocks PR rtl-optimization/68624 * ifcvt.c (noce_try_cmove_arith): Check clobbers of temp regs in both blocks if they exist and simplify the logic choosing the order to emit them in. * gcc.c-torture/execute/pr68624.c: New test. From-SVN: r231226
2015-12-03re PR tree-optimization/66051 (can't vectorize reductions inside an SLP group)Richard Biener4-64/+46
2015-12-03 Richard Biener <rguenther@suse.de> PR tree-optimization/66051 * tree-vect-slp.c (vect_build_slp_tree_1): Remove restriction on load group size. Do not pass in vectorization_factor. (vect_transform_slp_perm_load): Do not require any permute support. (vect_build_slp_tree): Do not pass in vectorization factor. (vect_analyze_slp_instance): Do not compute vectorization factor estimate. Use vector size instead of vectorization factor estimate to split store groups for BB vectorization. * gcc.dg/vect/slp-42.c: New testcase. From-SVN: r231225
2015-12-03cfgexpand.c (expand_gimple_stmt_1): Return statement with DECL as return ↵Ilya Enkovich2-3/+11
value is allowed to have NULL bounds. gcc/ * cfgexpand.c (expand_gimple_stmt_1): Return statement with DECL as return value is allowed to have NULL bounds. From-SVN: r231224
2015-12-03Guard isl_ast_op_zdiv_r usage with HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCSTom de Vries2-0/+10
2015-12-03 Tom de Vries <tom@codesourcery.com> * graphite-isl-ast-to-gimple.c (binary_op_to_tree) (gcc_expression_from_isl_expr_op): Guard isl_ast_op_zdiv_r usage with HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS. From-SVN: r231223
2015-12-03Added missing ChangeLogs. Fix scan pattern for ↵Kirill Yukhin3-1/+15
gcc.target/i386/avx512vl-vextracti32x4-1.c. From-SVN: r231222
2015-12-03re PR tree-optimization/67800 (Missed vectorization opportunity on x86 ↵Richard Biener4-0/+67
(DOT_PROD_EXPR in non-reduction)) 2015-12-03 Richard Biener <rguenther@suse.de> PR tree-optimization/67800 PR tree-optimization/68333 * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Restore restriction to reduction contexts but allow SLP reductions as well. (vect_recog_sad_pattern): Likewise. (vect_recog_widen_sum_pattern): Likewise. * gcc.target/i386/vect-pr67800.c: New testcase. From-SVN: r231221
2015-12-03re PR tree-optimization/68639 (ICE: Floating point exception)Richard Biener4-0/+46
2015-12-03 Richard Biener <rguenther@suse.de> PR tree-optimization/68639 * tree-vect-data-refs.c (dr_group_sort_cmp): Split groups belonging to different loops. (vect_analyze_data_ref_accesses): Likewise. * gfortran.fortran-torture/compile/pr68639.f90: New testcase. From-SVN: r231220
2015-12-03ipa-pure-const.c (ignore_edge_for_pure_const): New function.Jan Hubicka2-11/+28
* ipa-pure-const.c (ignore_edge_for_pure_const): New function. (propagate_pure_const): Use it; fix comments and optimize loops. From-SVN: r231219
2015-12-03ipa-pure-const.c (ignore_edge): Rename to ...Jan Hubicka2-22/+43
* ipa-pure-const.c (ignore_edge): Rename to ... (ignore_edge_for_nothrow) ... this one; also ignore eges to interposable functions or ones that can not throw. (propagate_nothrow): Fix handling of availability. From-SVN: r231218
2015-12-03re PR c++/68184 (Exception from a virtual function does not get caught)Jan Hubicka4-0/+42
PR ipa/68184 * g++.dg/torture/pr68184.C: New testcase. * cgraphunit.c (cgraph_node::analyze): Set can_throw_external. From-SVN: r231217
2015-12-03Daily bump.GCC Administrator1-1/+1
From-SVN: r231216
2015-12-03re PR preprocessor/57580 (Repeated _Pragma message directives in macro ↵Jakub Jelinek5-14/+90
causes problems) PR preprocessor/57580 * c-ppoutput.c (print): Change printed field to bool. Move src_file last for smaller padding. (init_pp_output): Set print.printed to false instead of 0. (scan_translation_unit): Fix up formatting. Set print.printed to true after printing something other than newline. (scan_translation_unit_trad): Set print.printed to true instead of 1. (maybe_print_line_1): Set print.printed to false instead of 0. (print_line_1): Likewise. (do_line_change): Set print.printed to true instead of 1. (cb_define, dump_queued_macros, cb_include, cb_def_pragma, dump_macro): Set print.printed to false after printing newline. * c-c++-common/cpp/pr57580.c: New test. * c-c++-common/gomp/pr57580.c: New test. From-SVN: r231213
2015-12-02handle missing isl_ast_exprAditya Kumar4-0/+85
From ISL's documentation, isl_ast_op_zdiv_r is equal to zero iff the remainder on integer division is zero. Code generate a modulo operation for that. * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Handle isl_ast_op_zdiv_r. (gcc_expression_from_isl_expr_op): Same. * gcc.dg/graphite/id-28.c: New. Co-Authored-By: Sebastian Pop <s.pop@samsung.com> From-SVN: r231212
2015-12-02do not insert code outside the generated regionAditya Kumar4-0/+144
on the testcase we used to generate code in the function entry bb_0, and that choked the cfg verifier. * graphite-isl-ast-to-gimple.c (copy_bb_and_scalar_dependences): Check that insertion point is still in the region. * gfortran.dg/graphite/id-26.f03: New. Co-Authored-By: Sebastian Pop <s.pop@samsung.com> From-SVN: r231211
2015-12-02Allow running the testsuite in C++1z mode.Jason Merrill5-5/+40
gcc/cp/ * Make-lang.in (check-c++1z, check-c++-all): New. gcc/testsuite/ * lib/g++.exp: Handle --stds= option. * lib/g++-dg.exp (g++-dg-runtest): Use it. From-SVN: r231209
2015-12-02check.c (gfc_check_event_query): New function.Tobias Burnus31-41/+1264
2015-12-02 Tobias Burnus <burnus@net-b.de> Alessandro Fanfarillo <fanfarillo.gcc@gmail.com> * check.c (gfc_check_event_query): New function. * dump-parse-tree.c (show_code_node): Handle EXEC_EVENT_POST, EXEC_EVENT_WAIT. * expr.c (gfc_check_vardef_context): New check for event variables definition. * gfortran.h (gfc_statement): Add ST_EVENT_POST, ST_EVENT_WAIT. (gfc_isym_id): GFC_ISYM_EVENT_QUERY. (struct symbol_attribute): New field. (gfc_exec_op): Add EXEC_EVENT_POST and EXEC_EVENT_WAIT. * gfortran.texi: Document about new events functions and minor changes. * interface.c (compare_parameter): New check. (gfc_procedure_use): New check for explicit procedure interface. (add_subroutines): Add event_query. * intrinsic.h (gfc_check_event_query,gfc_resolve_event_query): New prototypes. * iresolve.c (gfc_resolve_event_query): New function. * iso-fortran-env.def (event_type): New type. * match.c (event_statement,gfc_match_event_post,gfc_match_event_wait): New functions. (gfc_match_name): New event post and event wait. * match.h (gfc_match_event_post,gfc_match_event_wait): New prototypes. * module.c (ab_attribute): Add AB_EVENT_COMP. (attr_bits): Likewise. (mio_symbol_attribute): Handle event_comp attribute. * parse.c (decode_statement): Add ST_EVENT_POST, ST_EVENT_WAIT. (next_statement): Add ST_EVENT_POST, ST_EVENT_WAIT. (gfc_ascii_statement): Add ST_EVENT_POST, ST_EVENT_WAIT. (parse_derived): Check for event_type components. * resolve.c (resolve_allocate_expr): Check for event variable def. (resolve_lock_unlock): Renamed to resolve_lock_unlock_event. It includes logic for locks and events. (gfc_resolve_code): Call it. (gfc_resolve_symbol): New check for event variable to be a corray. * st.c (gfc_free_statement): Handle new EXEC_EVENT_POST and EXEC_EVENT_WAIT. * trans-decl.c (gfor_fndecl_caf_event_post,gfor_fndecl_caf_event_wait, gfor_fndecl_caf_event_query): New global variables. (generate_coarray_sym_init): Checking for event_type. (gfc_conv_procedure_call): Check for C bind attribute. * trans-intrinsic.c (conv_intrinsic_event_query): New function. (conv_intrinsic_move_alloc): Call it. * trans-stmt.c (gfc_trans_lock_unlock): Passing address of actual argument. (gfc_trans_sync): Likewise. (gfc_trans_event_post_wait): New function. * trans-stmt.h (gfc_trans_event_post_wait): New prototype. * trans-types.c (gfc_get_derived_type): Integer_kind as event_type. * trans.c (gfc_allocate_using_lib): New argument and logic for events. (gfc_allocate_allocatable): Passing new argument. (trans_code): Handle EXEC_EVENT_POST, EXEC_EVENT_WAIT. * trans.h (gfc_coarray_type): New elements. (gfor_fndecl_caf_event_post,gfor_fndecl_caf_event_wait, gfor_fndecl_caf_event_query): Declare them. 2015-12-02 Tobias Burnus <burnus@net-b.de> Alessandro Fanfarillo <fanfarillo.gcc@gmail.com> * gfortran.dg/coarray/event_1.f90: New. * gfortran.dg/coarray/event_2.f90: New. Co-Authored-By: Alessandro Fanfarillo <fanfarillo.gcc@gmail.com> From-SVN: r231208
2015-12-02fix PR68550: do not handle ISL loop peeled statementsAditya Kumar5-0/+91
In case ISL did some loop peeling, like this: S_8(0); for (int c1 = 1; c1 <= 5; c1 += 1) { S_8(c1); } S_8(6); we should not copy loop-phi nodes in S_8(0) or in S_8(6). PR tree-optimization/68550 * graphite-isl-ast-to-gimple.c (copy_loop_phi_nodes): Add dump. (copy_bb_and_scalar_dependences): Do not code generate loop peeled statements. * gfortran.dg/graphite/pr68550-1.f90: New. * gfortran.dg/graphite/pr68550-2.f90: New. Co-Authored-By: Sebastian Pop <s.pop@samsung.com> From-SVN: r231206
2015-12-02re PR c/68513 (ICE in gimplify_expr, at gimplify.c:8832, c_maybe_const_expr ↵Marek Polacek2-0/+130
in IL) PR c/68513 * gcc.dg/pr68513.c: New test. From-SVN: r231205
2015-12-02re PR fortran/63861 (OpenACC coarray ICE (also with OpenMP?))Cesar Philippidis9-10/+128
gcc/fortran/ PR fortran/63861 * openmp.c (gfc_match_omp_clauses): Allow subarrays for acc reductions. (resolve_omp_clauses): Error on any acc reductions on arrays. gcc/testsuite/ * gfortran.dg/goacc/array-reduction.f90: New test. * gfortran.dg/goacc/assumed.f95: Update expected diagnostics. * gfortran.dg/goacc/coarray.f95: Likewise. * gfortran.dg/goacc/coarray_2.f90: Likewise. * gfortran.dg/goacc/reduction-2.f95: Likewise. * gfortran.dg/goacc/reduction.f95: Likewise. From-SVN: r231204
2015-12-02Fix c++/67337 (segfault in mangle.c)Markus Trippelsdorf3-1/+31
PR c++/67337 * mangle.c (write_template_prefix): Guard against context==NULL. From-SVN: r231203
2015-12-02configure.ac: Check assembler support for R_PPC64_ENTRY relocation.Ulrich Weigand5-10/+140
* configure.ac: Check assembler support for R_PPC64_ENTRY relocation. * configure: Regenerate. * config.in: Regenerate. * config/rs6000/rs6000.c (rs6000_global_entry_point_needed_p): New function. (rs6000_output_function_prologue): Use it instead of checking cfun->machine->r2_setup_needed. Use internal labels instead of GNU as local label extension. Handle ELFv2 large code model. (rs6000_output_mi_thunk): Do not set cfun->machine->r2_setup_needed. (rs6000_elf_declare_function_name): Handle ELFv2 large code model. From-SVN: r231202
2015-12-02re PR target/68647 (__builtin_popcountll doesn't generate popcnt ↵Jakub Jelinek4-1/+104
instructions when targeting -mpopcnt on x86_32) PR target/68647 * optabs.c (expand_doubleword_popcount, expand_doubleword_parity): New functions. (expand_unop): Use them. * gcc.target/i386/pr68647.c: New test. From-SVN: r231201
2015-12-02re PR c++/68653 (ICE: in nonnull_arg_p, at tree.c:13853)Marek Polacek4-1/+32
PR c++/68653 * tree.c (nonnull_arg_p): Allow OFFSET_TYPE. * g++.dg/warn/nonnull3.C: New test. From-SVN: r231200
2015-12-02re PR go/66147 (go fails to cross build)Ian Lance Taylor6-3/+17
./: PR go/66147 * Makefile.tpl (HOST_EXPORTS): Add XGCC_FLAGS_FOR_TARGET. * Makefile.in: Regenerate. gotools/: PR go/66147 * Makefile.am (GOCOMPILER): In NATIVE case, add $(XGCC_FLAGS_FOR_TARGET). From-SVN: r231199
2015-12-02Do constant folding in warn_* functions.Jason Merrill5-15/+54
gcc/c-family/ * c-common.c (fold_for_warn): New. (warn_logical_operator, warn_tautological_cmp) (check_function_arguments_recurse, maybe_warn_bool_compare): Use it. gcc/cp/ * call.c (build_new_op_1): Don't fold arguments to warn_logical_operator or maybe_warn_bool_compare. From-SVN: r231198
2015-12-02Introduce cp_fold_rvalue.Jason Merrill2-9/+40
* cp-gimplify.c (cp_fold_maybe_rvalue, cp_fold_rvalue): New. (c_fully_fold): Use cp_fold_rvalue. (cp_fold): Use them for rvalue operands. From-SVN: r231197
2015-12-02Define c_fully_fold separately for C and C++.Jason Merrill9-579/+621
gcc/c-family/ * c-common.c (c_disable_warnings, c_enable_warnings, c_fully_fold) (c_fully_fold_internal, decl_constant_value_for_optimization): Move to c/c-fold.c. * c-common.h: Don't declare decl_constant_value_for_optimization. gcc/c/ * c-fold.c (c_disable_warnings, c_enable_warnings, c_fully_fold) (c_fully_fold_internal, decl_constant_value_for_optimization): Move from c-common.c. * c-tree.h: Declare decl_constant_value_for_optimization. * Make-lang.in (C_AND_OBJC_OBJS): Add c-fold.o. gcc/cp/ * cp-gimplify.c (c_fully_fold): Define. From-SVN: r231196
2015-12-02* cp-gimplify.c (cp_fold): Use fold_build*.Jason Merrill2-9/+13
From-SVN: r231195
2015-12-02Fix TYPE_MAIN_VARIANT construction for arrays of qualified typedefs (PR ↵Joseph Myers9-23/+82
c/68162). PR c/68162 reports a spurious warning about incompatible types involving arrays of const double, constructed in one place using a typedef for const double and in another place literally using const double. The problem is that the array of the typedef was incorrectly constructed without a TYPE_MAIN_VARIANT being an array of unqualified elements as it should be (though it seems some more recent change resulted in this producing incorrect diagnostics, likely the support for C++-style handling of arrays of qualified type). This patch fixes the logic in grokdeclarator to determine first_non_attr_kind, which is used to determine whether it is necessary to use the TYPE_MAIN_VARIANT of the type in the declaration specifiers. However, fixing that logic introduces a failure of gcc.dg/debug/dwarf2/pr47939-4.c, a test introduced along with first_non_attr_kind. Thus, it is necessary to track the original qualified typedef when qualifying an array type, to use it rather than a newly-constructed type, to avoid regressing regarding typedef names in debug info. This is done along lines I suggested in <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47939#c6>: track the original type and the number of levels of array indirection at which it appears, and, in possibly affected cases, pass extra arguments to c_build_qualified_type (with default arguments to avoid needing to pass those extra arguments explicitly everywhere). Given Richard's recent fix to dwarf2out.c, this allows the C bug to be fixed without causing debug information regressions. Bootstrapped with no regressions on x86_64-pc-linux-gnu. gcc/c: PR c/68162 * c-decl.c (grokdeclarator): Set first_non_attr_kind before following link from declarator to next declarator. Track original qualified type and pass it to c_build_qualified_type. * c-typeck.c (c_build_qualified_type): Add arguments orig_qual_type and orig_qual_indirect. gcc/c-family: PR c/68162 * c-common.h (c_build_qualified_type): Add extra default arguments. gcc/cp: PR c/68162 * tree.c (c_build_qualified_type): Add extra arguments. gcc/testsuite: PR c/68162 * gcc.dg/pr68162-1.c: New test. From-SVN: r231194
2015-12-02configure.ac: Move AM_ENABLE_MULTILIB before GCC_LIBSTDCXX_RAW_CXX_FLAGS.Matthias Klose3-55/+63
2015-12-02 Matthias Klose <doko@ubuntu.com> * configure.ac: Move AM_ENABLE_MULTILIB before GCC_LIBSTDCXX_RAW_CXX_FLAGS. * configure: Regenerate. From-SVN: r231193
2015-12-02nvptx.c (enum nvptx_shuffle_kind): New.Nathan Sidwell2-9/+22
* config/nvptx/nvptx.c (enum nvptx_shuffle_kind): New. Absorb SHUFFLE defines. (nvptx_gen_shuffle, nvptx_print_operand, nvptx_expand_shuffle): Adjust. From-SVN: r231192
2015-12-02fix invalid bounds on array refsAditya Kumar5-45/+129
While enabling graphite in -O3 we found a Fortran testcase that fails because the max of the type domain is -1. We used to add that as a constraint to the elements accessed by the array, leading to a unfeasible constraint: 0 <= i <= -1. Having that constraint, drops the data reference as that says that there are no elements accessed in the array. * graphite-dependences.c (scop_get_reads): Add extra dumps. (scop_get_must_writes): Same. (scop_get_may_writes): Same. (compute_deps): Same. * graphite-sese-to-poly.c (bounds_are_valid): New. (pdr_add_data_dimensions): Call bounds_are_valid. * gfortran.dg/graphite/run-id-3.f90: New. Co-Authored-By: Sebastian Pop <s.pop@samsung.com> From-SVN: r231191
2015-12-02rename flag_loop_optimize_isl to flag_loop_nest_optimizeAditya Kumar5-4/+12
* common.opt (flag_loop_optimize_isl): Renamed flag_loop_nest_optimize. * graphite-poly.c (apply_poly_transforms): Same. * graphite.c (gate_graphite_transforms): Same. * toplev.c (process_options): Same. Co-Authored-By: Sebastian Pop <s.pop@samsung.com> From-SVN: r231190
2015-12-02re PR c++/68290 (g++.dg/concepts/auto1.C FAILs)Eric Botcazou3-32/+49
PR c++/68290 * constraint.cc (make_constrained_auto): Move to... * pt.c (make_auto_1): Add set_canonical parameter and set TYPE_CANONICAL on the type only if it is true. (make_decltype_auto): Adjust call to make_auto_1. (make_auto): Likewise. (splice_late_return_type): Likewise. (make_constrained_auto): ...here. Call make_auto_1 instead of make_auto and pass false. Set TYPE_CANONICAL directly. From-SVN: r231189
2015-12-02mips.c (mips_emit_probe_stack_range): Adjust.Eric Botcazou2-16/+15
* config/mips/mips.c (mips_emit_probe_stack_range): Adjust. (mips_output_probe_stack_range): Rotate the loop and simplify. From-SVN: r231188
2015-12-02aarch64.md: New pattern.David Sherwood5-0/+42
2015-12-02 David Sherwood <david.sherwood@arm.com> gcc/ * config/aarch64/aarch64.md: New pattern. * config/aarch64/aarch64-simd.md: Likewise. * config/aarch64/iterators.md: New unspecs, iterators. gcc/testsuite * gcc.target/aarch64/fmaxmin.c: New test. From-SVN: r231187
2015-12-02Track indirect calls for call site information in debug infoPierre-Marie de Rodat3-24/+93
gcc/ChangeLog: * dwarf2out.c (dwar2out_var_location): In addition to notes, process indirect calls whose target is compile-time known. Enhance pattern matching to get the SYMBOL_REF they embed. (gen_subprogram_die): Handle such calls. * final.c (final_scan_insn): For call instructions, invoke the var_location debug hook only after the call has been emitted. From-SVN: r231185
2015-12-02Some OpenACC host_data cleanupThomas Schwinge15-37/+61
gcc/c/ * c-parser.c (c_parser_omp_clause_name) (c_parser_oacc_all_clauses): Alphabetical sorting. gcc/cp/ * parser.c (cp_parser_omp_clause_name) (cp_parser_oacc_all_clauses): Alphabetical sorting. * pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_USE_DEVICE. gcc/testsuite/ * c-c++-common/goacc/host_data-5.c: New file. * c-c++-common/goacc/host_data-6.c: Likewise. * gfortran.dg/goacc/coarray.f95: XFAIL. * gfortran.dg/goacc/coarray_2.f90: Adjust dg-excess-errors directive. * gfortran.dg/goacc/host_data-tree.f95: Remove dg-prune-output directive. libgomp/ * testsuite/libgomp.oacc-c-c++-common/host_data-2.c: Restrict to target openacc_nvidia_accel_selected. * testsuite/libgomp.oacc-c-c++-common/host_data-4.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/host_data-5.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/host_data-3.c: Remove file. * testsuite/libgomp.oacc-c-c++-common/host_data-6.c: Remove file. Co-Authored-By: James Norris <James_Norris@mentor.com> Co-Authored-By: Julian Brown <julian@codesourcery.com> From-SVN: r231184
2015-12-02Fix oacc kernels default mapping for scalarsTom de Vries5-5/+57
2015-12-02 Tom de Vries <tom@codesourcery.com> * gimplify.c (enum gimplify_omp_var_data): Add enum value GOVD_MAP_FORCE. (oacc_default_clause): Fix default for scalars in oacc kernels. (gimplify_adjust_omp_clauses_1): Handle GOVD_MAP_FORCE. * c-c++-common/goacc/kernels-default-2.c: New test. * c-c++-common/goacc/kernels-default.c: New test. From-SVN: r231183
2015-12-02Mark pointers to allocated target vars as restricted, if possibleTom de Vries11-7/+292
2015-12-02 Tom de Vries <tom@codesourcery.com> * omp-low.c (install_var_field, scan_sharing_clauses): Add and handle parameter base_pointers_restrict. (omp_target_base_pointers_restrict_p): New function. (scan_omp_target): Call scan_sharing_clauses with base_pointers_restrict arg. * c-c++-common/goacc/kernels-alias-2.c: New test. * c-c++-common/goacc/kernels-alias-3.c: New test. * c-c++-common/goacc/kernels-alias-4.c: New test. * c-c++-common/goacc/kernels-alias-5.c: New test. * c-c++-common/goacc/kernels-alias-6.c: New test. * c-c++-common/goacc/kernels-alias-7.c: New test. * c-c++-common/goacc/kernels-alias-8.c: New test. * c-c++-common/goacc/kernels-alias.c: New test. From-SVN: r231182
2015-12-02Fix ambiguity with multiple enable_shared_from_this basesJonathan Wakely4-16/+93
PR libstdc++/56383 * testsuite/20_util/enable_shared_from_this/56383.cc: New. * include/bits/shared_ptr_base.h (__enable_shared_from_this): Make friend declaration match previous declaration of __enable_shared_from_this_helper. * include/bits/shared_ptr.h (enable_shared_from_this): Likewise. From-SVN: r231181
2015-12-02nvptx-protos.h (nvptx_output_mov_insn): Declare.Nathan Sidwell5-235/+135
* config/nvptx/nvptx-protos.h (nvptx_output_mov_insn): Declare. (nvptx_underlying_object_mode): Delete. * config/nvptx/nvptx.c (nvptx_underlying_object_mode): Delete. (output_reg): New. (nvptx_declare_function_name): Use output_reg. Remove punning buffer. (nvptx_output_mov_insn): New. (nvptx_print_operand): Separate SUBREG handling, remove 'f' case, Use output_reg. Merge 't' and 'u' handling. * config/nvptx/nvptx.h (NVPTX_PUNNING_BUFFER_REGNUM): Delete. (struct machine_function): Remvoe punning_buffer_size. (REGISTER_NAMES): Remove %punbuffer. * config/nvptx/nvptx.md (UNSPEC_CPLX_LOWPART, UNSPEC_CPLX_HIGHPART): Delete. (*mov<mode>_insn [QHSDIM): Remove unnecessary constraints, use nvptx_output_mov_insn. (*mov<mode>_insn [SDFM): Reorder constraints to match integer moc. Use nvptx_output_mov_insn. (highpartscsf2, set_highpartscsf2, lowpartscsf2, set_lowpartscsf2): Delete. (mov<mode> [SDCM]): Delete. From-SVN: r231180
2015-12-02tree.h (tree_invariant_p): Declare.Richard Biener4-5/+14
2015-12-02 Richard Biener <rguenther@suse.de> * tree.h (tree_invariant_p): Declare. * tree.c (tree_invariant_p): Export. * genmatch.c (dt_simplify::gen_1): For GENERIC code-gen never create SAVE_EXPRs but reject patterns if we would need to. From-SVN: r231178
2015-12-02Handle BUILT_IN_GOACC_PARALLEL in ipa-ptaTom de Vries9-4/+210
2015-12-02 Tom de Vries <tom@codesourcery.com> * tree-ssa-structalias.c (find_func_aliases_for_builtin_call) (find_func_clobbers, ipa_pta_execute): Handle BUILT_IN_GOACC_PARALLEL. * c-c++-common/goacc/kernels-alias-ipa-pta-2.c: New test. * c-c++-common/goacc/kernels-alias-ipa-pta-3.c: New test. * c-c++-common/goacc/kernels-alias-ipa-pta.c: New test. From-SVN: r231169
2015-12-02vect-strided-a-u8-i8-gap7-big-array.c: Fix uninitialized y guarding a call ↵Richard Biener4-4/+11
to abort (). 2015-12-02 Richard Biener <rguenther@suse.de> * gcc.dg/vect/vect-strided-a-u8-i8-gap7-big-array.c: Fix uninitialized y guarding a call to abort (). * gcc.dg/vect/vect-strided-a-u8-i8-gap7.c: Likewise. * gcc.dg/vect/vect-strided-u8-i8-gap7-big-array.c: Likewise. From-SVN: r231168
2015-12-02AVX-512. Split out mask version for vec_extract_hi_<mode>.Kirill Yukhin2-19/+27
gcc/ * config/i386/sse.md (define_insn "vec_extract_hi_<mode>_maskm"): Remove "prefix_extra". (define_insn "vec_extract_hi_<mode>_mask"): New. (define_insn "vec_extract_hi_<mode>"): Remove masking. gcc/testsuite/ * gcc.target/i386/avx512vl-vextractf32x4-1.c: Fix scan pattern. From-SVN: r231167
2015-12-02rs6000: Optimise SImode cstore on 64-bitSegher Boessenkool2-0/+55
On 64-bit we can do comparisons of 32-bit values by extending those values to 64-bit, subtracting them, and then getting the high bit of the result. For registers this is always cheaper than using the carry bit sequence; and if the comparison involves a constant, this is cheaper than the sequence we previously generated in half of the cases (and the same cost in the other cases). After this, the only sequence left that is using the mfcr insn is the one doing signed comparison of Pmode registers. From-SVN: r231165
2015-12-02re PR middle-end/68570 (ICE on valid code at -O1, -O2 and -O3 on ↵Marek Polacek2-0/+40
x86_64-linux-gnu) PR middle-end/68570 * gcc.dg/torture/pr68570.c: New test. From-SVN: r231163
2015-12-02re PR tree-optimization/68625 (Segmentation fault in useless_type_conversion_p)Richard Biener4-4/+86
2015-12-02 Richard Biener <rguenther@suse.de> PR tree-optimization/68625 * tree-cfgcleanup.c (cleanup_tree_cfg_bb): Do not call cleanup_control_flow_bb. (cleanup_tree_cfg_1): First perform cleanup_control_flow_bb on all BBs, then cleanup_tree_cfg_bb and finally iterate over the worklist doing both. * gcc.dg/torture/pr68625.c: New testcase. From-SVN: r231162
2015-12-02PR 68432: Add a target hook to control size/speed optab choicesRichard Sandiford24-91/+297
The problem in the PR is that some i386 optabs FAIL when optimising for size rather than speed. The gimple level generally needs access to this information before calling the generator, so this patch adds a new hook to say whether an optab should be used when optimising for size or speed. It also has a "both" option for cases where we want code that is optimised for both size and speed. I've passed the optab to the target hook because I think in most cases that's more useful than the instruction code. We could pass both if there's a use for it though. At the moment the match-and-simplify code doesn't have direct access to the target block, so for now I've used "both" there. Tested on x86_64-linux-gnu and powerpc64-linux-gnu. gcc/ PR tree-optimization/68432 * coretypes.h (optimization_type): New enum. * doc/tm.texi.in (TARGET_OPTAB_SUPPORTED_P): New hook. * doc/tm.texi: Regenerate. * target.def (optab_supported_p): New hook. * targhooks.h (default_optab_supported_p): Declare. * targhooks.c (default_optab_supported_p): New function. * predict.h (function_optimization_type): Declare. (bb_optimization_type): Likewise. * predict.c (function_optimization_type): New function. (bb_optimization_type): Likewise. * optabs-query.h (convert_optab_handler): Define an overload that takes an optimization type. (direct_optab_handler): Likewise. * optabs-query.c (convert_optab_handler): Likewise. (direct_optab_handler): Likewise. * internal-fn.h (direct_internal_fn_supported_p): Take an optimization_type argument. * internal-fn.c (direct_optab_supported_p): Likewise. (multi_vector_optab_supported_p): Likewise. (direct_internal_fn_supported_p): Likewise. * builtins.c (replacement_internal_fn): Update call to direct_internal_fn_supported_p. * gimple-match-head.c (build_call_internal): Likewise. * tree-vect-patterns.c (vect_recog_pow_pattern): Likewise. * tree-vect-stmts.c (vectorizable_internal_function): Likewise. * tree.c (maybe_build_call_expr_loc): Likewise. * config/i386/i386.c (ix86_optab_supported_p): New function. (TARGET_OPTAB_SUPPORTED_P): Define. * config/i386/i386.md (asinxf2): Remove optimize_insn_for_size_p check. (asin<mode>2, acosxf2, acos<mode>2, log1pxf2, log1p<mode>2) (expNcorexf3, expxf2, exp<mode>2, exp10xf2, exp10<mode>2, exp2xf2) (exp2<mode>2, expm1xf2, expm1<mode>2, ldexpxf3, ldexp<mode>3) (scalbxf3, scalb<mode>3, rint<mode>2, round<mode>2) (<rounding_insn>xf2, <rounding_insn><mode>2): Likewise. gcc/testsuite/ * gcc.target/i386/pr68432-1.c: New test. * gcc.target/i386/pr68432-2.c: Likewise. * gcc.target/i386/pr68432-3.c: Likewise. From-SVN: r231161