Commit Graph

148140 Commits

Author SHA1 Message Date
Richard Biener 2a99de7b1e re PR middle-end/77436 (Incorrect constant result for summing loop inserted)
2016-09-01  Richard Biener  <rguenther@suse.de>

	PR middle-end/77436
	* tree-chrec.c (tree_fold_binomial): Use widest_int, properly
	check whether the result fits the desired result type.

	* gcc.dg/torture/pr77436.c: New testcase.

From-SVN: r239937
2016-09-01 13:38:25 +00:00
Nathan Sidwell bc4ec5430b * config/nvptx/nvptx.md (cbranch<mode>4): Op 2 can be const.
From-SVN: r239934
2016-09-01 12:07:16 +00:00
Wilco Dijkstra 491ec06036 This patch adds legitimize_address_displacement hook so that stack accesses...
This patch adds legitimize_address_displacement hook so that stack accesses
with large offsets are split into a more efficient sequence.  Unaligned and
TI/TFmode use a 256-byte range, byte and halfword accesses use a 4KB range,
wider accesses use a 16KB range to maximise the available addressing range
and increase opportunities to share the base address.

int f(int x)
{
  int arr[8192];
  arr[4096] = 0;
  arr[6000] = 0;
  arr[7000] = 0;
  arr[8191] = 0;
  return arr[x];
}

Now generates:

  sub   sp, sp, #32768
  add   x1, sp, 16384
  str   wzr, [x1]
  str   wzr, [x1, 7616]
  str   wzr, [x1, 11616]
  str   wzr, [x1, 16380]
  ldr   w0, [sp, w0, sxtw 2]
  add   sp, sp, 32768
  ret

    gcc/
	* config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
	New function.
	(TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT): Define.

From-SVN: r239923
2016-09-01 11:34:49 +00:00
Senthil Kumar Selvaraj f79d87865b Fix more bogus testsuite failures for avr.
gcc/testsuite/

2016-09-01  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>

        * gcc.dg/pr64252.c: Require int32plus.
        * gcc.dg/pr66299-1.c: Likewise.
        * gcc.dg/pr66299-2.c: Likewise.
        * gcc.dg/torture/20131115-1.c: Skip for avr.

From-SVN: r239921
2016-09-01 11:02:55 +00:00
Kyrylo Tkachov b06335f93e [AArch64] Add ANDS pattern for CMP+ZERO_EXTEND
* config/aarch64/aarch64.md (*ands<mode>_compare0): New pattern.
	* config/aarch64/aarch64.c (aarch64_select_cc_mode): Return CC_NZmode
	for comparisons of integer ZERO_EXTEND against zero.

	* gcc.target/aarch64/ands_3.c: New test.

From-SVN: r239919
2016-09-01 09:03:52 +00:00
Eric Botcazou 3409207a44 i386.c (ix86_option_override_internal): Also disable the STV pass if -mstackrealign is enabled.
* config/i386/i386.c (ix86_option_override_internal): Also disable the
	STV pass if -mstackrealign is enabled.

From-SVN: r239916
2016-09-01 07:55:00 +00:00
Jason Merrill e5b9932bbd PR c++/57728 - adjust testcase
* g++.dg/cpp0x/explicit12.C: Add -save-temps.

From-SVN: r239913
2016-08-31 21:55:47 -04:00
David Malcolm 089af25cb6 C: Fix missing spaces in 'struct' fix-it hints
In r237714 I added fix-it hints to the C frontend for missing "struct"
keywords e.g.:

spellcheck-typenames.c:69:1: error: unknown type name ‘foo_t’; use
‘struct’ keyword to refer to the type
 foo_t *foo_ptr;
 ^~~~~
 struct 

However when using the (not yet in trunk) option
 -fdiagnostics-generate-patch,
the generated patch is nonsensical:

  -foo_t *foo_ptr;
  +structfoo_t *foo_ptr;

Fix the fix-its by adding a trailing space to each one, giving:

  -foo_t *foo_ptr;
  +struct foo_t *foo_ptr;

gcc/c/ChangeLog:
	* c-parser.c (c_parser_declaration_or_fndef): Add trailing space
	to the insertion fixits for "struct", "union", and "enum".

From-SVN: r239912
2016-09-01 00:50:54 +00:00
GCC Administrator 76e6cb8315 Daily bump.
From-SVN: r239911
2016-09-01 00:16:16 +00:00
Ilya Verbin 212720907a Fix detection of AVX512IFMA in host_detect_local_cpu
gcc/
	* config/i386/driver-i386.c (host_detect_local_cpu): Fix detection of
	AVX512IFMA.

From-SVN: r239908
2016-08-31 19:49:35 +00:00
David Malcolm 3d4f9f878d diagnostic-show-locus.c: handle fixits on lines outside the regular ranges
The diagnostic_show_locus implementation determines the set
of line spans that need printing based on the ranges within the
rich_location (in layout::calculate_line_spans).

Currently this doesn't take into account fix-it hints, and hence
we fail to print fix-it hints that are on lines outside of
those ranges.

This patch updates the implementation to take fix-it hints into
account when calculating the pertinent line spans, so that such fix-it
hints do get printed.  It also adds some validation, to ensure that
we don't attempt to print fix-its hints affecting a different source
file.

