diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst
index 59aff13..2f2be2d 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -51,136 +51,33 @@
 Inlay hints
 ^^^^^^^^^^^
 
-- This feature provides texutal hints interleaved with the code,
-  like parameter names, deduced types and designated initializers.
-
-- The `clangd/inlayHints <https://clangd.llvm.org/extensions#inlay-hints>`_
-  LSP extension is now documented, and both position and range.
-
-- Inlay hints are now on-by-default in clangd, if the client supports and
-  exposes them. (`vscode-clangd
-  <https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd>`_
-  does so). The ``-inlay-hints`` flag has been removed.
-
-- Inlay hints can be `disabled or configured
-  <https://clangd.llvm.org/config#inlayhints>`_ in the config file.
-
 Diagnostics
 ^^^^^^^^^^^
 
-- `Unused #include
-  <https://clangd.llvm.org/design/include-cleaner>`_ diagnostics are available.
-  These are off by default, and can be turned on through the
-  `Diagnostics.UnusedIncludes <https://clangd.llvm.org/config#unusedincludes>`_
-  config option.
-
-- ``Deprecated`` and ``Unnecessary`` tags from LSP 3.15 are set on
-  ``-Wdeprecated`` and ``-Wunused`` diagnostics. Clients may display these
-  in a specialized way.
-
-- clangd suggests inserting includes to fix problems in more cases:
-
-  - calling unknown functions in C, even when an implicit declaration is
-    inferred.
-  - incomplete types (some additional cases).
-  - various diagnostics that specify "include <foo.h>" in their text.
-
-- The "populate switch" action is more reliably offered as a fix for
-  ``-Wswitch`` warnings, and works with C enums.
-
-- Warnings specified by ``ExtraArgs: -W...`` flags in ``.clang-tidy`` config
-  files are now produced.
-
 Semantic Highlighting
 ^^^^^^^^^^^^^^^^^^^^^
 
-- ``virtual`` modifier for method names
-- ``usedAsMutableReference`` modifier for function parameters
-- Lambda captures now marked as local variables.
-
 Compile flags
 ^^^^^^^^^^^^^
 
-- Compile flags like ``-xc++-header`` that must precede input file names are now
-  added correctly by the
-  `CompileFlags.Add <https://clangd.llvm.org/config#add>`_ config option.
-
-- If multiple architectures are specified (e.g. when targeting Apple M1+Intel),
-  clangd will now use the host architecture instead of failing to parse.
-
-- Added `CompileFlags.Compiler <https://clangd.llvm.org/config#compiler>`_
-  option to override executable name in compile flags.
-
-- Copying ``compile_commands.json`` entries from one file to another (and simply
-  adjusting ``file``) should now work correctly.
-
 Hover
 ^^^^^
 
-- Hovering on many attributes (e.g. ``[[nodiscard]]``) will show documentation.
-- Hovering on include directives shows the resolved header path.
-- Hovering on character literals shows their numeric value.
-- Code snippets are marked with the appropriate language instead of always C++.
-  This may improve clients' syntax highlighting.
-- Include desugared types in hover, like in diagnostics.
-  Off by default, controlled with `Hover.ShowAKA
-  <https://clangd.llvm.org/config#showaka>`_ config option.
-
 Code completion
 ^^^^^^^^^^^^^^^
 
-- Completion of attributes (e.g. ``[[gsl::Owner(Foo)]]``)
-- Completion of ``/*ParameterName=*/`` comments.
-- Documentation of items with ``annotate`` attributes now includes the
-  annotation.
-- Improved handling of results with 1-3 character names.
-- Completion of members in constructor init lists (``Foo() : member_() {}``) is
-  much more reliable.
-- C++ Standard library completions should be less noisy: parameter names are
-  deuglified (``vector<_Tp>`` is now ``vector<Tp>``) and many
-  ``__implementation_details`` are hidden altogether.
-
 Signature help
 ^^^^^^^^^^^^^^
 
-- Signatures for template argument lists
-- Signatures for braced constructor calls
-- Signatures for aggregate initializers
-- Signatures for members in constructor init lists are much more reliable.
-- Variadic functions correctly show signature help when typing the variadic
-  arguments.
-- Signature help is retriggered on closing brackets ``)``, ``}``, ``>``.
-  This means signature help should be correct after nested function calls.
-
 Cross-references
 ^^^^^^^^^^^^^^^^
 
-- Support for ``textDocument/typeDefinition`` LSP request.
-- Improved handling of symbols introduced via using declarations.
-- Searching for references to an overriding method also returns references to
-  the base class method. (Typically calls that may invoke the override).
-- All references from the current file are always returned, even if there are
-  enough to exceed our usual limit.
-
 Objective-C
 ^^^^^^^^^^^
 
-- ``#pragma mark`` directives now form groups in the document outline.
-- ``id`` and ``instancetype`` are treated as keywords rather than typedefs
-
 Miscellaneous
 ^^^^^^^^^^^^^
 
-- Include request context on crashes when possible.
-- Many stability, performance and correctness improvements.
-- ``-use-dirty-headers`` command line flag to use dirty buffer contents when
-  parsing headers, rather than the saved on-disk contents.
-- ``clangd --check=/path/to/file.cpp`` now reads config files in ancestor
-  directories, in addition to user config file.
-- Improved compile flags handling in ``clangd-indexer``.
-- The index file format changed in this release, indexes need to be rebuilt.
-  This should happen transparently in standard cases (the background index).
-
 Improvements to clang-doc
 -------------------------
 
@@ -199,159 +96,15 @@
 Improvements to clang-tidy
 --------------------------
 
-- Ignore warnings from macros defined in system headers, if not using the
-  `-system-headers` flag.
-
-- Added support for globbing in `NOLINT*` expressions, to simplify suppressing
-  multiple warnings in the same line.
-
-- Added support for `NOLINTBEGIN` ... `NOLINTEND` comments to suppress
-  Clang-Tidy warnings over multiple lines.
-
-- Added support for external plugin checks with `-load`.
-
 New checks
 ^^^^^^^^^^
 
-- New :doc:`abseil-cleanup-ctad
-  <clang-tidy/checks/abseil-cleanup-ctad>` check.
-
-  Suggests switching the initialization pattern of ``absl::Cleanup``
-  instances from the factory function to class template argument
-  deduction (CTAD), in C++17 and higher.
-
-- New :doc:`bugprone-stringview-nullptr
-  <clang-tidy/checks/bugprone-stringview-nullptr>` check.
-
-  Checks for various ways that the ``const CharT*`` constructor of
-  ``std::basic_string_view`` can be passed a null argument.
-
-- New :doc:`bugprone-suspicious-memory-comparison
-  <clang-tidy/checks/bugprone-suspicious-memory-comparison>` check.
-
-  Finds potentially incorrect calls to ``memcmp()`` based on properties of the
-  arguments.
-
-- New :doc:`cppcoreguidelines-virtual-class-destructor
-  <clang-tidy/checks/cppcoreguidelines-virtual-class-destructor>` check.
-
-  Finds virtual classes whose destructor is neither public and virtual nor
-  protected and non-virtual.
-
-- New :doc:`misc-misleading-bidirectional <clang-tidy/checks/misc-misleading-bidirectional>` check.
-
-  Inspects string literal and comments for unterminated bidirectional Unicode
-  characters.
-
-- New :doc:`misc-misleading-identifier <clang-tidy/checks/misc-misleading-identifier>` check.
-
-  Reports identifier with unicode right-to-left characters.
-
-- New :doc:`readability-container-contains
-  <clang-tidy/checks/readability-container-contains>` check.
-
-  Finds usages of ``container.count()`` and ``container.find() == container.end()`` which should
-  be replaced by a call to the ``container.contains()`` method introduced in C++20.
-
-- New :doc:`readability-container-data-pointer
-  <clang-tidy/checks/readability-container-data-pointer>` check.
-
-  Finds cases where code could use ``data()`` rather than the address of the
-  element at index 0 in a container.
-
-- New :doc:`readability-duplicate-include
-  <clang-tidy/checks/readability-duplicate-include>` check.
-
-  Looks for duplicate includes and removes them.
-
-- New :doc:`readability-identifier-length
-  <clang-tidy/checks/readability-identifier-length>` check.
-
-  Reports identifiers whose names are too short. Currently checks local
-  variables and function parameters only.
-
 New check aliases
 ^^^^^^^^^^^^^^^^^
 
