1. 20 May, 2016 16 commits
    • Implement CALL_EXPR_MUST_TAIL_CALL · 9a385c2d
      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
    • Introduce can_implement_as_sibling_call_p · b40d90e6
      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, [...]): Unconstify. · 97c53806
      	* 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… · 216e8374
      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
    • prefetch-5.c: xfail. · 77c9d5b4
      	* 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
    • re PR libstdc++/71081 (experimental/memory_resource/1.cc run for targets without atomics) · 11f8114b
      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
    • re PR c++/71210 (internal compiler error: in assign_temp, at function.c:961) · 18954840
      	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
    • re PR target/29756 (SSE intrinsics hard to use without redundant temporaries appearing) · 68047971
      	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
    • PR71206: inconsistent types after match.pd transformation · d78789f5
      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
    • Add test-cases mentioned in r236502. · 5b17a01c
      From-SVN: r236503
      Prathamesh Kulkarni committed
    • tree-vectorizer.c (get_vec_alignment_for_decl): New static function. · 550fa093
      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
    • re PR target/29756 (SSE intrinsics hard to use without redundant temporaries appearing) · 483c6429
      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
    • re PR target/71185 (ice in gimplify_modify_expr, at gimplify.c:4873) · eb066284
      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
    • tree-if-conv.c (add_bb_predicate_gimplified_stmts): Use gimple_seq_add_seq_without_update. · 58f10249
      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
    • Change ENABLE_VALGRIND_CHECKING to · ceb17928
      	* 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
    • Daily bump. · 2fe676f6
      From-SVN: r236495
      GCC Administrator committed
  2. 19 May, 2016 24 commits