gcc/ChangeLog:
	* diagnostic-show-locus.c (class layout): Add field m_fixit_hints.
	(layout_range::intersects_line_p): New method.
	(test_range_contains_point_for_single_point): Rename to...
	(test_layout_range_for_single_point): ...this, and add testing
	for layout_range::intersects_line_p.
	(test_range_contains_point_for_single_line): Rename to...
	(test_layout_range_for_single_line): ...this,  and add testing
	for layout_range::intersects_line_p.
	(test_range_contains_point_for_multiple_lines): Rename to...
	(test_layout_range_for_multiple_lines): ...this,  and add testing
	for layout_range::intersects_line_p.
	(layout::layout): Populate m_fixit_hints.
	(layout::get_expanded_location): Handle the case of a line-span
	for a fix-it hint.
	(layout::validate_fixit_hint_p): New method.
	(get_line_span_for_fixit_hint): New function.
	(layout::calculate_line_spans): Add spans for fixit-hints.
	(layout::should_print_annotation_line_p): New method.
	(layout::print_any_fixits): Drop param "richloc", instead using
	validated fixits in m_fixit_hints.  Add "const" to hint pointers.
	(diagnostic_show_locus): Avoid printing blank annotation lines.
	(selftest::test_diagnostic_context::test_diagnostic_context):
	Initialize show_column and start_span.
	(selftest::test_diagnostic_context::start_span_cb): New static
	function.
	(selftest::test_diagnostic_show_locus_fixit_lines): New function.
	(selftest::diagnostic_show_locus_c_tests): Update for function
	renamings.  Call test_diagnostic_show_locus_fixit_lines.

libcpp/ChangeLog:
	* include/line-map.h (class fixit_remove): Remove stray decl.
	(fixit_hint::affects_line_p): Make const.
	(fixit_insert::affects_line_p): Likewise.
	(fixit_replace::affects_line_p): Likewise.
	* line-map.c (fixit_insert::affects_line_p): Likewise.
	(fixit_replace::affects_line_p): Likewise.

From-SVN: r239906
2016-08-31 18:54:55 +00:00
Jakub Jelinek d12a0b5aab re PR tree-optimization/77352 (ICE: verify_ssa failed)
PR fortran/77352
	* trans-openmp.c (gfc_trans_omp_parallel_workshare): Always add a
	BIND_EXPR with BLOCK around what gfc_trans_omp_workshare returns.

	* gfortran.dg/gomp/pr77352.f90: New test.

From-SVN: r239904
2016-08-31 20:42:55 +02:00
Jakub Jelinek f25f40be27 re PR fortran/77374 (ICE in resolve_omp_atomic, at fortran/openmp.c:3949)
PR fortran/77374
	* parse.c (parse_omp_oacc_atomic): Copy over cp->ext.omp_atomic
	to cp->block->ext.omp_atomic.
	* resolve.c (gfc_resolve_blocks): Assert block with one or two
	EXEC_ASSIGNs for EXEC_*_ATOMIC.
	* openmp.c (resolve_omp_atomic): Don't assert one or two
	EXEC_ASSIGNs, instead return quietly for EXEC_NOPs and otherwise
	error unexpected statements.

	* gfortran.dg/gomp/pr77374.f08: New test.

From-SVN: r239903
2016-08-31 20:42:08 +02:00
Marc Glisse 9ff6fb6ede match.pd: Revert a * (1 << b) relaxation.
2016-08-31  Marc Glisse  <marc.glisse@inria.fr>

	PR tree-optimization/73714
gcc/
	* match.pd (a * (1 << b)): Revert change from 2016-05-23.
gcc/testsuite/
	* gcc.dg/tree-ssa/pr73714.c: New test.

From-SVN: r239902
2016-08-31 18:22:58 +00:00
Jerry DeLisle 8e95a67408 re PR libfortran/77393 (Revision r237735 changed the behavior of F0.0)
2016-08-31  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/77393
	* gfortran.dg/fmt_f0_2.f90: New test.

From-SVN: r239901
2016-08-31 17:54:32 +00:00
Jerry DeLisle d775696046 re PR libfortran/77393 (Revision r237735 changed the behavior of F0.0)
2016-08-31  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/77393
	* io/write.c (kind_from_size): New function to calculate required buffer
	size based on kind type. (select_buffer, select_string): Use new
	function. (write_float_0, write_real, write_real_g0, write_complex):
	Adjust calls to pass parameters needed by new function.