-- New alias :doc:`cert-err33-c
-  <clang-tidy/checks/cert-err33-c>` to
-  :doc:`bugprone-unused-return-value
-  <clang-tidy/checks/bugprone-unused-return-value>` was added.
-
-- New alias :doc:`cert-exp42-c
-  <clang-tidy/checks/cert-exp42-c>` to
-  :doc:`bugprone-suspicious-memory-comparison
-  <clang-tidy/checks/bugprone-suspicious-memory-comparison>` was added.
-
-- New alias :doc:`cert-flp37-c
-  <clang-tidy/checks/cert-flp37-c>` to
-  :doc:`bugprone-suspicious-memory-comparison
-  <clang-tidy/checks/bugprone-suspicious-memory-comparison>` was added.
-
 Changes in existing checks
 ^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-- :doc:`bugprone-assert-side-effect
-  <clang-tidy/checks/bugprone-assert-side-effect>` check now supports an
-  ``IgnoredFunctions`` option to explicitly consider the specified
-  semicolon-separated functions list as not having any side-effects.
-  Regular expressions for the list items are also accepted.
-
-- Fixed a false positive in :doc:`bugprone-throw-keyword-missing
-  <clang-tidy/checks/bugprone-throw-keyword-missing>` when creating an
-  exception object using placement new.
-
-- Removed default setting ``cppcoreguidelines-explicit-virtual-functions.IgnoreDestructors = "true"``,
-  from :doc:`cppcoreguidelines-explicit-virtual-functions
-  <clang-tidy/checks/cppcoreguidelines-explicit-virtual-functions>`
-  to match the current state of the C++ Core Guidelines.
-
-- Eliminated false positives for :doc:`cppcoreguidelines-macro-usage
-  <clang-tidy/checks/cppcoreguidelines-macro-usage>` by restricting
-  the warning about using constants to only macros that expand to literals.
-
-- :doc:`cppcoreguidelines-narrowing-conversions
-  <clang-tidy/checks/cppcoreguidelines-narrowing-conversions>`
-  check now supports a ``WarnOnIntegerToFloatingPointNarrowingConversion``
-  option to control whether to warn on narrowing integer to floating-point
-  conversions.
-
-- Make the :doc:`cppcoreguidelines-pro-bounds-array-to-pointer-decay
-  <clang-tidy/checks/cppcoreguidelines-pro-bounds-array-to-pointer-decay>`
-  check accept string literal to pointer decay in conditional operator even
-  if operands are of the same length.
-
-- Removed suggestion ``use gsl::at`` from warning message in the
-  :doc:`cppcoreguidelines-pro-bounds-constant-array-index
-  <clang-tidy/checks/cppcoreguidelines-pro-bounds-constant-array-index>`
-  check, since that is not a requirement from the C++ Core Guidelines.
-  This allows people to choose their own safe indexing strategy. The
-  fix-it is kept for those who want to use the GSL library.
-
-- Fixed a false positive in :doc:`fuchsia-trailing-return
-  <clang-tidy/checks/fuchsia-trailing-return>` for C++17 deduction guides.
-
-- Updated :doc:`google-readability-casting
-  <clang-tidy/checks/google-readability-casting>` to diagnose and fix
-  functional casts, to achieve feature parity with the corresponding
-  ``cpplint.py`` check.
-
-- Generalized the :doc:`modernize-use-default-member-init
-  <clang-tidy/checks/modernize-use-default-member-init>` check to handle
-  non-default constructors.
-
-- Improved :doc:`performance-move-const-arg
-  <clang-tidy/checks/performance-move-const-arg>` check.
-
-  Removed a wrong FixIt for trivially copyable objects wrapped by
-  ``std::move()`` and passed to an rvalue reference parameter. Removal of
-  ``std::move()`` would break the code.
-
-- :doc:`readability-simplify-boolean-expr
-  <clang-tidy/checks/readability-simplify-boolean-expr>` now simplifies
-  return statements associated with ``case``, ``default`` and labeled
-  statements.
-
 Removed checks
 ^^^^^^^^^^^^^^
 
diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 5cc53e9..fa8860b 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -52,70 +52,21 @@
 Improvements to Clang's diagnostics
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-- -Wbitwise-instead-of-logical (part of -Wbool-operation) warns about use of bitwise operators with boolean operands which have side effects.
-
-- Added diagnostic groups to control diagnostics for attribute extensions by
-  adding groups ``-Wc++N-attribute-extensions`` (where ``N`` is the standard
-  release being diagnosed against). These new groups are automatically implied
-  when passing ``-Wc++N-extensions``. Resolves PR33518.
-
-- Support ``-Wdeclaration-after-statement`` with C99 and later standards, and
-  not just C89, matching GCC's behaviour. A notable usecase is supporting style
-  guides that forbid mixing declarations and code, but want to move to newer C
-  standards.
-
 Non-comprehensive list of changes in this release
 -------------------------------------------------
 
-- Maximum _ExtInt size was decreased from 16,777,215 bits to 8,388,608 bits.
-  Motivation for this was discussed in PR51829.
-- Configuration file syntax extended with ``<CFGDIR>`` token. This expands to
-  the base path of the current config file. See :ref:`configuration-files` for
-  details.
-
 New Compiler Flags
 ------------------
 
-- Clang plugin arguments can now be passed through the compiler driver via
-  ``-fplugin-arg-pluginname-arg``, similar to GCC's ``-fplugin-arg``.
-- The ``-mno-bti-at-return-twice`` flag will make sure a BTI instruction won't
-  be added after a setjmp or possible other return-twice construct (ARM backend
-  only).
-
 Deprecated Compiler Flags
 -------------------------
 
-- -Wweak-template-vtables has been deprecated and no longer has any effect. The
-  flag will be removed in the next release.
-
 Modified Compiler Flags
 -----------------------
 
-- Support has been added for the following processors (``-mcpu`` identifiers in parentheses):
-
-  - RISC-V SiFive E20 (``sifive-e20``).
-  - RISC-V SiFive E21 (``sifive-e21``).
-  - RISC-V SiFive E24 (``sifive-e24``).
-  - RISC-V SiFive E34 (``sifive-e34``).
-  - RISC-V SiFive S21 (``sifive-s21``).
-  - RISC-V SiFive S51 (``sifive-s51``).
-  - RISC-V SiFive S54 (``sifive-s54``).
-  - RISC-V SiFive S76 (``sifive-s76``).
-
-- Support has been added for the following architectures (``-march`` identifiers in parentheses):
-
-  - Armv9-A (``armv9-a``).
-  - Armv9.1-A (``armv9.1-a``).
-  - Armv9.2-A (``armv9.2-a``).
-
 Removed Compiler Flags
 -------------------------
 
-- ``-fno-experimental-new-pass-manager`` has been removed.
-  ``-flegacy-pass-manager`` can be used as a makeshift,
-  Using the legacy pass manager for the optimization pipeline was deprecated in
-  13.0.0 and will be removed after 14.0.0.
-
 New Pragmas in Clang
 --------------------
 
