Commit graph

146155 commits

Author SHA1 Message Date
Matthew Wahab
e9024729e2 [AArch64] Remove an unused reload hook.
* config/aarch64/aarch64.h (LEGITIMIZE_RELOAD_ADDRESS): Remove.
    * config/aarch64/arch64-protos.h
    (aarch64_legitimize_reload_address): Remove.
    * config/aarch64/aarch64.c (aarch64_legitimize_reload_address):
    Remove.

From-SVN: r236266
2016-05-16 08:46:00 +00:00
Jiong Wang
921d1e735e [testsuite] PR70227, skip g++.dg/lto/pr69589_0.C on targets without -rdynamic support
PR testsuite/70227
  * g++.dg/lto/pr69589_0.C: Skip arm and aarch64 bare-metal targets.

From-SVN: r236265
2016-05-16 08:11:42 +00:00
GCC Administrator
aab2c65949 Daily bump.
From-SVN: r236263
2016-05-16 00:16:20 +00:00
Harald Anlauf
228eb42aab re PR fortran/69603 (ICE: segfault with -fimplicit-none and proc_ptr_comp_24.f90)
2016-05-15  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/69603
	* interface.c (compare_parameter): Check for non-NULL pointer.

2016-05-15  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/69603
	* gfortran.dg/pr69603.f90: New testcase.

From-SVN: r236253
2016-05-15 18:34:57 +00:00
GCC Administrator
3a33c74b35 Daily bump.
From-SVN: r236248
2016-05-15 00:16:18 +00:00
Fritz Reese
785abfd3ff dec_union_4.f90: Fix endian issue.
2016-05-14  Fritz Reese  <fritzoreese@gmail.com>

	* gfortran.dg/dec_union_4.f90: Fix endian issue.

2016-05-14  Fritz Reese  <fritzoreese@gmail.com>

	* gfortran.texi: Update example of DEC UNION extension.

From-SVN: r236242
2016-05-14 16:00:35 +00:00
Fritz Reese
e75eb64fdf re PR fortran/71047 (Allocatable component of INTENT(OUT) dummy not set correctly)
2016-05-14  Fritz Reese <fritzoreese@gmail.com>

	PR fortran/71047
	* expr.c (gfc_default_initializer): Avoid extra component refs in
	constructors for derived types and classes.

2016-05-14  Fritz Reese <fritzoreese@gmail.com>
	PR fortran/71047
	* gfortran.dg/pr71047.f08: New test.

From-SVN: r236241
2016-05-14 15:29:13 +00:00
Uros Bizjak
3a65d8d709 re PR target/71097 (Additional testsuite failures with -mcmodel=medium)
PR target/71097
	* config/i386/i386.md (*movtf_internal): Before register allocation,
	do not allow FP constants for CM_MEDIUM memory model, allow only
	standard FP constants for CM_LARGE and CM_LARGE_PIC models.
	(*movxf_internal): Ditto.
	(*movdf_internal): Ditto.
	(*movsf_internal): Ditto.

From-SVN: r236240
2016-05-14 15:22:45 +02:00
Uros Bizjak
377eaca734 i * gcc.dg/vect/pr66636.c (foo): Add __attribute__((noinline,noclone)).
From-SVN: r236238
2016-05-14 11:07:13 +02:00
GCC Administrator
5fe79728ff Daily bump.
From-SVN: r236237
2016-05-14 00:16:21 +00:00
Segher Boessenkool
85ca20c951 combine: Don't call extract_left_shift with count < 0 (PR67483)
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
2016-05-14 01:01:40 +02:00
Joseph Myers
aa4b467b68 Implement C11 DR#423 resolution (ignore function return type qualifiers).
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
2016-05-13 22:35:39 +01:00
Martin Sebor
653fb4a289 c++/60049 - Right and left shift undefined behavior not an error in a constexpr
Add new test.