From-SVN: r239900
2016-08-31 17:45:26 +00:00
Jonathan Wakely 7663cae227 Constrain std::shared_ptr assignment and resetting
* include/bits/shared_ptr.h (_Assignable): New alias template.
	(shared_ptr::operator=(const shared_ptr<_Tp1>&))
	(shared_ptr::operator=(shared_ptr<_Tp1>&&))
	(shared_ptr::operator=(unique_ptr<_Tp1>&&)): Constrain with
	_Assignable.
	* include/bits/shared_ptr_base.h (_Assignable): New alias template.
	(__shared_ptr::operator=(const __shared_ptr<_Tp1>&))
	(__shared_ptr::operator=(__shared_ptr<_Tp1>&&))
	(__shared_ptr::operator=(unique_ptr<_Tp1>&&)): Constrain with
	_Assignable.
	(__shared_ptr::reset(_Tp1*), __shared_ptr::reset(_Tp1*, _Deleter))
	(__shared_ptr::reset(_Tp1*, _Deleter, _Alloc)): Constrain with
	_Convertible.
	* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Change dg-error to
	match on any line.
	* testsuite/20_util/shared_ptr/cons/void_neg.cc: Likewise.
	* testsuite/20_util/shared_ptr/assign/sfinae.cc: New test.
	* testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc: Update
	expected errors. Remove unnecessary code.
	* testsuite/20_util/shared_ptr/modifiers/reset_sfinae.cc: New test.

From-SVN: r239898
2016-08-31 17:57:20 +01:00
Jonathan Wakely e46d22a821 Move comparison object in map/set move assignment
* include/bits/stl_tree.h (_Rb_tree::operator=(_Rb_tree&&)): Move
	comparison object.
	* testsuite/23_containers/set/move_comparison.cc: New test.

From-SVN: r239897
2016-08-31 17:57:14 +01:00
Jonathan Wakely 3625264fb3 Add test accidentally not added in revision r239121
* testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc:
	New test.

From-SVN: r239896
2016-08-31 17:57:09 +01:00
Ian Lance Taylor fc4eaccf10 runtime: make gsignal stack at least SIGSTKSZ bytes
The default stack size for the gsignal goroutine, 32K, is not enough on
    ia64.  Make sure that the stack size is at least SIGSTKSZ.
    
    Reviewed-on: https://go-review.googlesource.com/28224

From-SVN: r239894
2016-08-31 13:59:03 +00:00
David Malcolm 96f14006f5 selftest.c: avoid explicit "selftest::" qualifiers
gcc/ChangeLog:
	* selftest.c: Move "namespace selftest {" to top of file,
	removing explicit "selftest::" qualifiers throughout.

From-SVN: r239892
2016-08-31 13:22:43 +00:00
Marc Glisse c6b0037d0e [x86] Don't use builtins for unaligned load/store
2016-08-31  Marc Glisse  <marc.glisse@inria.fr>

gcc/
	* config/i386/avx512fintrin.h (__m512_u, __m512i_u, __m512d_u):
	New types.
	(_mm512_loadu_pd, _mm512_storeu_pd, _mm512_loadu_ps,
	_mm512_storeu_ps, _mm512_loadu_si512, _mm512_storeu_si512):
	Replace builtin with vector extension.
	* config/i386/avxintrin.h (__m256_u, __m256i_u, __m256d_u):
	New types.
	(_mm256_loadu_pd, _mm256_storeu_pd, _mm256_loadu_ps,
	_mm256_storeu_ps, _mm256_loadu_si256, _mm256_storeu_si256):
	Replace builtin with vector extension.
	* config/i386/emmintrin.h (__m128i_u, __m128d_u): New types.
	(_mm_loadu_pd, _mm_storeu_pd, _mm_loadu_si128, _mm_storeu_si128):
	Replace builtin with vector extension.
	* config/i386/xmmintrin.h (__m128_u): New type.
	(_mm_loadu_ps, _mm_storeu_ps): Replace builtin with vector extension.
	(_mm_load_ps, _mm_store_ps): Simplify.

gcc/testsuite/
	* gcc.target/i386/pr59539-2.c: Adapt options.
	* gcc.target/i386/avx512f-vmovdqu32-1.c: Relax expected asm.

From-SVN: r239889
2016-08-31 11:56:37 +00:00
Eric Botcazou c1105fa7e4 * config/arm/arm.c (thumb1_size_rtx_costs) <SET>: Add missing guard.
From-SVN: r239888
2016-08-31 10:09:00 +00:00
Paul Thomas 1a576b1332 re PR testsuite/77418 (SELECT TYPE associating entity can be (de)allocated)
2016-08-31  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/77418
	* gfortran.dg/dtio_5.f90: Remove the non-standard deallocation
	of the associate entity and replace with a pointer to the
	intended item on the stack.

