1. 29 Aug, 2016 10 commits
  2. 28 Aug, 2016 7 commits
  3. 27 Aug, 2016 6 commits
  4. 26 Aug, 2016 17 commits
    • re PR target/77349 (AIX DWARF debugging offset in 64 bit mode) · f763d964
      PR target/77349
      * config/rs6000/xcoff.h (DWARF_OFFSET_SIZE): Define as PTR_SIZE.
      
      From-SVN: r239790
      David Edelsohn committed
    • Add validation and consolidation of fix-it hints · ee908516
      The first aspect of this patch is to add some checking of fix-it hints.
      The idea is to put this checking within the rich_location machinery,
      rather than requiring every diagnostic to implement it for itself.
      
      The fixits within a rich_location are "atomic": all must be valid for
      any to be applicable.
      
      We reject any fixits involving locations above
      LINE_MAP_MAX_LOCATION_WITH_COLS.
      
      There's no guarantee that it's sane to modify a macro, so we reject
      any fix-its that touch them.
      
      For example, note the attempt to provide a fix-it for the definition
      of the macro FIELD:
      
      spellcheck-fields-2.c: In function ‘test_macro’:
      spellcheck-fields-2.c:26:15: error: ‘union u’ has no member named ‘colour’; did you mean ‘color’?
       #define FIELD colour
                     ^
                     color
      spellcheck-fields-2.c:27:15: note: in expansion of macro ‘FIELD’
         return ptr->FIELD;
                     ^~~~~
      
      After this patch, the fixit is not displayed:
      
      spellcheck-fields-2.c: In function ‘test_macro’:
      spellcheck-fields-2.c:26:15: error: ‘union u’ has no member named ‘colour’; did you mean ‘color’?
       #define FIELD colour
                     ^
      spellcheck-fields-2.c:27:15: note: in expansion of macro ‘FIELD’
         return ptr->FIELD;
                     ^~~~~
      
      We might want some way for a diagnostic to opt-in to fix-its that
      affect macros, but for now it's simplest to reject them.
      
      The other aspect of this patch is fix-it consolidation: in some cases
      neighboring fix-its can be merged.  For example, in a diagnostic to
      modernize old-style struct initializers from:
      
       struct s example = {
      - foo: 1,
      + .foo = 1,
       };
      
      one approach would be to replace the "foo" with ".foo" and the ":"
      with " =".  This would give two "replace" fix-its:
      
        foo: 1,
        --- FIXIT 1
        .foo
           - FIXIT 2
           =
      
      This patch allows them to be consolidated into a single "replace" fix-it:
      
        foo: 1,
        ----
        .foo =
      
      gcc/ChangeLog:
      	* diagnostic-show-locus.c
      	(selftest::test_fixit_consolidation): New function.
      	(selftest::diagnostic_show_locus_c_tests): Call it.
      	* gcc-rich-location.h (gcc_rich_location): Eliminate unused
      	constructor based on source_range.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/spellcheck-fields-2.c (test): Move
      	dg-begin/end-multiline-output within function body.
      	(test_macro): New function.
      
      libcpp/ChangeLog:
      	* include/line-map.h (rich_location): Eliminate unimplemented
      	constructor based on source_range.
      	(rich_location::get_last_fixit_hint): New method.
      	(rich_location::reject_impossible_fixit): New method.
      	(rich_location): Add fields m_line_table and
      	m_seen_impossible_fixit.
      	(fixit_hint::maybe_append_replace): New pure virtual function.
      	(fixit_insert::maybe_append_replace): New function.
      	(fixit_replace::maybe_append_replace): New function.
      	* line-map.c (rich_location::rich_location): Initialize
      	m_line_table and m_seen_impossible_fixit.
      	(rich_location::add_fixit_insert): Call
      	reject_impossible_fixit and bail out if true.
      	(column_before_p): New function.
      	(rich_location::add_fixit_replace): Call reject_impossible_fixit
      	and bail out if true.  Attempt to consolidate with neighboring
      	fixits.
      	(rich_location::get_last_fixit_hint): New method.
      	(rich_location::reject_impossible_fixit): New method.
      	(fixit_insert::maybe_append_replace): New method.
      	(fixit_replace::maybe_append_replace): New method.
      
      From-SVN: r239789
      David Malcolm committed
    • Tweak to colors of fix-it hints · d41e76cf
      Previous, fix-it hints were printed using the color of the severity
      of the diagnostic (magenta for warnings, red for errors, cyan for
      notes).
      
      This patch updates fix-it hints so that replacement text is printed in
      green, to better distinguish the suggested improvement from
      the current code.  For example:
      
      spellcheck-fields.cc:52:13: error: 'struct s' has no member named 'colour'; did you mean 'color'?
         return ptr->colour;  <<< RED
                     ^~~~~~   <<< RED
                     color    <<< GREEN
      
      It makes sense for the underlinings that indicate deletions to
      be printed in red, so the patch changes that also.  For example:
      
      diagnostic-test-show-locus-color.c:179:9: warning: example of a removal hint
         int a;;  <<< MAGENTA
               ^  <<< MAGENTA
               -  <<< RED
      
      gcc/ChangeLog:
      	* diagnostic-color.c (color_dict): Add "fixit-insert" and
      	"fixit-delete".
      	(parse_gcc_colors): Update description of default GCC_COLORS.
      	* diagnostic-show-locus.c (colorizer::set_fixit_hint): Delete.
      	(colorizer::set_fixit_insert): New method.
      	(colorizer::set_fixit_delete): New method.
      	(colorizer::get_color_by_name): New method.
      	(colorizer::STATE_FIXIT_INSERT): New constant.
      	(colorizer::STATE_FIXIT_DELETE): New constant.
      	(class colorizer): Drop "_cs" suffix from fields.  Delete "_ce"
      	fields in favor of new field "m_stop_color".  Add fields
      	"m_fixit_insert" and "m_fixit_delete".
      	(colorizer::colorizer): Update for above changes.  Replace
      	colorize_start calls with calls to get_color_by_name.
      	(colorizer::begin_state): Handle STATE_FIXIT_INSERT and
      	STATE_FIXIT_DELETE.  Update for field renamings.
      	(colorizer::finish_state): Simplify by using m_stop_color,
      	rather than multiple identical "*_ce" fields.
      	(colorizer::get_color_by_name): New method.
      	(layout::print_any_fixits): Print insertions and replacements
      	using the "fixit-insert" color, and deletions using the
      	"fixit-delete" color.
      	* doc/invoke.texi (-fdiagnostics-color): Update description of
      	default GCC_COLORS, and of the supported capabilities.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/plugin/diagnostic-test-show-locus-color.c
      	(test_fixit_insert): Update expected output.
      	(test_fixit_remove): Likewise.
      	(test_fixit_replace): Likewise.
      
      From-SVN: r239787
      David Malcolm committed
    • Fix gcc.dg/ipa/propbits-2.c · 524a4c96
      	* gcc.dg/ipa/propbits-2.c: Add -fdump-tree-optimized to dg-options.
      	Fix typo.
      
      From-SVN: r239786
      Rainer Orth committed
    • xtensa: report stack usage · 7695d1e3
      This enables options -fstack-usage and -Wstack-usage.
      
      2016-08-26  Max Filippov  <jcmvbkbc@gmail.com>
      gcc/
      	* config/xtensa/xtensa.c (xtensa_expand_prologue): Update
      	current_function_static_stack_size variable with the static
      	stack frame size of the current function when
      	flag_stack_usage_info is enabled.
      
      From-SVN: r239785
      Max Filippov committed
    • Avoid calling a trivial default constructor. · d0b0fbd9
      	* class.c (default_ctor_p): New.
      	(in_class_defaulted_default_constructor): Use it.
      	(type_has_non_user_provided_default_constructor): Use it.
      	* call.c (build_over_call): Handle trivial default constructor.
      	* cp-tree.h: Declare default_ctor_p.
      
      From-SVN: r239783
      Jason Merrill committed
    • PR c++/57728 - explicit instantiation and defaulted functions · 9729a5d5
      	* pt.c (do_type_instantiation): Don't mess with non-user-provided
      	member functions.
      
      From-SVN: r239782
      Jason Merrill committed
    • libstdc++/51960 move-construction for raw_storage_iterator · 10491e4c
      	PR libstdc++/51960
      	* doc/xml/manual/intro.xml: Document DR 2127 change.
      	* doc/html/*: Regenerate.
      	* include/bits/stl_raw_storage_iter.h (operator=(_Tp&&)): Add.
      	(operator++(), operator++(int)): Use injected class name.
      	* testsuite/20_util/raw_storage_iterator/dr2127.cc: New test.
      
      From-SVN: r239781
      Jonathan Wakely committed
    • ipa-inline-analysis.c (inline_write_summary): Remove unnecessary assignment inside if condition. · bdc30f8f
      	* ipa-inline-analysis.c (inline_write_summary): Remove unnecessary
      	assignment inside if condition.
      
      From-SVN: r239779
      Nathan Sidwell committed
    • re PR tree-optimization/69047 (memcpy is not as optimized as union is) · ebfa15ab
      2016-08-26  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/69047
      	* tree-ssa.c (maybe_rewrite_mem_ref_base): Handle general bitfield
      	extracts similar to what FRE does.
      	(non_rewritable_mem_ref_base): Likewise.
      
      	* gcc.dg/pr69047.c: New testcase.
      
      From-SVN: r239778
      Richard Biener committed
    • Use effective-target instead of -std options · 52066eae
      	* testsuite/*: Use { target c++11 } or { target c++14 } instead of
      	using -std in dg-options.
      
      From-SVN: r239777
      Jonathan Wakely committed
    • Restore dg-interpreter-batch-mode for libstdc++ tests · e8223484
      2016-08-26  Jonathan Wakely  <jwakely@redhat.com>
      	    Pedro Alves  <palves@redhat.com>
      
      	* testsuite/lib/gdb-test.exp (gdb-dg-runtest): Define wrapper to save
      	and restore dg-interpreter-batch-mode.
      	* testsuite/libstdc++-prettyprinters/prettyprinters.exp: Use
      	gdb-dg-runtest instead of dg-runtest.
      	* testsuite/libstdc++-xmethods/xmethods.exp: Likewise.
      
      Co-Authored-By: Pedro Alves <palves@redhat.com>
      
      From-SVN: r239776
      Jonathan Wakely committed
    • Always support float128 on x86. · 21184026
      In <https://gcc.gnu.org/ml/gcc-bugs/2016-08/msg03233.html>, Nick
      reported i386-elf and ia64-elf failing to build because of
      float128_type_node being NULL, but being used by the back end for
      __float128.
      
      The global float128_type_node is only available conditionally, if
      target hooks indicate TFmode is not only available as a scalar mode
      and of the right format, but also supported in libgcc.  The back-end
      support, however, expects the type always to be available for
      __float128 even if the libgcc support is missing.
      
      Although a target-specific node could be restored in the case where
      libgcc support is missing, it seems better to address the missing
      libgcc support.  Thus, this patch enables TFmode soft-fp in libgcc
      globally for all x86 targets - the only special cases needed being for
      targets that use soft-fp for SFmode and DFmode, one of which already
      had the support for TFmode as well (so I based the i[34567]86-*-rtems*
      configuration on that present for i[34567]86-*-elfiamcu).  The i386
      implementation of TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P is then
      removed as no longer needed.
      
      I can provide such a patch for ia64 if useful, but am not in a
      position to test it (and while I'm reasonably confident that enabling
      this support would be right for ia64-elf and ia64-freebsd, I've no
      real idea if enabling libgcc support for TFmode, with or without also
      enabling it for XFmode, would be safe for ia64-vms).
      
      Bootstrapped with no regressions on x86_64-pc-linux-gnu.
      
      gcc:
      	* config/i386/i386.c (ix86_libgcc_floating_mode_supported_p)
      	(TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P): Remove.
      	* config/i386/i386elf.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Likewise.
      	* config/i386/lynx.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Likewise.
      	* config/i386/netbsd-elf.h (IX86_MAYBE_NO_LIBGCC_TFMODE):
      	Likewise.
      	* config/i386/netbsd64.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Likewise.
      	* config/i386/nto.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Likewise.
      	* config/i386/openbsd.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Likewise.
      	* config/i386/rtemself.h (IX86_NO_LIBGCC_TFMODE): Likewise.
      	* config/i386/vxworks.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Likewise.
      
      libgcc:
      	* config.host (i[34567]86-*-* | x86_64-*-*): Enable TFmode soft-fp
      	where not already enabled.
      
      From-SVN: r239775
      Joseph Myers committed
    • mangle.c (java_mangle_decl): Re-sync with lhd_set_decl_assembler_name. · 4d1d8d6a
      2016-08-26  Richard Biener  <rguenther@suse.de>
      
      	java/
      	* mangle.c (java_mangle_decl): Re-sync with lhd_set_decl_assembler_name.
      
      From-SVN: r239774
      Richard Biener committed
    • Add new std::basic_string constructor (LWG 2583) · 86bbf15b
      	* config/abi/pre/gnu.ver (GLIBCXX_3.4, GLIBCXX_3.4.21): Use more
      	precise patterns for basic_string constructors.
      	(GLIBCXX_3.4.23): Export new constructors.
      	* doc/xml/manual/intro.xml: Document LWG 2583 status.
      	* doc/html/*: Regenerate.
      	* include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
      	(basic_string(const basic_string&, size_type, const Alloc&)): Add
      	new constructor for LWG 2583.
      	(basic_string(const basic_string&, size_type, size_type)): Remove
      	default argument.
      	[!_GLIBCXX_USE_CXX11_ABI]: Likewise.
      	* include/bits/basic_string.tcc [!_GLIBCXX_USE_CXX11_ABI]: Define it.
      	* testsuite/21_strings/basic_string/cons/char/8.cc: New test.
      	* testsuite/21_strings/basic_string/cons/wchar_t/8.cc: New test.
      
      From-SVN: r239773
      Jonathan Wakely committed
    • [ARM] PR target/70473: Reduce size of Cortex-A8 automaton · 83c7402a
      	PR target/70473
      	* config/arm/cortex-a8-neon.md (cortex_a8_vfp_muld): Reduce
      	reservation duration to 15 cycles.
      	(cortex_a8_vfp_macs): Likewise.
      	(cortex_a8_vfp_macd): Likewise.
      	(cortex_a8_vfp_divs): Likewise.
      	(cortex_a8_vfp_divd): Likewise.
      
      From-SVN: r239772
      Kyrylo Tkachov committed
    • [ARM] Refactor MOVW/MOVT fusion logic to allow extension · 5791f55d
      	* config/arm/arm.c (arm_sets_movw_movt_fusible_p): New function.
      	(aarch_macro_fusion_pair_p): Use above to avoid early return.
      
      From-SVN: r239771
      Kyrylo Tkachov committed