From-SVN: r236225
2016-05-13 14:55:26 -06:00
Ian Lance Taylor
6eaba1b066 escape: Implement the discovery phase.
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
2016-05-13 20:42:36 +00:00
David Malcolm
54ece5e295 jit: use FINAL and OVERRIDE throughout
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
2016-05-13 20:27:50 +00:00
Jakub Jelinek
9e37582dfb re PR bootstrap/71071 (ICE --enable-checking=fold : fold check: original tree changed by fold)
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
2016-05-13 22:24:22 +02:00
Jason Merrill
23cb726630 Fix type-dependence and the current instantiation.
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
2016-05-13 15:18:35 -04:00
Jason Merrill
827e5d3f70 Improve diagnostic for forgotten ().
* parser.c (cp_parser_postfix_dot_deref_expression): Use
	complete_type_or_else for unknown_type_node, too.

From-SVN: r236220
2016-05-13 15:17:47 -04:00
Uros Bizjak
a278aa17f4 tree-vect.h (check_vect): Handle AVX2, remove XOP handling.
* gcc.dg/vect/tree-vect.h (check_vect): Handle AVX2,
	remove XOP handling.

From-SVN: r236216
2016-05-13 19:27:13 +02:00
Jakub Jelinek
6b6435ca5c i386.c (ix86_compute_frame_layout, [...]): Use HOST_WIDE_INT_C macro.
* 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
2016-05-13 19:26:53 +02:00
H.J. Lu
d8d68c5bd5 Cast to unsigned HOST_WIDE_INT in printf format
* 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
2016-05-13 09:51:27 -07:00
Nathan Sidwell
72b1108c3e nvptx.c (nvptx_mangle_decl_assembler_name): New.
* 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
2016-05-13 15:51:24 +00:00
Jonathan Wakely
541a9b104b libstdc++/71073 add system_header pragma to Debug Mode headers
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
2016-05-13 15:47:46 +01:00
Nathan Sidwell
ac3d02e247 nvptx.c (write_fn_proto): Handle BUILT_IN_ATOMIC_COMPARE_EXCHANGE_n oddity.
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
2016-05-13 12:57:50 +00:00
Martin Liska
7549163c15 IVOPTS dump fall-out
* tree-ssa-loop-ivopts.c (create_new_ivs): Use HOST_WIDE_INT_PRINT_DEC
	and PRIu64 in printf format.

From-SVN: r236208
2016-05-13 12:51:29 +00:00
Kyrylo Tkachov
0f33a54eaf [obvious] Typo fix in tree-ssa-loop-ivanon.c
* tree-ssa-loop-ivanon.c (try_unroll_loop_completely): Typo fix in
	comment.

From-SVN: r236206
2016-05-13 12:36:01 +00:00
Kyrylo Tkachov
f4ca909548 [obvious] Fix param name in dump file
* 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
2016-05-13 12:33:55 +00:00
Richard Biener
8ab3bdac33 re PR tree-optimization/42587 (bswap not recognized for memory)
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
2016-05-13 12:27:18 +00:00
Martin Liska
310aba3bbe Fix ASAN bootstrap (uninitialized variable warning)
* tree-vect-patterns.c (vect_recog_mask_conversion_pattern):
	Initialize a variable with default value.

From-SVN: r236203
2016-05-13 11:16:59 +00:00
Martin Liska
26ea7e0523 Enhance explanation of halt_on_error.
* doc/invoke.texi: Enhance explanation of error recovery
	of sanitizers.

From-SVN: r236202
2016-05-13 11:12:35 +00:00
Martin Liska
623b8e0a86 Enhance dumps of IVOPTS
* 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
2016-05-13 10:44:17 +00:00
Ilya Enkovich
da7674f6a6 cse.c (rest_of_handle_cse): Use cleanup_cfg returned value cse_cfg_altered computation.
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
2016-05-13 09:55:58 +00:00
Ramana Radhakrishnan
c959db3d3b Fix PR target/53440 - handle generic thunks better for TARGET_32BIT.
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
2016-05-13 09:32:29 +00:00
Ramana Radhakrishnan
43203dea1a Set TARGET_OMIT_STRUCT_RETURN_REG to true
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
2016-05-13 09:23:28 +00:00
Rainer Orth
44cb09ea6b Fix SEGV in ix86_in_large_data_p (PR target/71080)
PR target/71080
	* config/i386/i386.c (ix86_in_large_data_p): Guard against NULL exp.