@@ -124,83 +75,12 @@
 Attribute Changes in Clang
 --------------------------
 
-- Attributes loaded as clang plugins which are sensitive to LangOpts must
-  now override ``acceptsLangOpts`` instead of ``diagLangOpts``.
-  Returning false will produce a generic "attribute ignored" diagnostic, as
-  with clang's built-in attributes.
-  If plugins want to provide richer diagnostics, they can do so when the
-  attribute is handled instead, e.g. in ``handleDeclAttribute``.
-  (This was changed in order to better support attributes in code completion).
-
-- __has_cpp_attribute, __has_c_attribute, __has_attribute, and __has_declspec
-  will now macro expand their argument. This causes a change in behavior for
-  code using ``__has_cpp_attribute(__clang__::attr)`` (and same for
-  ``__has_c_attribute``) where it would previously expand to ``0`` for all
-  attributes, but will now issue an error due to the expansion of the
-  predefined ``__clang__`` macro.
-
 Windows Support
 ---------------
 
-- An MSVC compatibility workaround for C++ operator names was removed. As a
-  result, the ``<query.h>`` Windows SDK header may not compile out of the box.
-  Users should use a recent SDK and pass ``-DQUERY_H_RESTRICTION_PERMISSIVE``
-  or pass ``/permissive`` to disable C++ operator names altogether. See
-  `PR42427 <https://llvm.org/pr42427>` for more info.
-
-- Add support for MSVC-compatible ``/hotpatch`` flag in clang-cl, and equivalent
-  -cc1 flag ``-fms-hotpatch``. Along with the linker flag ``/functionpadmin``
-  this creates executable images suitable for runtime code patching. This flag
-  is only required for x86/x64 targets; ARM/ARM64 simply needs the linker
-  ``/functionpadmin``.
-
-  With this addition, clang-cl can be used in live code patching scenarios,
-  along with tools such as Live++ or Recode. Microsoft Edit and Continue isn't
-  currently supported.
-
 C Language Changes in Clang
 ---------------------------
 
-- The value of ``__STDC_VERSION__`` has been bumped to ``202000L`` when passing
-  ``-std=c2x`` so that it can be distinguished from C17 mode. This value is
-  expected to change again when C23 is published.
-- Wide multi-characters literals such as ``L'ab'`` that would previously be interpreted as ``L'b'``
-  are now ill-formed in all language modes. The motivation for this change is outlined in
-  `P2362 <wg21.link/P2362>`_.
-- Support for ``__attribute__((error("")))`` and
-  ``__attribute__((warning("")))`` function attributes have been added.
-- The maximum allowed alignment has been increased from 2^29 to 2^32.
-- Clang now supports the ``_BitInt(N)`` family of bit-precise integer types
-  from C23. This type was previously exposed as ``_ExtInt(N)``, which is now a
-  deprecated alias for ``_BitInt(N)`` (so diagnostics will mention ``_BitInt``
-  even if source uses ``_ExtInt``). ``_BitInt(N)`` and ``_ExtInt(N)`` are the
-  same types in all respects beyond spelling and the deprecation warning.
-  ``_BitInt(N)`` is supported as an extension in older C modes and in all C++
-  modes. Note: the ABI for ``_BitInt(N)`` is still in the process of being
-  stabilized, so this type should not yet be used in interfaces that require
-  ABI stability. The maximum width supported by Clang can be obtained from the
-  ``BITINT_MAXWIDTH`` macro in ``<limits.h>``. Currently, Clang supports bit
-  widths <= 128 because backends are not yet able to cope with some math
-  operations (like division) on wider integer types. See
-  `PR44994 <https://github.com/llvm/llvm-project/issues/44994>`_ for more
-  information.
-- When using ``asm goto`` with outputs whose constraint modifier is ``"+"``, we
-  now change the numbering of the labels to occur after hidden tied inputs for
-  better compatibility with GCC.  For better portability between different
-  compilers and versions, symbolic references rather than numbered references
-  should be preferred. See
-  `this thread <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103640>` for more
-  info.
-
-- Implemented `WG14 N2412 <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2412.pdf>`_,
-  which adds ``*_WIDTH`` macros to limits.h and stdint.h to report the bit
-  width of various integer datatypes.
-
-- The ``ATOMIC_VAR_INIT`` macro from ``<stdatomic.h>`` is now diagnosed as
-  deprecated in C17 and later. The diagnostic can be disabled by defining the
-  ``_CLANG_DISABLE_CRT_DEPRECATION_WARNINGS`` macro prior to including the
-  header.
-
 C++ Language Changes in Clang
 -----------------------------
 
@@ -209,27 +89,12 @@
 C++20 Feature Support
 ^^^^^^^^^^^^^^^^^^^^^
 
-- The ``ATOMIC_VAR_INIT`` and ``ATOMIC_FLAG_INIT`` macros from the C standard
-  library ``<stdatomic.h>`` header are now diagnosed as deprecated in C++20 and
-  later. Note, the behavior is specific to the inclusion of ``<stdatomic.h>``
-  in C++ code; the STL ``<atomic>`` header also controls the behavior of these
-  macros and is not affected by these changes. The ``<stdatomic.h>`` diagnostic
-  can be disabled by defining the ``_CLANG_DISABLE_CRT_DEPRECATION_WARNINGS``
-  macro prior to including the header.
-
-
 C++2b Feature Support
 ^^^^^^^^^^^^^^^^^^^^^
-- Implemented `P1938R3: if consteval <https://wg21.link/P1938R3>`_.
-- Implemented `P2360R0: Extend init-statement to allow alias-declaration <https://wg21.link/P2360R0>`_.
-
 
 CUDA Language Changes in Clang
 ------------------------------
 
-- Clang now supports CUDA versions up to 11.5.
-- Default GPU architecture has been changed from sm_20 to sm_35.
-
 Objective-C Language Changes in Clang
 -------------------------------------
 
@@ -241,25 +106,9 @@
 ABI Changes in Clang
 --------------------
 
-- The ``_ExtInt(N)`` extension has been standardized in C23 as ``_BitInt(N)``.
-  The mangling of this type in C++ has accordingly changed: under the Microsoft
-  ABI it is now mangled using the ``_BitInt`` spelling, and under the Itanium ABI
-  it is now mangled using a dedicated production. Note: the ABI for ``_BitInt(N)``
-  is still in the process of being stabilized, so this type should not yet be
-  used in interfaces that require ABI stability.
-
-- GCC doesn't pack non-POD members in packed structs unless the packed
-  attribute is also specified on the member. Clang historically did perform
-  such packing. Clang now matches the gcc behavior (except on Darwin and PS4).
-  You can switch back to the old ABI behavior with the flag:
-  ``-fclang-abi-compat=13.0``.
-
 OpenMP Support in Clang
 -----------------------
 
-- ``clang-nvlink-wrapper`` tool introduced to support linking of cubin files archived in an archive. See :doc:`ClangNvlinkWrapper`.
-- ``clang-linker-wrapper`` tool introduced to support linking using a new OpenMP target offloading method. See :doc:`ClangLinkerWrapper`.
-
 CUDA Support in Clang
 ---------------------
 
@@ -268,138 +117,27 @@
 X86 Support in Clang
 --------------------
 
-- Support for ``AVX512-FP16`` instructions has been added.
-
 DWARF Support in Clang
 ----------------------
 