From-SVN: r239881
2016-08-31 07:50:44 +00:00
Paul Thomas e73d3ca6d1 [multiple changes]
2016-08-31  Paul Thomas  <pault@gcc.gnu.org>
	Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/48298

	* decl.c (access_attr_decl): Include case INTERFACE_DTIO as
	appropriate.
	* gfortran.h : Add INTRINSIC_FORMATTED and
	INTRINSIC_UNFORMATTED to gfc_intrinsic_op. Add INTERFACE_DTIO
	to interface type. Add new enum 'dtio_codes'. Add bitfield
	'has_dtio_procs' to symbol_attr. Add prototypes
	'gfc_check_dtio_interfaces' and 'gfc_find_specific_dtio_proc'.
	* interface.c (dtio_op): New function.
	(gfc_match_generic_spec): Match generic DTIO interfaces.
	(gfc_match_interface): Treat DTIO interfaces in the same way as
	(gfc_current_interface_head): Add INTERFACE_DTIO appropriately.
	(check_dtio_arg_TKR_intent): New function.
	(check_dtio_interface1): New function.
	(gfc_check_dtio_interfaces): New function.
	(gfc_find_specific_dtio_proc): New function.
	* io.c : Add FMT_DT to format_token.
	(format_lex): Handle DTIO formatting.
	* match.c (gfc_op2string): Add DTIO operators.
	* resolve.c (derived_inaccessible): Ignore pointer components
	to enclosing derived type.
	(resolve_transfer): Resolve transfers that involve DTIO.
	procedures. Find the specific subroutine for the transfer and
	use its existence to over-ride some of the constraints on
	derived types. If the transfer is recursive, require that the
	subroutine be so qualified.
	(dtio_procs_present): New function.
	(resolve_fl_namelist): Remove inhibition of polymorphic objects
	in namelists if DTIO read and write subroutines exist. Likewise
	for derived types.
	(resolve_types): Invoke 'gfc_verify_dtio_procedures'.
	* symbol.c : Set 'dtio_procs' using 'minit'.
	* trans-decl.c (gfc_finish_var_decl): If a derived-type/class
	object is associated with DTIO procedures, make it TREE_STATIC.
	* trans-expr.c (gfc_get_vptr_from_expr): If the expression
	drills down to a PARM_DECL, extract the vptr correctly.
	(gfc_conv_derived_to_class): Check 'info' in the test for
	'useflags'. If the se expression exists and is a pointer, use
	it as the class _data.
	* trans-io.c : Add IOCALL_X_DERIVED to iocall and the function
	prototype. Likewise for IOCALL_SET_NML_DTIO_VAL.
	(set_parameter_tree): Renamed from 'set_parameter_const', now
	returns void and has new tree argument. Calls modified to match
	new interface.
	(transfer_namelist_element): Transfer DTIO procedure pointer
	and vpointer using the new function IOCALL_SET_NML_DTIO_VAL.
	(get_dtio_proc): New function.
	(transfer_expr): Add new argument for the vptr field of class
	objects. Add the code to call the specific DTIO proc, convert
	derived types to class and call IOCALL_X_DERIVED.
	(trans_transfer): Add BT_CLASS to structures for treatment by
	the scalarizer. Obtain the vptr for the dynamic type, both for
	scalar and array transfer.