From-SVN: r236196
2016-05-13 09:08:15 +00:00
Eric Botcazou
ee516de9b3 builtins.c (expand_builtin_memcmp): Do not emit the call here.
* 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
2016-05-13 08:49:20 +00:00
GCC Administrator
fff9b5ddb7 Daily bump.
From-SVN: r236189
2016-05-13 00:16:17 +00:00
Joseph Myers
1238eb1ca9 * fi.po: Update.
From-SVN: r236183
2016-05-12 22:00:28 +01:00
Uros Bizjak
28c6c0e511 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
2016-05-12 20:34:54 +02:00
Jiong Wang
ada2eb687f [LRA] PR70904, relax the restriction on subreg reload for wide mode
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
2016-05-12 17:00:52 +00:00
Marek Polacek
4f2e1536a3 re PR c/70756 (Wrong column number shown for "error: invalid use of flexible array member")
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
2016-05-12 15:28:08 +00:00
Jonathan Wakely
068b220e52 Add dg-require-atomic-builtins to test
PR libstdc++/71081
	* testsuite/experimental/memory_resource/1.cc: Require atomics.

From-SVN: r236177
2016-05-12 15:08:45 +01:00
Richard Biener
1ef33ef304 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
2016-05-12 13:46:26 +00:00
Richard Biener
763baff6f5 re PR middle-end/71062 (r235622 and restrict pointers)
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
2016-05-12 13:05:13 +00:00
Martin Liska
cf48d8c4dc Document ASAN_OPTIONS="halt_on_error" env variable.
* doc/invoke.texi: Explain connection between -fsanitize-recover=address
	and ASAN_OPTIONS="halt_on_error=1".

From-SVN: r236172
2016-05-12 12:36:16 +00:00
Ilya Enkovich
c4ec12434d 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
2016-05-12 11:27:49 +00:00
Marek Polacek
a5fbf76d42 re PR driver/71063 (ICE: Segmentation fault with --help="^")
PR driver/71063
	* opts.c (common_handle_option): Detect missing argument for --help^.

	* gcc.dg/opts-7.c: New test.

From-SVN: r236170
2016-05-12 10:59:11 +00:00
Kyrylo Tkachov
5acc47a40d [ARM] PR target/70830: Avoid POP-{reglist}^ when returning from interrupt handlers
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
2016-05-12 09:56:46 +00:00
Jakub Jelinek
3cd638421e i386.md (isa): Add x64_avx512dq, enable if TARGET_64BIT && TARGET_AVX512DQ.
* config/i386/i386.md (isa): Add x64_avx512dq, enable if
	TARGET_64BIT && TARGET_AVX512DQ.
	* config/i386/sse.md (*vec_extract<mode>): Add avx512bw alternatives.
	(*vec_extract<PEXTR_MODE12:mode>_zext): Add avx512bw alternative.
	(*vec_extract<ssevecmodelower>_0, *vec_extractv4si_0_zext,
	*vec_extractv2di_0_sse): Use v constraint instead of x constraint.
	(*vec_extractv4si): Add avx512dq and avx512bw alternatives.
	(*vec_extractv4si_zext): Add avx512dq alternative.
	(*vec_extractv2di_1): Add x64_avx512dq and avx512bw alternatives,
	use v instead of x constraint in other alternatives where possible.

	* gcc.target/i386/avx512bw-vpextr-1.c: New test.
	* gcc.target/i386/avx512dq-vpextr-1.c: New test.

From-SVN: r236167
2016-05-12 10:35:20 +02:00
Jakub Jelinek
0247b635c7 sse.md (sse2_loadld): Use v instead of x constraint in alternatives 0,1,4.
* config/i386/sse.md (sse2_loadld): Use v instead of x
	constraint in alternatives 0,1,4.

From-SVN: r236166
2016-05-12 10:34:38 +02:00