-- The default DWARF version has increased from DWARFv4 to DWARFv5.  You can opt
-  back in to the old behavior with ``-gdwarf-4`` or ``-fdebug-default-version=4``.
-  Some platforms (Darwin, Android, and SCE for instance) already opt out of this
-  version bump as is suitable for the platform
-
 Arm and AArch64 Support in Clang
 --------------------------------
 
-- Support has been added for the following processors (command-line identifiers in parentheses):
-  - Arm Cortex-A510 (``cortex-a510``)
-  - Arm Cortex-X2 (``cortex-x2``)
-  - Arm Cortex-A710 (``cortex-A710``)
-
-- The -mtune flag is no longer ignored for AArch64. It is now possible to
-  tune code generation for a particular CPU with -mtune without setting any
-  architectural features. For example, compiling with
-  "-mcpu=generic -mtune=cortex-a57" will not enable any Cortex-A57 specific
-  architecture features, but will enable certain optimizations specific to
-  Cortex-A57 CPUs and enable the use of a more accurate scheduling model.
-
-- The --aarch64-none-elf target now uses the BareMetal driver rather than the
-  GNU driver. Programs that depend on clang invoking GCC as the linker driver
-  should use GCC as the linker in the build system.
-
-- The ``-mbranch-protection`` flag will now also work for the ARM backend.
-
-- The ``attribute((target("branch-protection=...)))`` attributes will now also
-  work for the ARM backend.
-
 Floating Point Support in Clang
 -------------------------------
-- The default setting of FP contraction (FMA) is now -ffp-contract=on (for
-  languages other than CUDA/HIP) even when optimization is off. Previously,
-  the default behavior was equivalent to -ffp-contract=off (-ffp-contract
-  was not set).
-  Related to this, the switch -ffp-model=precise now implies -ffp-contract=on
-  rather than -ffp-contract=fast, and the documentation of these features has
-  been clarified. Previously, the documentation claimed that -ffp-model=precise
-  was the default, but this was incorrect because the precise model implied
-  -ffp-contract=fast, whereas the (now corrected) default behavior is
-  -ffp-contract=on.
-  -ffp-model=precise is now exactly the default mode of the compiler.
-- -fstrict-float-cast-overflow no longer has target specific behavior. Clang
-  will saturate towards the smallest and largest representable integer values.
-  NaNs will be converted to zero.
 
 Internal API Changes
 --------------------
 
-- A new sugar ``Type`` AST node represents types accessed via a C++ using
-  declaration. Given code ``using std::error_code; error_code x;``, ``x`` has
-  a ``UsingType`` which desugars to the previous ``RecordType``.
-
 Build System Changes
 --------------------
 
-- Linux distros can specify ``-DCLANG_DEFAULT_PIE_ON_LINUX=On`` to use ``-fPIE`` and
-  ``-pie`` by default. This matches GCC installations on many Linux distros
-  (configured with ``--enable-default-pie``).
-  (`D113372 <https://reviews.llvm.org/D113372>`_)
-
 AST Matchers
 ------------
 
-- ``TypeLoc`` AST Matchers are now available. These matchers provide helpful
-  utilities for matching ``TypeLoc`` nodes, such as the ``pointerTypeLoc``
-  matcher or the ``hasReturnTypeLoc`` matcher. The addition of these matchers
-  was made possible by changes to the handling of ``TypeLoc`` nodes that
-  allows them to enjoy the same static type checking as other AST node kinds.
-- ``LambdaCapture`` AST Matchers are now available. These matchers allow for
-  the binding of ``LambdaCapture`` nodes. The ``LambdaCapture`` matchers added
-  include the ``lambdaCapture`` node matcher, the ``capturesVar`` traversal
-  matcher, and ``capturesThis`` narrowing matcher.
-- The ``hasAnyCapture`` matcher now only accepts an inner matcher of type
-  ``Matcher<LambdaCapture>``. The matcher originally accepted an inner matcher
-  of type ``Matcher<CXXThisExpr>`` or ``Matcher<VarDecl>``.
-- The ``usingType`` matcher is now available and needed to refer to types that
-  are referred to via using C++ using declarations.
-  The associated ``UsingShadowDecl`` can be matched using ``throughUsingDecl``
-  and the underlying ``Type`` with ``hasUnderlyingType``.
-  ``hasDeclaration`` continues to see through the alias and apply to the
-  underlying type.
-- Added the ``isConsteval`` matcher to match ``consteval`` function
-  declarations as well as `if consteval` and `if ! consteval` statements.
-- Added the ``isConstinit`` matcher to match ``constinit`` variable
-  declarations.
-
 clang-format
 ------------
 
-- Option ``AllowShortEnumsOnASingleLine: false`` has been improved, it now
-  correctly places the opening brace according to ``BraceWrapping.AfterEnum``.
-
-- Option ``AlignAfterOpenBracket: BlockIndent`` has been added. If set, it will
-  always break after an open bracket, if the parameters don't fit on a single
-  line. Closing brackets will be placed on a new line.
-
-- Option ``QualifierAlignment`` has been added in order to auto-arrange the
-  positioning of specifiers/qualifiers
-  `const` `volatile` `static` `inline` `constexpr` `restrict`
-  in variable and parameter declarations to be either ``Right`` aligned
-  or ``Left`` aligned or ``Custom`` using ``QualifierOrder``.
-
-- Option ``QualifierOrder`` has been added to allow the order
-  `const` `volatile` `static` `inline` `constexpr` `restrict`
-  to be controlled relative to the `type`.
-
-- Option ``RemoveBracesLLVM`` has been added to remove optional braces of
-  control statements for the LLVM style.
-
-- Option ``SeparateDefinitionBlocks`` has been added to insert or remove empty
-  lines between definition blocks including functions, classes, structs, enums,
-  and namespaces.
-
-- Add a ``Custom`` style to ``SpaceBeforeParens``, to better configure the
-  space before parentheses. The custom options can be set using
-  ``SpaceBeforeParensOptions``.
-
-- The command line argument `-style=<string>` has been extended so that a specific
-  format file at location <format_file_path> can be selected. This is supported
-  via the syntax: `-style=file:<format_file_path>`.
-
-- Improved C++20 Modules and Coroutines support.
-
-- Option ``AfterOverloadedOperator`` has been added in ``SpaceBeforeParensOptions``
-  to allow space between overloaded operator and opening parentheses.
-
 libclang
 --------
 
diff --git a/clang/docs/analyzer/conf.py b/clang/docs/analyzer/conf.py
index 9be2c2a..761f17b 100644
--- a/clang/docs/analyzer/conf.py
+++ b/clang/docs/analyzer/conf.py
@@ -49,9 +49,9 @@
 # built documents.
 #
 # The short version.
-version = '14'
+version = '15'
 # The full version, including alpha/beta/rc tags.
-release = '14'
+release = '15'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff --git a/libcxx/CMakeLists.txt b/libcxx/CMakeLists.txt
index 77df59e..00fc9b3 100644
--- a/libcxx/CMakeLists.txt
+++ b/libcxx/CMakeLists.txt
@@ -30,7 +30,7 @@
   project(libcxx CXX C)
 
   set(PACKAGE_NAME libcxx)
-  set(PACKAGE_VERSION 14.0.0git)
+  set(PACKAGE_VERSION 15.0.0git)
   set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
   set(PACKAGE_BUGREPORT "llvm-bugs@lists.llvm.org")
 
diff --git a/libcxx/docs/ReleaseNotes.rst b/libcxx/docs/ReleaseNotes.rst
index 8d64542..867cb0f 100644
--- a/libcxx/docs/ReleaseNotes.rst
+++ b/libcxx/docs/ReleaseNotes.rst
@@ -1,5 +1,5 @@
 =========================================
-Libc++ 14.0.0 (In-Progress) Release Notes
+Libc++ 15.0.0 (In-Progress) Release Notes
 =========================================
 
 .. contents::
@@ -10,7 +10,7 @@
 
 .. warning::
 
-   These are in-progress notes for the upcoming libc++ 14 release.
+   These are in-progress notes for the upcoming libc++ 15 release.
    Release notes for previous releases can be found on
    `the Download Page <https://releases.llvm.org/download.html>`_.
 
@@ -18,7 +18,7 @@
 ============
 
 This document contains the release notes for the libc++ C++ Standard Library,
-part of the LLVM Compiler Infrastructure, release 14.0.0. Here we describe the
+part of the LLVM Compiler Infrastructure, release 15.0.0. Here we describe the
 status of libc++ in some detail, including major improvements from the previous
 release and new feature work. For the general LLVM release notes, see `the LLVM
 documentation <https://llvm.org/docs/ReleaseNotes.html>`_. All LLVM releases may
@@ -32,199 +32,17 @@
 the current one. To see the release notes for a specific release, please
 see the `releases page <https://llvm.org/releases/>`_.
 
-What's New in Libc++ 14.0.0?
+What's New in Libc++ 15.0.0?
 ============================
 
 New Features
 ------------
 
-- There's support for the C++20 header ``<format>``. Some parts are still
-  missing, most notably the compile-time format string validation. Some
-  functions are known to be inefficient, both in memory usage and performance.
-  The implementation isn't API- or ABI-stable and therefore considered
-  experimental. (Some not-yet-implemented papers require an API-break.)
-  Vendors can still disable this header by turning the CMake option
-  `LIBCXX_ENABLE_INCOMPLETE_FEATURES` off.
-
-- There's a new CMake option ``LIBCXX_ENABLE_UNICODE`` to disable Unicode
-  support in the ``<format>`` header. This only affects the estimation of the
-  output width of the format functions.
-
-- Support for building libc++ on top of a C Standard Library that does not support ``wchar_t`` was
-  added. This is useful for building libc++ in an embedded setting, and it adds itself to the various
-  freestanding-friendly options provided by libc++.
-
-- Defining ``_LIBCPP_DEBUG`` to ``1`` enables the randomization of unspecified
-  behavior in standard algorithms (e.g. the ordering of equal elements in ``std::sort``, or
-  the ordering of both sides of the partition in ``std::nth_element``).
-
-- Floating-point support for ``std::to_chars`` support has been added.
-  Thanks to Stephan T. Lavavej and Microsoft for providing their implementation
-  to libc++.
-
-- The C++20 ``<coroutine>`` implementation has been completed.
-
-- More C++20 features have been implemented. :doc:`Status/Cxx20` has the full
-  overview of libc++'s C++20 implementation status.
-
-- More C++2b features have been implemented. :doc:`Status/Cxx2b` has the full
-  overview of libc++'s C++2b implementation status.
-
 API Changes
 -----------
 
-- The functions ``std::atomic<T*>::fetch_(add|sub)`` and
-  ``std::atomic_fetch_(add|sub)`` no longer accept a function pointer. While
-  this is technically an API break, the invalid syntax isn't supported by
-  libstdc++ and MSVC STL.  See https://godbolt.org/z/49fvzz98d.
-
-- The call of the functions ``std::atomic_(add|sub)(std::atomic<T*>*, ...)``
-  with the explicit template argument ``T`` are now ill-formed. While this is
-  technically an API break, the invalid syntax isn't supported by libstdc++ and
-  MSVC STL. See https://godbolt.org/z/v9959re3v.
-
-  Due to this change it's now possible to call these functions with the
-  explicit template argument ``T*``. This allows using the same syntax on the
-  major Standard library implementations.
-  See https://godbolt.org/z/oEfzPhTTb.
-
-  Calls to these functions where the template argument was deduced by the
-  compiler are unaffected by this change.
-
-- The functions ``std::allocator<T>::allocate`` and
-  ``std::experimental::pmr::polymorphic_allocator<T>::allocate`` now throw
-  an exception of type ``std::bad_array_new_length`` when the requested size
-  exceeds the maximum supported size, as required by the C++ standard.
-  Previously the type ``std::length_error`` was used.
-
-- Removed the nonstandard methods ``std::chrono::file_clock::to_time_t`` and
-  ``std::chrono::file_clock::from_time_t``; neither libstdc++ nor MSVC STL
-  had such methods. Instead, in C++20, you can use ``std::chrono::file_clock::from_sys``
-  and ``std::chrono::file_clock::to_sys``, which are specified in the Standard.
-  If you are not using C++20, you should move to it.
-
-- The declarations of functions ``declare_reachable``, ``undeclare_reachable``, ``declare_no_pointers``,
-  ``undeclare_no_pointers``, and ``get_pointer_safety`` have been removed not only from C++2b but
-  from all modes. Their symbols are still provided by the dynamic library for the benefit of
-  existing compiled code. All of these functions have always behaved as no-ops.
-
-- ``std::filesystem::path::iterator``, which (in our implementation) stashes
-  a ``path`` value inside itself similar to ``istream_iterator``, now sets its
-  ``reference`` type to ``path`` and its ``iterator_category`` to ``input_iterator_tag``,
-  so that it is a conforming input iterator in C++17 and a conforming
-  ``std::bidirectional_iterator`` in C++20. Before this release, it had set its
-  ``reference`` type to ``const path&`` and its ``iterator_category`` to
-  ``bidirectional_iterator_tag``, making it a non-conforming bidirectional iterator.
-  After this change, ``for`` loops of the form ``for (auto& c : path)`` must be rewritten
-  as either ``for (auto&& c : path)`` or ``for (const auto& c : path)``.
-  ``std::reverse_iterator<path::iterator>`` is no longer rejected.
-
-- Removed the nonstandard default constructor from ``std::chrono::month_weekday``.
-  You must now explicitly initialize with a ``chrono::month`` and
-  ``chrono::weekday_indexed`` instead of "meh, whenever".
-
-- C++20 requires that ``std::basic_string::reserve(n)`` never reduce the capacity
-  of the string. (For that, use ``shrink_to_fit()``.) Prior to this release, libc++'s
-  ``std::basic_string::reserve(n)`` could reduce capacity in C++17 and before, but
-  not in C++20 and later. This caused ODR violations when mixing code compiled under
-  different Standard modes. After this change, libc++'s ``std::basic_string::reserve(n)``
-  never reduces capacity, even in C++17 and before.
-  C++20 deprecates the zero-argument overload of ``std::basic_string::reserve()``,
-  but specifically permits it to reduce capacity. To avoid breaking existing code
-  assuming that ``std::basic_string::reserve()`` will shrink, libc++ maintains
-  the behavior to shrink, even though that makes ``std::basic_string::reserve()`` not
-  a synonym for ``std::basic_string::reserve(0)`` in any Standard mode anymore.
-
-- The ``<experimental/coroutine>`` header is deprecated, as is any
-  use of coroutines without C++20. Use C++20's ``<coroutine>`` header
-  instead. The ``<experimental/coroutine>`` header will be removed
-  in LLVM 15.
-
-- ``_VSTD`` is now an alias for ``std`` instead of ``std::_LIBCPP_ABI_NAMESPACE``.
-  This is technically not a functional change, except for folks that might have been
-  using ``_VSTD`` in creative ways (which has never been officially supported).
-
 ABI Changes
 -----------
 
-- The C++17 variable templates ``is_error_code_enum_v`` and
-  ``is_error_condition_enum_v`` are now of type ``bool`` instead of ``size_t``.
-
-- The C++03 emulation type for ``std::nullptr_t`` has been removed in favor of
-  using ``decltype(nullptr)`` in all standard modes. This is an ABI break for
-  anyone compiling in C++03 mode and who has ``std::nullptr_t`` as part of their
-  ABI. However, previously, these users' ABI would be incompatible with any other
-  binary or static archive compiled with C++11 or later. If you start seeing linker
-  errors involving ``std::nullptr_t`` against previously compiled binaries, this may
-  be the cause. You can define the ``_LIBCPP_ABI_USE_CXX03_NULLPTR_EMULATION`` macro
-  to return to the previous behavior. That macro will be removed in LLVM 15. Please
-  comment `on D109459 <https://reviews.llvm.org/D109459>`_ if you are broken by this change
-  and need to define the macro.
-
-- On Apple platforms, ``std::random_device`` is now implemented on top of ``arc4random()``
-  instead of reading from ``/dev/urandom``. Any implementation-defined token used when
-  constructing a ``std::random_device`` will now be ignored instead of interpreted as a
-  file to read entropy from.
-
-- ``std::lognormal_distribution::param_type`` used to store a data member of type
-  ``std::normal_distribution``; now this member is stored in the ``lognormal_distribution``
-  class itself, and the ``param_type`` stores only the mean and standard deviation,
-  as required by the Standard. This changes ``sizeof(std::lognormal_distribution::param_type)``.
-  You can define the ``_LIBCPP_ABI_OLD_LOGNORMAL_DISTRIBUTION`` macro to return to the
-  previous behavior. That macro will be removed in LLVM 15. Please comment
-  `on PR52906 <https://llvm.org/PR52906>`_ if you are broken by this change and need to
-  define the macro.
-
 Build System Changes
 --------------------
-
-- Building the libc++ shared or static library requires a C++ 20 capable compiler.
-  Consider using a Bootstrapping build to build libc++ with a fresh Clang if you
-  can't use the system compiler to build libc++ anymore.
-
-- Historically, there have been numerous ways of building libc++ and libc++abi. This has
-  led to at least 5 different ways to build the runtimes, which was impossible to
-  maintain with a good level of support. Starting with this release, libc++ and libc++abi support
-  exactly two ways of being built, which should cater to all use-cases. Furthermore,
-  these builds are as lightweight as possible and will work consistently even when targeting
-  embedded platforms, which used not to be the case. :doc:`BuildingLibcxx` describes
-  those two ways of building. Please migrate over to the appropriate build instructions
-  as soon as possible.
-
-  All other ways to build are deprecated and will not be supported in the next release.
-  We understand that making these changes can be daunting. For that reason, here's a
-  summary of how to migrate from the two most common ways to build:
-
-  - If you were rooting your CMake invocation at ``<monorepo>/llvm`` and passing ``-DLLVM_ENABLE_PROJECTS=<...>``
-    (which was the previously advertised way to build the runtimes), please simply root your CMake invocation at
-    ``<monorepo>/runtimes`` and pass ``-DLLVM_ENABLE_RUNTIMES=<...>``.
-
-  - If you were doing two CMake invocations, one rooted at ``<monorepo>/libcxx`` and one rooted at
-    ``<monorepo>/libcxxabi`` (this used to be called a "Standalone build"), please move them to a
-    single invocation like so:
-
-    .. code-block:: bash
-
-        $ cmake -S <monorepo>/libcxx -B libcxx-build <LIBCXX-OPTIONS>
-        $ cmake -S <monorepo>/libcxxabi -B libcxxabi-build <LIBCXXABI-OPTIONS>
-
-    should become
-
-    .. code-block:: bash
-
-        $ cmake -S <monorepo>/runtimes -B build -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" <LIBCXX-OPTIONS> <LIBCXXABI-OPTIONS>
-
-- Support for building the runtimes using the GCC 32 bit multilib flag (``-m32``) has been removed. Support
-  for this had been flaky for a while, and we didn't know of anyone depending on this. Instead, please perform
-  a normal cross-compilation of the runtimes using the appropriate target, such as passing the following to
-  your bootstrapping build:
-
-  .. code-block:: bash
-
-      -DLLVM_RUNTIME_TARGETS=i386-unknown-linux
-
-- Libc++, libc++abi, and libunwind will not be built with ``-fPIC`` by default anymore.
-  If you want to build those runtimes with position-independent code, please specify
-  ``-DCMAKE_POSITION_INDEPENDENT_CODE=ON`` explicitly when configuring the build, or
-  ``-DRUNTIMES_<target-name>_CMAKE_POSITION_INDEPENDENT_CODE=ON`` if using the
-  bootstrapping build.
diff --git a/libcxx/docs/conf.py b/libcxx/docs/conf.py
index 6b0aad6..52414f2 100644
--- a/libcxx/docs/conf.py
+++ b/libcxx/docs/conf.py
@@ -48,9 +48,9 @@
 # built documents.
 #
 # The short X.Y version.
-version = '14.0'
+version = '15.0'
 # The full version, including alpha/beta/rc tags.
-release = '14.0'
+release = '15.0'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff --git a/libcxx/include/__config b/libcxx/include/__config
index 3c3d4b5..5806d6c 100644
--- a/libcxx/include/__config
+++ b/libcxx/include/__config
@@ -24,7 +24,7 @@
 
 #ifdef __cplusplus
 
-#define _LIBCPP_VERSION 14000
+#define _LIBCPP_VERSION 15000
 
 #ifndef _LIBCPP_ABI_VERSION
 #  define _LIBCPP_ABI_VERSION 1
diff --git a/libcxx/include/__libcpp_version b/libcxx/include/__libcpp_version
index bfed819..9e70369 100644
--- a/libcxx/include/__libcpp_version
+++ b/libcxx/include/__libcpp_version
@@ -1 +1 @@
-14000
+15000
diff --git a/libunwind/CMakeLists.txt b/libunwind/CMakeLists.txt
index 04550ae..b098e22 100644
--- a/libunwind/CMakeLists.txt
+++ b/libunwind/CMakeLists.txt
@@ -30,7 +30,7 @@
   project(libunwind LANGUAGES NONE)
 
   set(PACKAGE_NAME libunwind)
-  set(PACKAGE_VERSION 14.0.0git)
+  set(PACKAGE_VERSION 15.0.0git)
   set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
   set(PACKAGE_BUGREPORT "llvm-bugs@lists.llvm.org")
 
diff --git a/libunwind/docs/conf.py b/libunwind/docs/conf.py
index bc91d90..21f1b01 100644
--- a/libunwind/docs/conf.py
+++ b/libunwind/docs/conf.py
@@ -48,9 +48,9 @@
 # built documents.
 #
 # The short X.Y version.
-version = '14.0'
+version = '15.0'
 # The full version, including alpha/beta/rc tags.
-release = '14.0'
+release = '15.0'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff --git a/lld/docs/ReleaseNotes.rst b/lld/docs/ReleaseNotes.rst
index 8268380..c4554bf 100644
--- a/lld/docs/ReleaseNotes.rst
+++ b/lld/docs/ReleaseNotes.rst
@@ -26,30 +26,6 @@
 ELF Improvements
 ----------------
 
-* ``--export-dynamic-symbol-list`` has been added.
-  (`D107317 <https://reviews.llvm.org/D107317>`_)
-* ``--why-extract`` has been added to query why archive members/lazy object files are extracted.
-  (`D109572 <https://reviews.llvm.org/D109572>`_)
-* ``e_entry`` no longer falls back to the address of ``.text`` if the entry symbol does not exist.
-  Instead, a value of 0 will be written.
-  (`D110014 <https://reviews.llvm.org/D110014>`_)
-* If ``-Map`` is specified, ``--cref`` will be printed to the specified file.
-  (`D114663 <https://reviews.llvm.org/D114663>`_)
-* No longer deduplicate local symbol names at the default optimization level of ``-O1``.
-  This results in a larger ``.strtab`` (usually less than 1%) but a faster link
-  time. Use optimization level ``-O2`` to restore the deduplication.
-
-Architecture specific changes:
-
-* The x86-32 port now supports TLSDESC (``-mtls-dialect=gnu2``).
-  (`D112582 <https://reviews.llvm.org/D112582>`_)
-* The x86-64 port now handles non-RAX/non-adjacent ``R_X86_64_GOTPC32_TLSDESC``
-  and ``R_X86_64_TLSDESC_CALL`` (``-mtls-dialect=gnu2``).
-  (`D114416 <https://reviews.llvm.org/D114416>`_)
-* For x86-64, ``--no-relax`` now suppresses ``R_X86_64_GOTPCRELX`` and
-  ``R_X86_64_REX_GOTPCRELX`` GOT optimization
-  (`D113615 <https://reviews.llvm.org/D113615>`_)
-
 Breaking changes
 ----------------
 
diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt
index 957f9d9..72f86e1 100644
--- a/llvm/CMakeLists.txt
+++ b/llvm/CMakeLists.txt
@@ -11,7 +11,7 @@
 set(CMAKE_BUILD_WITH_INSTALL_NAME_DIR ON)
 
 if(NOT DEFINED LLVM_VERSION_MAJOR)
-  set(LLVM_VERSION_MAJOR 14)
+  set(LLVM_VERSION_MAJOR 15)
 endif()
 if(NOT DEFINED LLVM_VERSION_MINOR)
   set(LLVM_VERSION_MINOR 0)
diff --git a/llvm/docs/ReleaseNotes.rst b/llvm/docs/ReleaseNotes.rst
index 3745128..bef9a2a 100644
--- a/llvm/docs/ReleaseNotes.rst
+++ b/llvm/docs/ReleaseNotes.rst
@@ -58,35 +58,18 @@
 Changes to the LLVM IR
 ----------------------
 
-* Using the legacy pass manager for the optimization pipeline is deprecated and
-  will be removed after LLVM 14. In the meantime, only minimal effort will be
-  made to maintain the legacy pass manager for the optimization pipeline.
-* Max allowed integer type was reduced from 2^24-1 bits to 2^23 bits.
-* Max allowed alignment was increased from 2^29 to 2^32.
-
 Changes to building LLVM
 ------------------------
 
-* Building LLVM with Visual Studio now requires version 2019 or later.
-
 Changes to TableGen
 -------------------
 
 Changes to the AArch64 Backend
 ------------------------------
 
-* Added support for the Armv9-A, Armv9.1-A and Armv9.2-A architectures.
-* The compiler now recognises the "tune-cpu" function attribute to support
-  the use of the -mtune frontend flag. This allows certain scheduling features
-  and optimisations to be enabled independently of the architecture. If the
-  "tune-cpu" attribute is absent it tunes according to the "target-cpu".
-
 Changes to the ARM Backend
 --------------------------
 
-* Added support for the Armv9-A, Armv9.1-A and Armv9.2-A architectures.
-* Added support for the Armv8.1-M PACBTI-M extension.
-
 Changes to the MIPS Target
 --------------------------
 
@@ -107,8 +90,6 @@
 
 During this release ...
 
-* Support for ``AVX512-FP16`` instructions has been added.
-
 Changes to the AMDGPU Target
 -----------------------------
 
@@ -131,9 +112,6 @@
 Changes to the C API
 --------------------
 
-* ``LLVMSetInstDebugLocation`` has been deprecated in favor of the more general
-  ``LLVMAddMetadataToInst``.
-
 Changes to the Go bindings
 --------------------------
 
@@ -155,32 +133,13 @@
 Changes to the LLVM tools
 ---------------------------------
 
-* llvm-cov: `-name-allowlist` is now accepted in addition to `-name-whitelist`.
-  `-name-whitelist` is marked as deprecated and to be removed in future
-  releases.
-
 Changes to LLDB
 ---------------------------------
 
-* A change in Clang's type printing has changed the way LLDB names array types
-  (from ``int [N]`` to ``int[N]``) - LLDB pretty printer type name matching
-  code may need to be updated to handle this.
-* The following commands now ignore non-address bits (e.g. AArch64 pointer
-  signatures) in address arguments. In addition, non-address bits will not
-  be shown in the output of the commands.
-
-  * ``memory find``
-  * ``memory read``
-  * ``memory tag read``
-  * ``memory tag write``
-
-* The ``memory read`` command has a new option ``--show-tags``. Use this option
-  to show memory tags beside the contents of tagged memory ranges.
-
 Changes to Sanitizers
 ---------------------
 
-External Open Source Projects Using LLVM 14
+External Open Source Projects Using LLVM 15
 ===========================================
 
 * A project...
diff --git a/llvm/utils/gn/secondary/llvm/version.gni b/llvm/utils/gn/secondary/llvm/version.gni
index 458db94..157929e 100644
--- a/llvm/utils/gn/secondary/llvm/version.gni
+++ b/llvm/utils/gn/secondary/llvm/version.gni
@@ -1,4 +1,4 @@
-llvm_version_major = 14
+llvm_version_major = 15
 llvm_version_minor = 0
 llvm_version_patch = 0
 llvm_version = "$llvm_version_major.$llvm_version_minor.$llvm_version_patch"
diff --git a/llvm/utils/lit/lit/__init__.py b/llvm/utils/lit/lit/__init__.py
index 570cd74..2ae9381 100644
--- a/llvm/utils/lit/lit/__init__.py
+++ b/llvm/utils/lit/lit/__init__.py
@@ -2,7 +2,7 @@
 
 __author__ = 'Daniel Dunbar'
 __email__ = 'daniel@minormatter.com'
-__versioninfo__ = (14, 0, 0)
+__versioninfo__ = (15, 0, 0)
 __version__ = '.'.join(str(v) for v in __versioninfo__) + 'dev'
 
 __all__ = []
diff --git a/llvm/utils/release/build_llvm_package.bat b/llvm/utils/release/build_llvm_package.bat
index 4c3f48e..418f72e 100755
--- a/llvm/utils/release/build_llvm_package.bat
+++ b/llvm/utils/release/build_llvm_package.bat
@@ -27,8 +27,8 @@
 for /f "usebackq" %%i in (`PowerShell ^(Get-Date^).ToString^('yyyyMMdd'^)`) do set datestamp=%%i
 
 set revision=%1
-set package_version=14.0.0-%revision:~0,8%
-set clang_format_vs_version=14.0.0.%datestamp%
+set package_version=15.0.0-%revision:~0,8%
+set clang_format_vs_version=15.0.0.%datestamp%
 set build_dir=llvm_package_%revision:~0,8%
 
 echo Revision: %revision%
diff --git a/openmp/docs/ReleaseNotes.rst b/openmp/docs/ReleaseNotes.rst
index 4763152..697a9e1 100644
--- a/openmp/docs/ReleaseNotes.rst
+++ b/openmp/docs/ReleaseNotes.rst
@@ -1,10 +1,10 @@
 ===========================
-OpenMP 12.0.0 Release Notes
+OpenMP 15.0.0 Release Notes
 ===========================
 
 
 .. warning::
-   These are in-progress notes for the upcoming LLVM 12.0.0 release.
+   These are in-progress notes for the upcoming LLVM 15.0.0 release.
    Release notes for previous releases can be found on
    `the Download Page <https://releases.llvm.org/download.html>`_.
 
@@ -12,59 +12,10 @@
 Introduction
 ============
 
-This document contains the release notes for the OpenMP runtime, release 12.0.0.
+This document contains the release notes for the OpenMP runtime, release 15.0.0.
 Here we describe the status of OpenMP, including major improvements
 from the previous release. All OpenMP releases may be downloaded
 from the `LLVM releases web site <https://llvm.org/releases/>`_.
 
 Non-comprehensive list of changes in this release
 =================================================
-
-- Extended the ``libomptarget`` API functions to include source location
-  information and OpenMP target mapper support. This allows ``libomptarget`` to
-  know the source location of the OpenMP region it is executing, as well as the
-  name and declarations of all the variables used inside the region. Each
-  function generated now uses its ``mapper`` variant. The old API calls now call
-  into the new API functions with ``nullptr`` arguments for backwards
-  compatibility with old binaries. Source location information for
-  ``libomptarget`` is now generated by Clang at any level of debugging
-  information.
-
-- Added improved error messages for ``libomptarget`` and ``CUDA`` plugins. Error
-  messages are now presented without requiring a debug build of
-  ``libomptarget``. The newly added source location information can also be used
-  to identify which OpenMP target region the failure occurred in. More
-  information can be found :ref:`here <libopenmptarget_errors>`.
-
-- Added additional environment variables to control output from the
-  ``libomptarget`` runtime library. ``LIBOMPTARGET_PROFILE`` to
-  generate time profile output similar to Clang's ``-ftime-trace`` option.
-  ``LIBOMPTARGET_MEMORY_MANAGER_THRESHOLD`` sets the threshold size for which
-  the ``libomptarget`` memory manager will handle the allocation.
-  ``LIBOMPTARGET_INFO`` allows the user to request certain information from the
-  ``libomptarget`` runtime using a 32-bit field. A full description of each
-  environment variable is described :ref:`here <libopenmptarget_environment_vars>`.
-
-- ``target nowait`` was supported via hidden helper task, which is a task not
-  bound to any parallel region. A hidden helper team with a number of threads is
-  created when the first hidden helper task is encountered. The number of threads
-  can be configured via the environment variable
-  ``LIBOMP_NUM_HIDDEN_HELPER_THREADS``. By default it is 8. If
-  ``LIBOMP_NUM_HIDDEN_HELPER_THREADS=0``, hidden helper task is disabled and
-  falls back to a regular OpenMP task. It can also be disabled by setting the
-  environment variable ``LIBOMP_USE_HIDDEN_HELPER_TASK=OFF``.
-
-- ``deviceRTLs`` for NVPTX platform is CUDA free now. It is generally OpenMP code.
-  Target dependent parts are implemented with Clang/LLVM/NVVM intrinsics. CUDA
-  SDK is also dropped as a dependence to build the device runtime, which means
-  device runtime can also be built on a CUDA free system. However, it is
-  disabled by default. Set the CMake variable
-  ``LIBOMPTARGET_BUILD_NVPTX_BCLIB=ON`` to enable the build of NVPTX device
-  runtime on a CUDA free system. ``gcc-multilib`` and ``g++-multilib`` are
-  required. If CUDA is found, the device runtime will be built by default.
-
-- Static NVPTX device runtime library (``libomptarget-nvptx.a``) was dropped.
-  A bitcode library is required to build an OpenMP program. If the library is
-  not found in the default path or any of the paths defined by ``LIBRARY_PATH``,
-  an error will be raised. User can also specify the path to the bitcode device
-  library via ``--libomptarget-nvptx-bc-path=``.
diff --git a/polly/docs/ReleaseNotes.rst b/polly/docs/ReleaseNotes.rst
index d10058b..bf6f7b9 100644
--- a/polly/docs/ReleaseNotes.rst
+++ b/polly/docs/ReleaseNotes.rst
@@ -10,20 +10,3 @@
     These release notes are for the next release of Polly and describe
     the new features that have recently been committed to our development
     branch.
-
-- The command line option -polly-opt-fusion has been removed. What the
-  flag does was frequently misunderstood and is rarely useful. However,
-  the functionality is still accessible using
-
-  .. code-block:: console
-
-    -polly-isl-arg=--no-schedule-serialize-sccs
-
-- The command line option -polly-loopfusion-greedy has been added.
-  This will aggressively try to fuse any loop regardless of
-  profitability. The is what users might have expected what
-  -polly-opt-fusion=max would do.
-
-- Support for gfortran-generated code has been removed. This includes
-  Fortran Array Descriptors (-polly-detect-fortran-arrays) and the
-  -polly-rewrite-byref-params pass.
diff --git a/pstl/docs/ReleaseNotes.rst b/pstl/docs/ReleaseNotes.rst
index ca840a4..5f4e040 100644
--- a/pstl/docs/ReleaseNotes.rst
+++ b/pstl/docs/ReleaseNotes.rst
@@ -1,5 +1,5 @@
 =======================================
-PSTL 14.0.0 (In-Progress) Release Notes
+PSTL 15.0.0 (In-Progress) Release Notes
 =======================================
 
 .. contents::
@@ -10,7 +10,7 @@
 
 .. warning::
 
-   These are in-progress notes for the upcoming pstl 14 release.
+   These are in-progress notes for the upcoming pstl 15 release.
    Release notes for previous releases can be found on
    `the Download Page <https://releases.llvm.org/download.html>`_.
 
@@ -18,7 +18,7 @@
 ============
 
 This document contains the release notes for the PSTL parallel algorithms
-library, part of the LLVM Compiler Infrastructure, release 14.0.0. Here we
+library, part of the LLVM Compiler Infrastructure, release 15.0.0. Here we
 describe the status of the library in some detail, including major improvements
 from the previous release and new feature work. For the general LLVM release
 notes, see `the LLVM documentation <https://llvm.org/docs/ReleaseNotes.html>`_.
@@ -30,7 +30,7 @@
 To see the release notes for a specific release, please see the `releases
 page <https://llvm.org/releases/>`_.
 
-What's New in PSTL 14.0.0?
+What's New in PSTL 15.0.0?
 ==========================
 
 New Features
diff --git a/pstl/include/pstl/internal/pstl_config.h b/pstl/include/pstl/internal/pstl_config.h
index cf979c1..80a1f9a 100644
--- a/pstl/include/pstl/internal/pstl_config.h
+++ b/pstl/include/pstl/internal/pstl_config.h
@@ -13,7 +13,7 @@
 #include <__pstl_config_site>
 
 // The version is XYYZ, where X is major, YY is minor, and Z is patch (i.e. X.YY.Z)
-#define _PSTL_VERSION 14000
+#define _PSTL_VERSION 15000
 #define _PSTL_VERSION_MAJOR (_PSTL_VERSION / 1000)
 #define _PSTL_VERSION_MINOR ((_PSTL_VERSION % 1000) / 10)
 #define _PSTL_VERSION_PATCH (_PSTL_VERSION % 10)
diff --git a/pstl/test/pstl/version.pass.cpp b/pstl/test/pstl/version.pass.cpp
index 9780ad7..3f829c4 100644
--- a/pstl/test/pstl/version.pass.cpp
+++ b/pstl/test/pstl/version.pass.cpp
@@ -8,8 +8,8 @@
 
 #include <pstl/internal/pstl_config.h>
 
-static_assert(_PSTL_VERSION == 14000);
-static_assert(_PSTL_VERSION_MAJOR == 14);
+static_assert(_PSTL_VERSION == 15000);
+static_assert(_PSTL_VERSION_MAJOR == 15);
 static_assert(_PSTL_VERSION_MINOR == 00);
 static_assert(_PSTL_VERSION_PATCH == 0);
 
