1. 03 Jan, 2020 3 commits
  2. 02 Jan, 2020 11 commits
    • re PR fortran/68020 (Issue with implied-shape array parameter of rank > 2) · 46ddb108
      	PR fortran/68020
      	* gfortran.dg/impled_shape_5.f90: Use dg-do compile rather than dg-do
      	run.
      
      From-SVN: r279849
      Jakub Jelinek committed
    • compiler, runtime, reflect: generate hash functions only for map keys · 10172a64
          
          Right now we generate hash functions for all types, just in case they
          are used as map keys. That's a lot of wasted effort and binary size
          for types which will never be used as a map key. Instead, generate
          hash functions only for types that we know are map keys.
          
          Just doing that is a bit too simple, since maps with an interface type
          as a key might have to hash any concrete key type that implements that
          interface. So for that case, implement hashing of such types at
          runtime (instead of with generated code). It will be slower, but only
          for maps with interface types as keys, and maybe only a bit slower as
          the aeshash time probably dominates the dispatch time.
          
          Reorg where we keep the equals and hash functions. Move the hash function
          from the key type to the map type, saving a field in every non-map type.
          That leaves only one function in the alg structure, so get rid of that and
          just keep the equal function in the type descriptor itself.
          
          While we're here, reorganize the rtype struct to more closely match
          the gc version.
          
          This is the gofrontend version of https://golang.org/cl/191198.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/212843
      
      From-SVN: r279848
      Ian Lance Taylor committed
    • compiler: split writing of equal and hash functions for types · 9279b5ba
          
          Separate the generation of type equality and hash functions, rather
          than doing them in a single operation.
          
          This is almost entirely a pure refactoring in preparation for
          generating hash functions only for types that are map keys.  The only
          change in generated code is that for types that are the size of
          numeric types, but not aligned like numeric types, such as [8]byte,
          now use standard hash functions.  They previously used special-purpose
          hash functions because they required special-purpose equal functions.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/212842
      
      From-SVN: r279847
      Ian Lance Taylor committed
    • Add 1bit bit-field testcases. · 45b6395b
      2020-01-02  Andrew Pinski  <apinski@marvell.com>
      
              * gcc.c-torture/execute/bitfld-8.c: New testcase.
              * gcc.c-torture/execute/bitfld-9.c: New testcase.
      
      From-SVN: r279846
      Andrew Pinski committed
    • re PR c/90677 (gcc-9.1.0 fails to build __gcc_diag__ souce: error: 'cgraph_node'… · 4a08009e
      re PR c/90677 (gcc-9.1.0 fails to build __gcc_diag__ souce: error: 'cgraph_node' is not defined as a type)
      
      	PR c/90677
      	* cp-objcp-common.c (identifier_global_tag): Return NULL_TREE if name
      	has not been found, rather than error_mark_node.
      
      	* c-c++-common/pr90677-2.c: New test.
      
      From-SVN: r279840
      Jakub Jelinek committed
    • [Arm] Enable CLI for Armv8.6-a: armv8.6-a, i8mm and bf16. · f782b667
      2020-01-02  Dennis Zhang  <dennis.zhang@arm.com>
      
      	* config/arm/arm-c.c (arm_cpu_builtins): Define
      	__ARM_FEATURE_MATMUL_INT8, __ARM_FEATURE_BF16_VECTOR_ARITHMETIC,
      	__ARM_FEATURE_BF16_SCALAR_ARITHMETIC, and
      	__ARM_BF16_FORMAT_ALTERNATIVE when enabled.
      	* config/arm/arm-cpus.in (armv8_6, i8mm, bf16): New features.
      	* config/arm/arm-tables.opt: Regenerated.
      	* config/arm/arm.c (arm_option_reconfigure_globals): Initialize
      	arm_arch_i8mm and arm_arch_bf16 when enabled.
      	* config/arm/arm.h (TARGET_I8MM): New macro.
      	(TARGET_BF16_FP, TARGET_BF16_SIMD): Likewise.
      	* config/arm/t-aprofile: Add matching rules for -march=armv8.6-a.
      	* config/arm/t-arm-elf (all_v8_archs): Add armv8.6-a.
      	* config/arm/t-multilib: Add matching rules for -march=armv8.6-a.
      	(v8_6_a_simd_variants): New.
      	(v8_*_a_simd_variants): Add i8mm and bf16.
      	* doc/invoke.texi (armv8.6-a, i8mm, bf16): Document new options.
      
      2020-01-02  Dennis Zhang  <dennis.zhang@arm.com>
      
      	* gcc.target/arm/multilib.exp: Add combination tests for armv8.6-a.
      
      From-SVN: r279839
      Dennis Zhang committed
    • Add myself to MAINTAINERS · b1b72741
      From-SVN: r279837
      Dennis Zhang committed
    • Fortran] PR68020 – Fix implied-shape handling for rank > 2 · 48e76d2f
              PR fortran/68020
              * array.c (gfc_match_array_spec): Fix implied-type matching
              for rank > 2.
      
              PR fortran/68020
              * gfortran.dg/implied_shape_4.f90: New.
              * gfortran.dg/implied_shape_5.f90: New.
      
      From-SVN: r279835
      Tobias Burnus committed
    • re PR ipa/93087 (Bogus `-Wsuggest-attribute=cold` on function already marked as… · 4ea5d54b
      re PR ipa/93087 (Bogus `-Wsuggest-attribute=cold` on function already marked as `__attribute__((cold))`)
      
      	PR ipa/93087
      	* predict.c (compute_function_frequency): Don't call
      	warn_function_cold on functions that already have cold attribute.
      
      	* c-c++-common/cold-1.c: New test.
      
      From-SVN: r279829
      Jakub Jelinek committed
    • PR 90374 d0.d, e0.d, es0.d, en0.d, g0.d and ew.d edit descriptors. · 2b70275e
              PR libfortran/90274
              * io/format.c (parse_format_list): Implement the E0 exponent
              width to provide smallest possible width for exponent fields.
              Refactor code for correct parsing and better readability of the
              code.
              * io/io.h (write_real_w0): Change interface to pass in pointer
              to fnode.
              * io/transfer.c: Update all calls to write_real_w0 to use the
              new interface.
              * io/write.c ((write_real_w0): Use the new interface with fnode
              to access both the decimal precision and exponent widths used in
              build_float_string.
              * io/write_float.def (build_float_string): Use the passed in
              exponent width to calculate the used width in the case of E0.
      
      From-SVN: r279828
      Jerry DeLisle committed
    • Daily bump. · a7ff7c72
      From-SVN: r279827
      GCC Administrator committed
  3. 01 Jan, 2020 11 commits
  4. 31 Dec, 2019 4 commits
    • Fix EXTRACT_LAST_REDUCTION segfault · dc176c3c
      This code:
      
            /* Make sure we don't accidentally use the old condition.  */
            cond_expr = NULL_TREE;
      
      was misplaced, since it triggered even when we needed to force the
      original unmodified cond_expr into a mask temporary and then invert it.
      
      2019-12-31  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-stmts.c (vectorizable_condition): Only nullify cond_expr
      	if we've created a new condition.  Don't nullify it if we've decided
      	to keep it and then invert the result.
      
      gcc/testsuite/
      	* gcc.dg/vect/vect-cond-reduc-6.c: New test.
      
      From-SVN: r279804
      Richard Sandiford committed
    • re PR libgomp/93065 (libgomp: destructor missing to delete goacc_cleanup_key) · 2c829799
      	PR libgomp/93065
      	* oacc-init.c (goacc_runtime_deinitialize): New function.
      
      From-SVN: r279803
      Ayush Mittal committed
    • Fix SSA update when vectorisation adds a vdef to a read-only loop · e3969868
      This patch fixes an awkward corner case in which:
      
      (a) we apply if-conversion to a loop;
      
      (b) the original scalar loop doesn't have a vdef, and thus doesn't
          need a virtual phi;
      
      (c) the vectorised main loop does need a vdef and a virtual phi (see below);
      
      (d) we also vectorise the epilogue; and
      
      (e) the vectorised epilogue still needs a scalar epilogue
      
      The specific case in which (c) applies is if a read-only loop is
      vectorised using IFN_LOAD_LANES, which uses clobber statements to
      mark the lifetime of the temporary array.
      
      The vectoriser relies on the SSA renamer to update virtual operands.
      All would probably be well if it postponed this update until after
      it had vectorised both the main loop and the epilogue loop.  However,
      when vectorising the epilogue, vect_do_peeling does:
      
        create_lcssa_for_virtual_phi (loop);
        update_ssa (TODO_update_ssa_only_virtuals);
      
      (with "loop" in this case being the to-be-vectorised epilogue loop).
      So the vectoriser puts the virtual operand into SSA form for the
      vectorised main loop as a separate step, during the early stages
      of vectorising the epilogue.
      
      I wasn't sure at first why that update_ssa was there.  It looked
      initially like it was related to create_lcssa_for_virtual_phi,
      which seemed strange when create_lcssa_for_virtual_phi keeps the
      SSA form up-to-date.  But before r241099 it had the following comment,
      which AFAICT is still the reason:
      
        /* We might have a queued need to update virtual SSA form.  As we
           delete the update SSA machinery below after doing a regular
           incremental SSA update during loop copying make sure we don't
           lose that fact.
           ???  Needing to update virtual SSA form by renaming is unfortunate
           but not all of the vectorizer code inserting new loads / stores
           properly assigns virtual operands to those statements.  */
      
      The patch restores that comment since IMO it's helpful.
      
      (a), (d) and (e) mean that we copy the original un-if-converted scalar
      loop to act as the scalar epilogue.  The update_ssa above means that this
      copying needs to cope with any new virtual SSA names in the main loop.
      The code to do that (reasonably) assumed that one of two things was true:
      
      (1) the scalar loop and the vector loops don't have vdefs, and so no
          virtual operand update is needed.  The definition that applies
          on entry to the loops is the same in all cases.
      
      (2) the scalar loop and the vector loops have virtual phis, and so --
          after applying create_lcssa_for_virtual_phi on the to-be-vectorised
          epilogue loop -- the virtual operand update can be handled in the
          same way as for normal SSA names.
      
      But (b) and (c) together mean that the scalar loop and the
      still-to-be-vectorised epilogue loop have no virtual phi that (2)
      can use.  We'd therefore keep the original vuses when duplicating,
      rather than updating them to the definition that applies on exit
      from the epilogue loop.  (Since the epilogue is still unvectorised
      and has no vdefs, the definition that applies on exit is the same
      as the one that applies on entry.)
      
      This patch therefore adds a third case: the scalar loop and
      to-be-vectorised epilogue have no virtual defs, but the main loop does.
      
      2019-12-31  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-loop-manip.c (create_lcssa_for_virtual_phi): Return
      	the incoming virtual operand definition.
      	(vect_do_peeling): When vectorizing an epilogue loop, handle the
      	case in which the main loop has a virtual phi and the epilogue
      	and scalar loops don't.  Restore an earlier comment about the
      	update_ssa call.
      
      gcc/testsuite/
      	* gcc.dg/vect/vect-epilogues-2.c: New test.
      
      From-SVN: r279802
      Richard Sandiford committed
    • Daily bump. · 657ccd4d
      From-SVN: r279801
      GCC Administrator committed
  5. 30 Dec, 2019 11 commits
    • Add ChangeLog entry for rev 279797 · 8c3dbddb
      From-SVN: r279798
      Olivier Hainque committed
    • undefine OFFSET in testsuite/gcc.dg/vect/tree-vect.h · 5d8ccdc9
      2019-12-20  Olivier Hainque  <hainque@adacore.com>
      
      	* gcc.dg/vect/tree-vect.h: #undef OFFSET.
      
      From-SVN: r279797
      Olivier Hainque committed
    • VxWorks has_nanosleep for libstdc++ enable-libstdcxx-time auto · 784daa97
      2019-12-30  Corentin Gay  <gay@adacore.com>
      
      	* acinclude.m4 (vxworks*): New entry. Set ac_has_nanosleep=yes.
      	* configure: Regenerate.
      
      From-SVN: r279796
      Corentin Gay committed
    • Prevent redefinition of WCHAR_MAX from testsuite/gcc.dg/cpp/ucs.c · 1cf49e51
      gcc/testsuite/gcc.dg/cpp/ucs.c #include <limits.h>
      and then crafts a definition of WCHAR_MAX depending
      on __WCHAR_TYPE__.
      
      The test fails in VxWorks configurations because WCHAR_MAX
      is already exposed by the system limits.h.
      
      The patch simply guards the tentative definition
      by a check verifying if the macro is defined already, so
      we're using the value exposed by limits.h in this case.
      
      2019-12-30  Olivier Hainque  <hainque@adacore.com>
      
      	* testsuite/gcc.dg/cpp/ucs.c: Prevent redefinition
      	of WCHAR_MAX if already exposed by limits.h.
      
      From-SVN: r279795
      Olivier Hainque committed
    • allow $ in scan-tree-dump expressions matching symbol names · 8ee81b4d
      This change adjusts a few scan-tree-dump expressions
      to allow '$' as well as '.' when matching symbol names,
      
      This improves results on VxWorks targets configured with:
      
       #undef NO_DOLLAR_IN_LABEL
       #define NO_DOT_IN_LABEL
      
      2019-12-20  Olivier Hainque  <hainque@adacore.com>
                 Jerome Lambourg  <lambourg@adacore.com>
      
      	* c-c++-common/pr56493.c: Allow '$' in addition to '.'
      	scan-tree-dump expressions matching symbol names.
      	* gcc.dg/tree-ssa/sra-17.c: Likewise.
      	* gcc.dg/tree-ssa/sra-18.c: Likewise.
      
      Co-Authored-By: Jerome Lambourg <lambourg@adacore.com>
      
      From-SVN: r279794
      Olivier Hainque committed
    • Guard aarch64/aapcs64 tests using abitest.S by check_weak_available · 2f7f96b1
      2019-12-16  Joel Brobecker  <brobecker@adacore.com>
                 Olivier Hainque  <hainque@adacore.com>
      
      	* gcc.target/aarch64/aapcs64/aapcs64.exp: Guard tests using
      	abitest.S by check_weak_available.
      
      Co-Authored-By: Olivier Hainque <hainque@adacore.com>
      
      From-SVN: r279793
      Joel Brobecker committed
    • Adapt libstdc++ os_defines for VxWorks to more recent versions · c75e82cd
      This change reworks the VxWorks specific os_defines.h internal
      lisbstdc++ header to help fix build and runtime failures of various
      kinds in environments from 6.4/6.9 to 7 SR640, based on experiments
      and observations conducted against real installs of these OSes for
      different CPU architectures.
      
      2019-12-30  Jerome Lambourg  <lambourg@adacore.com>
                 Olivier Hainque  <hainque@adacore.com>
      
      	libstdc++
      	* config/os/vxworks/os_defines.h
      	(NOMINMAX): Always redefine to 1.
      	(_NO_CPP_INLINES): Likewise.
      	(_GLIBCXX_USE_WEAK_REF): Define to 1 for RTP on
      	VxWorks >= 7, to 0 otherwise.
      	(_GLIBCXX_HAVE_TLS): Define to 1.
      	For VxWorks >= 7:
      	(_GLIBCXX_USE_C99_MATH): Define to 1.
      	(_GLIBCXX_USE_C99_MATH_FP_MACROS_DYNAMIC): Define to 0.
      	(_HAS_TR1_DECLARATIONS): Redefine to 0.
      	For VxWorks < 7, RTP:
      	(_GLIBCXX_INCLUDE_NEXT_C_HEADERS): Define to 1.
      	(_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC): Redefine to 1.
      	(__CORRECT_ISO_CPP11_MATH_H_PROTO_FP): Define.
      	For VxWorks < 7, kernel: #include <vxWorks.h>
      
      Co-Authored-By: Olivier Hainque <hainque@adacore.com>
      
      From-SVN: r279792
      Jerome Lambourg committed
    • Arrange to preinclude yvals.h ahead of stdint on VxWorks 7 · bbbc0595
      On Vxworks 7, includers of stdint.h (which we currently "provide")
      need yvals.h to have been included ahead.
      
      Instead of altering the common stdint-gcc.h with unpleasant
      vxworks specific bits to do that, we arrange to provide stdint-gcc.h
      on its own along with a stdint.h wrapper which preincludes yvals.h
      on vx7 then includes stdint-gcc.h.
      
      2019-12-30  Olivier Hainque  <hainque@adacore.com>
      
      	* config/vxworks/stdint.h: New file.  Include _yvals.h
      	then stdint-gcc.h.
      	* config/t-vxworks: Arrange to install the stdint.h wrapper.
      	* config.gcc (*-*-vxworks*): Add stdint-gcc.h to $extra_headers
      	so it gets copied.  Set use_gcc_stdint to request _not_ crafting
      	stdint.h through the common Makefile rules.
      
      From-SVN: r279791
      Olivier Hainque committed
    • Add missing file expected with rev 279781 · 9905fec4
                  * config/vxworks-c.c: New file.
      
      From-SVN: r279790
      Olivier Hainque committed
    • * fi.po: Update. · c1a75e9b
      From-SVN: r279788
      Joseph Myers committed
    • Add missing files expected with rev 279784 · 1d28a854
      	* config/vxworks/_yvals.h: New file.
      	* config/vxworks/_yvals-wrapper.h: New file.
      	* config/vxworks/math.h: Use it to wrap the VxWorks
      	math.h header.
      	* config/vxworks/complex.h: Likewise.
      	* config/vxworks/setjmp.h: Likewise.
      	* config/vxworks/inttypes.h: Likewise.
      
      From-SVN: r279787
      Olivier Hainque committed