fix breakage from "libstdc++: Remove unnecessary uses of <utility>"
authorHans-Peter Nilsson <hp@bitrange.com>
Thu, 29 Jul 2021 16:02:47 +0000 (18:02 +0200)
committerHans-Peter Nilsson <hp@bitrange.com>
Thu, 29 Jul 2021 23:27:26 +0000 (01:27 +0200)
commit4186cb9cc017a0d4b3f45ef6b2f959ef10f17fc5
tree05724767fc2f19e823587101fc6eba74742b0f8f
parentef22e9c725cc94b68c27b09503bfc4b4064d8dbf
fix breakage from "libstdc++: Remove unnecessary uses of <utility>"

Commit r12-2534 was incomplete and (by inspection derived
from an MMIX build) failing for targets without an insn for
compare_and_swap for pointer-size objects, IOW for targets
for which "ATOMIC_POINTER_LOCK_FREE != 2" is true:

x/gcc/libstdc++-v3/src/c++17/memory_resource.cc: In member function
 'std::pmr::memory_resource*
std::pmr::{anonymous}::atomic_mem_res::exchange(std::pmr::memory_resource*)':
x/gcc/libstdc++-v3/src/c++17/memory_resource.cc:140:21: error:
 'exchange' is not a member of 'std'
  140 |         return std::exchange(val, r);
      |                     ^~~~~~~~
make[5]: *** [Makefile:577: memory_resource.lo] Error 1
make[5]: Leaving directory
 '/home/hp/tmp/newmmix-r12-2579-p3/gccobj/mmix/libstdc++-v3/src/c++17'

This fix was derived from edits elsewhere in that patch.

Tested mmix-knuth-mmixware, restoring build (together with
target-reviving patches as MMIX is currently and at that commit
broken for target-specific reasons).

libstdc++-v3/:
* src/c++17/memory_resource.cc: Use __exchange instead
of std::exchange.
libstdc++-v3/src/c++17/memory_resource.cc