2016-08-31  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
	Paul Thomas  <pault@gcc.gnu.org>

	PR libgfortran/48298
	* gfortran.map : Flag _st_set_nml_dtio_var and
	_gfortran_transfer_derived.
	* io/format.c (format_lex): Detect DTIO formatting.
	(parse_format_list): Parse the DTIO format.
	(next_format): Include FMT_DT.
	* io/format.h : Likewise. Add structure 'udf' to structure
	'fnode' to carry the IOTYPE string and the 'vlist'.
	* io/io.h : Add prototypes for the two types of DTIO subroutine
	and a typedef for gfc_class. Also, add to 'namelist_type'
	fields for the pointer to the DTIO procedure and the vtable.
	Add fields to struct st_parameter_dt for pointers to the two
	types of DTIO subroutine. Add to gfc_unit DTIO specific fields.
	(internal_proto): Add prototype for 'read_user_defined' and
	'write_user_defined'.
	* io/list_read.c (check_buffers): Use the 'current_unit' field.
	(unget_char): Likewise.
	(eat_spaces): Likewise.
	(list_formatted_read_scalar): For case BT_CLASS, call the DTIO
	procedure.
	(nml_get_obj_data): Likewise when DTIO procedure is present,.
	* io/transfer.c : Export prototypes for 'transfer_derived' and
	'transfer_derived_write'.
	(unformatted_read): For case BT_CLASS, call the DTIO procedure.
	(unformatted_write): Likewise.
	(formatted_transfer_scalar_read): Likewise.
	(formatted_transfer_scalar_write: Likewise.
	(transfer_derived): New function.
	(data_transfer_init): Set last_char if no child_dtio.
	(finalize_transfer): Return if child_dtio set.
	(st_write_done): Add condition for child_dtio not set.
	Add extra arguments for st_set_nml_var prototype.
	(set_nml_var): New function that contains the contents of the
	old version of st_set_nml_var. Also sets the 'dtio_sub' and
	'vtable' fields of the 'nml' structure.
	(st_set_nml_var): Now just calls set_nml_var with 'dtio_sub'
	and 'vtable' NULL.
	(st_set_nml_dtio_var): New function that calls set_nml_var.
	* io/unit.c (get_external_unit): If the found unit child_dtio
	is non zero, don't do any mutex locking/unlocking.  Just
	return the unit.
	* io/unix.c (tempfile_open): Revert to C style comment.
	* io/write.c (list_formatted_write_scalar): Do the DTIO call.
	(nml_write_obj): Add BT_CLASS and do the DTIO call.

2016-08-31  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
	Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/48298
	* gfortran.dg/dtio_1.f90: New test.
	* gfortran.dg/dtio_2.f90: New test.
	* gfortran.dg/dtio_3.f90: New test.
	* gfortran.dg/dtio_4.f90: New test.
	* gfortran.dg/dtio_5.f90: New test.
	* gfortran.dg/dtio_6.f90: New test.
	* gfortran.dg/dtio_7.f90: New test.
	* gfortran.dg/dtio_8.f90: New test.
	* gfortran.dg/dtio_9.f90: New test.
	* gfortran.dg/dtio_10.f90: New test.

From-SVN: r239880
2016-08-31 05:36:22 +00:00
David Malcolm b816477a5a Remove arbitrary limits from rich_location
This patch eliminates the hard-coded limits within rich_location
(up to 3 ranges, up to 2 fixits).  The common case is still
handled by embedding the values inside rich_location - it only
uses dynamic allocation if these limits are exceeded, so
creation of rich_location instances on the stack should still
be fast.  This is implemented via a new container class,
semi_embedded_vec <T, N>.

gcc/ChangeLog:
	* diagnostic-show-locus.c (colorizer::begin_state): Support more
	than 3 ranges per diagnostic by alternating between color 1 and
	color 2.
	(layout::layout): Replace use of rich_location::MAX_RANGES
	with richloc->get_num_locations ().
	(layout::calculate_line_spans): Replace use of
	rich_location::MAX_RANGES with m_layout_ranges.length ().
	(layout::print_annotation_line): Handle arbitrary numbers of
	ranges in caret-printing by defaulting to '^'.
	(selftest::test_one_liner_many_fixits): New function.
	(test_diagnostic_show_locus_one_liner): Call it.
	* diagnostic.c (diagnostic_initialize): Update for renaming
	of rich_location::MAX_RANGES to
	rich_location::STATICALLY_ALLOCATED_RANGES.
	* diagnostic.h (struct diagnostic_context): Likewise.

gcc/testsuite/ChangeLog:
	* gcc.dg/plugin/diagnostic-test-show-locus-bw.c
	(test_many_nested_locations): New function.
	* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c
	(test_show_locus): Handle "test_many_nested_locations".

libcpp/ChangeLog:
	* include/line-map.h (class semi_embedded_vec): New class.
	(semi_embedded_vec<T, NUM_EMBEDDED>::semi_embedded_vec): New ctor.
	(semi_embedded_vec<T, NUM_EMBEDDED>::~semi_embedded_vec): New
	dtor.
	(semi_embedded_vec<T, NUM_EMBEDDED>::operator[]): New methods.
	(semi_embedded_vec<T, NUM_EMBEDDED>::push): New method.
	(semi_embedded_vec<T, NUM_EMBEDDED>::truncate): New method.
	(rich_location::get_num_locations): Reimplement in terms of
	m_ranges.
	(rich_location::get_range): Make non-inline.
	(rich_location::get_num_fixit_hints): Reimplement in terms of
	m_fixit_hints.
	(rich_location::add_fixit): New function.
	(rich_location::MAX_RANGES): Rename to...
	(rich_location::STATICALLY_ALLOCATED_RANGES): ...this.
	(rich_location::MAX_FIXIT_HINTS): Rename to...
	(rich_location::STATICALLY_ALLOCATED_RANGES): ...this, and make
	private.
	(rich_location::m_num_ranges): Eliminate in favor of...
	(rich_location::m_ranges): ...this, converting from a fixed-size
	array to a semi_embedded_vec.
	(rich_location::m_num_fixit_hints): Eliminate in favor of...
	(rich_location::m_fixit_hints): ...this, converting from a
	fixed-size array to a semi_embedded_vec.
	* line-map.c (rich_location::rich_location): Update for above
	changes.
	(rich_location::~rich_location): Likewise.
	(rich_location::get_loc): Likewise.
	(rich_location::get_range): New methods.
	(rich_location::add_range): Update for above changes.
	(rich_location::set_range): Likewise.
	(rich_location::add_fixit_insert): Likewise.
	(rich_location::add_fixit_replace): Likewise.
	(rich_location::get_last_fixit_hint): Likewise.
	(rich_location::reject_impossible_fixit): Likewise.
	(rich_location::add_fixit): New method.

From-SVN: r239879
2016-08-31 00:35:01 +00:00
GCC Administrator fb8e9c5e8e Daily bump.
From-SVN: r239878
2016-08-31 00:16:14 +00:00
David Malcolm 4ecfc45373 selftest: split out named_temp_file from temp_source_file
Split out a new base class for temp_source_file, named_temp_file,
moving the deletion to the base class dtor, so that we can write
out temporary files in other ways in selftests.

gcc/ChangeLog:
	* selftest.c (selftest::named_temp_file::named_temp_file): New
	ctor.
	(selftest::temp_source_file::~temp_source_file): Move to...
	(selftest::named_temp_file::~named_temp_file): ...here.
	(selftest::test_named_temp_file): New function.
	(selftest::selftest_c_tests): Call test_named_temp_file.
	* selftest.h (class named_temp_file): New class.
	(class temp_source_file): Convert to a subclass of named_temp_file.

From-SVN: r239875
2016-08-31 00:07:38 +00:00
David Malcolm 71b308914e C++: add fixit for '>>' template error
gcc/cp/ChangeLog:
	* parser.c (cp_parser_enclosed_template_argument_list): Add fix-it
	hint to ">>" within nested template argument list error.

gcc/testsuite/ChangeLog:
	* g++.dg/template/double-greater-than-fixit.C: New test case.

From-SVN: r239873
2016-08-30 21:21:42 +00:00
Ian Lance Taylor 75791bab05 runtime: use -fgo-c-header to build C header file
Use the new -fgo-c-header option to build a header file for the Go
    runtime code in libgo/go/runtime, and use the new header file in the C
    runtime code in libgo/runtime.  This will ensure that the Go code and C
    code share the same data structures as we convert the runtime from C to
    Go.
    
    The new file libgo/go/runtime/runtime2.go is copied from the Go 1.7
    release, and then edited to remove unnecessary data structures and
    modify others for use with libgo.
    
    The new file libgo/go/runtime/mcache.go is an initial version of the
    same files in the Go 1.7 release, and will be replaced by the Go 1.7
    file when we convert to the new memory allocator.
    
    The new file libgo/go/runtime/type.go describes the gccgo version of the
    reflection data structures, and replaces the Go 1.7 runtime file which
    describes the gc version of those structures.
    
    Using the new header file means changing a number of struct fields to
    use Go naming conventions (that is, no underscores) and to rename
    constants to have a leading underscore so that they are not exported
    from the Go package.  These names were updated in the C code.
    
    The C code was also changed to drop the thread-local variable m, as was
    done some time ago in the gc sources.  Now the m field is always
    accessed using g->m, where g is the single remaining thread-local
    variable.  This in turn required some adjustments to set g->m correctly
    in all cases.
    
    Also pass the new -fgo-compiling-runtime option when compiling the
    runtime package, although that option doesn't do anything yet.
    
    Reviewed-on: https://go-review.googlesource.com/28051

From-SVN: r239872
2016-08-30 21:07:47 +00:00
Ville Voutilainen 7875b41f1d re PR libstdc++/77395 (std::is_constructible is false for type constructible via implicit conversion operator affecting std::tuple)
PR libstdc++/77395
	* include/std/type_traits (is_constructible): Forward-declare...
	(__is_base_to_derived_ref): ...and use here.
	* testsuite/20_util/declval/requirements/1_neg.cc: Adjust.
	* testsuite/20_util/is_constructible/77395.cc: New.
	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust.
	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
	Likewise.
	* testsuite/20_util/tuple/77395.cc: New.

From-SVN: r239870
2016-08-30 21:46:11 +03:00
Uros Bizjak e1becf59f9 2.cc: Move dg-do run directive above dg-require-namedlocale directive.
* testsuite/22_locale/time_get/get/char/2.cc: Move dg-do run
	directive above dg-require-namedlocale directive.
	* testsuite/22_locale/time_get/get/wchar_t/2.cc: Ditto.
	* testsuite/27_io/manipulators/extended/get_time/char/2.cc: Ditto.
	* testsuite/27_io/manipulators/extended/get_time/wchar_t/2.cc: Ditto.
	* testsuite/27_io/manipulators/extended/put_time/char/2.cc: Ditto.
	* testsuite/27_io/manipulators/extended/put_time/wchar_t/2.cc: Ditto.

From-SVN: r239867
2016-08-30 18:59:39 +02:00
Segher Boessenkool dd9fe1b95b rs6000: Don't emit a use of LR in returns and sibcalls
The exit block (to which every return artificially jumps) already has
a use of LR.  The LR use in all returns and sibcalls is an anachronism,
probably made unnecessary by the dataflow merge.  The simple_returns
that shrink-wrapping generates also do not have such a use.  Newer
backends do not do this either it seems.

With this use removed, a normal return is no longer a parallel but just
a return insn, and cfgcleanup then can transform conditional jumps to
those into conditional returns.

This splits the return emission code with restoring_FPRs_inline from
that without it; this is simpler code, fewer lines, and less indentation.

The return_internal_<mode> pattern can now be deleted since nothing uses
it anymore.


	* config/rs6000/rs6000.c (rs6000_emit_epilogue): Do not emit
	USEs of LR_REGNO in returns and sibcalls.
	(rs6000_output_mi_thunk): Similar.
	(rs6000_sibcall_aix): Similar.
	* config/rs6000/rs6000.md (sibcall, sibcall_value, sibcall_local32,
	sibcall_local64, sibcall_value_local32, sibcall_value_local64,
	sibcall_nonlocal_sysv<mode>, sibcall_value_nonlocal_sysv<mode>):
	Remove the USE of LR_REGNO from the patterns as well.  Delete an
	obsolete comment.
	(return_internal_<mode>): Delete.

From-SVN: r239866
2016-08-30 18:30:01 +02:00
Tamar Christina ac45b2ba8c [PATCH][Aarch64][gcc] Fix vld2/3/4 on big endian systems
On behalf of Tamar Christina  <tamar.christina@arm.com>

gcc/

	* gcc/config/aarch64/aarch64-simd.md
	(aarch64_ld2<mode>_dreg_le): New.
	(aarch64_ld2<mode>_dreg_be): New.
	(aarch64_ld2<mode>_dreg): Removed.
	(aarch64_ld3<mode>_dreg_le): New.
	(aarch64_ld3<mode>_dreg_be): New.
	(aarch64_ld3<mode>_dreg): Removed.
	(aarch64_ld4<mode>_dreg_le): New.
	(aarch64_ld4<mode>_dreg_be): New.
	(aarch64_ld4<mode>_dreg): Removed.
	(aarch64_ld<VSTRUCT:nregs><VDC:mode>): Wrapper around _le, _be.

From-SVN: r239865
2016-08-30 15:40:19 +00:00
Fritz Reese 40c84ee7fa gfortran.texi: Fix typo in STRUCTURE documentation.
2016-08-30  Fritz Reese  <fritzoreese@gmail.com>

	* gcc/fortran/gfortran.texi: Fix typo in STRUCTURE documentation.

From-SVN: r239862
2016-08-30 14:33:00 +00:00
David Malcolm f908779801 rich_location: add convenience overloads for adding fix-it hints
Adding a fix-it hint to a diagnostic usually follows one of these
patterns:
(a) an insertion fix-its, with the insertion at the primary caret location
(b) a removals/replacements, affecting the range of the primary location

(other cases are possible, e.g. multiple fix-its, and affecting other
locations, but these are the common ones)

Given these common cases, this patch adds overloads of the rich_location
methods for adding fix-it hints, so that the location information can
be omitted if it matches that of the primary location within the
rich_location.

Similarly when adding "remove" and "replace" fix-it hints to a diagnostic,
it's tedious to have to extract the source_range from a location_t
(aka source_location).  To make this more convenient, this patch
adds overload of the rich_location::add_fixit_remove/replace methods,
accepting a source_location directly.

The patch updates the various in-tree users of fix-it hints to use
the new simpler API where appropriate.  I didn't touch the case where
there are multiple fix-its in one rich_location, as it seems better to
be more explicit about locations for this case (adding a pair of parens
in warn_logical_not_parentheses).

The above makes the gcc_rich_location::add_fixit_misspelled_id overload
taking a const char * rather redundant, so I eliminated it.

gcc/c/ChangeLog:
	* c-decl.c (implicit_decl_warning): Use add_fixit_replace
	rather than add_fixit_misspelled_id.
	(undeclared_variable): Likewise.
	* c-parser.c (c_parser_declaration_or_fndef): Likewise.  Remove
	now-redundant "here" params from add_fixit_insert method calls.
	(c_parser_parameter_declaration): Likewise.
	* c-typeck.c (build_component_ref): Remove now-redundant range
	param from add_fixit_replace method calls.

gcc/cp/ChangeLog:
	* name-lookup.c (suggest_alternatives_for): Use add_fixit_replace
	rather than add_fixit_misspelled_id.
	* parser.c (cp_parser_diagnose_invalid_type_name): Likewise.

gcc/ChangeLog:
	* diagnostic-show-locus.c (test_one_liner_fixit_insert): Remove
	redundant location param.
	(test_one_liner_fixit_remove): Likewise.
	(test_one_liner_fixit_replace): Likewise.
	(test_one_liner_fixit_replace_equal_secondary_range): Likewise.
	* gcc-rich-location.c
	(gcc_rich_location::add_fixit_misspelled_id): Eliminate call to
	get_range_from_loc.  Drop overload taking a const char *.
	* gcc-rich-location.h
	(gcc_rich_location::add_fixit_misspelled_id): Drop overload taking
	a const char *.

libcpp/ChangeLog:
	* include/line-map.h (rich_location::add_fixit_insert): Add
	comments.  Add overload omitting the source_location param.
	(rich_location::add_fixit_remove): Add comments.  Add overloads
	omitting the range, and accepting a source_location.
	(rich_location::add_fixit_replace): Likewise.
	* line-map.c (rich_location::add_fixit_insert): Add comments.  Add
	overload omitting the source_location param.
	(rich_location::add_fixit_remove): Add comments.  Add overloads
	omitting the range, and accepting a source_location.
	(rich_location::add_fixit_replace): Likewise.

From-SVN: r239861
2016-08-30 13:54:48 +00:00
Szabolcs Nagy 43ed860c2a report supported function classes correctly on *-musl
gcc/
	* config/linux.c (linux_libc_has_function): Return true on musl.

From-SVN: r239860
2016-08-30 10:28:06 +00:00
Szabolcs Nagy 5aadf16cbe disable ifunc on *-musl by default
gcc/
	* config.gcc (*-*-*musl*): Disable gnu-indirect-function.

From-SVN: r239859
2016-08-30 10:26:22 +00:00
Eric Botcazou 8fa372320a postreload-gcse.c (bb_has_well_behaved_predecessors): Tweak criterion used for abnormal egdes.
* postreload-gcse.c (bb_has_well_behaved_predecessors): Tweak criterion
	used for abnormal egdes.

From-SVN: r239858
2016-08-30 10:10:26 +00:00
Richard Biener 6f651baeb7 re PR tree-optimization/69047 (memcpy is not as optimized as union is)
2016-08-30  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/69047
	* gcc.dg/pr69047.c: Fix byte-order check.

From-SVN: r239857
2016-08-30 09:22:17 +00:00
Jakub Jelinek 5116b156b7 re PR tree-optimization/72866 (Compile time hog w/ -O3 (-Ofast))
PR tree-optimization/72866
	* tree-vect-patterns.c (search_type_for_mask): Turn into
	a small wrapper, move all code to ...
	(search_type_for_mask_1): ... this new function.  Add caching
	and adjust recursive calls.

	* gcc.dg/vect/pr72866.c: New test.

From-SVN: r239856
2016-08-30 08:54:02 +02:00
Jakub Jelinek 3754bbfc36 re PR c++/77363 (Missing debug information in DWARF)
PR debug/77363
	* dwarf2out.c (modified_type_die): Use lookup_type_die (type)
	instead of lookup_type_die (type_main_variant (type)) even for array
	types.

	* g++.dg/debug/dwarf2/pr77363.C: New test.

From-SVN: r239855
2016-08-30 08:46:38 +02:00
Jakub Jelinek 26122e2d8a re PR middle-end/77377 (c-c++-common/pr59037.c ICEs with -fpic -msse on i686)
PR middle-end/77377
	* simplify-rtx.c (avoid_constant_pool_reference): For out of bounds
	constant pool reference return x instead of c.

	* gcc.target/i386/pr77377.c: New test.

From-SVN: r239854
2016-08-30 08:45:56 +02:00
Jakub Jelinek ab8348325f re PR debug/77389 (FAIL: g++.dg/debug/dwarf2/template-params-12f.C -std=gnu++11 scan-assembler-times DIE \\\\([^\\n]*\\\\) DW_TAG_template_value_param ...)
PR debug/77389
	* g++.dg/debug/dwarf2/template-params-12f.C: Pass -gno-strict-dwarf
	in dg-options.

From-SVN: r239853
2016-08-30 08:44:43 +02:00
Ian Lance Taylor 2adb671d18 compiler: add -fgo-c-header=FILE to create a C header
The new -fgo-c-header=FILE option will write a C header file defining
    all the struct types and numeric const values in package scope.  This
    will be used when building the Go runtime package (libgo/go/runtime) to
    generate a C header file that may be included by the C code in the C
    runtime package (libgo/runtime).
    
    This will ensure that the Go code and C code are working with the same
    data structures as we convert the runtime from C to Go to upgrade to the
    current GC runtime, notably the concurrent garbage collector.
    
    Reviewed-on: https://go-review.googlesource.com/28000

	* lang.opt (fgo-c-header, fgo-compiling-runtime): New options.
	* go-c.h (struct go_create_gogo_args): Define.
	(go_create_gogo): Change declaration to take struct pointer.
	* go-lang.c (go_c_header): New static variable.
	(go_langhook_init): Update call to go_create_gogo.
	* gccgo.texi (Invoking gccgo): Document -fgo-c-header and
	-fgo-compiling-runtime.

From-SVN: r239852
2016-08-30 03:27:43 +00:00
Segher Boessenkool 0b390d6089 Eradicate MQ some more
Nothing uses MQ anymore, but it still shows up in all the dump files.
This patch removes it from CALL_REALLY_USED_REGISTERS so that that does
not happen anymore (it is still a fixed register, there should be no
functional change).


	* config/rs6000/rs6000.h (CALL_REALLY_USED_REGISTERS): Do not
	include MQ.

From-SVN: r239851
2016-08-30 04:46:07 +02:00
GCC Administrator 52ba6d1616 Daily bump.
From-SVN: r239850
2016-08-30 00:16:19 +00:00
Steven G. Kargl bedc9ca797 pr77372.f90: Moved to ...
2016-08-29  Steven G. Kargl  <kargl@gcc.gnu.org>

	* gfortran.dg/pr77372.f90: Moved to ...
	* gfortran.dg/ieee/pr77372.f90: here.

From-SVN: r239847
2016-08-29 23:19:25 +00:00
David Malcolm cfa435e1e8 input.c: fix the comment for test_make_location_nonpure_range_endpoints
gcc/ChangeLog:
	* input.c
	(selftest::test_make_location_nonpure_range_endpoints): Fix
	header comment.

From-SVN: r239844
2016-08-29 20:52:10 +00:00
David Malcolm 2aa514130a Allow the use of ad-hoc locations for fix-it hints
Currently the fix-it validator rejects ad-hoc locations.
Fix this by calling get_pure_location on the input locations to
add_fixit_insert/replace.  Doing so requires moving get_pure_location
from gcc to libcpp.

gcc/ChangeLog:
	* diagnostic-show-locus.c
	(selftest::test_one_liner_fixit_validation_adhoc_locations): New
	function.
	(selftest::test_diagnostic_show_locus_one_liner): Call it.
	* input.c (get_pure_location): Move to libcpp/line-map.c.
	* input.h (get_pure_location): Convert decl to an inline function
	calling implementation in libcpp.

libcpp/ChangeLog:
	* include/line-map.h (get_pure_location): New decl.
	* line-map.c (get_pure_location): Move here, from gcc/input.c, adding
	a line_maps * param.
	(rich_location::add_fixit_insert): Call get_pure_location on "where".
	(rich_location::add_fixit_replace): Call get_pure_location on the
	end-points.

From-SVN: r239843
2016-08-29 20:42:57 +00:00