1. 16 Aug, 2018 17 commits
    • re PR testsuite/86745 (gcc.target/i386/avx-cvt-2.c etc. FAIL on 64-bit x86) · c37da7c0
      	PR testsuite/86745
      	* gcc.target/i386/avx-cvt-2.c: Loosen scan-assembler strings.
      	* gcc.target/i386/avx-cvt-2.c: Ditto.
      
      From-SVN: r263598
      Uros Bizjak committed
    • Fix warning with -Wsign-compare -Wsystem-headers · 0ac40f61
      	* include/tr1/legendre_function.tcc (__sph_legendre): Avoid warning
      	about signed/unsigned comparison.
      
      From-SVN: r263596
      Jonathan Wakely committed
    • -Wmisleading-indentation: fix ICE in get_visual_column (PR c++/70693) · 10fcc142
      PR c++/70693 reports a crash within -Wmisleading-indentation in
      get_visual_column, reading past the end of a source line.
      
      The issue occurs due to a stray carriage return aka '\r' aka ^M, occurring
      towards the end of line 35 of attachment 38289 - but not at the end itself.
      
      This carriage return confuses our line numbering: from that point in the
      file, the lexer (and thus location_t values) use line numbers that are
      one larger than those seen by input.c, "cat -n" and emacs.
      
      This discrepancy between the lexer's line numbering and input.c's line
      numbering leads to an out-of-range read in get_visual_column (trying to
      read column 8, to locate the first non-whitespace on the line containing
      "break;", but finding the next line, which is only 4 characters long).
      
      This patch fixes the ICE by adding a range check to get_visual_column
      before accessing the input.c line buffer.  This is arguably papering
      over the root cause, but there are presumably other ways of triggering
      such an out-of-range read by writing to the source file after the lexer
      but before -Wmisleading-indentation, and we ought to be not ICE in the
      face of that.
      
      gcc/c-family/ChangeLog:
      	PR c++/70693
      	* c-common.c (selftest::c_family_tests): Call
      	selftest::c_indentation_c_tests.
      	* c-common.h (selftest::c_indentation_c_tests): New decl.
      	* c-indentation.c: Include "selftest.h".
      	(next_tab_stop): Add "tab_width" param, rather than accessing
      	cpp_opts.
      	(get_visual_column): Likewise.  Clarify comment.  Bulletproof
      	against reading past the end of the line.
      	(get_first_nws_vis_column): Add "tab_width" param.
      	(detect_intervening_unindent): Likewise.
      	(should_warn_for_misleading_indentation): Read tab width from
      	cpp_opts and pass around.
      	(selftest::test_next_tab_stop): New test.
      	(selftest::assert_get_visual_column_succeeds): New function.
      	(ASSERT_GET_VISUAL_COLUMN_SUCCEEDS): New macro.
      	(selftest::assert_get_visual_column_fails): New function.
      	(ASSERT_GET_VISUAL_COLUMN_FAILS): New macro.
      	(selftest::test_get_visual_column): New test.
      	(selftest::c_indentation_c_tests): New function.
      
      gcc/testsuite/ChangeLog:
      	PR c++/70693
      	* c-c++-common/Wmisleading-indentation-pr70693.c: New test.
      
      From-SVN: r263595
      David Malcolm committed
    • Allow larger copies when not slow_unaligned_access and no padding. · 012d429b
      This allows copy_blkmode_to_reg to perform larger copies when it is safe to do so by calculating
      the bitsize per iteration doing the maximum copy allowed that does not read more
      than the amount of bits left to copy.
      
      Strictly speaking, this copying is only done if:
      
        1. the target supports fast unaligned access
        2. no padding is being used.
      
      This should avoid the issues of the first patch (PR85123) but still work for targets that are safe
      to do so.
      
      Original patch https://gcc.gnu.org/ml/gcc-patches/2017-11/msg01088.html
      Previous respin https://gcc.gnu.org/ml/gcc-patches/2018-04/msg00239.html
      
      gcc/
      2018-08-16  Tamar Christina  <tamar.christina@arm.com>
      
      	* expr.c (copy_blkmode_to_reg): Perform larger copies when safe.
      
      From-SVN: r263594
      Tamar Christina committed
    • Avoid deprecation warning with -Wsystem-headers · 450f33d6
      C++17 says to use std::uncaught_exceptions() here instead of
      std::uncaught_exception() but since we only care whether the result is
      non-zero (and we aren't planning to remove the deprecated version) we
      can just keep using std::uncaught_exception() and suppress the warning.
      
      	* include/std/ostream (basic_ostream::sentry::~sentry): Suppress
      	deprecation warnings for using uncaught_exception().
      
      From-SVN: r263593
      Jonathan Wakely committed
    • Remove rtl.texi references to old RTX code class names · bfbc18af
      Committed on behalf of Matthew Malcomson.
      
      2018-08-16  Matthew Malcomson  <matthew.malcomson@arm.com>
      
      gcc/
      	* doc/rtl.texi: Replace old RTX class names with new names.
      
      From-SVN: r263592
      Matthew Malcomson committed
    • expmed.h (canonicalize_comparison): New declaration. · ec18e48e
      	* expmed.h (canonicalize_comparison): New declaration.
      	* expmed.c (canonicalize_comparison, equivalent_cmp_code): New function.
      	* expmed.c (emit_store_flag_1): Add call to canonicalize_comparison.
      	* optabs.c (prepare_cmp_insn): Likewise.
      	* rtl.h (unsigned_condition_p): New function which checks if a
      	comparison operator is unsigned.
      
      	* gcc.target/aarch64/imm_choice_comparison.c: New test.
      
      From-SVN: r263591
      Vlad Lazar committed
    • Fix bootstrap with --enable-fully-dynamic-string · 891b1d68
      	PR libstdc++/86447
      	* src/c++11/cow-stdexcept.cc [_GLIBCXX_FULLY_DYNAMIC_STRING]
      	(logic_error::logic_error(logic_error&&))
      	(logic_error::operator=(logic_error&&))
      	(runtime_error::runtime_error(runtime_error&&))
      	(runtime_error::operator=(runtime_error&&)): Copy strings instead of
      	moving, to avoid allocating empty reps for moved-from strings.
      
      From-SVN: r263590
      Jonathan Wakely committed
    • [PATCH] CPP Macro predicates · 3f6677f4
      https://gcc.gnu.org/ml/gcc-patches/2018-08/msg00897.html
      	libcpp/
      	* include/cpplib.h (cpp_user_macro_p, cpp_builtin_macro_p)
      	(cpp_macro_p): New inlines.
      	* directives.c (do_pragma_poison): Use cpp_macro_p.
      	(do_ifdef, do_ifndef): Likewise.  Use _cpp_maybe_notify_macro_use.
      	(cpp_pop_definition): Use cpp_macro_p.  Move _cpp_free_definition
      	earlier.  Don't zap node directly.
      	* expr.c (parse_defined): Use _cpp_maybe_notify_macro_use &
      	cpp_macro_p.
      	* files.c (should_stack_file): Use cpp_macro_p.
      	* identifiers.c (cpp_defined): Likewise.
      	* internal.h (_cpp_mark_macro): Use cpp_user_macro_p.
      	(_cpp_notify_macro_use): Declare.
      	(_cpp_maybe_notify_macro_use): New inline.
      	* lex.c (is_macro): Use cpp_macro_p.
      	* macro.c (_cpp_warn_if_unused_macro): Use cpp_user_macro_p.
      	(enter_macro_context): Likewise.
      	(_cpp_create_definition): Use cpp_builtin_macro_p,
      	cpp_user_macro_p.  Move _cpp_free_definition earlier.
      	(_cpp_notify_macro_use): New, broken out of multiple call sites.
      	* traditional.c (fun_like_macro_p): Use cpp_builtin_macro_p.
      	(maybe_start_funlike, _cpp_scan_out_logical_line)
      	(push_replacement_text): Likewise.
      	gcc/c-family/
      	* c-ada-spec.c (count_ada_macro): Use cpp_user_macro_p.
      	(store_ada_macro): Likewise.
      	* c-ppoutput.c (cb_used_define, dump_macro): Likewise.
      	* c-spellcheck.cc (should-suggest_as_macro_p): Likewise,
      	gcc/
      	* config/rs6000/rs6000-c.c (rs6000_macro_to_expend): Use cpp_macro_p.
      	* config/powerpcspc/powerpcspe-c.c (rs6000_macro_to_expend): Likewise.
      	gcc/cp/
      	* name-lookup.c (lookup_name_fuzzy): Likewise.
      	gcc/fortran/
      	* cpp.c (dump_macro): Use cpp_user_macro_p.
      
      From-SVN: r263587
      Nathan Sidwell committed
    • Add __USER_LABEL_PREFIX__ to the asm names for targets that need it. · ba9d634f
      2018-08-16  Iain Sandoe <iain@sandoe.co.uk>
      
      gcc/testsuite
      
              * gcc.dg/memcmp-1.c (lib_memcmp): Apply __USER_LABEL_PREFIX__.
              (lib_strncmp): Likewise.
      
      From-SVN: r263586
      Iain Sandoe committed
    • Darwin doesn't have pthread_barrier, at least up to Darwin18 · e56c0215
      so don't try to do tests with it.
      
      2018-08-16  Iain Sandoe <iain@sandoe.co.uk>
      
      gcc/testsuite/
      	* c-c++-common/asan/pointer-subtract-3.c: Skip for Darwin.
      	* c-c++-common/asan/pointer-subtract-4.c: Likewise.
      	* g++.dg/torture/pr44295.C : Likewise.
      
      From-SVN: r263585
      Iain Sandoe committed
    • Update fall through pattern for FP16 patterns in ARM. · 2a9234e8
      The original issue comes from the fact that the code does
      
      ... foo (... bar)
      {
        return bar;
      }
      
      The expansion of the return statement causes GCC to try to return the value in
      a register.  GCC will try to emit the move then, from MEM to REG (due to the SSA
      temporary.).  It checks for a mov optab for this which isn't available and
      then tries to do the move in bits using emit_move_multi_word.
      
      emit_move_multi_word will split the move into sub parts, but then needs to get
      the sub parts and does this using subregs, but it's told it can't do subregs!
      
      The compiler is now stuck in an infinite loop.
      
      The way this is worked around in the back-end is that we have move patterns in
      neon.md that usually just force the register instead of checking with the
      back-end. This prevents emit_move_multi_word from being needed.  However the
      pattern for V4HF and V8HF were guarded by TARGET_NEON && TARGET_FP16.
      
      I don't believe the TARGET_FP16 guard to be needed, because the pattern doesn't
      actually generate code and requires another pattern for that, and a reg to reg move
      should always be possible anyway. So allowing the force to register here is safe
      and it allows the compiler to generate a correct error instead of ICEing in an
      infinite loop.
      
      gcc/
      2018-08-16  Tamar Christina  <tamar.christina@arm.com>
      
      	PR target/84711
      	* config/arm/arm.c (arm_can_change_mode_class): Disallow subreg.
      	* config/arm/neon.md (movv4hf, movv8hf): Refactored to..
      	(mov<mov>): ..this and enable unconditionally.
      
      From-SVN: r263584
      Tamar Christina committed
    • fix section naming convention for Darwin in three tests · 02e13564
      2018-08-15  Iain Sandoe <iain@sandoe.co.uk>
      
      gcc/testsuite:
      
      	PR testsuite/78544
      	* gcc.dg/tree-prof/section-attr-1.c: Add Darwin-specific section attributes and matching.
      	* gcc.dg/tree-prof/section-attr-2.c: Likewise.
      	* gcc.dg/tree-prof/section-attr-3.c: Likewise.
      6
      
      From-SVN: r263583
      Iain Sandoe committed
    • Remove dead pattern on ARM. · a77042b5
      About 13 years ago the reg-to-reg patterns were split up, before that time
      output_move_double could actually handle this case.
      
      After the split was done most patterns were updated except for *neon_mov
      which incorrectly retained reg,reg as a valid alternative.
      
      However output_move_double can not handle this and simply returns ""
      and asserts.
      
      This pattern is essentially dead and I'm removing it for clarity.
      
      gcc/
      2018-08-16  Tamar Christina  <tamar.christina@arm.com>
      
      	* config/arm/neon.md (*neon_mov<mode>): Remove reg-to-reg alternative.
      
      From-SVN: r263582
      Tamar Christina committed
    • [aarch64] Make common aarch64 options target-dependent · 88e25f47
      This patch replaces the "Common" attribute in some aarch64 options with "Target"
      to make them target-dependent. This doesn't affect their behaviour or how they
      are documented with "--help", but does mean that they follow the option
      specification that target-specific options are given the "Target" attribute.
      
      Tested by ensuring the changed options are still accepted as before and that
      they aren't invokable from an invalid target. Bootstrapped and regression tested
      on aarch64-none-elf with ... regressions.
      
      2018-08-16  Sam Tebbs  <sam.tebbs@arm.com>
      
      	* config/aarch64/aarch64.opt (mlow-precision-recip-sqrt)
      	(mlow-precision-sqrt, mlow-precision-div, mverbose-cost-dump): Replace
      	"Common" with "Target".
      
      From-SVN: r263578
      Sam Tebbs committed
    • Fix pr81923 test for targets using __USER_LABEL_PREFIX__ · c553659e
      2018-08-16  Iain Sandoe <iain@sandoe.co.uk>
      
      gcc/testsuite
      
      	* gcc.dg/asan/pr81923.c: Stringify __USER_LABEL_PREFIX__.
      
      From-SVN: r263577
      Iain Sandoe committed
    • Daily bump. · bc73fef4
      From-SVN: r263576
      GCC Administrator committed
  2. 15 Aug, 2018 22 commits
    • i386.opt (mmitigate-rop): Mark as deprecated. · 9fe138fd
      	* config/i386/i386.opt (mmitigate-rop): Mark as deprecated.
      	* doc/invoke.texi (mmitigate-rop): Remove.
      	* config/i386/i386.c: Do not include "regrename.h".
      	(ix86_rop_should_change_byte_p, reg_encoded_number)
      	(ix86_get_modrm_for_rop, set_rop_modrm_reg_bits, ix86_mitigate_rop):
      	Remove.
      	(ix86_reorg): Remove call to ix86_mitigate_rop.
      	* config/i386/i386.md (attr "modrm_class"): Remove.
      	(cmp<mode>_ccno_1, mov<mode>_xor, movstrict<mode>_xor)
      	(x86_mov<mode>cc_0_m1. x86_mov<mode>cc_0_m1_se)
      	(x86_mov<mode>cc_0_m1_neg): Remove modrm_class attribute override.
      
      testsuite/Changelog:
      
      	* gcc.target/i386/rop1.c: Remove.
      	* gcc.target/i386/pr83554 (dg-options): Remove -mmitigate-rop.
      
      From-SVN: r263572
      Uros Bizjak committed
    • ChangeLog: Fix whitespace. · 245fbaaa
      	* ChangeLog: Fix whitespace.
      	* testsuite/ChangeLog: Ditto.
      
      From-SVN: r263571
      Uros Bizjak committed
    • fold-vec-splat-char.c: New. · ac068c94
      [testsuite]
      
      2018-08-13  Will Schmidt  <will_schmidt@vnet.ibm.com>
      
      	* gcc.target/powerpc/fold-vec-splat-char.c: New.
      	* gcc.target/powerpc/fold-vec-splat-floatdouble.c: New.
      	* gcc.target/powerpc/fold-vec-splat-int.c: New.
      	* gcc.target/powerpc/fold-vec-splat-longlong.c: New.
      	* gcc.target/powerpc/fold-vec-splat-pixel.c: New.
      	* gcc.target/powerpc/fold-vec-splat-short.c: New.
      
      From-SVN: r263570
      Will Schmidt committed
    • rs600.c (rs6000_gimple_fold_builtin): Add entries to allow folding of mergeh()… · e0ad3e6b
      rs600.c (rs6000_gimple_fold_builtin): Add entries to allow folding of mergeh() and mergel() for the float and double...
      
      [gcc]
      
      2018-08-07 Will Schmidt  <will_schmidt@vnet.ibm.com>
      
      	* config/rs6000/rs600.c (rs6000_gimple_fold_builtin): Add entries to
      	allow folding of mergeh() and mergel() for the float and double types.
      	(fold_mergehl_helper): Rework to handle building a permute tree
      	for float vectors.
      
      From-SVN: r263569
      Will Schmidt committed
    • Fix experimental::pmr typedefs and add tests · b8eac4d0
      The typedefs in <experimental/regex> and <experimental/string> don't
      need to be in the __cxx11 namespace, because they are only aliases and
      so will have the same mangled name as the underlying types.
      
      	* include/experimental/regex: Remove begin/end macros for namespace.
      	* include/experimental/string: Likewise.
      	* testsuite/experimental/polymorphic_allocator/pmr_typedefs_deque.cc:
      	New test.
      	* testsuite/experimental/polymorphic_allocator/
      	pmr_typedefs_forward_list.cc: New test.
      	* testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc:
      	New test.
      	* testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc:
      	New test.
      	* testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc:
      	New test.
      	* testsuite/experimental/polymorphic_allocator/
      	pmr_typedefs_multimap.cc: New test.
      	* testsuite/experimental/polymorphic_allocator/
      	pmr_typedefs_multiset.cc: New test.
      	* testsuite/experimental/polymorphic_allocator/pmr_typedefs_set.cc:
      	New test.
      	* testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
      	New test.
      	* testsuite/experimental/polymorphic_allocator/
      	pmr_typedefs_unordered_map.cc: New test.
      	* testsuite/experimental/polymorphic_allocator/
      	pmr_typedefs_unordered_multimap.cc: New test.
      	* testsuite/experimental/polymorphic_allocator/
      	pmr_typedefs_unordered_multiset.cc: New test.
      	* testsuite/experimental/polymorphic_allocator/
      	pmr_typedefs_unordered_set.cc: New test.
      	* testsuite/experimental/polymorphic_allocator/pmr_typedefs_vector.cc:
      	New test.
      
      From-SVN: r263568
      Jonathan Wakely committed
    • i386.c (expand_vec_perm_movs): Enable V4SFmode for TARGET_SSE. · 0c8956e0
      	* config/i386/i386.c (expand_vec_perm_movs): Enable V4SFmode
      	for TARGET_SSE.
      
      From-SVN: r263567
      Uros Bizjak committed
    • Refactor uses-allocator construction · b479fbad
      Remove duplicated logic in experimental::pmr::polymorphic_allocator by
      calling the __uses_allocator_construct helper.
      
      Fix bugs in std::pmr::polymorphic_allocator with incorrect SFINAE
      constraint and incorrect argument order.
      
      	* include/bits/uses_allocator.h (__uses_allocator_construct): Qualify
      	calls to __uses_allocator_construct_impl and __use_alloc.
      	* include/experimental/memory_resource
      	(polymorphic_allocator::_M_construct): Remove.
      	(polymorphic_allocator::construct): Call __uses_allocator_construct.
      	Qualify calls to __use_alloc.
      	* include/std/memory_resource (polymorphic_allocator::construct): Fix
      	type in SFINAE constraint. Use constexpr if instead of tag dispatching
      	to _S_construct overloads.
      	(polymorphic_allocator::construct(pair<T1, T2>*, ...)): Fix order of
      	arguments to _S_construct_p.
      	(polymorphic_allocator::_S_construct): Remove.
      	(polymorphic_allocator::_S_construct_p): Return allocators by value
      	not by reference.
      	* include/std/scoped_allocator (scoped_allocator_adaptor::construct):
      	Qualify calls to __use_alloc.
      	* testsuite/20_util/polymorphic_allocator/construct_pair.cc: New test,
      	copied from testsuite/20_util/scoped_allocator/construct_pair.cc.
      	* testsuite/experimental/polymorphic_allocator/1.cc: New test.
      	* testsuite/experimental/polymorphic_allocator/construct_pair.cc:
      	New test.
      
      From-SVN: r263566
      Jonathan Wakely committed
    • diagnostics: add labeling of source ranges · 96e6ae57
      This patch adds the ability to label source ranges within a rich_location,
      to be printed by diagnostic_show_locus.
      
      For example:
      
      pr69554-1.c:11:18: error: invalid operands to binary + (have 'const char *' and 'const char *')
      11 |   return (p + 1) + (q + 1);
         |          ~~~~~~~ ^ ~~~~~~~
         |             |         |
         |             |         const char *
         |             const char *
      
      The patch implements labels for various type mismatch errors in the C and
      C++ frontends, and in -Wformat.  I implemented it wherever accurate location
      information was guaranteed (there are other places that could benefit, but
      we need better location information in those places).
      
      The labels can be disabled via -fno-diagnostics-show-labels.
      
      Similarly:
      
      param-type-mismatch.C: In function 'int test_1(int, int, float)':
      param-type-mismatch.C:11:27: error: invalid conversion from 'int' to 'const char*' [-fpermissive]
      11 |   return callee_1 (first, second, third);
         |                           ^~~~~~
         |                           |
         |                           int
      param-type-mismatch.C:7:43: note:   initializing argument 2 of 'int callee_1(int, const char*, float)'
      7 | extern int callee_1 (int one, const char *two, float three);
        |                               ~~~~~~~~~~~~^~~
      
      where the first "error" describing the bad argument gets a label
      describing the type inline (since it's non-obvious from "second").
      The "note" describing the type of the param of the callee *doesn't*
      get a label, since that information is explicit there in the
      source ("const char *two").
      
      The idea is that in any diagnostic where two aspects of the source aren't
      in sync it ought to be easier for the user if we directly show them the
      mismatching aspects inline (e.g. types).
      
      As well as type mismatch errors, perhaps labels could also be used for
      buffer overflow warnings, for describing the capacity of the destination
      buffer vs the size of what's being written:
      
        sprintf (buf, "filename: %s\n", file);
                 ^~~   ~~~~~~~~~~~^~~
                 |                |
                 capacity: 32     10 + strlen(file) + 2
      
      or somesuch.  Another idea might be for macro expansion warnings:
      
      warning: repeated side effects in macro expansion...
         x = MIN (p++, q++);
             ~~~~^~~~~~~~~~
      note: ...expanded here as
       #define MIN(X,Y) (X<Y?X:Y)
               ^~~ ~ ~   ~ ~ ~ ~
                   | |   | | | |
                   | |   | | | q++
                   | |   | | p++
                   | |   | q++
                   | q++ p++
                   p++
      
      The patch removes some logic from multiline.exp which special-cased
      lines ending with a '|' character (thus complicating testing of this
      patch).  I believe that this was a vestige from experiments I did to
      support strippng dg directives from the output; it was present in the
      earliest version of multiline.exp I posted:
        "[RFC, stage1] Richer source location information for gcc 6 (location ranges etc)"
          https://gcc.gnu.org/ml/gcc-patches/2015-03/msg00837.html
      and I believe was neved used.
      
      gcc/c-family/ChangeLog:
      	* c-format.c: Include "selftest-diagnostic.h" and
      	"gcc-rich-location.h".
      	(format_warning_at_char): Pass NULL for new label params of
      	format_warning_va.
      	(class indirection_suffix): New class.
      	(class range_label_for_format_type_mismatch): New class.
      	(format_type_warning): Move logic for generating "*" suffix to
      	class indirection_suffix.  Create "fmt_label" and "param_label"
      	to show their types, and pass them to the
      	format_warning_at_substring calls.
      	(selftest::test_type_mismatch_range_labels): New test.
      	(selftest::c_format_c_tests): Call it.
      
      gcc/c/ChangeLog:
      	* c-objc-common.c: Include "gcc-rich-location.h".
      	(c_tree_printer): Move implemenation of '%T' to...
      	(print_type): ...this new function.
      	(range_label_for_type_mismatch::get_text): New function.
      	* c-typeck.c (convert_for_assignment): Add type labels to the rhs
      	range for the various ic_argpass cases.
      	(class maybe_range_label_for_tree_type_mismatch): New class.
      	(build_binary_op): Use it when calling binary_op_error.
      
      gcc/cp/ChangeLog:
      	* call.c: Include "gcc-rich-location.h".
      	(convert_like_real): Add range label for "invalid conversion"
      	diagnostic.
      	(perform_implicit_conversion_flags): Add type label to the
      	"could not convert" error.
      	* error.c: Include "gcc-rich-location.h".
      	(range_label_for_type_mismatch::get_text): New function.
      	* typeck.c (convert_for_assignment): Add type label to
      	the "cannot convert" error if a location is available.
      
      gcc/ChangeLog:
      	* common.opt (fdiagnostics-show-labels): New option.
      	* diagnostic-show-locus.c (class layout_range): Add field
      	"m_label".
      	(class layout): Add field "m_show_labels_p".
      	(layout_range::layout_range): Add param "label" and use it to
      	initialize m_label.
      	(make_range): Pass in NULL for new "label" param of layout_range's
      	ctor.
      	(layout::layout): Initialize m_show_labels_p.
      	(layout::maybe_add_location_range): Pass in loc_range->m_label
      	when constructing layout_range instances.
      	(struct line_label): New struct.
      	(layout::print_any_labels): New member function.
      	(layout::print_line): Call it if label-printing is enabled.
      	(selftest::test_one_liner_labels): New test.
      	(selftest::test_diagnostic_show_locus_one_liner): Call it.
      	* diagnostic.c (diagnostic_initialize): Initialize
      	context->show_labels_p.
      	* diagnostic.h (struct diagnostic_context): Add field
      	"show_labels_p".
      	* doc/invoke.texi (Diagnostic Message Formatting Options): Add
      	-fno-diagnostics-show-labels.
      	* dwarf2out.c (gen_producer_string): Add
      	OPT_fdiagnostics_show_labels to the ignored options.
      	* gcc-rich-location.c (gcc_rich_location::add_expr): Add "label"
      	param.
      	(gcc_rich_location::maybe_add_expr): Likewise.
      	* gcc-rich-location.h (gcc_rich_location::gcc_rich_location): Add
      	label" param, defaulting to NULL.
      	(gcc_rich_location::add_expr): Add "label" param.
      	(gcc_rich_location::maybe_add_expr): Likewise.
      	(class text_range_label): New class.
      	(class range_label_for_type_mismatch): New class.
      	* gimple-ssa-sprintf.c (fmtwarn): Pass NULL for new label params
      	of format_warning_va.
      	(fmtwarn_n): Likewise for new params of format_warning_n_va.
      	* lto-wrapper.c (merge_and_complain): Add
      	OPT_fdiagnostics_show_labels to the "pick one setting" options.
      	(append_compiler_options): Likewise to the dropped options.
      	(append_diag_options): Likewise to the passed-on options.
      	* opts.c (common_handle_option): Handle the new option.
      	* selftest-diagnostic.c
      	(test_diagnostic_context::test_diagnostic_context): Enable
      	show_labels_p.
      	* substring-locations.c: Include "gcc-rich-location.h".
      	(format_warning_n_va): Add "fmt_label" and "param_label" params
      	and use them as appropriate.
      	(format_warning_va): Add "fmt_label" and "param_label" params,
      	passing them on to format_warning_n_va.
      	(format_warning_at_substring): Likewise.
      	(format_warning_at_substring_n): Likewise.
      	* substring-locations.h (format_warning_va): Add "fmt_label" and
      	"param_label" params.
      	(format_warning_n_va): Likewise.
      	(format_warning_at_substring): Likewise.
      	(format_warning_at_substring_n): Likewise.
      	* toplev.c (general_init): Initialize global_dc->show_labels_p.
      
      gcc/testsuite/ChangeLog:
      	* g++.dg/diagnostic/aka3.C: New test.
      	* g++.dg/diagnostic/param-type-mismatch-2.C: Update expected
      	output to show range labels.
      	* g++.dg/diagnostic/param-type-mismatch.C: Likewise.
      	* g++.dg/plugin/plugin.exp (plugin_test_list): Add...
      	* g++.dg/plugin/show-template-tree-color-labels.C: New test.
      	* gcc.dg/bad-binary-ops.c: Update expected output to show range
      	labels.  Add an "aka" example.
      	* gcc.dg/cpp/pr66415-1.c: Update expected output to show range
      	labels.
      	* gcc.dg/format/diagnostic-ranges.c: Likewise.
      	* gcc.dg/format/pr72858.c: Likewise.
      	* gcc.dg/format/pr78498.c: Likewise.
      	* gcc.dg/param-type-mismatch.c: Add "-Wpointer-sign" to options.
      	Update expected output to show range labels.  Add examples of
      	-Wincompatible-pointer-types and -Wpointer-sign for parameters.
      	* gcc.dg/plugin/diagnostic-test-show-locus-bw-line-numbers.c:
      	Update expected output to show range labels.
      	* gcc.dg/plugin/diagnostic-test-show-locus-bw.c: Likewise.
      	(test_very_wide_line): Adjust so that label is at left-clipping
      	boundary.
      	(test_very_wide_line_2): New test.
      	* gcc.dg/plugin/diagnostic-test-show-locus-color-line-numbers.c:
      	Update expected output to show range labels.
      	* gcc.dg/plugin/diagnostic-test-show-locus-color.c: Likewise.
      	* gcc.dg/plugin/diagnostic-test-show-locus-no-labels.c: New test.
      	* gcc.dg/plugin/diagnostic_plugin_show_trees.c (show_tree): Update
      	for new param to gcc_rich_location::add_expr.
      	* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c (add_range):
      	Add "label" param.
      	(test_show_locus): Add examples of labels to various tests.  Tweak
      	the "very wide_line" test case and duplicate it, to cover the
      	boundary values for clipping of labels against the left-margin.
      	* gcc.dg/plugin/plugin.exp (plugin_test_list): Add
      	diagnostic-test-show-locus-no-labels.c.
      	* gcc.dg/pr69554-1.c: Update expected output to show range labels.
      	Update line numbers of dg-locus directives.
      	* gcc.dg/pr69627.c:  Update expected output to show range labels.
      	* lib/multiline.exp (proc _build_multiline_regex): Remove
      	special-case handling of lines with trailing '|'.
      
      libcpp/ChangeLog:
      	* include/line-map.h (struct location_range): Add "m_label" field.
      	(class rich_location): Add description of labels to leading
      	comment.
      	(rich_location::rich_location): Add "label" param, defaulting to
      	NULL.
      	(rich_location::add_range): Likewise.
      	(struct label_text): New struct.
      	(class range_label): New abstract base class.
      	* line-map.c (rich_location::rich_location): Add "label" param;
      	use it.
      	(rich_location::add_range): Likewise.
      
      From-SVN: r263564
      David Malcolm committed
    • c-decl.c (start_decl): Do not warn if variables is named as main and is a local variable. · 0cd020ae
      2018-08-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      
      c/
      	* c-decl.c (start_decl): Do not warn if variables is named as main
      	and is a local variable.
      
      testsuite/
      	* gcc.dg/wmain.c: New test.
      
      From-SVN: r263562
      Prathamesh Kulkarni committed
    • PR tree-optimization/71625 - missing strlen optimization on different array · bcee52c4
      PR tree-optimization/71625 - missing strlen optimization on different array
      initialization style (avoid compilation errors on aarch64)
      
      gcc/ChangeLog:
      	* config/aarch64/aarch64-builtins.c
      	(aarch64_init_simd_builtin_types): Clear Poly8_t's TYPE_STRING_FLAG.
      
      From-SVN: r263561
      Martin Sebor committed
    • S/390: Remove branch splitting loop · d4d30923
      Since there is no branch splitting anymore, the loop is no longer
      necessary: pool chunkification can be done in one step.
      
      gcc/ChangeLog:
      
      2018-08-15  Ilya Leoshkevich  <iii@linux.ibm.com>
      
      	* config/s390/s390.c (s390_reorg): Remove loop.
      
      From-SVN: r263557
      Ilya Leoshkevich committed
    • Don't make unsized objects into extern. · 72733314
      2018-08-15  Iain Sandoe <iain@sandoe.co.uk>
      
      gcc/c:
      
              PR c/19315
              * c-decl.c (finish_decl): Don't add the 'extern' storage class to
              objects of unknown size.
      
      gcc/testsuite:
      
              PR c/19315
              gcc.dg/graphite/pr82451.c: Make array 'a' an extern.
              gcc.dg/redecl-10.c: Expect warnings for the static vars with unknown
              size.
      
      From-SVN: r263556
      Iain Sandoe committed
    • Darwin - remove unnecessary target hook · 05c1e87a
      gcc/
      
      2018-08-15  Iain Sandoe  <iain@sandoe.co.uk>
      
      	* config/darwin.c
      	 (darwin_function_switched_text_sections): Delete.
      	* gcc/config/darwin.h
      	 (TARGET_ASM_FUNCTION_SWITCHED_TEXT_SECTIONS): Likewise.
      
      From-SVN: r263555
      Iain Sandoe committed
    • Fix single-threaded build for targets without atomics · 25b030b8
      	* src/c++17/memory_resource.cc [!_GLIBCXX_HAS_GTHREADS]
      	(atomic_mem_res): Add unsynchronized definition for single-threaded.
      
      From-SVN: r263554
      Jonathan Wakely committed
    • Update Darwin section names for DWARF5 · 89bcf3ff
      gcc/
      
      2018-08-15  Iain Sandoe  <iain@sandoe.co.uk>
      
      	PR target/81685
      	* config/darwin.h: (DEBUG_STR_OFFSETS_SECTION, DEBUG_LOCLISTS_SECTION,
      	DEBUG_RNGLISTS_SECTION) new macros.  (DEBUG_PUBNAMES_SECTION,
      	DEBUG_PUBTYPES_SECTION) update to include GNU variant.
      
      From-SVN: r263553
      Iain Sandoe committed
    • Fix merging of 2 predictors (PR tree-optimization/86925). · 7c8357de
      2018-08-15  Martin Liska  <mliska@suse.cz>
      
              PR tree-optimization/86925
      	* predict.c (expr_expected_value_1): When taking
              later predictor, assign also probability.
              Use fold_build2_initializer_loc in order to fold
              the expression in -frounding-math.
      2018-08-15  Martin Liska  <mliska@suse.cz>
      
              PR tree-optimization/86925
      	* gcc.dg/predict-20.c: New test.
      	* gcc.dg/predict-21.c: New test.
      
      From-SVN: r263552
      Martin Liska committed
    • decl.c (check_previous_goto_1): When decl_jump_unsafe returns 2 emit an error… · 0806181f
      decl.c (check_previous_goto_1): When decl_jump_unsafe returns 2 emit an error instead of a permerror.
      
      /cp
      2018-08-15  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* decl.c (check_previous_goto_1): When decl_jump_unsafe returns 2
      	emit an error instead of a permerror.
      
      /testsuite
      2018-08-15  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* g++.dg/init/goto3.C: Adjust for error instead of permerror.
      
      From-SVN: r263551
      Paolo Carlini committed
    • backport: ffi.c (ffi_call_go, [...]): New functions. · 68d23593
      Backport of RISC-V support for libffi go closures
      * src/riscv/ffi.c (ffi_call_go, ffi_prep_go_closure): New
      functions.
      (ffi_call_int): Renamed from ffi_call.
      (ffi_call_asm, ffi_closure_inner): Adjust interface.
      * src/riscv/ffitarget.h (FFI_GO_CLOSURES): Define.
      * src/riscv/sysv.S (ffi_go_closure_asm): New function.
      (ffi_closure_asm, ffi_call_asm): Update for adjusted interfaces.
      
      From-SVN: r263550
      Andreas Schwab committed
    • i386.c (expand_vec_perm_movs): New method matching movs patterns. · 107192f7
      	* config/i386/i386.c (expand_vec_perm_movs): New method matching movs
      	patterns.
      	(expand_vec_perm_1): Try the new method.
      
      	* gcc.target/i386/sse2-movs.c: New test.
      
      From-SVN: r263549
      Allan Sandfeld Jensen committed
    • re PR target/86547 (s390x: Maximum number of LRA assignment passes is achieved… · 4720f4af
      re PR target/86547 (s390x: Maximum number of LRA assignment passes is achieved (30) when compiling a small inline assembler snippet)
      
              PR target/86547
      	* lra-lives.c (remove_some_program_points_and_update_live_ranges):
              Check whether lra_live_max_point is 0 before dividing.
      
      From-SVN: r263548
      Ilya Leoshkevich committed
    • Daily bump. · 47f61a02
      From-SVN: r263547
      GCC Administrator committed
  3. 14 Aug, 2018 1 commit