In general, merging process should not be very difficult, but we need to
track various ABI changes and GCC-specific patches carefully.  Here is a
general list of actions required to perform the merge:

* Checkout recent GCC tree.
* Run merge.sh script from libsanitizer directory.
* Modify Makefile.am files into asan/tsan/lsan/ubsan/sanitizer_common/interception
  directories if needed.  In particular, you may need to add new source files
  and remove old ones in source files list, add new flags to {C, CXX}FLAGS if
  needed and update DEFS with new defined variables.  You can find these changes
  in corresponding CMakeLists.txt and config-ix.cmake files from compiler-rt source
  directory.
* Apply all needed GCC-specific patches to libsanitizer (note that some of
  them might be already included to upstream).  The list of these patches is stored
  into LOCAL_PATCHES file.
* Apply all necessary compiler changes.  Be especially careful here, you must
  not break ABI between compiler and library.  You can reveal these changes by
  inspecting the history of AddressSanitizer.cpp and ThreadSanitizer.cpp files
  from LLVM source tree.
* Update ASan testsuite with corresponding tests from lib/asan/tests directory.
  Not all tests can be migrated easily, so you don't need them all to be adapted.
* Modify configure.ac file if needed (e.g. if you need to add link against new
  library for sanitizer libs).
* Add new target platforms in configure.tgt script if needed.
* Bump SONAME for sanitizer libraries in asan/tsan/ubsan libtool-version files
  if ABI has changed.
* Regenerate configure script and all Makefiles by autoreconf.  You should use
  exactly the same autoconf and automake versions as for other GCC directories (current
  versions are written in Makefile.in and configure files).
* Run regression testing on at least three platforms (e.g. x86-linux-gnu, x86_64-linux-gnu,
  aarch64-linux-gnu, arm-linux-gnueabi).
* Run {A, UB}San bootstrap on at least three platforms.
* Compare ABI of corresponding libclang_rt.asan and newly build libasan libraries.
  Similarly you can compare latest GCC release with the newly built libraries
  (libasan.so.*, libubsan.so.*, libtsan.so*).
  You can use a pretty good libabigail tool (https://sourceware.org/libabigail/index.html)
  to perform such a comparision.  Note, that the list of exported symbols may differ,
  e.g. because libasan currently does not include UBSan runtime.
* Split your changes into logical parts (e.g. raw merge, compiler changes, GCC-specific changes
  in libasan, configure/Makefile changes). The review process has O(N^2) complexity, so you
  would simplify and probably speed up the review process by doing this.
* Send your patches for review to GCC Patches Mailing List (gcc-patches@gcc.gnu.org).
* Update LOCAL_PATCHES file when you've committed the whole patch set with new revisions numbers.
