1. 29 Feb, 2020 8 commits
  2. 28 Feb, 2020 19 commits
    • libstdc++: Fix bogus use of memcmp in ranges::lexicographical_compare (PR 93972) · ce33801f
      We were enabling the memcmp optimization in ranges::lexicographical_compare for
      signed integral types and for integral types wider than a byte.  But memcmp
      gives the wrong answer for arrays of such types.  This patch fixes this issue by
      refining the condition that enables the memcmp optimization.  It's now
      consistent with the corresponding condition used in
      std::lexicographical_compare.
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/93972
      	* include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
      	Fix condition for when to use memcmp, making it consistent with the
      	corresponding condition used in std::lexicographical_compare.
      	* testsuite/25_algorithms/lexicographical_compare/93972.cc: New test.
      Patrick Palka committed
    • coroutines: Update func-params-08.C to suspend three times. · e8219202
      The awaitable initially committed was returning "always ready"
      which meant that the suspension code was not used.  Update
      the test to suspend at each co_await, since this exercises more
      of the infrastructure.
      
      gcc/testsuite/ChangeLog:
      
      2020-02-28  Iain Sandoe  <iain@sandoe.co.uk>
      
      	* g++.dg/coroutines/torture/func-params-08.C: Update
      	to suspend for each co_await operation.
      Iain Sandoe committed
    • runtime: handle linux/arm64 signal register · 3f469f58
      Set sigpc and implement dumpregs for linux/arm64.
      Without this change, cmd/vet tool test will fail randomly.
      
      Updates golang/go#20931
      
      Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/220543
      eric fang committed
    • libstdc++: Update the <numeric> synopsis test to latest standard · 799270b4
      Tested with
      
        make check RUNTESTFLAGS="conformance.exp=*numeric*synopsis* --target_board=unix/-std=$std"
      
      for std in {c++98, c++11, c++17, c++2a}.
      
      libstdc++-v3/ChangeLog:
      
      	* testsuite/26_numerics/headers/numeric/synopsis.cc: Add signatures for
      	functions introduced in C++11, C++17 and C++2a.  Add 'constexpr' to
      	existing signatures for C++2a.
      Patrick Palka committed
    • c++: Fix constrained conversion op. · 586b016c
      We don't want to promote a conversion from viable == 0 to viable == -1.
      Found in ranges-v3.
      
      gcc/cp/ChangeLog
      2020-02-28  Jason Merrill  <jason@redhat.com>
      
      	* call.c (build_user_type_conversion_1): Don't look at the second
      	conversion of a non-viable candidate.
      Jason Merrill committed
    • libstdc++: test for failing assertion should use 'run' not 'compile' · 4735f92d
      And it only needs to define _GLIBCXX_ASSERTIONS not _GLIBCXX_DEBUG.
      
      	* testsuite/24_iterators/range_operations/advance_debug_neg.cc: Run
      	test instead of just compiling it.
      Jonathan Wakely committed
    • Commit for PR92785 · 7485ace8
      Paul Thomas committed
    • Fix target/93937 · ab2f2e19
      2020-02-28  Michael Meissner  <meissner@linux.ibm.com>
      
      	PR target/93937
      	* config/rs6000/vsx.md (vsx_extract_<mode>_<VS_scalar>mode_var):
      	Delete, the insn will never work.
      Michael Meissner committed
    • libstdc++: Also disable caching of reverse_view::begin() for common_ranges · 77e596cf
      When the underlying range models common_range, then reverse_view::begin() is
      already O(1) without caching.  So we should disable the cache in this case too.
      
      libstdc++-v3/ChangeLog:
      
      	* include/std/ranges (reverse_view::_S_needs_cached_begin): Set to false
      	whenever the underlying range models common_range.
      Patrick Palka committed
    • Improve detection of ld_date. · 08bf7bde
      	PR other/93965
      	* configure.ac: Improve detection of ld_date by requiring
      	either two dashes or none.
      	* configure: Regenerate.
      Martin Liska committed
    • c++: Further tweak for P1937R2 - const{expr,eval} inconsistencies · 18396541
      Seems I've missed one thing, as the first hunk in
      https://github.com/cplusplus/draft/commit/c8e68ed202b4a9260616bcee8a9768b5dca4bbca
      changes the wording so that only potentially-evaluated id-expressions that
      denote immediate functions must appear only in the specified contexts.
      That IMO means that in unevaluated contexts there aren't such restrictions
      anymore, so I think in unevaluated contexts one should be able to take the
      address of an immediate function.
      
      2020-02-28  Jakub Jelinek  <jakub@redhat.com>
      
      	P1937R2 - Fixing inconsistencies between const{expr,eval} functions
      	* typeck.c (cp_build_addr_expr_1): Allow taking address of immediate
      	functions in unevaluated contexts.
      
      	* g++.dg/cpp2a/consteval3.C: Change dg-error about taking address of
      	immediate function in unevaluated contexts into dg-bogus.
      	* g++.dg/cpp2a/consteval16.C: New test.
      Jakub Jelinek committed
    • One more patch for PR93564: Prefer smaller hard regno when we do not honor reg alloc order. · f3ce0886
      2020-02-28  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR rtl-optimization/93564
      	* ira-color.c (assign_hard_reg): Prefer smaller hard regno when we
      	do not honor reg alloc order.
      Vladimir N. Makarov committed
    • Fix misleading aarch64 mcpu/march warning string · 349297b6
      The message for conflicting mcpu and march previously printed the
      architecture of the CPU instead of the CPU name, as well as omitting the
      extensions to the march string. This patch corrects both errors. This
      patch fixes PR target/87612.
      
      2020-02-27  Joel Hutton  <Joel.Hutton@arm.com>
      
              PR target/87612
              * config/aarch64/aarch64.c (aarch64_override_options): Fix
              misleading warning string.
      Joel Hutton committed
    • libstdc++: Memoize {drop,drop_while,filter,reverse}_view::begin · a1535015
      This patch adds memoization to these four views so that their begin() has the
      required amortized constant time complexity.
      
      The cache is enabled only for forward_ranges and above because we need the
      underlying iterator to be copyable and multi-pass in order for the cache to be
      usable.  In the general case we represent the cached result of begin() as a bare
      iterator.  This takes advantage of the fact that value-initialized forward
      iterators can be compared to as per N3644, so we can use a value-initialized
      iterator to denote the "empty" state of the cache.
      
      As a special case, when the underlying range models random_access_range and when
      it's profitable size-wise, then we cache the offset of the iterator from the
      beginning of the range instead of caching the iterator itself.
      
      Additionally, in drop_view and reverse_view we disable the cache when the
      underlying range models random_access_range, because in these cases recomputing
      begin() takes O(1) time anyway.
      
      libstdc++-v3/ChangeLog:
      
      	* include/std/ranges (__detail::_CachedPosition): New struct.
      	(views::filter_view::_S_needs_cached_begin): New member variable.
      	(views::filter_view::_M_cached_begin): New member variable.
      	(views::filter_view::begin): Use _M_cached_begin to cache its
      	result.
      	(views::drop_view::_S_needs_cached_begin): New static member variable.
      	(views::drop_view::_M_cached_begin): New member variable.
      	(views::drop_view::begin): Use _M_cached_begin to cache its result
      	when _S_needs_cached_begin.
      	(views::drop_while_view::_M_cached_begin): New member variable.
      	(views::drop_while_view::begin): Use _M_cached_begin to cache its
      	result.
      	(views::reverse_view::_S_needs_cached_begin): New static member
      	variable.
      	(views::reverse_view::_M_cached_begin): New member variable.
      	(views::reverse_view::begin): Use _M_cached_begin to cache its result
      	when _S_needs_cached_begin.
      	* testsuite/std/ranges/adaptors/drop.cc: Augment test to check that
      	drop_view::begin caches its result.
      	* testsuite/std/ranges/adaptors/drop_while.cc: Augment test to check
      	that drop_while_view::begin caches its result.
      	* testsuite/std/ranges/adaptors/filter.cc: Augment test to check that
      	filter_view::begin caches its result.
      	* testsuite/std/ranges/adaptors/reverse.cc: Augment test to check that
      	reverse_view::begin caches its result.
      Patrick Palka committed
    • libstdc++: Fix FS-dependent filesystem tests · a51a546c
      These tests were failing on XFS because it doesn't support setting file
      timestamps past 2038, so the expected overflow when reading back a huge
      timestamp into a file_time_type didn't happen.
      
      Additionally, the std::filesystem::file_time_type::clock has an
      epoch that is out of range of 32-bit time_t so testing times around that
      epoch may also fail.
      
      This fixes the tests to give up gracefully if the filesystem doesn't
      support times that can't be represented in 32-bit time_t.
      
      	* testsuite/27_io/filesystem/operations/last_write_time.cc: Fixes for
      	filesystems that silently truncate timestamps.
      	* testsuite/experimental/filesystem/operations/last_write_time.cc:
      	Likewise.
      Jonathan Wakely committed
    • libstdc++: Fix failing test in debug mode · 86e2dc22
      This fixes a failure due to a (correct) warning seen when testing with
      -D_GLIBCXX_USE_CXX11_ABI=0 -D_GLIBCXX_ASSERTIONS:
      
      include/bits/char_traits.h:365: warning: 'void* __builtin_memcpy(void*, const void*, long unsigned int)'
      specified bound 18446744073709551615 exceeds maximum object size 9223372036854775807 [-Wstringop-overflow=]
      
      FAIL: 21_strings/basic_string/cons/char/1.cc (test for excess errors)
      
      	* testsuite/21_strings/basic_string/cons/char/1.cc: Disable
      	-Wstringop-overflow warnings.
      Jonathan Wakely committed
    • Add myself to MAINTAINERS · 4707548e
      2020-02-28  Joel Hutton  <joel.hutton@arm.com>
      
      	* MAINTAINERS (Write After Approval) : Add myself.
      Joel Hutton committed
    • testsuite: Fix up g++.dg/torture/pr92152.C test for ilp32 targets · 5c3489a0
      2020-02-28  Jakub Jelinek  <jakub@redhat.com>
      
      	PR middle-end/92152
      	* g++.dg/torture/pr92152.C (size_t): Use decltype (sizeof (0)) instead
      	of hardcoding unsigned long.
      	(uint64_t): Use unsigned long long instead of unsigned long.
      Jakub Jelinek committed
    • Daily bump. · 8f22ba6d
      GCC Administrator committed
  3. 27 Feb, 2020 13 commits
    • Document that -Wbuiltin-declaration-mismatch is enabled by default. · ab466f73
      gcc/ChangeLog:
      
      	* doc/invoke.texi (-Wbuiltin-declaration-mismatch): Fix a typo.
      Martin Sebor committed
    • Update gcc fr.po. · 58645f71
      	* fr.po: Update.
      Joseph Myers committed
    • libstdc++: Disable diagnostic URLs in testsuite · 44949494
      	* testsuite/lib/libstdc++.exp (v3_target_compile): Add
      	-fdiagnostics-urls=never to options.
      Jonathan Wakely committed
    • Fix PR target/93932 · 75c299ac
      [gcc]
      2020-02-27  Michael Meissner  <meissner@linux.ibm.com>
      
      	PR target/93932
      	* config/rs6000/vsx.md (vsx_extract_<mode>_var, VSX_D iterator):
      	Split the insn into two parts.  This insn only does variable
      	extract from a register.
      	(vsx_extract_<mode>_var_load, VSX_D iterator): New insn, do
      	variable extract from memory.
      	(vsx_extract_v4sf_var): Split the insn into two parts.  This insn
      	only does variable extract from a register.
      	(vsx_extract_v4sf_var_load): New insn, do variable extract from
      	memory.
      	(vsx_extract_<mode>_var, VSX_EXTRACT_I iterator): Split the insn
      	into two parts.  This insn only does variable extract from a
      	register.
      	(vsx_extract_<mode>_var_load, VSX_EXTRACT_I iterator): New insn,
      	do variable extract from memory.
      
      [gcc/testsuite]
      2020-02-27  Michael Meissner  <meissner@linux.ibm.com>
      
      	PR target/93932
      	* gcc.target/powerpc/fold-vec-extract-longlong.p8.c: Adjust
      	instruction counts.
      Michael Meissner committed
    • Compare ARGUMENT_PACKS [pr93933] · 9d2d2833
      This implements Jason's suggested approach: 'I'd think that the bug is
      that we're treating them as types in the first place; they aren't
      types, so they shouldn't reach comptypes.  I'd lean toward adding an
      assert to that effect and fixing the caller to use
      e.g. template_args_equal.'
      
      	PR c++/93933
      	* pt.c (template_args_equal): Pass ARGUMENT_PACKS through to
      	cp_tree_equal.
      	* tree.c (cp_tree_equal): Compare ARGUMENT_PACKS here,
      	* typeck.c (comptypes): Assert we don't get any argument packs.
      Nathan Sidwell committed
    • libstdc++: Add missing friend declarations in some range adaptors · ba49e9eb
      Some of the range adaptors have distinct constant and non-constant
      iterator/sentinel types, along with converting constructors that can convert a
      non-constant iterator/sentinel to a constant iterator/sentinel.  This patch adds
      the missing appropriate friend declarations in order to make these converting
      constructors well formed.
      
      Strictly speaking it seems the friendship relations don't need to go both ways
      -- we could get away with declaring e.g. friend _Iterator<false>; instead of
      friend _Iterator<!_Const>; but both reference implementations seem to use the
      latter symmetric form anyway.
      
      libstdc++-v3/ChangeLog:
      
      	* include/std/ranges (transform_view::_Iterator<_Const>): Befriend
      	_Iterator<!_Const>.
      	(transform_view::_Sentinel<_Const>): Befriend _Sentinel<!_Const>.
      	(take_view::_Sentinel<_Const>): Likewise.
      	(take_while_view::_Sentinel<_Const>): Likewise.
      	(split_view::_OuterIter<_Const>): Befriend _OuterIter<!_Const>.
      	* testsuite/std/ranges/adaptors/split.cc: Augment test.
      	* testsuite/std/ranges/adaptors/take.cc: Augment test.
      	* testsuite/std/ranges/adaptors/take_while.cc: Augment test.
      	* testsuite/std/ranges/adaptors/transform.cc: Augment test.
      Patrick Palka committed
    • libstdc++: -D_GLIBCXX_DEBUG fixes in the constrained algos tests · 10a32d47
      This fixes the failures in the constrained algos tests when they are run in
      debug mode.
      
      libstdc++-v3/ChangeLog:
      
      	* testsuite/25_algorithms/copy/constrained.cc: Don't assume that the
      	base() of a vector<>::iterator is a pointer.
      	* testsuite/25_algorithms/copy_backward/constrained.cc: Likewise.
      	* testsuite/25_algorithms/move/constrained.cc: Likewise.
      	* testsuite/25_algorithms/move_backward/constrained.cc: Likewise.
      	* testsuite/25_algorithms/inplace_merge/constrained.cc: Use foo.data()
      	instead of &foo[0].
      	* testsuite/25_algorithms/partial_sort/constrained.cc: Likewise.
      	* testsuite/25_algorithms/partial_sort_copy/constrained.cc: Likewise.
      	* testsuite/25_algorithms/shuffle/constrained.cc: Likewise.
      	* testsuite/25_algorithms/sort/constrained.cc: Likewise.
      	* testsuite/25_algorithms/stable_sort/constrained.cc: Likewise.
      Patrick Palka committed
    • ipa-cp: Avoid an ICE processing self-recursive cloned edges (PR 93707) · cfeef9ac
      2020-02-27  Martin Jambor  <mjambor@suse.cz>
      	    Feng Xue  <fxue@os.amperecomputing.com>
      
      	PR ipa/93707
      	* ipa-cp.c (same_node_or_its_all_contexts_clone_p): Replaced with
      	new function calls_same_node_or_its_all_contexts_clone_p.
      	(cgraph_edge_brings_value_p): Use it.
      	(cgraph_edge_brings_value_p): Likewise.
      	(self_recursive_pass_through_p): Return false if caller is a clone.
      	(self_recursive_agg_pass_through_p): Likewise.
      
      	testsuite/
      	* gcc.dg/ipa/pr93707.c: New test.
      Martin Jambor committed
    • middle-end: Fix wrong code caused by disagreemed between FRE and access path oracle [PR 92152] · 9640ff5a
      FRE is checking stores for equivalence based on their address, value and
      base+ref alias sets.  Because ref alias set is not always the alias set of
      innermost type, but it may be one of refs in the access path (as decided by
      component_uses_parent_alias_set_from) it means that we can not really rely on
      the remaining part of access path to be meaningful in any way except for
      offset+size computation.
      
      The patch makes alias (which is used by FRE to validate transform) and
      tree-ssa-alias to share same logic for ending the access path relevant for
      TBAA. tree-ssa-alias previously ended access paths on VIEW_CONVERT_EXPR and
      BIT_FIELD_REF so it is not hard to wire in common predicate.  However it led to
      additional issues (I tried to read the code quite carefully for possible extra
      fun, so I hope I found it all):
      
        1) alias_component_refs_walk compares base and reference sizes to see
           if one access path may continue by another.  This check can be confused
           by an union containing structure with zero sized array.  In this case we
           no longer see the refernece to zero sized array and think that ref size
           is 0.
      
           In an access path there can be at most one (valid) trailing/zero sized
           array access, so the sizes in the access path are decreasing with the
           this exception. This is already handled by the logic, however the access
           is not expected to happen past the end of TBAA segment.  I suppose this
           was kind of latent problem before because one can think of access path
           doing traling array past VIEW_CONVERT_EXPR, but since in C code we don't
           VCE and in non-C we don't do trailing arrays, we did not hit the problem.
      
           I fixed this by tracking if the trailing array references appearing after
           the end of TBAA access path and mostly punt in the second case (because we
           need to support kind of all type puning here). I do not think we can assume
           much of sanity here, in particular, we no longer know there is only one
           because FRE may mix things up.
      
           An exception is the walk that looks for occurence of basetype of path1
           within TBAA relevant part of path2.  Here we realy care about TBAA
           relevant parts of paths and thus do not need to give up.
      
           I broke out the logic into ends_tbaa_access_path_p to avoid duplication and
           to let me stick some detailed comments. This became much more complex
           than I originally imagined (still it is useful to make oracle both faster
           and more precise).
      
           Note that logic in aliasing_component_refs_walk is safe since it works
           on TBAA relevant segments of paths only.
        2) nonoverlapping_refs_since_match_p is using TBAA only in the corner case
           that the paths got out of sync and re-synchronize of types of same size
           are found.  I thus extended it to whole paths (not only TBAA relevant
           parts) and track if the TBAA part can be used by counting of number of
           TBAA relevant res on the stack.
      
           I have noticed that in one case we call nonoverlapping_refs_since_match_p
           before checking for view converting MEM_REFs and in others we check
           after.  I think we want to just disable TBAA part if view convert
           is in there but still disambiguate.  I will do this incrementaly.
        3) nonoverlapping_component_refs_p uses TBAA so it needs to punt on
           end of TBAA path. It deals with no sizes and thus there is not the issue
           as in 1).
      
      I am also attaching one (most probably) valid C++ testcase (by Mark Williams)
      where we incorrectly disambiguated while the code is valid by the common
      initial sequence rule.  This happens to be fixed by same patch. Here one access
      goes through union and follows by access path trhough one filed, while other
      access path start by different field of the union with common initial sequence.
      This made aliasing_component_refs_p to not find the overlapping type (because
      there is none) and disambiguate.  Now we cut the first access path by the union
      reference and this makes us to find the path continuation in
      alias_component_refs_walk.
      
      If FRE is ever made more careful about access paths past the fist union
      reference (I think that would be good idea since unions are quite common in C++
      and we throw away quite useful info) then we will need to teach access path
      oracle about the common initial sequence rule (which, as Mark pointed out, is
      part of both C and C++ standards).
      
      Only argument that can possibly invalidate this testcase is that I do not see
      that stadnard is clear about the situation where one access path contains the
      union but other starts after the union.
      
      Clearly if both start after the union reference we are right to disambiguate
      (since there is no union unvolved).  If both starts before union then there is
      common initial sequence and by standard it is defined. This case works on current
      trunk because aliasing_component_refs_p resorts to base+offset after finding
      the match. But even that is more or less an accident I would say.
      
      I had to xfail three testcases.  While alias-access-path ones are artificial
      and odd, 20030807-7 is derived from gcc and shows that we give up on
      disambiguations of tree_node union, so this patch disables useful transform
      in real world code.
      
      I am still planning to collect some data on the effect of this change to TBAA,
      but unless we want to reorganize FRE, I do not think there is better solution.
      
      gcc/ChangeLog:
      
      2020-02-26  Jan Hubicka  <hubicka@ucw.cz>
      
      	PR middle-end/92152
      	* alias.c (ends_tbaa_access_path_p): Break out from ...
      	(component_uses_parent_alias_set_from): ... here.
      	* alias.h (ends_tbaa_access_path_p): Declare.
      	* tree-ssa-alias.c (access_path_may_continue_p): Break out from ...;
      	handle trailing arrays past end of tbaa access path.
      	(aliasing_component_refs_p): ... here; likewise.
      	(nonoverlapping_refs_since_match_p): Track TBAA segment of the access
      	path; disambiguate also past end of it.
      	(nonoverlapping_component_refs_p): Use only TBAA segment of the access
      	path.
      
      gcc/testsuite/ChangeLog:
      
      2020-02-26  Jan Hubicka  <hubicka@ucw.cz>
      
      	PR middle-end/92152
      	* gcc.dg/tree-ssa/alias-access-path-12.c: New testcase.
      	* g++.dg/torture/pr92152.C: New testcase.
      	* gcc.dg/torture/pr92152.c: New testcase.
      	* gcc.dg/tree-ssa/20030807-7.c: xfail.
      	* gcc.dg/tree-ssa/alias-access-path-4.c: xfail one case.
      	* gcc.dg/tree-ssa/alias-access-path-5.c: xfail one case.
      Jan Hubicka committed
    • [GCC][PATCH][ARM] Add vreinterpret, vdup, vget and vset bfloat16 intrinsics · 17a13507
      This patch adds support for the bf16 vector create, get, set,
      duplicate and reinterpret intrinsics.
      ACLE documents are at https://developer.arm.com/docs/101028/latest
      ISA documents are at https://developer.arm.com/docs/ddi0596/latest
      
      gcc/ChangeLog:
      
      2020-02-27  Mihail Ionescu  <mihail.ionescu@arm.com>
      
      	* (__ARM_NUM_LANES, __arm_lane, __arm_lane_q): Move to the
      	beginning of the file.
      	(vcreate_bf16, vcombine_bf16): New.
      	(vdup_n_bf16, vdupq_n_bf16): New.
      	(vdup_lane_bf16, vdup_laneq_bf16): New.
      	(vdupq_lane_bf16, vdupq_laneq_bf16): New.
      	(vduph_lane_bf16, vduph_laneq_bf16): New.
      	(vset_lane_bf16, vsetq_lane_bf16): New.
      	(vget_lane_bf16, vgetq_lane_bf16): New.
      	(vget_high_bf16, vget_low_bf16): New.
      	(vreinterpret_bf16_u8, vreinterpretq_bf16_u8): New.
      	(vreinterpret_bf16_u16, vreinterpretq_bf16_u16): New.
      	(vreinterpret_bf16_u32, vreinterpretq_bf16_u32): New.
      	(vreinterpret_bf16_u64, vreinterpretq_bf16_u64): New.
      	(vreinterpret_bf16_s8, vreinterpretq_bf16_s8): New.
      	(vreinterpret_bf16_s16, vreinterpretq_bf16_s16): New.
      	(vreinterpret_bf16_s32, vreinterpretq_bf16_s32): New.
      	(vreinterpret_bf16_s64, vreinterpretq_bf16_s64): New.
      	(vreinterpret_bf16_p8, vreinterpretq_bf16_p8): New.
      	(vreinterpret_bf16_p16, vreinterpretq_bf16_p16): New.
      	(vreinterpret_bf16_p64, vreinterpretq_bf16_p64): New.
      	(vreinterpret_bf16_f32, vreinterpretq_bf16_f32): New.
      	(vreinterpret_bf16_f64, vreinterpretq_bf16_f64): New.
      	(vreinterpretq_bf16_p128): New.
      	(vreinterpret_s8_bf16, vreinterpretq_s8_bf16): New.
      	(vreinterpret_s16_bf16, vreinterpretq_s16_bf16): New.
      	(vreinterpret_s32_bf16, vreinterpretq_s32_bf16): New.
      	(vreinterpret_s64_bf16, vreinterpretq_s64_bf16): New.
      	(vreinterpret_u8_bf16, vreinterpretq_u8_bf16): New.
      	(vreinterpret_u16_bf16, vreinterpretq_u16_bf16): New.
      	(vreinterpret_u32_bf16, vreinterpretq_u32_bf16): New.
      	(vreinterpret_u64_bf16, vreinterpretq_u64_bf16): New.
      	(vreinterpret_p8_bf16, vreinterpretq_p8_bf16): New.
      	(vreinterpret_p16_bf16, vreinterpretq_p16_bf16): New.
      	(vreinterpret_p64_bf16, vreinterpretq_p64_bf16): New.
      	(vreinterpret_f32_bf16, vreinterpretq_f32_bf16): New.
      	(vreinterpretq_p128_bf16): New.
      	* config/arm/arm_neon_builtins.def (VDX): Add V4BF.
      	(V_elem): Likewise.
      	(V_elem_l): Likewise.
      	(VD_LANE): Likewise.
      	(VQX) Add V8BF.
      	(V_DOUBLE): Likewise.
      	(VDQX): Add V4BF and V8BF.
      	(V_two_elem, V_three_elem, V_four_elem): Likewise.
      	(V_reg): Likewise.
      	(V_HALF): Likewise.
      	(V_double_vector_mode): Likewise.
      	(V_cmp_result): Likewise.
      	(V_uf_sclr): Likewise.
      	(V_sz_elem): Likewise.
      	(Is_d_reg): Likewise.
      	(V_mode_nunits): Likewise.
      	* config/arm/neon.md (neon_vdup_lane): Enable for BFloat.
      
      gcc/testsuite/ChangeLog:
      
      2020-02-27  Mihail Ionescu  <mihail.ionescu@arm.com>
      
      	* gcc.target/arm/bf16_dup.c: New test.
      	* gcc.target/arm/bf16_reinterpret.c: Likewise.
      Mihail Ionescu committed
    • amdgcn: sub-dword vector min/max/shift/bit operators · dc941ea9
      2020-02-27  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/
      	* config/gcn/gcn-valu.md (VEC_SUBDWORD_MODE): New mode iterator.
      	(<expander><mode>2<exec>): Change modes to VEC_ALL1REG_INT_MODE.
      	(<expander><mode>3<exec>): Likewise.
      	(<expander><mode>3): New.
      	(v<expander><mode>3): New.
      	(<expander><mode>3): New.
      	(<expander><mode>3<exec>): Rename to ...
      	(<expander>v64si3<exec>): ... this, and change modes to V64SI.
      	* config/gcn/gcn.md (mnemonic): Use '%B' for not.
      Andrew Stubbs committed
    • PowerPC Add has_arch_pwr* checks · aa307bd0
      testsuite/
      
      2020-02-25 Will Schmidt  <will_schmidt@vnet.ibm.com>
      
            * lib/target_supports.exp (check_effective_target_has_arch_pwr5): New.
            (check_effective_target_has_arch_pwr6): New.
            (check_effective_target_has_arch_pwr7): New.
            (check_effective_target_has_arch_pwr8): New.
            (check_effective_target_has_arch_pwr9): New.
            * gcc.target/powerpc/pr92132-fp-1.c: Add target check.
      Will Schmidt committed
    • Use -mno-pcrel for tests requiring TOC. · d9dfec65
      2020-02-27  Bill Schmidt  <wschmidt@linux.ibm.com>
      
              * gcc.target/powerpc/ppc64-abi-1.c: Compile with -mno-pcrel.
              * gcc.target/powerpc/ppc64-abi-2.c: Likewise.
      Bill Schmidt committed