1. 31 Aug, 2016 3 commits
    • Remove arbitrary limits from rich_location · b816477a
      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
      David Malcolm committed
    • Daily bump. · fb8e9c5e
      From-SVN: r239878
      GCC Administrator committed
    • selftest: split out named_temp_file from temp_source_file · 4ecfc453
      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
      David Malcolm committed
  2. 30 Aug, 2016 19 commits
    • C++: add fixit for '>>' template error · 71b30891
      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
      David Malcolm committed
    • runtime: use -fgo-c-header to build C header file · 75791bab
          
          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
      Ian Lance Taylor committed
    • re PR libstdc++/77395 (std::is_constructible is false for type constructible via… · 7875b41f
      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
      Ville Voutilainen committed
    • 2.cc: Move dg-do run directive above dg-require-namedlocale directive. · e1becf59
      	* 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
      Uros Bizjak committed
    • rs6000: Don't emit a use of LR in returns and sibcalls · dd9fe1b9
      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
      Segher Boessenkool committed
    • [PATCH][Aarch64][gcc] Fix vld2/3/4 on big endian systems · ac45b2ba
      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
      Tamar Christina committed
    • gfortran.texi: Fix typo in STRUCTURE documentation. · 40c84ee7
      2016-08-30  Fritz Reese  <fritzoreese@gmail.com>
      
      	* gcc/fortran/gfortran.texi: Fix typo in STRUCTURE documentation.
      
      From-SVN: r239862
      Fritz Reese committed
    • rich_location: add convenience overloads for adding fix-it hints · f9087798
      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
      David Malcolm committed
    • report supported function classes correctly on *-musl · 43ed860c
      gcc/
      	* config/linux.c (linux_libc_has_function): Return true on musl.
      
      From-SVN: r239860
      Szabolcs Nagy committed
    • disable ifunc on *-musl by default · 5aadf16c
      gcc/
      	* config.gcc (*-*-*musl*): Disable gnu-indirect-function.
      
      From-SVN: r239859
      Szabolcs Nagy committed
    • postreload-gcse.c (bb_has_well_behaved_predecessors): Tweak criterion used for abnormal egdes. · 8fa37232
      	* postreload-gcse.c (bb_has_well_behaved_predecessors): Tweak criterion
      	used for abnormal egdes.
      
      From-SVN: r239858
      Eric Botcazou committed
    • re PR tree-optimization/69047 (memcpy is not as optimized as union is) · 6f651bae
      2016-08-30  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/69047
      	* gcc.dg/pr69047.c: Fix byte-order check.
      
      From-SVN: r239857
      Richard Biener committed
    • re PR tree-optimization/72866 (Compile time hog w/ -O3 (-Ofast)) · 5116b156
      	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
      Jakub Jelinek committed
    • re PR c++/77363 (Missing debug information in DWARF) · 3754bbfc
      	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
      Jakub Jelinek committed
    • re PR middle-end/77377 (c-c++-common/pr59037.c ICEs with -fpic -msse on i686) · 26122e2d
      	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
      Jakub Jelinek committed
    • re PR debug/77389 (FAIL: g++.dg/debug/dwarf2/template-params-12f.C -std=gnu++11… · ab834832
      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
      Jakub Jelinek committed
    • compiler: add -fgo-c-header=FILE to create a C header · 2adb671d
          
          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
      Ian Lance Taylor committed
    • Eradicate MQ some more · 0b390d60
      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
      Segher Boessenkool committed
    • Daily bump. · 52ba6d16
      From-SVN: r239850
      GCC Administrator committed
  3. 29 Aug, 2016 18 commits