- 20 May, 2016 16 commits
-
-
This patch implements support for marking CALL_EXPRs as being mandatory for tail-call-optimization. expand_call tries harder to perform the optimization on such CALL_EXPRs, and issues an error if it fails. Currently this flag isn't accessible from any frontend, so the patch uses a plugin for testing the functionality. gcc/ChangeLog: * calls.c (maybe_complain_about_tail_call): New function. (initialize_argument_information): Call maybe_complain_about_tail_call when clearing *may_tailcall. (can_implement_as_sibling_call_p): Call maybe_complain_about_tail_call when returning false. (expand_call): Read CALL_EXPR_MUST_TAIL_CALL and, if set, ensure try_tail_call is set. Call maybe_complain_about_tail_call if tail-call optimization fails. * cfgexpand.c (expand_call_stmt): Initialize CALL_EXPR_MUST_TAIL_CALL from gimple_call_must_tail_p. * gimple-pretty-print.c (dump_gimple_call): Dump gimple_call_must_tail_p. * gimple.c (gimple_build_call_from_tree): Call gimple_call_set_must_tail with the value of CALL_EXPR_MUST_TAIL_CALL. * gimple.h (enum gf_mask): Add GF_CALL_MUST_TAIL_CALL. (gimple_call_set_must_tail): New function. (gimple_call_must_tail_p): New function. * print-tree.c (print_node): Update printing of TREE_STATIC to reflect its use for CALL_EXPR_MUST_TAIL_CALL. * tree-core.h (struct tree_base): Add MUST_TAIL_CALL to the trailing comment listing applicable flags. * tree.h (CALL_EXPR_MUST_TAIL_CALL): New macro. gcc/testsuite/ChangeLog: * gcc.dg/plugin/must-tail-call-1.c: New test case. * gcc.dg/plugin/must-tail-call-2.c: New test case. * gcc.dg/plugin/must_tail_call_plugin.c: New file. * gcc.dg/plugin/plugin.exp (plugin_test_list): Add the above. From-SVN: r236514
David Malcolm committed -
gcc/ChangeLog: * calls.c (expand_call): Move "Rest of purposes for tail call optimizations to fail" to... (can_implement_as_sibling_call_p): ...this new function, and split into multiple "if" statements. From-SVN: r236513
David Malcolm committed -
* cfgloop.h (expected_loop_iterations_unbounded, expected_loop_iterations): Unconstify. * cfgloopanal.c (expected_loop_iterations_unbounded): Sanity check the profile with known upper bound; return 3 when profile is absent. (expected_loop_iterations): Update. From-SVN: r236511
Jan Hubicka committed -
loop-doloop.c (doloop_optimize): Use get_estimated_loop_iterations_int and get_max_loop_iterations_int. * loop-doloop.c (doloop_optimize): Use get_estimated_loop_iterations_int and get_max_loop_iterations_int. From-SVN: r236509
Jan Hubicka committed -
* gcc.dg/tree-ssa/prefetch-5.c: xfail. * tree-ssa-loop-niter.c (idx_infer_loop_bounds): We can not produce realistic upper bounds here. From-SVN: r236508
Jan Hubicka committed -
2016-05-20 Thomas Preud'homme <thomas.preudhomme@arm.com> PR libstdc++/71081 * testsuite/experimental/memory_resource/1.cc: Add required argument to dg-require-atomic-builtins. From-SVN: r236507
Thomas Preud'homme committed -
PR c++/71210 * gimple-fold.c (gimple_fold_call): Do not remove lhs of noreturn calls if the LHS is variable length or has addressable type. If targets[0]->decl is a noreturn call with void return type and zero arguments, adjust fntype and remove lhs in that case. * g++.dg/opt/pr71210-1.C: New test. * g++.dg/opt/pr71210-2.C: New test. From-SVN: r236506
Jakub Jelinek committed -
PR tree-optimization/29756 gcc.dg/tree-ssa/vector-6.c: Add -Wno-psabi -w to dg-options. Add -msse2 for x86 and -maltivec for powerpc. Use scan-tree-dump-times only on selected targets where V4SImode vectors are known to be supported. From-SVN: r236505
Jakub Jelinek committed -
2016-05-20 Marc Glisse <marc.glisse@inria.fr> PR tree-optimization/71079 PR tree-optimization/71206 gcc/ * match.pd ((X ^ Y) ^ (X ^ Z)): Convert the arguments. gcc/testsuite/ * gcc.dg/tree-ssa/pr71206.c: New testcase. From-SVN: r236504
Marc Glisse committed -
From-SVN: r236503
Prathamesh Kulkarni committed -
2016-05-20 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> * tree-vectorizer.c (get_vec_alignment_for_decl): New static function. (get_vec_alignment_for_array_decl): Likewise. (get_vec_alignment_for_record_decl): Likewise. (increase_alignment::execute): Move code to find alignment to get_vec_alignment_for_array_decl and call get_vec_alignment_for_decl. (type_align_map): New hash_map. testsuite/ * gcc.dg/vect/section-anchors-vect-70.c: New test-case. * gcc.dg/vect/section-anchors-vect-71.c: Likewise. * gcc.dg/vect/section-anchors-vect-72.c: Likewise. From-SVN: r236502
Prathamesh Kulkarni committed -
2016-05-20 Richard Guenther <rguenther@suse.de> PR tree-optimization/29756 * tree.def (BIT_INSERT_EXPR): New tcc_expression tree code. * expr.c (expand_expr_real_2): Handle BIT_INSERT_EXPR. * fold-const.c (operand_equal_p): Likewise. (fold_ternary_loc): Add constant folding of BIT_INSERT_EXPR. * gimplify.c (gimplify_expr): Handle BIT_INSERT_EXPR. * tree-inline.c (estimate_operator_cost): Likewise. * tree-pretty-print.c (dump_generic_node): Likewise. * tree-ssa-operands.c (get_expr_operands): Likewise. * cfgexpand.c (expand_debug_expr): Likewise. * gimple-pretty-print.c (dump_ternary_rhs): Likewise. * gimple.c (get_gimple_rhs_num_ops): Handle BIT_INSERT_EXPR. * tree-cfg.c (verify_gimple_assign_ternary): Verify BIT_INSERT_EXPR. * tree-ssa.c (non_rewritable_lvalue_p): We can rewrite vector inserts using BIT_FIELD_REF or MEM_REF on the lhs. (execute_update_addresses_taken): Do it. * gcc.dg/tree-ssa/vector-6.c: New testcase. From-SVN: r236501
Richard Guenther committed -
2016-05-20 Richard Biener <rguenther@suse.de> PR tree-optimization/71185 * tree-ssa-loop-prefetch.c (gather_memory_references): Drop register operations. * gcc.dg/tree-ssa/pr71185.c: New testcase. From-SVN: r236499
Richard Biener committed -
2016-05-20 Richard Biener <rguenther@suse.de> * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Use gimple_seq_add_seq_without_update. (release_bb_predicate): Assert we have no operands to free. (if_convertible_loop_p_1): Calculate post dominators later. Do not free BB predicates here. (combine_blocks): Do not recompute BB predicates. (version_loop_for_if_conversion): Save BB predicates around loop versioning. * gcc.dg/tree-ssa/ifc-cd.c: Adjust. From-SVN: r236498
Richard Biener committed -
* config.in: Regenerated. * configure: Likewise. * configure.ac: Handle --enable-valgrind-annotations. * lex.c (new_buff): Use ENABLE_VALGRIND_ANNOTATIONS instead of ENABLE_VALGRIND_CHECKING. (_cpp_free_buff): Likewise. From-SVN: r236496
Martin Liska committed -
From-SVN: r236495
GCC Administrator committed
-
- 19 May, 2016 24 commits
-
-
This patch restructures how the prologues/epilogues are inserted. Sibcalls that run without prologue are now handled in shrink-wrap.c; it communicates what is already handled by setting the EDGE_IGNORE flag. The try_shrink_wrapping function then doesn't need to be passed the bb_flags anymore. * function.c (make_epilogue_seq): Remove epilogue_end parameter. (thread_prologue_and_epilogue_insns): Remove bb_flags. Restructure code. Ignore sibcalls on EDGE_IGNORE edges. * shrink-wrap.c (handle_simple_exit): New function. Set EDGE_IGNORE on edges for sibcalls that run without prologue. The rest of the function is combined from... (fix_fake_fallthrough_edge): ... this, and ... (try_shrink_wrapping): ... a part of this. Remove the bb_with function argument, make it a local variable. From-SVN: r236491
Segher Boessenkool committed -
cygming.h (DWARF2_UNWIND_INFO): Allow --disable-sjlj-exceptions for TARGET_BI_ARCH to select DWARF-2 EH for... 2016-05-19 Sandra Loosemore <sandra@codesourcery.com> gcc/ * config/i386/cygming.h (DWARF2_UNWIND_INFO): Allow --disable-sjlj-exceptions for TARGET_BI_ARCH to select DWARF-2 EH for 32-bit mode and SEH for 64-bit. * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): Handle TARGET_64BIT_DEFAULT. libgcc/ * config.host [x86_64-*-cygwin*]: Handle tmake_eh_file for mixed dw2/seh configuration. [x86_64-*-mingw*]: Likewise. From-SVN: r236490
Sandra Loosemore committed -
A common way for a c_expr to have an uninitialized src_range is in error-handling, where the "value" field is set to error_mark_node without touching the src_range, leading to complaints from valgrind. This patch introduces a new method c_expr::set_error which sets the value to error_mark_node whilst initializing the src_range to UNKNOWN_LOCATION. This fixes the valgrind issue seen in PR c/71171, along with various other related issues seen when running the testsuite using the checker patch I posted here: https://gcc.gnu.org/ml/gcc-patches/2015-12/msg00887.html (this checker still doesn't fully work yet, but it seems to be good for easily detecting these issues without needing Valgrind). gcc/c/ChangeLog: PR c/71171 * c-parser.c (c_parser_generic_selection): Use c_expr::set_error in error-handling. (c_parser_postfix_expression): Likewise. * c-tree.h (c_expr::set_error): New method. * c-typeck.c (parser_build_binary_op): In error-handling, ensure that result's range is initialized. From-SVN: r236488
David Malcolm committed -
PR c++/71075 * pt.c (unify_template_argument_mismatch): Use %qE instead of %qD. * g++.dg/diagnostic/pr71075.C: New test. From-SVN: r236487
Marek Polacek committed -
PR c++/10200 * pt.c (fn_type_unification): Add outer template args if needed. (type_unification_real): Handle getting full args. From-SVN: r236486
Jason Merrill committed -
The source-range handling for the array form of operator new/delete erroneously assumed that the "]" was present, leading to a dereference of NULL when it's absent. Fix it thusly. gcc/cp/ChangeLog: PR c++/71184 * parser.c (cp_parser_operator): For array new/delete, check that cp_parser_require returned a non-NULL token before dereferencing it. gcc/testsuite/ChangeLog: PR c++/71184 * g++.dg/pr71184.C: New test case. From-SVN: r236483
David Malcolm committed -
2016-05-16 Ryan Burn <contact@rnburn.com> * Makefile.in (GTFILES): Add cilk.h and cilk-common.c. * gengtype.c (open_base_files): Add cilk.h to ifiles. From-SVN: r236482
Ryan Burn committed -
* sched-deps.c (sched_analyze_2) <case TRAP_IF>: Also force pending loads from memory. From-SVN: r236481
Uros Bizjak committed -
gcc/testsuite/ChangeLog: 2016-05-19 Kelvin Nilsen <kelvin@gcc.gnu.org> * gcc.target/powerpc/darn-0.c: New test. * gcc.target/powerpc/darn-1.c: New test. * gcc.target/powerpc/darn-2.c: New test. gcc/ChangeLog: 2016-05-19 Kelvin Nilsen <kelvin@gcc.gnu.org> * config/rs6000/altivec.md (UNSPEC_DARN): New unspec constant. (UNSPEC_DARN_32): New unspec constant. (UNSPEC_DARN_RAW): New unspec constant. (darn_32): New instruction. (darn_raw): New instruction. (darn): New instruction. * config/rs6000/rs6000-builtin.def (RS6000_BUILTIN_0): Add support and documentation for this macro. (BU_P9_MISC_1): New macro definition. (BU_P9_64BIT_MISC_0): New macro definition. (BU_P9_MISC_0): New macro definition. (darn_32): New builtin definition. (darn_raw): New builtin definition. (darn): New builtin definition. * config/rs6000/rs6000.c: Add #define RS6000_BUILTIN_0 and #undef RS6000_BUILTIN_0 directives to surround each occurrence of #include "rs6000-builtin.def". (rs6000_builtin_mask_calculate): Add in the RS6000_BTM_MODULO and RS6000_BTM_64BIT flags to the returned mask, depending on configuration. (def_builtin): Correct an error in the assignments made to the debugging variable attr_string. (rs6000_expand_builtin): Add support for no-operand built-in functions. (builtin_function_type): Remove fatal_error assertion that is no longer valid. (rs6000_common_init_builtins): Add support for no-operand built-in functions. * config/rs6000/rs6000.h (RS6000_BTM_MODULO): New macro definition. (RS6000_BTM_PURE): Enhance comment to clarify intent of this flag definition. (RS6000_BTM_64BIT): New macro definition. * doc/extend.texi: Document __builtin_darn (void), __builtin_darn_raw (void), and __builtin_darn_32 (void) built-in functions. From-SVN: r236480
Kelvin Nilsen committed -
* tree-vect-loop.c (vect_analyze_loop_2): Use also max_loop_iterations_int. From-SVN: r236478
Jan Hubicka committed -
PR tree-optimization/71031 * tree-vrp.c (extract_range_from_binary_expr_1): Turn assert into a condition and adjust the code a bit. * gcc.dg/tree-ssa/vrp100.c: New test. From-SVN: r236477
Marek Polacek committed -
* tree-vect-stmts.c (vectorizable_simd_clone_call): Utilize auto_vec instead of vec. From-SVN: r236472
Martin Liska committed -
* tree-parloops.c (oacc_entry_exit_ok): Release a vector. From-SVN: r236471
Martin Liska committed -
* tree-if-conv.c (ifcvt_repair_bool_pattern): Utilize auto_vecs. From-SVN: r236470
Martin Liska committed -
* ipa-pure-const.c (set_function_state): Remove an existing funct_state. (remove_node_data): Do not free it as it's released in set_function_state. From-SVN: r236469
Martin Liska committed -
* tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Release bitmap. From-SVN: r236468
Martin Liska committed -
* omp-simd-clone.c (simd_clone_adjust): Release vector. From-SVN: r236467
Martin Liska committed -
* tree-ssa-reassoc.c (eliminate_duplicate_pair): Truncate an auto_vec instead of re-creating it. From-SVN: r236466
Martin Liska committed -
* tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Use auto_vec instead of vec. From-SVN: r236465
Martin Liska committed -
* lto-section-in.c (lto_get_section_data): Call lto_check_version with additional argument. * lto-streamer.c (lto_check_version): Add new argument. * lto-streamer.h (lto_check_version): Likewise. From-SVN: r236464
Martin Liska committed -
* config/arm/arm.c (arm_new_rtx_costs, SIGN_EXTEND case): Don't add cost of inner memory when handling sign-extended loads. From-SVN: r236461
Kyrylo Tkachov committed -
gcc/ * cse.c (cse_main): Free dominance info. (rest_of_handle_cse): Don't free dominance info. (rest_of_handle_cse2): Likewise. (rest_of_handle_cse_after_global_opts): Likewise. gcc/testsuite/ * gcc.dg/pr71148.c: New test. From-SVN: r236460
Ilya Enkovich committed -
PR target/71056 * config/arm/arm-builtins.c (arm_builtin_vectorized_function): Return NULL_TREE early if NEON is not available. Remove now redundant check in ARM_CHECK_BUILTIN_MODE. * gcc.target/arm/pr71056.c: New test. From-SVN: r236459
Kyrylo Tkachov committed -
2016-05-19 Bernd Edlinger <bernd.edlinger@hotmail.de> * decl.c (finish_enum_value_list): Use the specified mode. testsuite: 2016-05-19 Bernd Edlinger <bernd.edlinger@hotmail.de> * c-c++-common/pr69669.c: Check the used mode. From-SVN: r236458
Bernd Edlinger committed
-