1. 27 Aug, 2018 6 commits
  2. 26 Aug, 2018 3 commits
  3. 25 Aug, 2018 6 commits
    • re PR fortran/86704 (Segmentation fault when using matmul in combination with transpose) · 4f4fabd7
      
      2018-08-25  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR libfortran/86704
      	* m4/matmul_internal.m4: Correct calculation of needed buffer size
      	for arrays of shape (1,n).
      	* generated/matmul_c10.c: Regenerated
      	* generated/matmul_c16.c: Regenerated
      	* generated/matmul_c4.c: Regenerated
      	* generated/matmul_c8.c: Regenerated
      	* generated/matmul_i1.c: Regenerated
      	* generated/matmul_i16.c: Regenerated
      	* generated/matmul_i2.c: Regenerated
      	* generated/matmul_i4.c: Regenerated
      	* generated/matmul_i8.c: Regenerated
      	* generated/matmul_r10.c: Regenerated
      	* generated/matmul_r16.c: Regenerated
      	* generated/matmul_r4.c: Regenerated
      	* generated/matmul_r8.c: Regenerated
      	* generated/matmulavx128_c10.c: Regenerated
      	* generated/matmulavx128_c16.c: Regenerated
      	* generated/matmulavx128_c4.c: Regenerated
      	* generated/matmulavx128_c8.c: Regenerated
      	* generated/matmulavx128_i1.c: Regenerated
      	* generated/matmulavx128_i16.c: Regenerated
      	* generated/matmulavx128_i2.c: Regenerated
      	* generated/matmulavx128_i4.c: Regenerated
      	* generated/matmulavx128_i8.c: Regenerated
      	* generated/matmulavx128_r10.c: Regenerated
      	* generated/matmulavx128_r16.c: Regenerated
      	* generated/matmulavx128_r4.c: Regenerated
      	* generated/matmulavx128_r8.c: Regenerated
      
      2018-08-25  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR libfortran/86704
      	* gfortran.dg/matmul_19.f90: New test.
      
      From-SVN: r263856
      Thomas Koenig committed
    • re PR tree-optimization/87059 (internal compiler error: in set_value_range, at tree-vrp.c:289) · 75e96bc8
      	PR tree-optimization/87059
      	* builtins.c (expand_builtin_strncmp): Convert MIN_EXPR operand
      	to the same type as the other.
      	* fold-const.c (fold_binary_loc): Assert expectation.
      
      From-SVN: r263855
      Martin Sebor committed
    • re PR fortran/86545 (ICE in transfer_expr on invalid WRITE statement) · 3d6fc627
      fix PR 86545
      
      2018-08-25  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/86545
      	* resolve.c (resolve_transfer): Correctly determine typespec for
      	generic function calls, in order to throw a proper error.
      
      2018-08-25  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/86545
      	* gfortran.dg/generic_35.f90: New test case.
      
      From-SVN: r263854
      Janus Weil committed
    • Code clean-up on darwin.c · efa57fee
      	* config/darwin.c (machopic_legitimize_pic_address): Clean up
      	extraneous parentheses, dead code section and formatting.
      
      From-SVN: r263851
      Iain Sandoe committed
    • Don't force visibility to hidden for Darwin > 8. · ee959ecb
      	PR libstdc++/70694
      	* configure.host (OPT_LDFLAGS): Don't append
      	-fvisibility-inlines-hidden for newer Darwin.
      
      From-SVN: r263850
      Iain Sandoe committed
    • Daily bump. · 19b0eb25
      From-SVN: r263849
      GCC Administrator committed
  4. 24 Aug, 2018 18 commits
    • Set start_location to 0 if we ran out of line map space · cf806c7d
      With profiledbootstrap and --with-build-config=bootstrap-lto, linemap_add
      may create a macro map when we run out of line map space.  This patch
      changes start_location to UNKNOWN_LOCATION (0) in this case.
      
      Tested with profiledbootstrap and --with-build-config=bootstrap-lto on
      Linux/x86-64.
      
      	PR bootstrap/86872
      	* line-map.c (pure_location_p): Return true if linemap_lookup
      	returns NULL.
      	(linemap_add): Set start_location to 0 if we run out of line map
      	space.
      
      From-SVN: r263845
      H.J. Lu committed
    • diagnostics: tweaks to line-spans vs line numbering (PR 87091) · acf6214e
      This patch tweaks how line numbers are printed for a diagnostic
      containing multiple line spans.
      
      With this patch, rather than printing span headers:
      
        ../x86_64-pc-linux-gnu/libstdc++-v3/include/vector:87:22: note: message
        ../x86_64-pc-linux-gnu/libstdc++-v3/include/vector:74:1:
        ++ |+#include <vector>
        74 | #endif
        ../x86_64-pc-linux-gnu/libstdc++-v3/include/vector:87:22:
        87 |       using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
           |                      ^~~
      
      we now print:
      
        ../x86_64-pc-linux-gnu/libstdc++-v3/include/vector:87:22: note: message
        +++ |+#include <vector>
         74 | #endif
        ....
         87 |       using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
            |                      ^~~
      
      and for sufficiently close lines, rather than print a gap:
      
        + |+#include <stdio.h>
        1 | test (int ch)
        ..
        3 |  putchar (ch);
          |  ^~~~~~~
      
      we print the line itself:
      
        + |+#include <stdio.h>
        1 | test (int ch)
        2 | {
        3 |  putchar (ch);
          |  ^~~~~~~
      
      gcc/ChangeLog:
      	PR 87091
      	* diagnostic-show-locus.c (layout::layout): Ensure the margin is
      	wide enough for jumps in the line-numbering to be visible.
      	(layout::print_gap_in_line_numbering): New member function.
      	(layout::calculate_line_spans): When using line numbering, merge
      	line spans that are only 1 line apart.
      	(diagnostic_show_locus): When printing line numbers, show gaps in
      	line numbering directly, rather than printing headers.
      	(selftest::test_diagnostic_show_locus_fixit_lines): Add test of
      	line-numbering with multiple line spans.
      	(selftest::test_fixit_insert_containing_newline_2): Add test of
      	line-numbering, in which the spans are close enough to be merged.
      
      gcc/testsuite/ChangeLog:
      	PR 87091
      	* gcc.dg/missing-header-fixit-3.c: Update for changes to how
      	line spans are printed with -fdiagnostics-show-line-numbers.
      
      From-SVN: r263843
      David Malcolm committed
    • gimple-ssa-evrp-analyze.c (set_ssa_range_info): Pass value_range to range_includes_zero_p. · e5a3f08f
      	* gimple-ssa-evrp-analyze.c (set_ssa_range_info): Pass value_range
      	to range_includes_zero_p.  Do not special case VR_ANTI_RANGE.
      	* tree-vrp.c (range_is_nonnull): Remove.
      	(range_includes_zero_p): Accept value_range instead of min/max.
      	(extract_range_from_binary_expr_1): Do not early bail on
      	POINTER_PLUS_EXPR.
      	Use range_includes_zero_p instead of range_is_nonnull.
      	(extract_range_from_unary_expr): Use range_includes_zero_p instead
      	of range_is_nonnull.
      	(vrp_meet_1): Pass value_range to range_includes_zero_p.  Do not
      	special case VR_ANTI_RANGE.
      	(vrp_finalize): Same.
      	* tree-vrp.h (range_includes_zero_p): Pass value_range as argument
      	instead of min/max.
      	(range_is_nonnull): Remove.
      	* vr-values.c (vrp_stmt_computes_nonzero): Use
      	range_includes_zero_p instead of range_is_nonnull.
      	(extract_range_basic): Pass value_range to range_includes_zero_p
      	instead of range_is_nonnull.
      
      From-SVN: r263842
      Aldy Hernandez committed
    • new(nothrow) is malloc-like · 6eac0600
      2018-08-24  Marc Glisse  <marc.glisse@inria.fr>
      
      	PR libstdc++/86822
      	* libsupc++/new (operator new(size_t, nothrow_t), operator
      	new[](size_t, nothrow_t), operator new(size_t, align_val_t, nothrow_t),
      	operator new[](size_t, align_val_t, nothrow_t)): Add malloc attribute.
      
      From-SVN: r263841
      Marc Glisse committed
    • runtime: remove the dummy arg of getcallersp · 1d29bb04
          
          This is a port of https://golang.org/cl/109596 to the gofrontend, in
          preparation for updating libgo to 1.11.
          
          Original CL description:
          
              getcallersp is intrinsified, and so the dummy arg is no longer
              needed. Remove it, as well as a few dummy args that are solely
              to feed getcallersp.
          
          Reviewed-on: https://go-review.googlesource.com/131116
      
      From-SVN: r263840
      Ian Lance Taylor committed
    • Forward declare debug containers so std::pmr aliases work · 9ca2ac69
      Prior to this change, including a <debug/xxx> header when _GLIBCXX_DEBUG
      is also defined would fail to compile in C++17 or later. The <debug/xxx>
      header would include the standard <xxx> header which defined
      std::pmr::xxx as an alias for std::xxx. But in Debug Mode std::xxx
      refers to std::__debug::xxx which has not been defined yet (because it
      is in <debug/xxx> after the inclusion of <xxx>).
      
      This adds declarations of the debug containers before including the
      non-Debug Mode <xxx> header, so that the std::pmr::xxx aliases work.
      
      	* include/debug/deque (std::__debug::deque): Declare.
      	* include/debug/forward_list (std::__debug::forward_list): Declare.
      	* include/debug/list (std::__debug::list): Declare.
      	* include/debug/map (std::__debug::map): Declare.
      	* include/debug/set (std::__debug::set): Declare.
      	* include/debug/unordered_map (std::__debug::unordered_map): Declare.
      	* include/debug/unordered_set (std::__debug::unordered_set): Declare.
      	* include/debug/vector (std::__debug::vector): Declare.
      	* testsuite/23_containers/deque/types/pmr_typedefs_debug.cc: New test.
      	* testsuite/23_containers/forward_list/pmr_typedefs_debug.cc: New
      	test.
      	* testsuite/23_containers/list/pmr_typedefs_debug.cc: New test.
      	* testsuite/23_containers/map/pmr_typedefs_debug.cc: New test.
      	* testsuite/23_containers/multimap/pmr_typedefs_debug.cc: New test.
      	* testsuite/23_containers/multiset/pmr_typedefs_debug.cc: New test.
      	* testsuite/23_containers/set/pmr_typedefs_debug.cc: New test.
      	* testsuite/23_containers/unordered_map/pmr_typedefs_debug.cc: New
      	test.
      	* testsuite/23_containers/unordered_multimap/pmr_typedefs_debug.cc:
      	New test.
      	* testsuite/23_containers/unordered_multiset/pmr_typedefs_debug.cc:
      	New test.
      	* testsuite/23_containers/unordered_set/pmr_typedefs_debug.cc: New
      	test.
      	* testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
      	Adjust dg-error lineno.
      	* testsuite/23_containers/vector/types/pmr_typedefs_debug.cc: New
      	test.
      
      From-SVN: r263839
      Jonathan Wakely committed
    • re PR fortran/86837 (Optimization breaks an unformatted read with implicit loop) · 3413d168
      2018-08-24  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/86837
      	* frontend-passes.c (var_in_expr_callback): New function.
      	(var_in_expr): New function.
      	(traverse_io_block): Use var_in_expr instead of
      	gfc_check_dependency for checking if the variable depends on the
      	previous interators.
      
      2018-08-24  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/86837
      	* gfortran.dg/implied_do_io_6.f90: New test.
      
      From-SVN: r263838
      Thomas Koenig committed
    • Add a testcase for PR middle-end/87092 · 01aa3748
      	PR middle-end/87092
      	* gcc.dg/pr87092.c: New test.
      
      From-SVN: r263837
      H.J. Lu committed
    • re PR c++/67012 (decltype(auto) with trailing return type) · 13ff3e16
      	PR c++/67012
      	PR c++/86942
      	* decl.c (grokdeclarator): Disallow functions with trailing return
              type with decltype(auto) as its type.  Also check the function if
              it's inner declarator doesn't exist
      
      	* g++.dg/cpp0x/auto52.C: New test.
      	* g++.dg/cpp1y/auto-fn52.C: New test.
      	* g++.dg/cpp1y/auto-fn53.C: New test.
      	* g++.dg/cpp1y/auto-fn54.C: New test.
      
      From-SVN: r263836
      Marek Polacek committed
    • emit-rtl.c (init_emit_once): Do not emit MODE_POINTER_BOUNDS RTXes. · eafa30ef
      	* emit-rtl.c (init_emit_once): Do not emit MODE_POINTER_BOUNDS RTXes.
      	* emit-rtl.h (rtl_data): Remove return_bnd.
      	* explow.c (trunc_int_for_mode): Do not handle POINTER_BOUNDS_MODE_P.
      	* function.c (diddle_return_value): Do not handle crtl->return_bnd.
      	* genmodes.c (complete_mode): Do not handle MODE_POINTER_BOUNDS.
      	(POINTER_BOUNDS_MODE): Remove definition.
      	(make_pointer_bounds_mode): Remove.
      	(get_mode_class): Do not handle MODE_POINTER_BOUNDS.
      	* machmode.h (POINTER_BOUNDS_MODE_P): Remove definition.
      	(scalare_mode::includes_p): Do not handle MODE_POINTER_BOUNDS.
      	* mode-classes.def: Do not define MODE_POINTER_BOUNDS.
      	* stor-layout.c (int_mode_for_mode): Do not handle MODE_POINTER_BOUNDS.
      	* tree-core.h (enum tree_index): Remove TI_POINTER_BOUNDS_TYPE.
      	* varasm.c (output_constant_pool_2): Do not handle MODE_POINTER_BOUNDS.
      
      	* config/i386/i386-modes.def (BND32, BND64): Remove.
      	* config/i386/i386.c (dbx_register_map): Remove bound registers.
      	(dbx64_register_map): Ditto.
      	(svr4_dbx_register_map): Ditto.
      	(indirect_thunk_bnd_needed): Remove.
      	(indirect_thunks_bnd_used): Ditto.
      	(indirect_return_bnd_needed): Ditto.
      	(indirect_return_via_cx_bnd): Ditto.
      	(enum indirect_thunk_prefix): Remove indirect_thunk_prefix_bnd.
      	(indirect_thunk_name): Remove handling of indirect_thunk_prefix_bnd.
      	(output_indirect_thunk): Ditto.  Remove need_prefix argument.
      	(output_indirect_thunk_function): Remove handling of
      	indirect_return_bnd_needed, indirect_return_via_cx_bnd,
      	indirect_thunk_bnd_needed and indirect_thunks_bnd_used variables.
      	(ix86_save_reg): Remove handling of crtl->return_bnd.
      	(ix86_legitimate_constant_p): Remove handling of POINTER_BOUNDS_MODE_P.
      	(ix86_print_operand_address_as): Remove handling of UNSPEC_BNDMK_ADDR
      	and UNSPEC_BNDLX_ADDR.
      	(ix86_output_indirect_branch_via_reg): Remove handling of
      	indirect_thunk_prefix_bnd.
      	(ix86_output_indirect_branch_via_push): Ditto.
      	(ix86_output_function_return): Ditto.
      	(ix86_output_indirect_function_return): Ditto.
      	(avoid_func_arg_motion): Do not handle UNSPEC_BNDSTX.
      	* config/i386/i386.h (FIXED_REGISTERS): Remove bound registers.
      	(CALL_USED_REGISTERS): Ditto.
      	(REG_ALLOC_ORDER): Update for removal of bound registers.
      	(HI_REGISTER_NAMES): Ditto.
      	* config/i386/i386.md (UNSPEC_BNDMK, UNSPEC_BNDMK_ADDR, UNSPEC_BNDSTX)
      	(UNSPEC_BNDLDX, UNSPEC_BNDLDX_ADDR, UNSPEC_BNDCL, UNSPEC_BNDCU)
      	(UNSPEC_BNDCN, UNSPEC_MPX_FENCE): Remove.
      	(BND0_REG, BND1_REG, BND2_REG, BND3_REG): Remove
      	(FIRST_PSEUDO_REG): Update.
      	(BND): Remove mode iterator.
      	* config/i386/predicates.md (bnd_mem_operator): Remove.
      
      From-SVN: r263835
      Uros Bizjak committed
    • Define vect_perm for variable-length SVE · f5cd4f8c
      Variable-length SVE now supports enough permutes to define vect_perm.
      
      The change to vect_perm_supported is currently a no-op because the
      function is only called with a count of 3.
      
      2018-08-24  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/testsuite/
      	* lib/target-supports.exp (vect_perm_supported): Only return
      	false for variable-length vectors if the permute size is not
      	a power of 2.
      	(check_effective_target_vect_perm)
      	(check_effective_target_vect_perm_byte)
      	(check_effective_target_vect_perm_short): Remove check for
      	variable-length vectors.
      	* gcc.dg/vect/slp-23.c: Add an XFAIL for variable-length SVE.
      	* gcc.dg/vect/slp-perm-10.c: Likewise.
      	* gcc.dg/vect/slp-perm-9.c: Add an XFAIL for variable-length vectors.
      
      From-SVN: r263834
      Richard Sandiford committed
    • Avoid is_constant calls in vectorizable_bswap · 8c2f568c
      The "new" VEC_PERM_EXPR handling makes it easy to support bswap
      for variable-length vectors.
      
      2018-08-24  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-stmts.c (vectorizable_bswap): Handle variable-length
      	vectors.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/bswap_1.c: New test.
      	* gcc.target/aarch64/sve/bswap_2.c: Likewise.
      	* gcc.target/aarch64/sve/bswap_3.c: Likewise.
      
      From-SVN: r263833
      Richard Sandiford committed
    • Handle SLP permutations for variable-length vectors · ab7e60ce
      The SLP code currently punts for all variable-length permutes.
      This patch makes it handle the easy case of N->N permutes in which
      the number of vector lanes is a multiple of N.  Every permute then
      uses the same mask, and that mask repeats (with a stride) every
      N elements.
      
      The patch uses the same path for constant-length vectors,
      since it should be slightly cheaper in terms of compile time.
      
      2018-08-24  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-slp.c (vect_transform_slp_perm_load): Separate out
      	the case in which the permute needs only a single element and
      	repeats for every vector of the result.  Extend that case to
      	handle variable-length vectors.
      	* tree-vect-stmts.c (vectorizable_load): Update accordingly.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/slp_perm_1.c: New test.
      	* gcc.target/aarch64/sve/slp_perm_2.c: Likewise.
      	* gcc.target/aarch64/sve/slp_perm_3.c: Likewise.
      	* gcc.target/aarch64/sve/slp_perm_4.c: Likewise.
      	* gcc.target/aarch64/sve/slp_perm_5.c: Likewise.
      	* gcc.target/aarch64/sve/slp_perm_6.c: Likewise.
      	* gcc.target/aarch64/sve/slp_perm_7.c: Likewise.
      
      From-SVN: r263832
      Richard Sandiford committed
    • DWARF: Call set_indirect_string on DW_MACINFO_start_file · 1ade64c9
      Since -gsplit-dwarf -g3 will output filename as indirect string, call
      set_indirect_string on DW_MACINFO_start_file for -gsplit-dwarf -g3.
      
      gcc/
      
      	PR debug/79342
      	* dwarf2out.c (save_macinfo_strings): Call set_indirect_string
      	on DW_MACINFO_start_file for -gsplit-dwarf -g3.
      
      gcc/testsuite/
      
      	PR debug/79342
      	* gcc.dg/pr79342.: New test.
      
      From-SVN: r263831
      H.J. Lu committed
    • cfg.h (struct control_flow_graph): Add edge_flags_allocated and bb_flags_allocated members. · e144a2b3
      2018-08-24  Richard Biener  <rguenther@suse.de>
      
      	* cfg.h (struct control_flow_graph): Add edge_flags_allocated and
      	bb_flags_allocated members.
      	(auto_flag): New RAII class for allocating flags.
      	(auto_edge_flag): New RAII class for allocating edge flags.
      	(auto_bb_flag): New RAII class for allocating bb flags.
      	* cfgloop.c (verify_loop_structure): Allocate temporary edge
      	flag dynamically.
      	* cfganal.c (dfs_enumerate_from): Remove use of visited sbitmap
      	in favor of temporarily allocated BB flag.
      	* hsa-brig.c: Re-order includes.
      	* hsa-dump.c: Likewise.
      	* hsa-regalloc.c: Likewise.
      	* print-rtl.c: Likewise.
      	* profile-count.c: Likewise.
      
      From-SVN: r263830
      Richard Biener committed
    • rs6000: Check that the base of a TOCREL is the TOC (PR86989) · 6a84c265
      There currently is nothing that prevents replacing the TOC_REGISTER in
      a TOCREL unspec with something else, like a pseudo, or a memory ref.
      This of course does not work.  Fix that.
      
      Tested on powerpc64-linux {-m32,-m64}; committing.
      
      
      Segher
      
      
      2018-08-24  Segher Boessenkool  <segher@kernel.crashing.org>
      
      	PR target/86989
      	* config/rs6000/rs6000.c (toc_relative_expr_p): Check that the base is
      	the TOC register.
      
      ---
       gcc/config/rs6000/rs6000.c | 4 +++-
       1 file changed, 3 insertions(+), 1 deletion(-)
      
      diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
      index a967912..ed33912 100644
      --- a/gcc/config/rs6000/rs6000.c
      +++ b/gcc/config/rs6000/rs6000.c
      @@ -7932,7 +7932,9 @@ toc_relative_expr_p (const_rtx op, bool strict, const_rtx *tocrel_base_ret,
           *tocrel_offset_ret = tocrel_offset;
       
         return (GET_CODE (tocrel_base) == UNSPEC
      -	  && XINT (tocrel_base, 1) == UNSPEC_TOCREL);
      +	  && XINT (tocrel_base, 1) == UNSPEC_TOCREL
      +	  && REG_P (XVECEXP (tocrel_base, 0, 1))
      +	  && REGNO (XVECEXP (tocrel_base, 0, 1)) == TOC_REGISTER);
       }
       
       /* Return true if X is a constant pool address, and also for cmodel=medium
      -- 
      1.8.3.1
      
      From-SVN: r263829
      Segher Boessenkool committed
    • PR 87073/bootstrap · 19b293bf
      	PR 87073/bootstrap
      	* wide-int-range.cc (wide_int_range_div): Do not ignore result
      	from wide_int_range_multiplicative_op.
      
      From-SVN: r263828
      Aldy Hernandez committed
    • Daily bump. · 17a4648c
      From-SVN: r263827
      GCC Administrator committed
  5. 23 Aug, 2018 7 commits