1. 14 May, 2016 2 commits
  2. 13 May, 2016 27 commits
    • combine: Don't call extract_left_shift with count < 0 (PR67483) · 85ca20c9
      If the compiled program does a shift by a negative amount, combine will
      happily work with that, but it shouldn't then do an undefined operation
      in GCC itself.  This patch fixes the first case mentioned in the bug
      report (I haven't been able to reproduce the second case, on trunk at
      least).
      
      
      	PR rtl-optimization/67483
      	* combine.c (make_compound_operation): Don't call extract_left_shift
      	with negative shift amounts.
      
      From-SVN: r236232
      Segher Boessenkool committed
    • Implement C11 DR#423 resolution (ignore function return type qualifiers). · aa4b467b
      The resolution of C11 DR#423, apart from doing things with the types
      of expressions cast to qualified types which are only in standard
      terms observable with _Generic and which agree with how GCC has
      implemented _Generic all along, also specifies that qualifiers are
      discarded from function return types: "derived-declarator-type-list
      function returning T" becomes "derived-declarator-type-list function
      returning the unqualified version of T" in the rules giving types for
      function declarators.  This means that declarations of a function with
      both qualified and unqualified return types are now compatible,
      similar to how different declarations can vary in whether a function
      argument is declared with a qualifier or unqualified type.
      
      This patch implements this resolution.  Since the motivation for the
      change was _Generic, the resolution is restricted to C11 mode; there's
      no reason to consider there to be a defect in this regard in older
      standard versions.  Some less-obvious issues are handled as follows:
      
      * As usual, and as with function arguments, _Atomic is not considered
        a qualifier for this purpose; that is, function declarations must
        agree regarding whether the return type is atomic.
      
      * By 6.9.1#2, a function definition cannot return qualified void.  But
        with this change, specifying "const void" in the declaration
        produces the type "function returning void", which is perfectly
        valid, so "const void f (void) {}" is no longer an error.
      
      * The application to restrict is less clear.  The way I am
        interpreting it in this patch is that "unqualified version of T" is
        not valid if T is not valid, as in the case where T is a
        restrict-qualified version of a type that cannot be restrict
        qualified (non-pointer, or pointer-to-function).  But it's possible
        to argue the other way from the wording.
      
      Bootstrapped with no regressions on x86_64-pc-linux-gnu.
      
      gcc/c:
      	* c-decl.c (grokdeclarator): For C11, discard qualifiers on
      	function return type.
      
      gcc/testsuite:
      	* gcc.dg/qual-return-5.c, gcc.dg/qual-return-6.c: New tests.
      	* gcc.dg/call-diag-2.c, gcc.dg/qual-return-2.c ,
      	gcc.dg/qual-return-3.c, gcc.dg/qual-return-4.c: Use -std=gnu99.
      
      From-SVN: r236231
      Joseph Myers committed
    • c++/60049 - Right and left shift undefined behavior not an error in a constexpr · 653fb4a2
      Add new test.
      
      From-SVN: r236225
      Martin Sebor committed
    • escape: Implement the discovery phase. · 6eaba1b0
          
          Implements the discovery phase according the SCC algorithm used in
          gc/esc.go.  Traverse all functions to find components that are either
          trivial or recursive.  The discovered function groups will be analyzed
          from the bottom-up to allow for an inter-procedural analysis.
          
          Reviewed-on: https://go-review.googlesource.com/18221
      
      From-SVN: r236224
      Ian Lance Taylor committed
    • jit: use FINAL and OVERRIDE throughout · 54ece5e2
      Mark most virtual functions in gcc/jit as being FINAL OVERRIDE.
      gcc::jit::recording::lvalue::access_as_rvalue is the sole OVERRIDE
      that isn't a FINAL.
      
      gcc/jit/ChangeLog:
      	* jit-playback.h: Within namespace gcc:jit::playback...
      	(compile_to_memory::postprocess): Mark with FINAL OVERRIDE.
      	(compile_to_file::postprocess): Likewise.
      	(function::finalizer): Likewise.
      	(block::finalizer): Likewise.
      	(source_file::finalizer): Likewise.
      	(source_line::finalizer): Likewise.
      	* jit-recording.c (gcc::jit::rvalue_usage_validator):: Likewise.
      	* jit-recording.h: Within namespace gcc::jit::recording...
      	(string::replay_into): Mark with FINAL OVERRIDE.
      	(string::make_debug_string): Likewise.
      	(string::write_reproducer): Likewise.
      	(location::replay_into): Likewise.
      	(location::dyn_cast_location): Likewise.
      	(location::make_debug_string): Likewise.
      	(location::write_reproducer): Likewise.
      	(memento_of_get_type::dereference): Likewise.
      	(memento_of_get_type::accepts_writes_from): Likewise.
      	(memento_of_get_type::is_int): Likewise.
      	(memento_of_get_type::is_float): Likewise.
      	(memento_of_get_type::is_bool): Likewise.
      	(memento_of_get_type::is_pointer): Likewise.
      	(memento_of_get_type::is_array): Likewise.
      	(memento_of_get_type::is_void): Likewise.
      	(memento_of_get_type::replay_into): Likewise.
      	(memento_of_get_type::make_debug_string): Likewise.
      	(memento_of_get_type::write_reproducer): Likewise.
      	(memento_of_get_pointer::dereference): Likewise.
      	(memento_of_get_pointer::accepts_writes_from): Likewise.
      	(memento_of_get_pointer::replay_into): Likewise.
      	(memento_of_get_pointer::is_int): Likewise.
      	(memento_of_get_pointer::is_float): Likewise.
      	(memento_of_get_pointer::is_bool): Likewise.
      	(memento_of_get_pointer::is_pointer): Likewise.
      	(memento_of_get_pointer::is_array): Likewise.
      	(memento_of_get_pointer::make_debug_string): Likewise.
      	(memento_of_get_pointer::write_reproducer): Likewise.
      	(memento_of_get_const::dereference): Likewise.
      	(memento_of_get_const::accepts_writes_from): Likewise.
      	(memento_of_get_const::unqualified): Likewise.
      	(memento_of_get_const::is_int): Likewise.
      	(memento_of_get_const::is_float): Likewise.
      	(memento_of_get_const::is_bool): Likewise.
      	(memento_of_get_const::is_pointer): Likewise.
      	(memento_of_get_const::is_array): Likewise.
      	(memento_of_get_const::void replay_into): Likewise;
      	(memento_of_get_const::make_debug_string): Likewise.
      	(memento_of_get_const::write_reproducer): Likewise.
      	(memento_of_get_volatile::dereference): Likewise.
      	(memento_of_get_volatile::unqualified): Likewise.
      	(memento_of_get_volatile::is_int): Likewise.
      	(memento_of_get_volatile::is_float): Likewise.
      	(memento_of_get_volatile::is_bool): Likewise.
      	(memento_of_get_volatile::is_pointer): Likewise.
      	(memento_of_get_volatile::is_array): Likewise.
      	(memento_of_get_volatile::replay_into): Likewise;
      	(memento_of_get_volatile::make_debug_string): Likewise.
      	(memento_of_get_volatile::write_reproducer): Likewise.
      	(array_type::dereference): Likewise.
      	(array_type::is_int): Likewise.
      	(array_type::is_float): Likewise.
      	(array_type::is_bool): Likewise.
      	(array_type::is_pointer): Likewise.
      	(array_type::is_array): Likewise.
      	(array_type::replay_into): Likewise;
      	(array_type::make_debug_string): Likewise.
      	(array_type::write_reproducer): Likewise.
      	(function_type::dereference): Likewise.
      	(function_type::function_dyn_cast_function_type): Likewise.
      	(function_type::function_as_a_function_type): Likewise.
      	(function_type::is_int): Likewise.
      	(function_type::is_float): Likewise.
      	(function_type::is_bool): Likewise.
      	(function_type::is_pointer): Likewise.
      	(function_type::is_array): Likewise.
      	(function_type::replay_into): Likewise;
      	(function_type::make_debug_string): Likewise.
      	(function_type::write_reproducer): Likewise.
      	(field::replay_into): Likewise;
      	(field::write_to_dump): Likewise.
      	(field::make_debug_string): Likewise.
      	(field::write_reproducer): Likewise.
      	(compound_type::dereference): Likewise.
      	(compound_type::is_int): Likewise.
      	(compound_type::is_float): Likewise.
      	(compound_type::is_bool): Likewise.
      	(compound_type::is_pointer): Likewise.
      	(compound_type::is_array): Likewise.
      	(compound_type::has_known_size): Likewise.
      	(struct_::dyn_cast_struct): Likewise.
      	(struct_::replay_into): Likewise.
      	(struct_::access_as_type): Likewise.
      	(struct_::make_debug_string): Likewise.
      	(struct_::write_reproducer): Likewise.
      	(fields::replay_into): Likewise.
      	(fields::write_to_dump): Likewise.
      	(fields::make_debug_string): Likewise.
      	(fields::write_reproducer): Likewise.
      	(union_::replay_into): Likewise.
      	(union_::make_debug_string): Likewise.
      	(union_::write_reproducer): Likewise.
      	(lvalue::access_as_rvalue): Mark with OVERRIDE.
      	(param::replay_into): Mark with FINAL OVERRIDE.
      	(param::visit_children): Likewise.
      	(param::dyn_cast_param): Likewise.
      	(param::access_as_rvalue): Likewise.
      	(param::access_as_lvalue): Likewise.
      	(param::make_debug_string): Likewise.
      	(param::write_reproducer): Likewise.
      	(param::get_precedence): Likewise.
      	(function::replay_into): Likewise.
      	(function::write_to_dump): Likewise.
      	(function::make_debug_string): Likewise.
      	(function::write_reproducer): Likewise.
      	(block::write_to_dump): Likewise.
      	(block::make_debug_string): Likewise.
      	(block::write_reproducer): Likewise.
      	(block::replay_into): Likewise.
      	(global::replay_into): Likewise;
      	(global::visit_children): Likewise.
      	(global::write_to_dump): Likewise.
      	(global::make_debug_string): Likewise.
      	(global::write_reproducer): Likewise.
      	(global::get_precedence): Likewise.
      	(memento_of_new_rvalue_from_const::replay_into): Likewise.
      	(memento_of_new_rvalue_from_const::visit_children): Likewise.
      	(memento_of_new_rvalue_from_const::is_constant): Likewise.
      	(memento_of_new_rvalue_from_const::get_wide_int): Likewise.
      	(memento_of_new_rvalue_from_const::make_debug_string): Likewise.
      	(memento_of_new_rvalue_from_const::write_reproducer): Likewise.
      	(memento_of_new_rvalue_from_const::get_precedence): Likewise.
      	(memento_of_new_string_literal::replay_into): Likewise.
      	(memento_of_new_string_literal::visit_children): Likewise.
      	(memento_of_new_string_literal::make_debug_string): Likewise.
      	(memento_of_new_string_literal::write_reproducer): Likewise.
      	(memento_of_new_string_literal::get_precedence): Likewise.
      	(unary_op::replay_into): Likewise.
      	(unary_op::visit_children): Likewise.
      	(unary_op::make_debug_string): Likewise.
      	(unary_op::write_reproducer): Likewise.
      	(unary_op::get_precedence): Likewise.
      	(binary_op::replay_into): Likewise.
      	(binary_op::visit_children): Likewise.
      	(binary_op::make_debug_string): Likewise.
      	(binary_op::write_reproducer): Likewise.
      	(binary_op::get_precedence): Likewise.
      	(comparison::replay_into): Likewise.
      	(comparison::visit_children): Likewise.
      	(comparison::make_debug_string): Likewise.
      	(comparison::write_reproducer): Likewise.
      	(comparison::get_precedence): Likewise.
      	(cast::replay_into): Likewise.
      	(cast::visit_children): Likewise.
      	(cast::make_debug_string): Likewise.
      	(cast::write_reproducer): Likewise.
      	(cast::get_precedence): Likewise.
      	(call::replay_into): Likewise.
      	(call::visit_children): Likewise.
      	(call::make_debug_string): Likewise.
      	(call::write_reproducer): Likewise.
      	(call::get_precedence): Likewise.
      	(call_through_ptr::replay_into): Likewise.
      	(call_through_ptr::visit_children): Likewise.
      	(call_through_ptr::make_debug_string): Likewise.
      	(call_through_ptr::write_reproducer): Likewise.
      	(call_through_ptr::get_precedence): Likewise.
      	(array_access::replay_into): Likewise.
      	(array_access::visit_children): Likewise.
      	(array_access::make_debug_string): Likewise.
      	(array_access::write_reproducer): Likewise.
      	(array_access::get_precedence): Likewise.
      	(access_field_of_lvalue::replay_into): Likewise.
      	(access_field_of_lvalue::visit_children): Likewise.
      	(access_field_of_lvalue::make_debug_string): Likewise.
      	(access_field_of_lvalue::write_reproducer): Likewise.
      	(access_field_of_lvalue::get_precedence): Likewise.
      	(access_field_rvalue::replay_into): Likewise.
      	(access_field_rvalue::visit_children): Likewise.
      	(access_field_rvalue::make_debug_string): Likewise.
      	(access_field_rvalue::write_reproducer): Likewise.
      	(access_field_rvalue::get_precedence): Likewise.
      	(dereference_field_rvalue::replay_into): Likewise.
      	(dereference_field_rvalue::visit_children): Likewise.
      	(dereference_field_rvalue::make_debug_string): Likewise.
      	(dereference_field_rvalue::write_reproducer): Likewise.
      	(dereference_field_rvalue::get_precedence): Likewise.
      	(dereference_rvalue::replay_into): Likewise.
      	(dereference_rvalue::visit_children): Likewise.
      	(dereference_rvalue::make_debug_string): Likewise.
      	(dereference_rvalue::write_reproducer): Likewise.
      	(dereference_rvalue::get_precedence): Likewise.
      	(get_address_of_lvalue::replay_into): Likewise.
      	(get_address_of_lvalue::visit_children): Likewise.
      	(get_address_of_lvalue::make_debug_string): Likewise.
      	(get_address_of_lvalue::write_reproducer): Likewise.
      	(get_address_of_lvalue::get_precedence): Likewise.
      	(local::replay_into): Likewise.
      	(local::visit_children): Likewise.
      	(local::write_to_dump): Likewise.
      	(local::make_debug_string): Likewise.
      	(local::write_reproducer): Likewise.
      	(local::get_precedence): Likewise.
      	(statement::write_to_dump): Likewise.
      	(eval::replay_into): Likewise.
      	(eval::make_debug_string): Likewise.
      	(eval::write_reproducer): Likewise.
      	(assignment::replay_into): Likewise.
      	(assignment::make_debug_string): Likewise.
      	(assignment::write_reproducer): Likewise.
      	(assignment_op::replay_into): Likewise.
      	(assignment_op::make_debug_string): Likewise.
      	(assignment_op::write_reproducer): Likewise.
      	(comment::replay_into): Likewise.
      	(comment::make_debug_string): Likewise.
      	(comment::write_reproducer): Likewise.
      	(conditional::replay_into): Likewise.
      	(conditional::get_successor_blocks): Likewise.
      	(conditional::make_debug_string): Likewise.
      	(conditional::write_reproducer): Likewise.
      	(jump::replay_into): Likewise.
      	(jump::get_successor_blocks): Likewise.
      	(jump::make_debug_string): Likewise.
      	(jump::write_reproducer): Likewise.
      	(return_::replay_into): Likewise.
      	(return_::get_successor_blocks): Likewise.
      	(return_::make_debug_string): Likewise.
      	(return_::write_reproducer): Likewise.
      	(case_::replay_into): Likewise.
      	(case_::write_reproducer): Likewise.
      	(case_::make_debug_string): Likewise.
      	(switch_::replay_into): Likewise.
      	(switch_::get_successor_blocks): Likewise.
      	(switch_::make_debug_string): Likewise.
      	(switch_::write_reproducer): Likewise.
      
      From-SVN: r236223
      David Malcolm committed
    • re PR bootstrap/71071 (ICE --enable-checking=fold : fold check: original tree changed by fold) · 9e37582d
      	PR bootstrap/71071
      	* fold-const.c (fold_checksum_tree): Allow modification
      	of TYPE_ALIAS_SET during folding.
      
      	* gcc.dg/pr71071.c: New test.
      
      From-SVN: r236222
      Jakub Jelinek committed
    • Fix type-dependence and the current instantiation. · 23cb7266
      	PR c++/10200
      	PR c++/69753
      	* pt.c (tsubst_decl): Use uses_template_parms.
      	(instantiate_template_1): Handle non-dependent calls in templates.
      	(value_dependent_expression_p): Handle BASELINK, FUNCTION_DECL.
      	(type_dependent_expression_p): Only consider innermost template	args.
      	(dependent_template_arg_p): Check enclosing class of a template here.
      	(dependent_template_p): Not here.
      	(type_dependent_object_expression_p): New.
      	* typeck.c (finish_class_member_access_expr): Use it.
      	* parser.c (cp_parser_postfix_expression): Use it.
      	(cp_parser_postfix_dot_deref_expression): Use it.  Use comptypes
      	to detect the current instantiation.
      	(cp_parser_lookup_name): Really implement DR 141.
      	* search.c (lookup_field_r): Prefer a dependent using-declaration.
      	(any_dependent_bases_p): Split out from...
      	* name-lookup.c (do_class_using_decl): ...here.
      	* call.c (build_new_method_call_1): Use it.
      	* semantics.c (finish_call_expr): 'this' doesn't make a call dependent.
      	* tree.c (non_static_member_function_p): Remove.
      	* typeck2.c (build_x_arrow): Use dependent_scope_p.
      
      From-SVN: r236221
      Jason Merrill committed
    • Improve diagnostic for forgotten (). · 827e5d3f
      	* parser.c (cp_parser_postfix_dot_deref_expression): Use
      	complete_type_or_else for unknown_type_node, too.
      
      From-SVN: r236220
      Jason Merrill committed
    • tree-vect.h (check_vect): Handle AVX2, remove XOP handling. · a278aa17
      	* gcc.dg/vect/tree-vect.h (check_vect): Handle AVX2,
      	remove XOP handling.
      
      From-SVN: r236216
      Uros Bizjak committed
    • i386.c (ix86_compute_frame_layout, [...]): Use HOST_WIDE_INT_C macro. · 6b6435ca
      	* config/i386/i386.c (ix86_compute_frame_layout, ix86_expand_prologue,
      	ix86_expand_split_stack_prologue): Use HOST_WIDE_INT_C macro.
      	(ix86_split_to_parts): Likewise.  Fix up formatting.
      
      From-SVN: r236215
      Jakub Jelinek committed
    • Cast to unsigned HOST_WIDE_INT in printf format · d8d68c5b
      	* tree-ssa-loop-ivopts.c (create_new_ivs): Cast to
      	unsigned HOST_WIDE_INT with HOST_WIDE_INT_PRINT_UNSIGNED in
      	printf format.
      
      From-SVN: r236214
      H.J. Lu committed
    • nvptx.c (nvptx_mangle_decl_assembler_name): New. · 72b1108c
      	* config/nvptx/nvptx.c (nvptx_mangle_decl_assembler_name): New.
      	(nvptx_name_replacement): Delete.
      	(write_fn_proto, write_fn_proto_from_insn,
      	nvptx_output_call_insn): Remove nvptx_name_replacement call.
      	(TARGET_MANGLE_DECL_ASSEMBLER_NAME): Override.
      	* langhooks.c (add_builtin_funcction_common): Call
      	targetm.mangle_decl_assembler_name.
      
      From-SVN: r236212
      Nathan Sidwell committed
    • libstdc++/71073 add system_header pragma to Debug Mode headers · 541a9b10
      	PR libstdc++/71073
      	* include/debug/bitset: Add #pragma GCC system_header.
      	* include/debug/deque: Likewise.
      	* include/debug/list: Likewise.
      	* include/debug/map: Likewise.
      	* include/debug/set: Likewise.
      	* include/debug/string: Likewise.
      	* include/debug/unordered_map: Likewise.
      	* include/debug/unordered_set: Likewise.
      	* include/debug/vector: Likewise.
      	* include/debug/functions.h: Adjust whitespace.
      
      From-SVN: r236211
      Jonathan Wakely committed
    • nvptx.c (write_fn_proto): Handle BUILT_IN_ATOMIC_COMPARE_EXCHANGE_n oddity. · ac3d02e2
      	gcc/
      	* config/nvptx/nvptx.c (write_fn_proto): Handle
      	BUILT_IN_ATOMIC_COMPARE_EXCHANGE_n oddity.
      
      	gcc/testsuite/
      	* gcc.dg/atomic-noinline-aux.c: Include stddef.h. Fix
      	__atomic_is_lock_free declaration.
      
      From-SVN: r236209
      Nathan Sidwell committed
    • IVOPTS dump fall-out · 7549163c
      	* tree-ssa-loop-ivopts.c (create_new_ivs): Use HOST_WIDE_INT_PRINT_DEC
      	and PRIu64 in printf format.
      
      From-SVN: r236208
      Martin Liska committed
    • [obvious] Typo fix in tree-ssa-loop-ivanon.c · 0f33a54e
      	* tree-ssa-loop-ivanon.c (try_unroll_loop_completely): Typo fix in
      	comment.
      
      From-SVN: r236206
      Kyrylo Tkachov committed
    • [obvious] Fix param name in dump file · f4ca9095
      	* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely):
      	Change --param max-completely-peeled-times to
      	--param max-completely-peel-times in dump file printing.
      
      From-SVN: r236205
      Kyrylo Tkachov committed
    • re PR tree-optimization/42587 (bswap not recognized for memory) · 8ab3bdac
      2016-05-13  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/42587
      	* tree-ssa-math-opts.c (perform_symbolic_merge): Handle BIT_FIELD_REF.
      	(find_bswap_or_nop_1): Likewise.
      	(bswap_replace): Likewise.
      
      	* gcc.dg/optimize-bswapsi-4.c: New testcase.
      
      From-SVN: r236204
      Richard Biener committed
    • Fix ASAN bootstrap (uninitialized variable warning) · 310aba3b
      	* tree-vect-patterns.c (vect_recog_mask_conversion_pattern):
      	Initialize a variable with default value.
      
      From-SVN: r236203
      Martin Liska committed
    • Enhance explanation of halt_on_error. · 26ea7e05
      	* doc/invoke.texi: Enhance explanation of error recovery
      	of sanitizers.
      
      From-SVN: r236202
      Martin Liska committed
    • Enhance dumps of IVOPTS · 623b8e0a
      	* tree-ssa-loop-ivopts.c (avg_loop_niter): Fix coding style.
      	(struct cost_pair): Change inv_expr_id (int) to inv_expr
      	(iv_inv_expr_ent *).
      	(struct iv_inv_expr_ent): Comment struct fields.
      	(sort_iv_inv_expr_ent): New function.
      	(struct ivopts_data): Rename inv_expr_id to max_inv_expr_id.
      	(struct iv_ca): Replace used_inv_expr and num_used_inv_expr with
      	a hash_map between iv_inv_expr_ent and number of usages.
      	(niter_for_exit): Fix coding style.
      	(tree_ssa_iv_optimize_init): Use renamed variable.
      	(determine_base_object): Fix coding style.
      	(alloc_iv): Likewise.
      	(find_interesting_uses_outside): Likewise.
      	(add_candidate_1): Likewise.
      	(add_standard_iv_candidates): Likewise.
      	(set_group_iv_cost): Replace inv_expr_id with inv_expr.
      	(prepare_decl_rtl): Fix coding style.
      	(get_address_cost): Likewise.
      	(get_shiftadd_cost): Likewise.
      	(force_expr_to_var_cost): Likewise.
      	(compare_aff_trees): Likewise.
      	(get_expr_id): Restructure the function.
      	(get_loop_invariant_expr_id): Renamed to
      	get_loop_invariant_expr.
      	(get_computation_cost_at): Replace usage of inv_expr_id with
      	inv_expr.
      	(get_computation_cost): Likewise.
      	(determine_group_iv_cost_generic): Likewise.
      	(determine_group_iv_cost_address): Likewise.
      	(iv_period): Fix coding style.
      	(iv_elimination_compare_lt): Likewise.
      	(may_eliminate_iv): Likewise.
      	(determine_group_iv_cost_cond):  Replace usage of inv_expr_id with
      	inv_expr.
      	(determine_group_iv_costs): Dump invariant expressions.
      	(iv_ca_recount_cost): Use the newly added hash_map.
      	(iv_ca_set_remove_invariants): Fix coding style.
      	(iv_ca_set_add_invariants): Fix coding style.
      	(iv_ca_set_no_cp): Utilize the newly added hash_map for used
      	invariants.
      	(iv_ca_set_cp): Likewise.
      	(iv_ca_new): Initialize the newly added hash_map and remove
      	initialization of fields.
      	(iv_ca_free): Delete the hash_map.
      	(iv_ca_dump): Dump invariant expressions.
      	(iv_ca_extend): Fix coding style.
      	(try_add_cand_for): Likewise.
      	(create_new_ivs): Dump information about # of avg iterations and
      	# of used invariant expressions.
      	(rewrite_use_compare): Fix coding style.
      	(free_loop_data): Set default value for max_inv_expr_id.
      	* g++.dg/tree-ssa/ivopts-3.C: Change test-case to follow
      	the new format of dump output.
      
      From-SVN: r236200
      Martin Liska committed
    • cse.c (rest_of_handle_cse): Use cleanup_cfg returned value cse_cfg_altered computation. · da7674f6
      gcc/
      
      	* cse.c (rest_of_handle_cse): Use cleanup_cfg
      	returned value cse_cfg_altered computation.
      	(rest_of_handle_cse2): Likewise.
      	(rest_of_handle_cse_after_global_opts): Likewise.
      
      gcc/testsuite/
      
      	* gcc.dg/pr71084.c: New test.
      
      From-SVN: r236199
      Ilya Enkovich committed
    • Fix PR target/53440 - handle generic thunks better for TARGET_32BIT. · c959db3d
      
      This partially fixes PR target/53440 atleast in ARM and
      Thumb2 state. I haven't yet managed to get my head around
      rewriting the Thumb1 support yet.
      
      Tested on armhf with a bootstrap and regression test
      with no regressions.
      
      Queued for stage1 now as it isn't technically a regression.
      
      regards
      Ramana
      
      
      2016-05-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
      
              PR target/53440
              * config/arm/arm.c (arm32_output_mi_thunk): New.
              (arm_output_mi_thunk): Rename to arm_thumb1_mi_thunk. Rework
              to split Thumb1 vs TARGET_32BIT functionality.
              (arm_thumb1_mi_thunk): New.
      
      
              * g++.dg/inherit/thunk1.C: Support arm / aarch64.
      
      From-SVN: r236198
      Ramana Radhakrishnan committed
    • Set TARGET_OMIT_STRUCT_RETURN_REG to true · 43203dea
      The reason this caught my eye on aarch64 is because
      the return value register (x0) is not identical to the register in which
      the hidden parameter for AArch64 is set (x8). Thus setting this to true
      seems to be quite reasonable and shaves off 100 odd mov x0, x8's from
      cc1 in a bootstrap build.
      
      I don't expect this to make a huge impact on performance but as they
      say every little counts.  The AAPCS64 is quite explicit about not
      requiring that the contents of x8 be kept live.
      
      Bootstrapped and regression tested on aarch64.
      
      Ok to apply ?
      
      Ramana
      
      gcc/
      * config/aarch64/aarch64.c (TARGET_OMIT_STRUCT_RETURN_REG): Set to
      true.
      
      gcc/testsuite
      
      * gcc.target/aarch64/struct_return.c: New test.
      
      From-SVN: r236197
      Ramana Radhakrishnan committed
    • Fix SEGV in ix86_in_large_data_p (PR target/71080) · 44cb09ea
      	PR target/71080
      	* config/i386/i386.c (ix86_in_large_data_p): Guard against NULL exp.
      
      From-SVN: r236196
      Rainer Orth committed
    • builtins.c (expand_builtin_memcmp): Do not emit the call here. · ee516de9
      	* builtins.c (expand_builtin_memcmp): Do not emit the call here.
      	(expand_builtin_trap): Emit a regular call.
      	(set_builtin_user_assembler_name): Remove obsolete cases.
      	* dse.c (scan_insn): Adjust.
      	* except.c: Include calls.h.
      	(sjlj_emit_function_enter): If DONT_USE_BUILTIN_SETJMP is defined,
      	emit a regular call to setjmp.
      	* expr.c (emit_block_move_hints): Call emit_block_copy_via_libcall.
      	(block_move_libcall_safe_for_call_parm): Use memcpy builtin.
      	(emit_block_move_via_libcall): Delete.
      	(block_move_fn): Delete.
      	(init_block_move_fn): Likewise.
      	(emit_block_move_libcall_fn): Likewise.
      	(emit_block_op_via_libcall): New function.
      	(set_storage_via_libcall): Tidy up and use memset builtin.
      	(block_clear_fn): Delete.
      	(init_block_clear_fn): Likewise.
      	(clear_storage_libcall_fn): Likewise.
      	(expand_assignment): Call emit_block_move_via_libcall.
      	Do not include gt-expr.h.
      	* expr.h (emit_block_op_via_libcall): Declare.
      	(emit_block_copy_via_libcall): New inline function.
      	(emit_block_move_via_libcall): Likewise.
      	(emit_block_comp_via_libcall): Likewise.
      	(block_clear_fn): Delete.
      	(init_block_move_fn): Likewise.
      	(init_block_clear_fn): Likewise.
      	(emit_block_move_via_libcall): Likewise.
      	(set_storage_via_libcall): Add default parameter value.
      	* libfuncs.h (enum libfunc_index): Remove obsolete values.
      	(abort_libfunc): Delete.
      	(memcpy_libfunc): Likewise.
      	(memmove_libfunc): Likewise.
      	(memcmp_libfunc): Likewise.
      	(memset_libfunc): Likewise.
      	(setbits_libfunc): Likewise.
      	(setjmp_libfunc): Likewise.
      	(longjmp_libfunc): Likewise.
      	(profile_function_entry_libfunc): Likewise.
      	(profile_function_exit_libfunc): Likewise.
      	(gcov_flush_libfunc): Likewise.
      	* optabs-libfuncs.c (build_libfunc_function): Set DECL_ARTIFICIAL
      	and DECL_VISIBILITY on the declaration.
      	(init_optabs): Do not initialize obsolete libfuncs.
      	* optabs.c (prepare_cmp_insn): Call emit_block_comp_via_libcall.
      	* tree-core.h (ECF_RET1): Define.
      	(ECF_TM_PURE): Adjust.
      	(ECF_TM_BUILTIN): Likewise.
      	* tree.c (set_call_expr_flags): Deal with ECF_RET1.
      	(build_common_builtin_nodes): Initialize abort builtin.
      	Add ECF_RET1 on memcpy, memmove and memset builtins.
      	Pass final flags for alloca and alloca_with_align builtins.
      	* config/alpha/alpha.c (alpha_init_libfuncs): Do not initialize
      	obsolete builtins.
      	* config/ia64/ia64.c (ia64_vms_init_libfuncs): Likewise.
      	* config/i386/i386.c (ix86_expand_set_or_movmem): Adjust call to
      	set_storage_via_libcall and call emit_block_copy_via_libcall.
      
      From-SVN: r236195
      Eric Botcazou committed
    • Daily bump. · fff9b5dd
      From-SVN: r236189
      GCC Administrator committed
  3. 12 May, 2016 11 commits
    • * fi.po: Update. · 1238eb1c
      From-SVN: r236183
      Joseph Myers committed
    • i386.md (*call_got_x32): Change operand 0 to DImode before it is passed to… · 28c6c0e5
      i386.md (*call_got_x32): Change operand 0 to DImode before it is passed to ix86_output_call_operand.
      
      	* config/i386/i386.md (*call_got_x32): Change operand 0 to
      	DImode before it is passed to ix86_output_call_operand.
      	(*call_value_got_x32): Ditto for operand 1.
      
      From-SVN: r236182
      Uros Bizjak committed
    • [LRA] PR70904, relax the restriction on subreg reload for wide mode · ada2eb68
      2016-05-12  Jiong Wang  <jiong.wang@arm.com>
      
      gcc/
        PR rtl-optimization/70904
        * lra-constraint.c (process_addr_reg): Relax the restriction on
        subreg reload for wide mode.
      
      From-SVN: r236181
      Jiong Wang committed
    • re PR c/70756 (Wrong column number shown for "error: invalid use of flexible array member") · 4f2e1536
      	PR c/70756
      	* c-common.c (pointer_int_sum): Call size_in_bytes_loc instead of
      	size_in_bytes and pass LOC to it.
      
      	* c-decl.c (build_compound_literal): Pass LOC down to
      	c_incomplete_type_error.
      	* c-tree.h (require_complete_type): Adjust declaration.
      	(c_incomplete_type_error): Likewise.
      	* c-typeck.c (require_complete_type): Add location parameter, pass it
      	down to c_incomplete_type_error.
      	(c_incomplete_type_error): Add location parameter, pass it down to
      	error_at.
      	(build_component_ref): Pass location down to c_incomplete_type_error.
      	(default_conversion): Pass location down to require_complete_type.
      	(build_array_ref): Likewise.
      	(build_function_call_vec): Likewise.
      	(convert_arguments): Likewise.
      	(build_unary_op): Likewise.
      	(build_c_cast): Likewise.
      	(build_modify_expr): Likewise.
      	(convert_for_assignment): Likewise.
      	(c_finish_omp_clauses): Likewise.
      
      	* call.c (build_new_op_1): Pass LOC to cp_build_modify_expr.
      	* cp-tree.h (cp_build_modify_expr): Update declaration.
      	(cxx_incomplete_type_error, cxx_incomplete_type_diagnostic): New inline
      	overloads.
      	* cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Pass INPUT_LOCATION to
      	cp_build_modify_expr.
      	* decl2.c (set_guard): Likewise.
      	(handle_tls_init): Likewise.
      	* init.c (perform_member_init): Likewise.
      	(expand_virtual_init): Likewise.
      	(build_new_1): Likewise.
      	(build_vec_delete_1): Likewise.
      	(get_temp_regvar): Likewise.
      	(build_vec_init): Likewise.
      	* method.c (do_build_copy_assign): Likewise.
      	(assignable_expr): Likewise.
      	* semantics.c (finish_omp_for): Likewise.
      	* typeck.c (cp_build_binary_op): Pass LOCATION to pointer_diff and
      	cp_pointer_int_sum.
      	(cp_pointer_int_sum): Add location parameter.  Pass it down to
      	pointer_int_sum.
      	(pointer_diff): Add location parameter.  Use it.
      	(build_modify_expr): Pass location down to cp_build_modify_expr.
      	(cp_build_modify_expr): Add location parameter.  Use it.
      	(build_x_modify_expr): Pass location down to cp_build_modify_expr.
      	* typeck2.c (cxx_incomplete_type_diagnostic,
      	cxx_incomplete_type_error): Add location parameter.
      
      	* langhooks-def.h (lhd_incomplete_type_error): Adjust declaration.
      	* langhooks.c (lhd_incomplete_type_error): Add location parameter.
      	* langhooks.h (incomplete_type_error): Likewise.
      	* tree.c (size_in_bytes_loc): Renamed from size_in_bytes.  Add location
      	parameter, pass it down to incomplete_type_error.
      	* tree.h (size_in_bytes): New inline overload.
      	(size_in_bytes_loc): Renamed from size_in_bytes.
      
      	* c-c++-common/pr70756-2.c: New test.
      	* c-c++-common/pr70756.c: New test.
      
      From-SVN: r236180
      Marek Polacek committed
    • Add dg-require-atomic-builtins to test · 068b220e
      	PR libstdc++/71081
      	* testsuite/experimental/memory_resource/1.cc: Require atomics.
      
      From-SVN: r236177
      Jonathan Wakely committed
    • re PR tree-optimization/71059 (gcc ICE at -O3 on valid code on x86_64-linux-gnu… · 1ef33ef3
      re PR tree-optimization/71059 (gcc ICE at -O3 on valid code on x86_64-linux-gnu in "vn_nary_op_insert_into")
      
      2016-05-12  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/71059
      	* tree-ssa-pre.c (phi_translate_1): Fully fold translated
      	nary before looking up or entering the expression into the VN
      	hashes.
      	* tree-ssa-sccvn.c (vn_nary_build_or_lookup): Fix comment typo.
      	Make sure to re-use NARYs without result as inserted by
      	phi-translation.
      
      	* gcc.dg/torture/pr71059.c: New testcase.
      
      From-SVN: r236175
      Richard Biener committed
    • re PR middle-end/71062 (r235622 and restrict pointers) · 763baff6
      2016-05-12  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/71062
      	* tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
      	field.
      	* tree-ssa-structalias.c (set_uids_in_ptset): Set vars_contains_restrict
      	if the var is a restrict tag.
      	* tree-ssa-alias.c (ptrs_compare_unequal): If vars_contains_restrict
      	do not disambiguate pointers against it.
      	(dump_points_to_solution): Re-structure and adjust for new
      	vars_contains_restrict flag.
      	* gimple-pretty-print.c (pp_points_to_solution): Likewise.
      
      	* gcc.dg/torture/pr71062.c: New testcase.
      
      From-SVN: r236174
      Richard Biener committed
    • Document ASAN_OPTIONS="halt_on_error" env variable. · cf48d8c4
      	* doc/invoke.texi: Explain connection between -fsanitize-recover=address
      	and ASAN_OPTIONS="halt_on_error=1".
      
      From-SVN: r236172
      Martin Liska committed
    • re PR tree-optimization/71006 (ICE: verify_gimple failed (error: type mismatch… · c4ec1243
      re PR tree-optimization/71006 (ICE: verify_gimple failed (error: type mismatch in conditional expression) w/ -O1 -ftree-loop-vectorize)
      
      gcc/
      
      	PR tree-optimization/71006
      	* tree-vect-loop.c (vect_determine_vectorization_factor): Don't
      	consider COND_EXPR as a mask producer.
      
      gcc/testsuite/
      
      	PR tree-optimization/71006
      	* gcc.dg/pr71006.c: New test.
      
      From-SVN: r236171
      Ilya Enkovich committed
    • re PR driver/71063 (ICE: Segmentation fault with --help="^") · a5fbf76d
      	PR driver/71063
      	* opts.c (common_handle_option): Detect missing argument for --help^.
      
      	* gcc.dg/opts-7.c: New test.
      
      From-SVN: r236170
      Marek Polacek committed
    • [ARM] PR target/70830: Avoid POP-{reglist}^ when returning from interrupt handlers · 5acc47a4
      	PR target/70830
      	* config/arm/arm.c (arm_output_multireg_pop): Avoid POP instruction
      	when popping the PC and within an interrupt handler routine.
      	Add missing tab to output of "ldmfd".
      	(output_return_instruction): Output LDMFD with SP update rather
      	than POP when returning from interrupt handler.
      
      	* gcc.target/arm/interrupt-1.c: Change dg-compile to dg-assemble.
      	Add -save-temps to dg-options.
      	Scan for ldmfd rather than pop instruction.
      	* gcc.target/arm/interrupt-2.c: Likewise.
      	* gcc.target/arm/pr70830.c: New test.
      
      From-SVN: r236169
      Kyrylo Tkachov committed