Skip to content
Snippets Groups Projects
  1. Sep 14, 2017
    • Ian Lance Taylor's avatar
      libgo: update to go1.9 · bc998d03
      Ian Lance Taylor authored
          
          Reviewed-on: https://go-review.googlesource.com/63753
      
      From-SVN: r252767
      bc998d03
    • Richard Sandiford's avatar
      Add LOOP_VINFO_MAX_VECT_FACTOR · a41a6142
      Richard Sandiford authored
      
      Epilogue vectorisation uses the vectorisation factor of the main loop
      as the maximum vectorisation factor allowed for correctness.  That makes
      sense as a conservatively correct value, since the chosen vectorisation
      factor will be strictly less than that anyway.  However, once the VF
      itself becomes variable, it's easier to carry across the original
      maximum VF instead.
      
      2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* tree-vectorizer.h (_loop_vec_info): Add max_vectorization_factor.
      	(LOOP_VINFO_MAX_VECT_FACTOR): New macro.
      	(LOOP_VINFO_ORIG_VECT_FACTOR): Replace with...
      	(LOOP_VINFO_ORIG_MAX_VECT_FACTOR): ...this new macro.
      	* tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Update
      	accordingly.
      	* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
      	max_vectorization_factor.
      	(vect_analyze_loop_2): Set LOOP_VINFO_MAX_VECT_FACTOR.
      
      Co-Authored-By: default avatarAlan Hayward <alan.hayward@arm.com>
      Co-Authored-By: default avatarDavid Sherwood <david.sherwood@arm.com>
      
      From-SVN: r252766
      a41a6142
    • Richard Sandiford's avatar
      Add a vect_worthwhile_without_simd_p helper routine · ca09abcb
      Richard Sandiford authored
      
      The vectoriser sometimes considers lowering "vector" operations into N
      scalar word operations.  This N needs to be fixed at compile time, so
      the condition guarding it needs to change when variable-lengh vectors
      are added.  This patch puts the condition into a helper routine so that
      there's only one place to update.
      
      2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* tree-vectorizer.h (vect_min_worthwhile_factor): Delete.
      	(vect_worthwhile_without_simd_p): Declare.
      	* tree-vect-loop.c (vect_worthwhile_without_simd_p): New function.
      	(vectorizable_reduction): Use it.
      	* tree-vect-stmts.c (vectorizable_shift): Likewise.
      	(vectorizable_operation): Likewise.
      
      Co-Authored-By: default avatarAlan Hayward <alan.hayward@arm.com>
      Co-Authored-By: default avatarDavid Sherwood <david.sherwood@arm.com>
      
      From-SVN: r252765
      ca09abcb
    • Richard Sandiford's avatar
      Add a vect_get_num_copies helper routine · e8f142e2
      Richard Sandiford authored
      
      This patch adds a vectoriser helper routine to calculate how
      many copies of a vector statement we need.  At present this
      is always:
      
        LOOP_VINFO_VECT_FACTOR (loop_vinfo) / TYPE_VECTOR_SUBPARTS (vectype)
      
      but later patches add other cases.  Another benefit of using
      a helper routine is that it can assert that the division is
      exact (which it must be).
      
      2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* tree-vectorizer.h (vect_get_num_copies): New function.
      	* tree-vect-data-refs.c (vect_get_data_access_cost): Use it.
      	* tree-vect-loop.c (vectorizable_reduction): Likewise.
      	(vectorizable_induction): Likewise.
      	(vectorizable_live_operation): Likewise.
      	* tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
      	(vectorizable_bswap): Likewise.
      	(vectorizable_call): Likewise.
      	(vectorizable_conversion): Likewise.
      	(vectorizable_assignment): Likewise.
      	(vectorizable_shift): Likewise.
      	(vectorizable_operation): Likewise.
      	(vectorizable_store): Likewise.
      	(vectorizable_load): Likewise.
      	(vectorizable_condition): Likewise.
      	(vectorizable_comparison): Likewise.
      	(vect_analyze_stmt): Pass the slp node to vectorizable_live_operation.
      
      Co-Authored-By: default avatarAlan Hayward <alan.hayward@arm.com>
      Co-Authored-By: default avatarDavid Sherwood <david.sherwood@arm.com>
      
      From-SVN: r252764
      e8f142e2
    • Richard Sandiford's avatar
      Make more use of gimple-fold.h in tree-vect-loop.c · dccf43ae
      Richard Sandiford authored
      
      This patch makes the vectoriser use the gimple-fold.h routines
      in more cases, instead of vect_init_vector.  Later patches want
      to use the same interface to handle variable-length vectors.
      
      2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* tree-vect-loop.c (vectorizable_induction): Use gimple_build instead
      	of vect_init_vector.
      
      Co-Authored-By: default avatarAlan Hayward <alan.hayward@arm.com>
      Co-Authored-By: default avatarDavid Sherwood <david.sherwood@arm.com>
      
      From-SVN: r252763
      dccf43ae
    • Richard Sandiford's avatar
      Add gimple_build_vector* helpers · e7c45b66
      Richard Sandiford authored
      
      This patch adds gimple-fold.h equivalents of build_vector and
      build_vector_from_val.  Like the other gimple-fold.h routines
      they always return a valid gimple value and add any new
      statements to a given gimple_seq.  In combination with later
      patches this reduces the number of force_gimple_operands.
      
      2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* gimple-fold.h (gimple_build_vector_from_val): Declare, and provide
      	an inline wrapper that provides a location.
      	(gimple_build_vector): Likewise.
      	* gimple-fold.c (gimple_build_vector_from_val): New function.
      	(gimple_build_vector): Likewise.
      	* tree-vect-loop.c (get_initial_def_for_reduction): Use the new
      	functions to build the initial value.  Always return a gimple value.
      	(get_initial_defs_for_reduction): Likewise.  Only compute
      	neutral_vec once.
      	(vect_create_epilog_for_reduction): Don't call force_gimple_operand or
      	vect_init_vector on the results from get_initial_def(s)_for_reduction.
      	(vectorizable_induction): Use gimple_build_vector rather than
      	vect_init_vector.
      
      Co-Authored-By: default avatarAlan Hayward <alan.hayward@arm.com>
      Co-Authored-By: default avatarDavid Sherwood <david.sherwood@arm.com>
      
      From-SVN: r252762
      e7c45b66
    • Richard Sandiford's avatar
      Use vec<> for constant permute masks · 908a1a16
      Richard Sandiford authored
      
      This patch makes can_vec_perm_p & co. take a vec<>, wrapped in new
      typedefs vec_perm_indices and auto_vec_perm_indices.  There are two
      reasons for doing this for SVE:
      
      (1) it means that the number of elements is bundled with the elements
          themselves, and is obviously constant.
      
      (2) it makes it easier to change the "unsigned char" element type to
          something wider.
      
      Changing the target hook is left as follow-on work.
      
      2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* target.h (vec_perm_indices): New typedef.
      	(auto_vec_perm_indices): Likewise.
      	* optabs-query.h: Include target.h
      	(can_vec_perm_p): Take a vec_perm_indices *.
      	* optabs-query.c (can_vec_perm_p): Likewise.
      	(can_mult_highpart_p): Update accordingly.  Use auto_vec_perm_indices.
      	* tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
      	* tree-vect-generic.c (lower_vec_perm): Likewise.
      	* tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
      	(vect_grouped_load_supported): Likewise.
      	(vect_shift_permute_load_chain): Likewise.
      	(vect_permute_store_chain): Use auto_vec_perm_indices.
      	(vect_permute_load_chain): Likewise.
      	* fold-const.c (fold_vec_perm): Take vec_perm_indices.
      	(fold_ternary_loc): Update accordingly.  Use auto_vec_perm_indices.
      	Update uses of can_vec_perm_p.
      	* tree-vect-loop.c (calc_vec_perm_mask_for_shift): Replace the
      	mode with a number of elements.  Take a vec_perm_indices *.
      	(vect_create_epilog_for_reduction): Update accordingly.
      	Use auto_vec_perm_indices.
      	(have_whole_vector_shift): Likewise.  Update call to can_vec_perm_p.
      	* tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
      	(vect_transform_slp_perm_load): Likewise.
      	(vect_schedule_slp_instance): Use auto_vec_perm_indices.
      	* tree-vectorizer.h (vect_gen_perm_mask_any): Take a vec_perm_indices.
      	(vect_gen_perm_mask_checked): Likewise.
      	* tree-vect-stmts.c (vect_gen_perm_mask_any): Take a vec_perm_indices.
      	(vect_gen_perm_mask_checked): Likewise.
      	(vectorizable_mask_load_store): Use auto_vec_perm_indices.
      	(vectorizable_store): Likewise.
      	(vectorizable_load): Likewise.
      	(perm_mask_for_reverse): Likewise.  Update call to can_vec_perm_p.
      	(vectorizable_bswap): Likewise.
      
      Co-Authored-By: default avatarAlan Hayward <alan.hayward@arm.com>
      Co-Authored-By: default avatarDavid Sherwood <david.sherwood@arm.com>
      
      From-SVN: r252761
      908a1a16
    • Richard Sandiford's avatar
      Use vec<> in build_vector · 794e3180
      Richard Sandiford authored
      
      This patch makes build_vector take the elements as a vec<> rather
      than a tree *.  This is useful for SVE because it bundles the number
      of elements with the elements themselves, and enforces the fact that
      the number is constant.  Also, I think things like the folds can be used
      with any generic GNU vector, not just those that match machine vectors,
      so the arguments to XALLOCAVEC had no clear limit.
      
      2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* tree.h (build_vector): Take a vec<tree> instead of a tree *.
      	* tree.c (build_vector): Likewise.
      	(build_vector_from_ctor): Update accordingly.
      	(build_vector_from_val): Likewise.
      	* gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise.
      	* tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
      	* tree-vect-generic.c (add_rshift): Likewise.
      	(expand_vector_divmod): Likewise.
      	(optimize_vector_constructor): Likewise.
      	* tree-vect-slp.c (vect_get_constant_vectors): Likewise.
      	(vect_transform_slp_perm_load): Likewise.
      	(vect_schedule_slp_instance): Likewise.
      	* tree-vect-stmts.c (vectorizable_bswap): Likewise.
      	(vectorizable_call): Likewise.
      	(vect_gen_perm_mask_any): Likewise.  Add elements in order.
      	* expmed.c (make_tree): Likewise.
      	* fold-const.c (fold_negate_expr_1): Use auto_vec<tree> when building
      	a vector passed to build_vector.
      	(fold_convert_const): Likewise.
      	(exact_inverse): Likewise.
      	(fold_ternary_loc): Likewise.
      	(fold_relational_const): Likewise.
      	(const_binop): Likewise.  Use VECTOR_CST_ELT directly when operating
      	on VECTOR_CSTs, rather than going through vec_cst_ctor_to_array.
      	(const_unop): Likewise.  Store the reduction accumulator in a
      	variable rather than an array.
      	(vec_cst_ctor_to_array): Take the number of elements as a parameter.
      	(fold_vec_perm): Update calls accordingly.  Use auto_vec<tree> for
      	the new vector, rather than constructing it after the input arrays.
      	(native_interpret_vector): Use auto_vec<tree> when building
      	a vector passed to build_vector.  Add elements in order.
      	* tree-vect-loop.c (get_initial_defs_for_reduction): Use
      	auto_vec<tree> when building a vector passed to build_vector.
      	(vect_create_epilog_for_reduction): Likewise.
      	(vectorizable_induction): Likewise.
      	(get_initial_def_for_reduction): Likewise.  Fix indentation of
      	case statements.
      	* config/sparc/sparc.c (sparc_handle_vis_mul8x16): Change n_elts
      	to a vec<tree> *.
      	(sparc_fold_builtin): Use auto_vec<tree> when building a vector
      	passed to build_vector.
      
      Co-Authored-By: default avatarAlan Hayward <alan.hayward@arm.com>
      Co-Authored-By: default avatarDavid Sherwood <david.sherwood@arm.com>
      
      From-SVN: r252760
      794e3180
    • Richard Sandiford's avatar
      Store VECTOR_CST_NELTS directly in tree_node · 9e822269
      Richard Sandiford authored
      
      Previously VECTOR_CST_NELTS (t) read the number of elements from
      TYPE_VECTOR_SUBPARTS (TREE_TYPE (t)).  There were two ways of handling
      this with variable TYPE_VECTOR_SUBPARTS: either forcibly convert the
      number to a constant (which is doable) or store the number directly
      in the VECTOR_CST.  The latter seemed better, since it involves less
      pointer chasing and since the tree_node u field is otherwise unused
      for VECTOR_CST.  It would still be easy to switch to the former in
      future if we need to free up the field for someting else.
      
      The patch also changes various bits of VECTOR_CST code to use
      VECTOR_CST_NELTS instead of TYPE_VECTOR_SUBPARTS when iterating
      over VECTOR_CST_ELTs.  Also, when the two are checked for equality,
      the patch prefers to read VECTOR_CST_NELTS (which must be constant)
      and check against TYPE_VECTOR_SUBPARTS, instead of the other way
      around.
      
      2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* tree-core.h (tree_base::u): Add an "nelts" field.
      	(tree_vector): Use VECTOR_CST_NELTS as the length.
      	* tree.c (tree_size): Likewise.
      	(make_vector): Initialize VECTOR_CST_NELTS.
      	* tree.h (VECTOR_CST_NELTS): Use the u.nelts field.
      	* cfgexpand.c (expand_debug_expr): Use VECTOR_CST_NELTS instead of
      	TYPE_VECTOR_SUBPARTS.
      	* expr.c (const_vector_mask_from_tree): Consistently use "units"
      	as the number of units, setting it from VECTOR_CST_NELTS.
      	(const_vector_from_tree): Likewise.
      	* fold-const.c (negate_expr_p): Use VECTOR_CST_NELTS instead of
      	TYPE_VECTOR_SUBPARTS for the number of elements in a VECTOR_CST.
      	(fold_negate_expr_1): Likewise.
      	(fold_convert_const): Likewise.
      	(const_binop): Likewise.  Differentiate the number of output and
      	input elements.
      	(const_unop): Likewise.
      	(fold_ternary_loc): Use VECTOR_CST_NELTS for the number of elements
      	in a VECTOR_CST, asserting that it is the same as TYPE_VECTOR_SUBPARTS
      	in cases that did the opposite.
      
      Co-Authored-By: default avatarAlan Hayward <alan.hayward@arm.com>
      Co-Authored-By: default avatarDavid Sherwood <david.sherwood@arm.com>
      
      From-SVN: r252758
      9e822269
    • Will Schmidt's avatar
      fold-vec-ld-longlong.c: Add lp64 requirement. · 2a94be35
      Will Schmidt authored
      [gcc/testsuite]
      
      2017-09-14  Will Schmidt  <will_schmidt@vnet.ibm.com>
      
      	* gcc.target/powerpc/fold-vec-ld-longlong.c: Add lp64 requirement.
      
      From-SVN: r252757
      2a94be35
    • Richard Biener's avatar
      tree-ssa-sccvn.c (visit_phi): Merge undefined values similar to VN_TOP. · 0fa0fdb7
      Richard Biener authored
      2017-09-14  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-sccvn.c (visit_phi): Merge undefined values similar
      	to VN_TOP.
      
      	* gcc.dg/tree-ssa/ssa-fre-59.c: New testcase.
      	* gcc.dg/uninit-suppress_2.c: Adjust.
      	* gcc.dg/tree-ssa/ssa-sccvn-2.c: Likewise.
      
      From-SVN: r252756
      0fa0fdb7
    • Rainer Orth's avatar
      Don't xfail gcc.dg/vect/vect-multitypes-12.c on 32-bit SPARC (PR tree-optimization/80996) · 83ada6e8
      Rainer Orth authored
      	PR tree-optimization/80996
      	* gcc.dg/vect/vect-multitypes-12.c: Remove sparc*-*-* handling.
      
      From-SVN: r252754
      83ada6e8
    • Eric Botcazou's avatar
      * dwarf2out.c (dwarf2out_source_line): Remove superfluous test. · b24cbb63
      Eric Botcazou authored
      From-SVN: r252753
      b24cbb63
    • Jakub Jelinek's avatar
      re PR target/81325 (-fcompare-debug failure on ppc64le) · c5f59763
      Jakub Jelinek authored
      	PR target/81325
      	* cfgbuild.c (find_bb_boundaries): Ignore debug insns in decisions
      	if and where to split a bb, except for splitting before debug insn
      	sequences followed by non-label real insn.  Delete debug insns
      	in between basic blocks.
      
      	* g++.dg/cpp0x/pr81325.C: New test.
      
      From-SVN: r252752
      c5f59763
    • Jakub Jelinek's avatar
      * combine.c (make_compound_operation_int): Formatting fixes. · 95a866ba
      Jakub Jelinek authored
      From-SVN: r252751
      95a866ba
    • Jakub Jelinek's avatar
      elf.h (LINK_EH_SPEC): Add -static-pie support. · 8c6562e1
      Jakub Jelinek authored
      	* config/alpha/elf.h (LINK_EH_SPEC): Add -static-pie support.
      	* config/alpha/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
      	* config/netbsd.h (LINK_EH_SPEC): Likewise.
      	* config/sol2.h (LINK_EH_SPEC): Likewise.
      	* config/arm/uclinux-elf.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
      	* config/s390/linux.h (LINK_SPEC): Likewise.
      	* config/freebsd.h (LINK_EH_SPEC): Likewise.
      	* config/openbsd.h (LINK_EH_SPEC): Likewise.
      	* config/lm32/uclinux-elf.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
      	* config/aarch64/aarch64-linux.h (LINUX_TARGET_LINK_SPEC): Likewise.
      	* config/powerpcspe/sysv4.h (LINK_EH_SPEC): Likewise.
      	* config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
      	* config/i386/gnu-user64.h (GNU_USER_TARGET_LINK_SPEC): Fix a typo.
      	* config/i386/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): Formatting fix.
      
      From-SVN: r252750
      8c6562e1
    • Ian Lance Taylor's avatar
      compiler, runtime: simplify select and channel operations · 022aa0ce
      Ian Lance Taylor authored
          
          In preparation for upgrading libgo to the 1.9 release, this
          approximately incorporates https://golang.org/cl/37661 and
          https://golang.org/cl/38351.
          
          CL 37661 changed the gc compiler such that the select statement simply
          returns an integer which is then used as the argument for a switch.
          Since gccgo already worked that way, this just adjusts the switch code
          to look like the gc switch code by removing the explicit case index
          expression and calculating it from the order of calls to selectsend,
          selectrecv, and selectdefault.
          
          CL 38351 simplifies the channel code by not passing the unused channel
          type descriptor pointer.
          
          Reviewed-on: https://go-review.googlesource.com/62730
      
      From-SVN: r252749
      022aa0ce
    • Ian Lance Taylor's avatar
      compiler: avoid compiler crash on invalid program · 0468f67f
      Ian Lance Taylor authored
          
          I encountered this crash while working on upgrading libgo to the 1.9
          release.  I no longer have the cause of the crash, but it doesn't much
          matter, as the policy for crash-on-invalid errors is to fix the crash
          but not bother to commit the invalid test case.
          
          Reviewed-on: https://go-review.googlesource.com/62750
      
      From-SVN: r252748
      0468f67f
    • Ian Lance Taylor's avatar
      compiler: emit type specific functions for aliases · 03ff36aa
      Ian Lance Taylor authored
          
          If we have an alias for a struct or array that requires a
          type-specific function, don't emit the function with the alias name.
          Emit it with the struct/array as usual.
          
          Test case is https://golang.org/cl/62531.
          
          Reviewed-on: https://go-review.googlesource.com/62412
      
      From-SVN: r252747
      03ff36aa
    • Ian Lance Taylor's avatar
      compiler, reflect: fix struct field names for embedded aliases · ce64a8b4
      Ian Lance Taylor authored
          
          This adds much of https://golang.org/cl/35731 and
          https://golang.org/cl/35732 to the gofrontend code.
          
          This is a step toward updating libgo to the 1.9 release.  The
          gofrontend already supports type aliases, and this is required for
          correct support of type aliases when used as embedded fields.
          
          The change to expressions.cc is to handle the << 1, used for the
          newly renamed offsetAnon field, in the constant context used for type
          descriptor initialization.
          
          Reviewed-on: https://go-review.googlesource.com/62710
      
      From-SVN: r252746
      ce64a8b4
    • Ian Lance Taylor's avatar
      compiler: fix check for notinheap conversion · ed52163b
      Ian Lance Taylor authored
          
          A normal pointer may not be converted to a notinheap pointer.  We were
          erroneously permitting a conversion from a normal pointer to a
          notinheap unsafe.Pointer, which is useless since unsafe.Pointer is not
          marked notinheap.  Correct the test to permit a conversion from
          unsafe.Pointer to a notinheap pointer, which is the same test that the
          gc compiler uses.
          
          The test case for this is in the 1.9 runtime package.
          
          Reviewed-on: https://go-review.googlesource.com/62731
      
      From-SVN: r252745
      ed52163b
    • GCC Administrator's avatar
      Daily bump. · 09abdb23
      GCC Administrator authored
      From-SVN: r252744
      09abdb23
  2. Sep 13, 2017
    • Jakub Jelinek's avatar
      sysv4.h (STARTFILE_LINUX_SPEC): Add -static-pie support. · 7d27d2fa
      Jakub Jelinek authored
      	* config/rs6000/sysv4.h (STARTFILE_LINUX_SPEC): Add -static-pie
      	support.
      	(ENDFILE_LINUX_SPEC): Likewise.
      	(LINK_EH_SPEC): Likewise.
      	* config/rs6000/linux64.h (LINK_SHLIB_SPEC): Likewise.
      	(LINK_OS_LINUX_SPEC32): Likewise.
      	(LINK_OS_LINUX_SPEC64): Likewise.
      	* config/rs6000/linux.h (LINK_SHLIB_SPEC): Likewise.
      	(LINK_OS_LINUX_SPEC): Likewise.
      
      From-SVN: r252735
      7d27d2fa
    • Paul Thomas's avatar
      re PR fortran/82173 ([meta-bug] Parameterized derived type errors) · 87f3a5cf
      Paul Thomas authored
      2017-09-13  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/82173
      	* decl.c (match_char_kind): If the kind expression is
      	parameterized, save it in saved_kind_expr and set kind = 0.
      	(gfc_get_pdt_instance): Resolve and simplify before emitting
      	error on expression kind. Insert a missing simplification after
      	insertion of kind expressions.
      
      2017-09-13  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/82173
      	* gfortran.dg/pdt_10.f03 : New test.
      
      From-SVN: r252734
      87f3a5cf
    • Paolo Carlini's avatar
      re PR c++/68177 (Lambda capture doesn't work correctly when lambda is used in a pack expansion) · b6509175
      Paolo Carlini authored
      2017-09-13  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/68177
      	* g++.dg/cpp0x/lambda/lambda-68177.C: New.
      
      From-SVN: r252732
      b6509175
    • Martin Liska's avatar
      Fix emission of exception dispatch (PR middle-end/82154). · c7885b85
      Martin Liska authored
      2017-09-13  Martin Liska  <mliska@suse.cz>
      
      	PR middle-end/82154
      	* stmt.c (expand_sjlj_dispatch_table): Use CASE_LOW when
      	CASE_HIGH is NULL_TREE.
      2017-09-13  Martin Liska  <mliska@suse.cz>
      
      	PR middle-end/82154
      	* g++.dg/torture/pr82154.C: New test.
      
      From-SVN: r252728
      c7885b85
    • Paolo Carlini's avatar
      re PR c++/61362 (g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2 does not compile lambda with template) · 97e63e12
      Paolo Carlini authored
      2017-09-13  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/61362
      	* g++.dg/cpp0x/lambda/lambda-ice19.C: New.
      	* g++.dg/cpp0x/lambda/lambda-ice20.C: Likewise.
      
      From-SVN: r252724
      97e63e12
    • Steve Ellcey's avatar
      re PR tree-optimization/80925 (vect peeling failures) · bce5091a
      Steve Ellcey authored
      2017-09-13  Steve Ellcey  <sellcey@cavium.com>
      
      	PR tree-optimization/80925
      	* gfortran.dg/vect/vect-2.f90: Add
      	--param vect-max-peeling-for-alignment=0 option.
      	Remove unaligned access and peeling checks.
      	* gfortran.dg/vect/vect-3.f90: Ditto.
      	* gfortran.dg/vect/vect-4.f90: Ditto.
      	* gfortran.dg/vect/vect-5.f90: Ditto.
      
      From-SVN: r252723
      bce5091a
    • Paolo Carlini's avatar
      re PR c++/61135 (It seems to be not able to call virtual method of literal... · 13380861
      Paolo Carlini authored
      re PR c++/61135 (It seems to be not able to call virtual method of literal object in lambda expression)
      
      2017-09-13  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/61135
      	* g++.dg/cpp0x/lambda/lambda-ice18.C: New.
      	* g++.dg/cpp1y/lambda-ice2.C: Likewise.
      
      From-SVN: r252571
      13380861
    • Richard Sandiford's avatar
      Turn SECONDARY_MEMORY_NEEDED into a hook · f15643d4
      Richard Sandiford authored
      
      Since the patch is going through all the definitions anyway, it seemed
      like a good opportunity to put the mode argument first, to match the
      order for register_move_cost.
      
      2017-09-13  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* target.def (secondary_memory_needed): New hook.
      	(secondary_reload): Refer to TARGET_SECONDARY_MEMORY_NEEDED
      	instead of SECONDARY_MEMORY_NEEDED.
      	(secondary_memory_needed_mode): Likewise.
      	* hooks.h (hook_bool_mode_reg_class_t_reg_class_t_false): Declare.
      	* hooks.c (hook_bool_mode_reg_class_t_reg_class_t_false): New function.
      	* doc/tm.texi.in (SECONDARY_MEMORY_NEEDED): Replace with...
      	(TARGET_SECONDARY_MEMORY_NEEDED): ...this.
      	(SECONDARY_MEMORY_NEEDED_RTX): Update reference accordingly.
      	* doc/tm.texi: Regenerate.
      	* config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED): Delete.
      	* config/alpha/alpha.c (alpha_secondary_memory_needed): New function.
      	(TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
      	* config/i386/i386.h (SECONDARY_MEMORY_NEEDED): Delete.
      	* config/i386/i386-protos.h (ix86_secondary_memory_needed): Delete.
      	* config/i386/i386.c (inline_secondary_memory_needed): Put the
      	mode argument first and change the reg_class arguments to reg_class_t.
      	(ix86_secondary_memory_needed): Likewise.  Remove the strict parameter.
      	Make static.  Update the call to inline_secondary_memory_needed.
      	(ix86_register_move_cost): Update the call to
      	inline_secondary_memory_needed.
      	(TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
      	* config/ia64/ia64.h (SECONDARY_MEMORY_NEEDED): Delete commented-out
      	definition.
      	* config/ia64/ia64.c (spill_xfmode_rfmode_operand): Refer to
      	TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED
      	in comment.
      	* config/mips/mips.h (SECONDARY_MEMORY_NEEDED): Delete.
      	* config/mips/mips-protos.h (mips_secondary_memory_needed): Delete.
      	* config/mips/mips.c (mips_secondary_memory_needed): Make static
      	and match hook interface.  Add comment from mips.h.
      	(TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
      	* config/mmix/mmix.md (truncdfsf2): Refer to
      	TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED
      	in comment.
      	* config/pa/pa-64.h (SECONDARY_MEMORY_NEEDED): Rename to...
      	(PA_SECONDARY_MEMORY_NEEDED): ...this, and put the mode argument first.
      	* config/pa/pa.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
      	(pa_secondary_memory_needed): New function.
      	* config/pdp11/pdp11.h (SECONDARY_MEMORY_NEEDED): Delete.
      	* config/pdp11/pdp11-protos.h (pdp11_secondary_memory_needed): Delete.
      	* config/pdp11/pdp11.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
      	(pdp11_secondary_memory_needed): Make static and match hook interface.
      	* config/powerpcspe/powerpcspe.h (SECONDARY_MEMORY_NEEDED): Delete.
      	* config/powerpcspe/powerpcspe-protos.h
      	(rs6000_secondary_memory_needed_ptr): Delete.
      	* config/powerpcspe/powerpcspe.c (rs6000_secondary_memory_needed_ptr):
      	Delete.
      	(TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
      	(rs6000_option_override_internal): Assign to
      	targetm.secondary_memory_needed rather than
      	rs6000_secondary_memory_needed_ptr.
      	(rs6000_secondary_memory_needed): Match hook interface.
      	(rs6000_debug_secondary_memory_needed): Likewise.
      	* config/riscv/riscv.h (SECONDARY_MEMORY_NEEDED): Delete.
      	* config/riscv/riscv.c (riscv_secondary_memory_needed): New function.
      	(riscv_register_move_cost): Use it instead of SECONDARY_MEMORY_NEEDED.
      	(TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
      	* config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED): Delete.
      	* config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_ptr):
      	Delete.
      	* config/rs6000/rs6000.c (rs6000_secondary_memory_needed_ptr): Delete.
      	(TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
      	(rs6000_option_override_internal): Assign to
      	targetm.secondary_memory_needed rather than
      	rs6000_secondary_memory_needed_ptr.
      	(rs6000_secondary_memory_needed): Match hook interface.
      	(rs6000_debug_secondary_memory_needed): Likewise.
      	* config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Delete.
      	* config/s390/s390.c (s390_secondary_memory_needed): New function.
      	(TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
      	* config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED): Delete.
      	* config/sparc/sparc.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
      	(sparc_secondary_memory_needed): New function.
      	* lra-constraints.c (check_and_process_move): Refer to
      	TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED
      	in comment.
      	(curr_insn_transform): Likewise.
      	(process_alt_operands): Use targetm.secondary_memory_needed
      	instead of TARGET_SECONDARY_MEMORY_NEEDED.
      	(check_secondary_memory_needed_p): Likewise.
      	(choose_split_class): Likewise.
      	* reload.c: Unconditionally include code that was previously
      	conditional on SECONDARY_MEMORY_NEEDED.
      	(push_secondary_reload): Use targetm.secondary_memory_needed
      	instead of TARGET_SECONDARY_MEMORY_NEEDED.
      	(push_reload): Likewise.
      	* reload1.c: Unconditionally include code that was previously
      	conditional on SECONDARY_MEMORY_NEEDED.
      	(choose_reload_regs): Use targetm.secondary_memory_needed
      	instead of TARGET_SECONDARY_MEMORY_NEEDED.
      	(gen_reload): Likewise.
      	* system.h (SECONDARY_MEMORY_NEEDED): Poison.
      
      Co-Authored-By: default avatarAlan Hayward <alan.hayward@arm.com>
      Co-Authored-By: default avatarDavid Sherwood <david.sherwood@arm.com>
      
      From-SVN: r252461
      f15643d4
    • Richard Sandiford's avatar
      Turn SECONDARY_MEMORY_NEEDED_MODE into a target hook · 94e23f53
      Richard Sandiford authored
      
      This includes a change to LRA.  Previously the code was:
      
          if (sclass == NO_REGS && dclass == NO_REGS)
            return false;
        #ifdef SECONDARY_MEMORY_NEEDED
          if (SECONDARY_MEMORY_NEEDED (sclass, dclass, GET_MODE (src))
        #ifdef SECONDARY_MEMORY_NEEDED_MODE
              && ((sclass != NO_REGS && dclass != NO_REGS)
                  || GET_MODE (src) != SECONDARY_MEMORY_NEEDED_MODE (GET_MODE (src)))
        #endif
              )
            {
              *sec_mem_p = true;
              return false;
            }
        #endif
      
      in which the positioning of the second ifdef meant that defining
      SECONDARY_MEMORY_NEEDED_MODE to its default value was not a no-op:
      without a definition, we would consider using secondary reloads for
      mem<-reg and reg<-mem reloads even if the secondary memory has the
      same mode as the original mem, while defining it would avoid this.
      The latter behaviour seems correct.
      
      The default is different for reload and LRA.  For LRA the default is
      to use the original mode, while reload promotes smaller-than-word
      integral modes to word mode:
      
        if (GET_MODE_BITSIZE (mode) < BITS_PER_WORD && INTEGRAL_MODE_P (mode))
          mode = mode_for_size (BITS_PER_WORD,
                                GET_MODE_CLASS (mode), 0).require ();
      
      Some of the ports that have switched to LRA seemed to have
      SECONDARY_MEMORY_NEEDED_MDOEs based on the old reload definition,
      and still referred to the reload.c:get_secondary_mem function in
      the comments.  The patch just keeps them as-is.
      
      2017-09-13  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* target.def (secondary_memory_needed_mode): New hook:
      	* targhooks.c (default_secondary_memory_needed_mode): Declare.
      	* targhooks.h (default_secondary_memory_needed_mode): New function.
      	* doc/tm.texi.in (SECONDARY_MEMORY_NEEDED_MODE): Replace with...
      	(TARGET_SECONDARY_MEMORY_NEEDED_MODE): ...this.
      	* doc/tm.texi: Regenerate.
      	* lra-constraints.c (check_and_process_move): Use
      	targetm.secondary_memory_needed_mode instead of
      	TARGET_SECONDARY_MEMORY_NEEDED_MODE.
      	(curr_insn_transform): Likewise.
      	* reload.c (get_secondary_mem): Likewise.
      	* config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
      	* config/alpha/alpha.c (alpha_secondary_memory_needed_mode): New
      	function.
      	(TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
      	* config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
      	* config/i386/i386.c (ix86_secondary_memory_needed_mode): New function.
      	(TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
      	* config/powerpcspe/powerpcspe.h (SECONDARY_MEMORY_NEEDED_MODE):
      	Delete.
      	* config/powerpcspe/powerpcspe-protos.h
      	(rs6000_secondary_memory_needed_mode): Delete.
      	* config/powerpcspe/powerpcspe.c
      	(TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
      	(rs6000_secondary_memory_needed_mode): Make static.
      	* config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
      	* config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_mode):
      	Delete.
      	* config/rs6000/rs6000.c (TARGET_SECONDARY_MEMORY_NEEDED_MODE):
      	Redefine.
      	(rs6000_secondary_memory_needed_mode): Make static.
      	* config/s390/s390.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
      	* config/s390/s390.c (s390_secondary_memory_needed_mode): New function.
      	(TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
      	* config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
      	* config/sparc/sparc.c (TARGET_SECONDARY_MEMORY_NEEDED_MODE):
      	Redefine.
      	(sparc_secondary_memory_needed_mode): New function.
      	* system.h (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Poison.
      
      Co-Authored-By: default avatarAlan Hayward <alan.hayward@arm.com>
      Co-Authored-By: default avatarDavid Sherwood <david.sherwood@arm.com>
      
      From-SVN: r252455
      94e23f53
    • Jackson Woodruff's avatar
      [AArch64, PATCH] Improve Neon store of zero · bb5d9711
      Jackson Woodruff authored
      Committed on behalf of Jackson Woodruff.
      
      ---
      gcc/
      
      	* config/aarch64/constraints.md (Umq): New constraint.
      	* config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>):
      	Change to use Umq.
      	(mov<mode>): Update condition.
      
      gcc/testsuite/
      
      	* gcc.target/aarch64/simd/vect_str_zero.c: Update testcase.
      
      From-SVN: r252387
      bb5d9711
    • Marek Polacek's avatar
      re PR c/82167 (Segmentation fault when dereferencing the address of an array argument) · 267bbb6f
      Marek Polacek authored
      	PR c/82167
      	* c-typeck.c (c_expr_sizeof_expr): Use the type of expr.value rather
      	than expr.original_type.
      
      	* gcc.dg/pr82167.c: New test.
      
      From-SVN: r252372
      267bbb6f
    • Thomas Schwinge's avatar
      * MAINTAINERS: Remove email address of Jim Norris. · 72ace300
      Thomas Schwinge authored
      From-SVN: r252218
      72ace300
    • Will Schmidt's avatar
      fold-vec-ld-char.c: New. · 8a411aa3
      Will Schmidt authored
      [gcc/testsuite]
          
      2017-09-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
          
              * gcc.target/powerpc/fold-vec-ld-char.c: New.
              * gcc.target/powerpc/fold-vec-ld-double.c: New.
              * gcc.target/powerpc/fold-vec-ld-float.c: New.
              * gcc.target/powerpc/fold-vec-ld-int.c: New.
              * gcc.target/powerpc/fold-vec-ld-longlong.c: New.
              * gcc.target/powerpc/fold-vec-ld-short.c: New.
      
      From-SVN: r252087
      8a411aa3
    • Jackson Woodruff's avatar
      [Aarch64, Patch] Update failing testcase pr62178.c · 1cb656f8
      Jackson Woodruff authored
      This patch changes pr62178.c so that it now scans
      for two `ldr`s, one into an `s` register, instead
      of a `ld1r` as before. Also add a scan for an mla
      instruction.
      
      The `ld1r` was needed when this should have generated
      a mla by vector. Now that we can generate an mla by
      element instruction and can load directly into the
      simd register, it is cheaper to not do the ld1r
      which needlessly duplicates the single element used
      across the whole vector register.
      
      Committed on behalf of Jackson Woodruff
      
      gcc/testsuite/
      
      	* gcc.target/aarch64/pr62178.c: Updated testcase
      	to scan for two ldrs and an mla.
      
      From-SVN: r252086
      1cb656f8
    • Jonathan Wakely's avatar
      PR libstdc++/81468 constrain std::chrono::time_point constructor · d0dda804
      Jonathan Wakely authored
      	PR libstdc++/81468
      	* include/std/chrono (__enable_if_is_duration)
      	(__disable_if_is_duration): New alias templates to simplify SFINAE.
      	(duration_cast, floor, ceil): Use __enable_if_is_duration.
      	(duration::__is_float, duration::__is_harmonic): New alias templates
      	to simplify SFINAE.
      	(duration::duration(const _Rep2&)): Use _Require, __is_float and
      	__is_harmonic.
      	(duration::duration(const duration<_Rep2, _Period2>&)): Likewise.
      	(__common_rep_type): Remove, replace with ...
      	(__common_rep_t): New alias template.
      	(operator*, operator/, operator%): Use __common_rep_t and
      	__disable_if_is_duration.
      	(time_point::time_point(const time_point<clock, _Dur2>&)): Add missing
      	constraint from LWG DR 1177.
      	* testsuite/20_util/duration/cons/dr1177.cc: New.
      	* testsuite/20_util/duration/literals/range.cc: Update dg-error line.
      	* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
      	* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
      	* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
      	* testsuite/20_util/time_point/cons/81468.cc: New.
      
      From-SVN: r252085
      d0dda804
    • Kyrylo Tkachov's avatar
      [store-merging] Use store order as tie-breaker in sort_by_bitpos · 0f0027d1
      Kyrylo Tkachov authored
      As Alexander pointed out in the thread starting at [1] the sort_by_bitpos sorting function
      was behaving badly when we had multiple stores at the same position.  He fixed that (thanks!)
      but we can do better by not returning zero when the bitpositions are equal but by falling back
      to comparing the order the stores appear in, which is guaranteed to be unique (barring other
      bugs elsewhere).
      
      This patch does that.
      
      Bootstrapped and tested on aarch64-none-linux-gnu.
      
      [1] https://gcc.gnu.org/ml/gcc-patches/2017-07/msg00895.html 
      
      	* gimple-ssa-store-merging.c (sort_by_bitpos): Compare store order
      	when bitposition is the same.
      
      From-SVN: r252084
      0f0027d1
    • Nicolas Roche's avatar
      Make-lang.in: In the fallback mechanim... · 7dbe3736
      Nicolas Roche authored
      2017-09-13  Nicolas Roche  <roche@adacore.com>
      
      	* Make-lang.in: In the fallback mechanim, parse the associated .ali
      	file and try to guess the locations of dependencies.
      
      From-SVN: r252082
      7dbe3736
    • Nathan Sidwell's avatar
      Conv-op identifers not in identifier hash table · f216550d
      Nathan Sidwell authored
      	Conv-op identifers not in identifier hash table
      	* lex.c (conv_type_hasher): Make member fns inline.
      	(make_conv_op_name): Directly clone conv_op_identifier.
      
      From-SVN: r252081
      f216550d
Loading