diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst
index 52e98cb..74829f0 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -1,5 +1,5 @@
 ====================================================
-Extra Clang Tools 10.0.0 (In-Progress) Release Notes
+Extra Clang Tools 11.0.0 (In-Progress) Release Notes
 ====================================================
 
 .. contents::
@@ -10,7 +10,7 @@
 
 .. warning::
 
-   These are in-progress notes for the upcoming Extra Clang Tools 10 release.
+   These are in-progress notes for the upcoming Extra Clang Tools 11 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 Extra Clang Tools, part of the
-Clang release 10.0.0. Here we describe the status of the Extra Clang Tools in
+Clang release 11.0.0. Here we describe the status of the Extra Clang Tools in
 some detail, including major improvements from the previous release and new
 feature work. All LLVM releases may be downloaded from the `LLVM releases web
 site <https://llvm.org/releases/>`_.
@@ -27,12 +27,12 @@
 the latest release, please see the `Clang Web Site <https://clang.llvm.org>`_ or
 the `LLVM Web Site <https://llvm.org>`_.
 
-Note that if you are reading this file from a Subversion checkout or the
+Note that if you are reading this file from a Git checkout or the
 main Clang web page, this document applies to the *next* release, not
 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 Extra Clang Tools 10.0.0?
+What's New in Extra Clang Tools 11.0.0?
 =======================================
 
 Some of the major new features and improvements to Extra Clang Tools are listed
@@ -52,7 +52,7 @@
 Improvements to clang-doc
 -------------------------
 
-- :doc:`clang-doc <clang-doc>` now generates documentation in HTML format.
+The improvements are...
 
 Improvements to clang-query
 ---------------------------
@@ -70,188 +70,18 @@
 New checks
 ^^^^^^^^^^
 
-- New :doc:`bugprone-bad-signal-to-kill-thread
-  <clang-tidy/checks/bugprone-bad-signal-to-kill-thread>` check.
-
-  Finds ``pthread_kill`` function calls when a thread is terminated by 
-  raising ``SIGTERM`` signal.
-
-- New :doc:`bugprone-dynamic-static-initializers
-  <clang-tidy/checks/bugprone-dynamic-static-initializers>` check.
-
-  Finds instances where variables with static storage are initialized
-  dynamically in header files.
-
-- New :doc:`bugprone-infinite-loop
-  <clang-tidy/checks/bugprone-infinite-loop>` check.
-
-  Finds obvious infinite loops (loops where the condition variable is not
-  changed at all).
-
-- New :doc:`bugprone-not-null-terminated-result
-  <clang-tidy/checks/bugprone-not-null-terminated-result>` check
-
-  Finds function calls where it is possible to cause a not null-terminated
-  result.
-
-- New :doc:`bugprone-signed-char-misuse
-  <clang-tidy/checks/bugprone-signed-char-misuse>` check.
-
-  Finds ``signed char`` to integer conversions which might indicate a
-  programming error.
-
-- New :doc:`cert-mem57-cpp
-  <clang-tidy/checks/cert-mem57-cpp>` check.
-
-  Checks if an object of type with extended alignment is allocated by using
-  the default ``operator new``.
-
-- New :doc:`cert-oop58-cpp
-  <clang-tidy/checks/cert-oop58-cpp>` check.
-
-  Finds assignments to the copied object and its direct or indirect members
-  in copy constructors and copy assignment operators.
-
-- New :doc:`cppcoreguidelines-init-variables
-  <clang-tidy/checks/cppcoreguidelines-init-variables>` check.
-
-  Checks whether there are local variables that are declared without an initial
-  value.
-
-- New :doc:`darwin-dispatch-once-nonstatic
-  <clang-tidy/checks/darwin-dispatch-once-nonstatic>` check.
-
-  Finds declarations of ``dispatch_once_t`` variables without static or global
-  storage.
-
-- New :doc:`google-upgrade-googletest-case
-  <clang-tidy/checks/google-upgrade-googletest-case>` check.
-
-  Finds uses of deprecated Googletest APIs with names containing ``case`` and
-  replaces them with equivalent APIs with ``suite``.
-
-- New :doc:`linuxkernel-must-use-errs
-  <clang-tidy/checks/linuxkernel-must-use-errs>` check.
-
-  Checks Linux kernel code to see if it uses the results from the functions in
-  ``linux/err.h``.
-
-- New :doc:`llvm-prefer-register-over-unsigned
-  <clang-tidy/checks/llvm-prefer-register-over-unsigned>` check.
-
-  Finds historical use of ``unsigned`` to hold vregs and physregs and rewrites
-  them to use ``Register``
-
-- New :doc:`objc-missing-hash
-  <clang-tidy/checks/objc-missing-hash>` check.
-
-  Finds Objective-C implementations that implement ``-isEqual:`` without also
-  appropriately implementing ``-hash``.
-
-- New :doc:`performance-no-automatic-move
-  <clang-tidy/checks/performance-no-automatic-move>` check.
-
-  Finds local variables that cannot be automatically moved due to constness.
-
-- New :doc:`performance-trivially-destructible
-  <clang-tidy/checks/performance-trivially-destructible>` check.
-
-  Finds types that could be made trivially-destructible by removing out-of-line
-  defaulted destructor declarations.
-
-- New :doc:`readability-make-member-function-const
-  <clang-tidy/checks/readability-make-member-function-const>` check.
-
-  Finds non-static member functions that can be made ``const``
-  because the functions don't use ``this`` in a non-const way.
-
-- New :doc:`readability-qualified-auto
-  <clang-tidy/checks/readability-qualified-auto>` check.
-
-  Adds pointer and ``const`` qualifications to ``auto``-typed variables 
-  that are deduced to pointers and ``const`` pointers.
-
-- New :doc:`readability-redundant-access-specifiers
-  <clang-tidy/checks/readability-redundant-access-specifiers>` check.
-
-  Finds classes, structs, and unions that contain redundant member
-  access specifiers.
 
 New aliases
 ^^^^^^^^^^^
 
-- New alias :doc:`cert-pos44-c
-  <clang-tidy/checks/cert-pos44-c>` to
-  :doc:`bugprone-bad-signal-to-kill-thread
-  <clang-tidy/checks/bugprone-bad-signal-to-kill-thread>` was added.
-
-- New alias :doc:`llvm-qualified-auto
-  <clang-tidy/checks/llvm-qualified-auto>` to
-  :doc:`readability-qualified-auto
-  <clang-tidy/checks/readability-qualified-auto>` was added.
 
 Changes in existing checks
 ^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-- Improved :doc:`bugprone-posix-return
-  <clang-tidy/checks/bugprone-posix-return>` check.
-
-  Now also checks if any calls to ``pthread_*`` functions expect negative
-  return values.
-
-- Improved :doc:`hicpp-signed-bitwise
-  <clang-tidy/checks/hicpp-signed-bitwise>` check.
-
-  The check now supports the `IgnorePositiveIntegerLiterals` option.
-
-- Improved :doc:`modernize-avoid-bind
-  <clang-tidy/checks/modernize-avoid-bind>` check.
-
-  The check now supports supports diagnosing and fixing arbitrary callables
-  instead of only simple free functions. The `PermissiveParameterList` option
-  has also been added to address situations where the existing fix-it logic
-  would sometimes generate code that no longer compiles.
-
-- The :doc:`modernize-use-equals-default
-  <clang-tidy/checks/modernize-use-equals-default>` fix no longer adds
-  semicolons where they would be redundant.
-
-- Improved :doc:`modernize-use-override
-  <clang-tidy/checks/modernize-use-override>` check.
-
-  The check now supports the `AllowOverrideAndFinal` option to eliminate
-  conflicts with `gcc -Wsuggest-override` or `gcc -Werror=suggest-override`.
-
-- The :doc:`modernize-use-using
-  <clang-tidy/checks/modernize-use-using>` check now converts typedefs
-  containing struct definitions and multiple comma-separated types.
-
-- Improved :doc:`readability-magic-numbers
-  <clang-tidy/checks/readability-magic-numbers>` check.
-
-  The check now supports the `IgnoreBitFieldsWidths` option to suppress
-  the warning for numbers used to specify bit field widths.
-
-  The check was updated to eliminate some false positives (such as using
-  class enumeration as non-type template parameters, or the synthetically
-  computed length of a static user string literal.)
-
-- Improved :doc:`readability-redundant-member-init
-  <clang-tidy/checks/readability-redundant-member-init>` check.
-
-  The check  now supports the `IgnoreBaseInCopyConstructors` option to avoid
-  `"base class 'Foo' should be explicitly initialized in the copy constructor"`
-  warnings or errors with `gcc -Wextra` or `gcc -Werror=extra`.
-
-- The :doc:`readability-redundant-string-init
-  <clang-tidy/checks/readability-redundant-string-init>` check now supports a
-  `StringNames` option enabling its application to custom string classes.
 
 Renamed checks
 ^^^^^^^^^^^^^^
 
-- The 'objc-avoid-spinlock' check was renamed to :doc:`darwin-avoid-spinlock
-  <clang-tidy/checks/darwin-avoid-spinlock>`
 
 Improvements to include-fixer
 -----------------------------
@@ -276,7 +106,3 @@
 Clang-tidy visual studio plugin
 -------------------------------
 
-The clang-tidy-vs plugin has been removed from clang, as
-it's no longer maintained. Users should migrate to
-`Clang Power Tools <https://marketplace.visualstudio.com/items?itemName=caphyon.ClangPowerTools>`_
-instead.
diff --git a/clang-tools-extra/docs/conf.py b/clang-tools-extra/docs/conf.py
index a025742..690917e 100644
--- a/clang-tools-extra/docs/conf.py
+++ b/clang-tools-extra/docs/conf.py
@@ -49,9 +49,9 @@
 # built documents.
 #
 # The short version.
-version = '10'
+version = '11'
 # The full version, including alpha/beta/rc tags.
-release = '10'
+release = '11'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index e131e4f..66eb126 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -1,5 +1,5 @@
 ========================================
-Clang 10.0.0 (In-Progress) Release Notes
+Clang 11.0.0 (In-Progress) Release Notes
 ========================================
 
 .. contents::
@@ -10,7 +10,7 @@
 
 .. warning::
 
-   These are in-progress notes for the upcoming Clang 10 release.
+   These are in-progress notes for the upcoming Clang 11 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 Clang C/C++/Objective-C
-frontend, part of the LLVM Compiler Infrastructure, release 10.0.0. Here we
+frontend, part of the LLVM Compiler Infrastructure, release 11.0.0. Here we
 describe the status of Clang in some detail, including major
 improvements from the previous release and new feature work. For the
 general LLVM release notes, see `the LLVM
@@ -30,12 +30,12 @@
 latest release, please see the `Clang Web Site <https://clang.llvm.org>`_ or the
 `LLVM Web Site <https://llvm.org>`_.
 
-Note that if you are reading this file from a Subversion checkout or the
+Note that if you are reading this file from a Git checkout or the
 main Clang web page, this document applies to the *next* release, not
 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 Clang 10.0.0?
+What's New in Clang 11.0.0?
 ===========================
 
 Some of the major new features and improvements to Clang are listed
@@ -51,63 +51,15 @@
 Improvements to Clang's diagnostics
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-- -Wtautological-overlap-compare will warn on negative numbers and non-int
-  types.
-- -Wtautological-compare for self comparisons and
-  -Wtautological-overlap-compare will now look through member and array
-  access to determine if two operand expressions are the same.
-- -Wtautological-bitwise-compare is a new warning group.  This group has the
-  current warning which diagnoses the tautological comparison of a bitwise
-  operation and a constant. The group also has the new warning which diagnoses
-  when a bitwise-or with a non-negative value is converted to a bool, since
-  that bool will always be true.
-- -Wbitwise-conditional-parentheses will warn on operator precedence issues
-  when mixing bitwise-and (&) and bitwise-or (|) operator with the
-  conditional operator (?:).
-- -Wrange-loop-analysis got several improvements. It no longer warns about a
-  copy being made when the result is bound to an rvalue reference. It no longer
-  warns when an object of a small, trivially copyable type is copied. The
-  warning now offers fixits. It is now part of -Wall.
+- ...
 
 Non-comprehensive list of changes in this release
 -------------------------------------------------
 
-* In both C and C++ (C17 ``6.5.6p8``, C++ ``[expr.add]``), pointer arithmetic is
-  only permitted within arrays. In particular, the behavior of a program is not
-  defined if it adds a non-zero offset (or in C, any offset) to a null pointer,
-  or if it forms a null pointer by subtracting an integer from a non-null
-  pointer, and the LLVM optimizer now uses those guarantees for transformations.
-  This may lead to unintended behavior in code that performs these operations.
-  The Undefined Behavior Sanitizer ``-fsanitize=pointer-overflow`` check has
-  been extended to detect these cases, so that code relying on them can be
-  detected and fixed.
-
-* The Implicit Conversion Sanitizer (``-fsanitize=implicit-conversion``) has
-  learned to sanitize pre/post increment/decrement of types with bit width
-  smaller than ``int``.
-
-- For X86 target, -march=skylake-avx512, -march=icelake-client,
-  -march=icelake-server, -march=cascadelake, -march=cooperlake will default to
-  not using 512-bit zmm registers in vectorized code unless 512-bit intrinsics
-  are used in the source code. 512-bit operations are known to cause the CPUs
-  to run at a lower frequency which can impact performance. This behavior can be
-  changed by passing -mprefer-vector-width=512 on the command line.
-
-* clang now defaults to ``.init_array`` on Linux. It used to use ``.ctors`` if
-  the found gcc installation is older than 4.7.0. Add ``-fno-use-init-array`` to
-  get the old behavior (``.ctors``).
 
 New Compiler Flags
 ------------------
 
-- The -fgnuc-version= flag now controls the value of ``__GNUC__`` and related
-  macros. This flag does not enable or disable any GCC extensions implemented in
-  Clang. Setting the version to zero causes Clang to leave ``__GNUC__`` and
-  other GNU-namespaced macros, such as ``__GXX_WEAK__``, undefined.
-
-- vzeroupper insertion on X86 targets can now be disabled with -mno-vzeroupper.
-  You can also force vzeroupper insertion to be used on CPUs that normally
-  wouldn't with -mvzeroupper.
 
 Deprecated Compiler Flags
 -------------------------
@@ -115,17 +67,11 @@
 The following options are deprecated and ignored. They will be removed in
 future versions of Clang.
 
-- -mmpx used to enable the __MPX__ preprocessor define for the Intel MPX
-  instructions. There were no MPX intrinsics.
-- -mno-mpx used to disable -mmpx and is the default behavior.
-
 - ...
 
 Modified Compiler Flags
 -----------------------
 
-- RISC-V now sets the architecture (riscv32/riscv64) based on the value provided
-  to the ``-march`` flag, overriding the target provided by ``-triple``.
 
 New Pragmas in Clang
 --------------------
@@ -140,16 +86,6 @@
 Windows Support
 ---------------
 
-- Previous Clang versions contained a work-around to avoid an issue with the
-  standard library headers in Visual Studio 2019 versions prior to 16.3. This
-  work-around has now been removed, and users of Visual Studio 2019 are
-  encouraged to upgrade to 16.3 or later, otherwise they may see link errors as
-  below:
-
-  .. code-block:: console
-
-    error LNK2005: "bool const std::_Is_integral<int>" (??$_Is_integral@H@std@@3_NB) already defined
-
 C Language Changes in Clang
 ---------------------------
 
@@ -163,10 +99,6 @@
 C++ Language Changes in Clang
 -----------------------------
 
-- The behaviour of the `gnu_inline` attribute now matches GCC, for cases
-  where used without the `extern` keyword. As this is a change compared to
-  how it behaved in previous Clang versions, a warning is emitted for this
-  combination.
 
 C++1z Feature Support
 ^^^^^^^^^^^^^^^^^^^^^
@@ -176,49 +108,6 @@
 Objective-C Language Changes in Clang
 -------------------------------------
 
-- In both Objective-C and
-  Objective-C++, ``-Wcompare-distinct-pointer-types`` will now warn when
-  comparing ObjC ``Class`` with an ObjC instance type pointer.
-
-  .. code-block:: objc
-
-    Class clz = ...;
-    MyType *instance = ...;
-    bool eq = (clz == instance); // Previously undiagnosed, now warns.
-
-- Objective-C++ now diagnoses conversions between ``Class`` and ObjC
-  instance type pointers. Such conversions already emitted an
-  on-by-default ``-Wincompatible-pointer-types`` warning in Objective-C
-  mode, but had inadvertently been missed entirely in
-  Objective-C++. This has been fixed, and they are now diagnosed as
-  errors, consistent with the usual C++ treatment for conversions
-  between unrelated pointer types.
-
-  .. code-block:: objc
-
-    Class clz = ...;
-    MyType *instance = ...;
-    clz = instance; // Previously undiagnosed, now an error.
-    instance = clz; // Previously undiagnosed, now an error.
-
-  One particular issue you may run into is attempting to use a class
-  as a key in a dictionary literal. This will now result in an error,
-  because ``Class`` is not convertable to ``id<NSCopying>``. (Note that
-  this was already a warning in Objective-C mode.) While an arbitrary
-  ``Class`` object is not guaranteed to implement ``NSCopying``, the
-  default metaclass implementation does. Therefore, the recommended
-  solution is to insert an explicit cast to ``id``, which disables the
-  type-checking here.
-
- .. code-block:: objc
-
-    Class cls = ...;
-
-    // Error: cannot convert from Class to id<NSCoding>.
-    NSDictionary* d = @{cls : @"Hello"};
-
-    // Fix: add an explicit cast to 'id'.
-    NSDictionary* d = @{(id)cls : @"Hello"};
 
 OpenCL C Language Changes in Clang
 ----------------------------------
@@ -228,19 +117,6 @@
 ABI Changes in Clang
 --------------------
 
-- gcc passes vectors of __int128 in memory on X86-64. Clang historically
-  broke the vectors into multiple scalars using two 64-bit values for each
-  element. Clang now matches the gcc behavior on Linux and NetBSD. You can
-  switch back to old API behavior with flag: -fclang-abi-compat=9.0.
-
-- RISC-V now chooses a default ``-march=`` and ``-mabi=`` to match (in almost
-  all cases) the GCC defaults. On baremetal targets, where neither ``-march=``
-  nor ``-mabi=`` are specified, Clang now differs from GCC by defaulting to
-  ``-march=rv32imac -mabi=ilp32`` or ``-march=rv64imac -mabi=lp64`` depending on
-  the architecture in the target triple. These do not always match the defaults
-  in Clang 9. We strongly suggest that you explicitly pass `-march=` and
-  `-mabi=` when compiling for RISC-V, due to how extensible this architecture
-  is.
 
 OpenMP Support in Clang
 -----------------------
@@ -255,37 +131,17 @@
 Internal API Changes
 --------------------
 
-These are major API changes that have happened since the 9.0.0 release of
+These are major API changes that have happened since the 10.0.0 release of
 Clang. If upgrading an external codebase that uses Clang as a library,
 this section should help get you past the largest hurdles of upgrading.
 
-- libTooling APIs that transfer ownership of `FrontendAction` objects now pass
-  them by `unique_ptr`, making the ownership transfer obvious in the type
-  system. `FrontendActionFactory::create()` now returns a
-  `unique_ptr<FrontendAction>`. `runToolOnCode`, `runToolOnCodeWithArgs`,
-  `ToolInvocation::ToolInvocation()` now take a `unique_ptr<FrontendAction>`.
 
 Build System Changes
 --------------------
 
-These are major changes to the build system that have happened since the 9.0.0
+These are major changes to the build system that have happened since the 10.0.0
 release of Clang. Users of the build system should adjust accordingly.
 
-- In 8.0.0 and below, the install-clang-headers target would install clang's
-  resource directory headers. This installation is now performed by the
-  install-clang-resource-headers target. Users of the old install-clang-headers
-  target should switch to the new install-clang-resource-headers target. The
-  install-clang-headers target now installs clang's API headers (corresponding
-  to its libraries), which is consistent with the install-llvm-headers target.
-
-- In 9.0.0 and later Clang added a new target, clang-cpp, which generates a
-  shared library comprised of all the clang component libraries and exporting
-  the clang C++ APIs. Additionally the build system gained the new
-  "CLANG_LINK_CLANG_DYLIB" option, which defaults Off, and when set to On, will
-  force clang (and clang-based tools) to link the clang-cpp library instead of
-  statically linking clang's components. This option will reduce the size of
-  binary distributions at the expense of compiler performance.
-
 - ...
 
 AST Matchers
@@ -296,61 +152,6 @@
 clang-format
 ------------
 
-- The ``Standard`` style option specifies which version of C++ should be used
-  when parsing and formatting C++ code. The set of allowed values has changed:
-
-  - ``Latest`` will always enable new C++ language features.
-  - ``c++03``, ``c++11``, ``c++14``, ``c++17``, ``c++20`` will pin to exactly
-    that language version.
-  - ``Auto`` is the default and detects style from the code (this is unchanged).
-
-  The previous values of ``Cpp03`` and ``Cpp11`` are deprecated. Note that
-  ``Cpp11`` is treated as ``Latest``, as this was always clang-format's
-  behavior. (One motivation for this change is the new name describes the
-  behavior better).
-
-- Clang-format has a new option called ``--dry-run`` or ``-n`` to emit a
-  warning for clang-format violations. This can be used together
-  with --ferror-limit=N to limit the number of warnings per file and --Werror
-  to make warnings into errors.
-
-- Option *IncludeIsMainSourceRegex* has been added to allow for additional
-  suffixes and file extensions to be considered as a source file
-  for execution of logic that looks for "main *include* file" to put
-  it on top.
-
-  By default, clang-format considers *source* files as "main" only when
-  they end with: ``.c``, ``.cc``, ``.cpp``, ``.c++``, ``.cxx``,
-  ``.m`` or ``.mm`` extensions. This config option allows to
-  extend this set of source files considered as "main".
-
-  For example, if this option is configured to ``(Impl\.hpp)$``,
-  then a file ``ClassImpl.hpp`` is considered "main" (in addition to
-  ``Class.c``, ``Class.cc``, ``Class.cpp`` and so on) and "main
-  include file" logic will be executed (with *IncludeIsMainRegex* setting
-  also being respected in later phase). Without this option set,
-  ``ClassImpl.hpp`` would not have the main include file put on top
-  before any other include.
-
-- Options ``DeriveLineEnding`` and  ``UseCRLF`` have been added to allow
-  clang-format to control the newlines. ``DeriveLineEnding`` is by default
-  ``true`` and reflects is the existing mechanism, which based is on majority
-  rule. The new options allows this to be turned off and ``UseCRLF`` to control
-  the decision as to which sort of line ending to use.
-
-- Option ``SpaceBeforeSquareBrackets`` has been added to insert a space before
-  array declarations.
-
-  .. code-block:: c++
-
-    int a [5];    vs    int a[5];
-
-- Clang-format now supports JavaScript null operators.
-
-  .. code-block:: c++
-
-    const x = foo ?? default;
-    const z = foo?.bar?.baz;
 
 libclang
 --------
@@ -360,9 +161,6 @@
 Static Analyzer
 ---------------
 
-- The Clang analyzer checker ``DeadStores`` gets a new option called
-  ``WarnForDeadNestedAssignments`` to detect nested dead assignments
-  (enabled by default).
 - ...
 
 .. _release-notes-ubsan:
@@ -370,39 +168,6 @@
 Undefined Behavior Sanitizer (UBSan)
 ------------------------------------
 
-- * The ``pointer-overflow`` check was extended added to catch the cases where
-    a non-zero offset is applied to a null pointer, or the result of
-    applying the offset is a null pointer.
-
-    .. code-block:: c++
-
-      #include <cstdint> // for intptr_t
-
-      static char *getelementpointer_inbounds(char *base, unsigned long offset) {
-        // Potentially UB.
-        return base + offset;
-      }
-
-      char *getelementpointer_unsafe(char *base, unsigned long offset) {
-        // Always apply offset. UB if base is ``nullptr`` and ``offset`` is not
-        // zero, or if ``base`` is non-``nullptr`` and ``offset`` is
-        // ``-reinterpret_cast<intptr_t>(base)``.
-        return getelementpointer_inbounds(base, offset);
-      }
-
-      char *getelementpointer_safe(char *base, unsigned long offset) {
-        // Cast pointer to integer, perform usual arithmetic addition,
-        // and cast to pointer. This is legal.
-        char *computed =
-            reinterpret_cast<char *>(reinterpret_cast<intptr_t>(base) + offset);
-        // If either the pointer becomes non-``nullptr``, or becomes
-        // ``nullptr``, we must use ``computed`` result.
-        if (((base == nullptr) && (computed != nullptr)) ||
-            ((base != nullptr) && (computed == nullptr)))
-          return computed;
-        // Else we can use ``getelementpointer_inbounds()``.
-        return getelementpointer_inbounds(base, offset);
-      }
 
 Core Analysis Improvements
 ==========================
diff --git a/clang/docs/analyzer/conf.py b/clang/docs/analyzer/conf.py
index 0996759..6873ecc 100644
--- a/clang/docs/analyzer/conf.py
+++ b/clang/docs/analyzer/conf.py
@@ -49,9 +49,9 @@
 # built documents.
 #
 # The short version.
-version = '6'
+version = '11'
 # The full version, including alpha/beta/rc tags.
-release = '6'
+release = '11'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff --git a/clang/docs/conf.py b/clang/docs/conf.py
index e16ff49..164f15d 100644
--- a/clang/docs/conf.py
+++ b/clang/docs/conf.py
@@ -50,9 +50,9 @@
 # built documents.
 #
 # The short version.
-version = '10'
+version = '11'
 # The full version, including alpha/beta/rc tags.
-release = '10'
+release = '11'
 
 # 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 443097c..8a129c2 100644
--- a/libcxx/CMakeLists.txt
+++ b/libcxx/CMakeLists.txt
@@ -27,7 +27,7 @@
   project(libcxx CXX C)
 
   set(PACKAGE_NAME libcxx)
-  set(PACKAGE_VERSION 10.0.0git)
+  set(PACKAGE_VERSION 11.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 f1dd6f9..dfc0538 100644
--- a/libcxx/docs/ReleaseNotes.rst
+++ b/libcxx/docs/ReleaseNotes.rst
@@ -1,5 +1,5 @@
 =========================================
-Libc++ 10.0.0 (In-Progress) Release Notes
+Libc++ 11.0.0 (In-Progress) Release Notes
 =========================================
 
 .. contents::
@@ -10,7 +10,7 @@
 
 .. warning::
 
-   These are in-progress notes for the upcoming libc++ 10 release.
+   These are in-progress notes for the upcoming libc++ 11 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 10.0.0. Here we describe the
+part of the LLVM Compiler Infrastructure, release 11.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
@@ -27,12 +27,12 @@
 For more information about libc++, please see the `Libc++ Web Site
 <https://libcxx.llvm.org>`_ or the `LLVM Web Site <https://llvm.org>`_.
 
-Note that if you are reading this file from a Subversion checkout or the
+Note that if you are reading this file from a Git checkout or the
 main Libc++ web page, this document applies to the *next* release, not
 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++ 10.0.0?
+What's New in Libc++ 11.0.0?
 ============================
 
 New Features
diff --git a/libcxx/docs/conf.py b/libcxx/docs/conf.py
index 414f1bc..00000ee 100644
--- a/libcxx/docs/conf.py
+++ b/libcxx/docs/conf.py
@@ -47,9 +47,9 @@
 # built documents.
 #
 # The short X.Y version.
-version = '10.0'
+version = '11.0'
 # The full version, including alpha/beta/rc tags.
-release = '10.0'
+release = '11.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 ac454980..032f39f 100644
--- a/libcxx/include/__config
+++ b/libcxx/include/__config
@@ -32,7 +32,7 @@
 #  define _GNUC_VER_NEW 0
 #endif
 
-#define _LIBCPP_VERSION 10000
+#define _LIBCPP_VERSION 11000
 
 #ifndef _LIBCPP_ABI_VERSION
 #  define _LIBCPP_ABI_VERSION 1
diff --git a/libcxx/include/__libcpp_version b/libcxx/include/__libcpp_version
index 5caff40..82b3803 100644
--- a/libcxx/include/__libcpp_version
+++ b/libcxx/include/__libcpp_version
@@ -1 +1 @@
-10000
+11000
diff --git a/libunwind/CMakeLists.txt b/libunwind/CMakeLists.txt
index 6dd0a15..4301bab 100644
--- a/libunwind/CMakeLists.txt
+++ b/libunwind/CMakeLists.txt
@@ -83,7 +83,7 @@
   endif()
 
   set(PACKAGE_NAME libunwind)
-  set(PACKAGE_VERSION 10.0.0git)
+  set(PACKAGE_VERSION 11.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 44935b6..70fb71f 100644
--- a/libunwind/docs/conf.py
+++ b/libunwind/docs/conf.py
@@ -48,9 +48,9 @@
 # built documents.
 #
 # The short X.Y version.
-version = '10.0'
+version = '11.0'
 # The full version, including alpha/beta/rc tags.
-release = '10.0'
+release = '11.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 bc16417..12b74c8 100644
--- a/lld/docs/ReleaseNotes.rst
+++ b/lld/docs/ReleaseNotes.rst
@@ -1,19 +1,19 @@
 ========================
-lld 10.0.0 Release Notes
+lld 11.0.0 Release Notes
 ========================
 
 .. contents::
     :local:
 
 .. warning::
-   These are in-progress notes for the upcoming LLVM 10.0.0 release.
+   These are in-progress notes for the upcoming LLVM 11.0.0 release.
    Release notes for previous releases can be found on
    `the Download Page <https://releases.llvm.org/download.html>`_.
 
 Introduction
 ============
 
-This document contains the release notes for the lld linker, release 10.0.0.
+This document contains the release notes for the lld linker, release 11.0.0.
 Here we describe the status of lld, including major improvements
 from the previous release. All lld releases may be downloaded
 from the `LLVM releases web site <https://llvm.org/releases/>`_.
@@ -24,11 +24,7 @@
 ELF Improvements
 ----------------
 
-* Glob pattern, which you can use in linker scripts or version scripts,
-  now supports `\` and `[!...]`. Except character classes
-  (e.g. `[[:digit:]]`), lld's glob pattern should be fully compatible
-  with GNU now. (`r375051
-  <https://github.com/llvm/llvm-project/commit/48993d5ab9413f0e5b94dfa292a233ce55b09e3e>`_)
+* ...
 
 COFF Improvements
 -----------------
@@ -48,7 +44,3 @@
 WebAssembly Improvements
 ------------------------
 
-* `__data_end` and `__heap_base` are no longer exported by default,
-  as it's best to keep them internal when possible. They can be
-  explicitly exported with `--export=__data_end` and
-  `--export=__heap_base`, respectively.
diff --git a/lld/docs/conf.py b/lld/docs/conf.py
index 0f03b12..7d4fc0c 100644
--- a/lld/docs/conf.py
+++ b/lld/docs/conf.py
@@ -48,9 +48,9 @@
 # built documents.
 #
 # The short version.
-version = '10'
+version = '11'
 # The full version, including alpha/beta/rc tags.
-release = '10'
+release = '11'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt
index 9bbcba0..3dfe862 100644
--- a/llvm/CMakeLists.txt
+++ b/llvm/CMakeLists.txt
@@ -16,7 +16,7 @@
 endif()
 
 if(NOT DEFINED LLVM_VERSION_MAJOR)
-  set(LLVM_VERSION_MAJOR 10)
+  set(LLVM_VERSION_MAJOR 11)
 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 96331a7..520c1eb 100644
--- a/llvm/docs/ReleaseNotes.rst
+++ b/llvm/docs/ReleaseNotes.rst
@@ -1,12 +1,12 @@
 =========================
-LLVM 10.0.0 Release Notes
+LLVM 11.0.0 Release Notes
 =========================
 
 .. contents::
     :local:
 
 .. warning::
-   These are in-progress notes for the upcoming LLVM 10 release.
+   These are in-progress notes for the upcoming LLVM 11 release.
    Release notes for previous releases can be found on
    `the Download Page <https://releases.llvm.org/download.html>`_.
 
@@ -15,7 +15,7 @@
 ============
 
 This document contains the release notes for the LLVM Compiler Infrastructure,
-release 10.0.0.  Here we describe the status of LLVM, including major improvements
+release 11.0.0.  Here we describe the status of LLVM, including major improvements
 from the previous release, improvements in various subprojects of LLVM, and
 some of the current users of the code.  All LLVM releases may be downloaded
 from the `LLVM releases web site <https://llvm.org/releases/>`_.
@@ -26,7 +26,7 @@
 <https://lists.llvm.org/mailman/listinfo/llvm-dev>`_ is a good place to send
 them.
 
-Note that if you are reading this file from a Subversion checkout or the main
+Note that if you are reading this file from a Git checkout or the main
 LLVM web page, this document applies to the *next* release, not the current
 one.  To see the release notes for a specific release, please see the `releases
 page <https://llvm.org/releases/>`_.
@@ -40,26 +40,8 @@
    functionality, or simply have a lot to talk about), see the `NOTE` below
    for adding a new subsection.
 
-* The ISD::FP_ROUND_INREG opcode and related code was removed from SelectionDAG.
-* Enabled MemorySSA as a loop dependency. Since
-  `r370957 <https://reviews.llvm.org/rL370957>`_
-  (`D58311 <https://reviews.llvm.org/D58311>`_ ``[MemorySSA & LoopPassManager]
-  Enable MemorySSA as loop dependency. Update tests.``), the MemorySSA analysis
-  is being preserved and used by a series of loop passes. The most significant
-  use is in LICM, where the instruction hoisting and sinking relies on aliasing
-  information provided by MemorySSA vs previously creating an AliasSetTracker.
-  The LICM step of promoting variables to scalars still relies on the creation
-  of an AliasSetTracker, but its use is reduced to only be enabled for loops
-  with a small number of overall memory instructions. This choice was motivated
-  by experimental results showing compile and run time benefits or replacing the
-  AliasSetTracker usage with MemorySSA without any performance penalties.
-  The fact that MemorySSA is now preserved by and available in a series of loop
-  passes, also opens up opportunities for its use in those respective passes.
-* The BasicBlockPass, BBPassManager and all their uses were deleted in
-  `this revision <https://reviews.llvm.org/rG9f0ff0b2634bab6a5be8dace005c9eb24d386dd1>`_.
+* ...
 
-* The LLVM_BUILD_LLVM_DYLIB and LLVM_LINK_LLVM_DYLIB CMake options are no longer
-  available on Windows.
 
 .. NOTE
    If you would like to document a larger change, then you can add a
@@ -71,42 +53,10 @@
 
    Makes programs 10x faster by doing Special New Thing.
 
-* As per :ref:`LLVM Language Reference Manual <i_getelementptr>`,
-  ``getelementptr inbounds`` can not change the null status of a pointer,
-  meaning it can not produce non-null pointer given null base pointer, and
-  likewise given non-null base pointer it can not produce null pointer; if it
-  does, the result is a :ref:`poison value <poisonvalues>`.
-  Since `r369789 <https://reviews.llvm.org/rL369789>`_
-  (`D66608 <https://reviews.llvm.org/D66608>`_ ``[InstCombine] icmp eq/ne (gep
-  inbounds P, Idx..), null -> icmp eq/ne P, null``) LLVM uses that for
-  transformations. If the original source violates these requirements this
-  may result in code being miscompiled. If you are using Clang front-end,
-  Undefined Behaviour Sanitizer ``-fsanitize=pointer-overflow`` check
-  will now catch such cases.
-
-
-* Windows Control Flow Guard: the ``-cfguard`` option now emits CFG checks on
-  indirect function calls. The previous behavior is still available with the 
-  ``-cfguard-nochecks`` option. Note that this feature should always be used 
-  with optimizations enabled.
-
-* ``Callbacks`` have been added to ``CommandLine Options``.  These can
-  be used to validate of selectively enable other options.
-
-* The function attributes ``no-frame-pointer-elim`` and
-  ``no-frame-pointer-elim-non-leaf`` have been replaced by ``frame-pointer``,
-  which has 3 values: ``none``, ``non-leaf``, and ``all``. The values mean what
-  functions should retain frame pointers.
 
 Changes to the LLVM IR
 ----------------------
 
-* Unnamed function arguments now get printed with their automatically
-  generated name (e.g. "i32 %0") in definitions. This may require front-ends
-  to update their tests; if so there is a script utils/add_argument_names.py
-  that correctly converted 80-90% of Clang tests. Some manual work will almost
-  certainly still be needed.
-
 
 Changes to building LLVM
 ------------------------
@@ -114,44 +64,25 @@
 Changes to the ARM Backend
 --------------------------
 
- During this release ...
+During this release ...
 
 
 Changes to the MIPS Target
 --------------------------
 
- During this release ...
+During this release ...
 
 
 Changes to the PowerPC Target
 -----------------------------
 
- During this release ...
+During this release ...
 
 Changes to the X86 Target
 -------------------------
 
- During this release ...
+During this release ...
 
-* Less than 128 bit vector types, v2i32, v4i16, v2i16, v8i8, v4i8, and v2i8, are
-  now stored in the lower bits of an xmm register and the upper bits are
-  undefined. Previously the elements were spread apart with undefined bits in
-  between them.
-* v32i8 and v64i8 vectors with AVX512F enabled, but AVX512BW disabled will now
-  be passed in ZMM registers for calls and returns. Previously they were passed
-  in two YMM registers. Old behavior can be enabled by passing
-  -x86-enable-old-knl-abi
-* -mprefer-vector-width=256 is now the default behavior skylake-avx512 and later
-  Intel CPUs. This tries to limit the use of 512-bit registers which can cause a
-  decrease in CPU frequency on these CPUs. This can be re-enabled by passing
-  -mprefer-vector-width=512 to clang or passing -mattr=-prefer-256-bit to llc.
-* Deprecated the mpx feature flag for the Intel MPX instructions. There were no
-  intrinsics for this feature. This change only this effects the results
-  returned by getHostCPUFeatures on CPUs that implement the MPX instructions.
-* The feature flag fast-partial-ymm-or-zmm-write which previously disabled
-  vzeroupper insertion has been removed. It has been replaced with a vzeroupper
-  feature flag which has the opposite polarity. So -vzeroupper has the same
-  effect as +fast-partial-ymm-or-zmm-write.
 
 Changes to the AMDGPU Target
 -----------------------------
@@ -159,12 +90,12 @@
 Changes to the AVR Target
 -----------------------------
 
- During this release ...
+During this release ...
 
 Changes to the WebAssembly Target
 ---------------------------------
 
- During this release ...
+During this release ...
 
 
 Changes to the OCaml bindings
@@ -174,16 +105,10 @@
 
 Changes to the C API
 --------------------
-* C DebugInfo API ``LLVMDIBuilderCreateTypedef`` is updated to include an extra
-  argument ``AlignInBits``, to facilitate / propagate specified Alignment information
-  present in a ``typedef`` to Debug information in LLVM IR.
 
 
 Changes to the Go bindings
 --------------------------
-* Go DebugInfo API ``CreateTypedef`` is updated to include an extra argument ``AlignInBits``,
-  to facilitate / propagate specified Alignment information present in a ``typedef``
-  to Debug information in LLVM IR.
 
 
 Changes to the DAG infrastructure
@@ -192,7 +117,7 @@
 Changes to LLDB
 ===============
 
-External Open Source Projects Using LLVM 10
+External Open Source Projects Using LLVM 11
 ===========================================
 
 * A project...
@@ -204,7 +129,7 @@
 A wide variety of additional information is available on the `LLVM web page
 <https://llvm.org/>`_, in particular in the `documentation
 <https://llvm.org/docs/>`_ section.  The web page also contains versions of the
-API documentation which is up-to-date with the Subversion version of the source
+API documentation which is up-to-date with the Git version of the source
 code.  You can access versions of these documents specific to this release by
 going into the ``llvm/docs/`` directory in the LLVM tree.
 
diff --git a/llvm/utils/gn/secondary/llvm/version.gni b/llvm/utils/gn/secondary/llvm/version.gni
index 39961ef..44c8736 100644
--- a/llvm/utils/gn/secondary/llvm/version.gni
+++ b/llvm/utils/gn/secondary/llvm/version.gni
@@ -1,4 +1,4 @@
-llvm_version_major = 10
+llvm_version_major = 11
 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 09e366e..d364464 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__ = (0, 10, 0)
+__versioninfo__ = (0, 11, 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 7556bfa..078d64db 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=10.0.0-%revision%
-set clang_format_vs_version=10.0.0.%datestamp%
+set package_version=11.0.0-%revision%
+set clang_format_vs_version=11.0.0.%datestamp%
 set build_dir=llvm_package_%revision%
 
 echo Revision: %revision%
diff --git a/polly/docs/ReleaseNotes.rst b/polly/docs/ReleaseNotes.rst
index 1d9aacc..aa03977 100644
--- a/polly/docs/ReleaseNotes.rst
+++ b/polly/docs/ReleaseNotes.rst
@@ -1,8 +1,8 @@
 =============================
-Release Notes 10.0 (upcoming)
+Release Notes 11.0 (upcoming)
 =============================
 
-In Polly 10 the following important changes have been incorporated.
+In Polly 11 the following important changes have been incorporated.
 
 .. warning::
 
diff --git a/polly/docs/conf.py b/polly/docs/conf.py
index 2449b03..8b59947 100644
--- a/polly/docs/conf.py
+++ b/polly/docs/conf.py
@@ -49,9 +49,9 @@
 # built documents.
 #
 # The short X.Y version.
-version = '10.0-devel'
+version = '11.0-devel'
 # The full version, including alpha/beta/rc tags.
-release = '10.0-devel'
+release = '11.0-devel'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff --git a/pstl/docs/ReleaseNotes.rst b/pstl/docs/ReleaseNotes.rst
index dd707ec..e7771d4 100644
--- a/pstl/docs/ReleaseNotes.rst
+++ b/pstl/docs/ReleaseNotes.rst
@@ -1,5 +1,5 @@
 =======================================
-PSTL 10.0.0 (In-Progress) Release Notes
+PSTL 11.0.0 (In-Progress) Release Notes
 =======================================
 
 .. contents::
@@ -10,7 +10,7 @@
 
 .. warning::
 
-   These are in-progress notes for the upcoming pstl 10 release.
+   These are in-progress notes for the upcoming pstl 11 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 10.0.0. Here we
+library, part of the LLVM Compiler Infrastructure, release 11.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 10.0.0?
+What's New in PSTL 11.0.0?
 ==========================
 
 New Features
diff --git a/pstl/include/pstl/internal/pstl_config.h b/pstl/include/pstl/internal/pstl_config.h
index 5346929..4f9df12 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 10000
+#define _PSTL_VERSION 11000
 #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 7e34c1f..c47ef14 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 == 10000);
-static_assert(_PSTL_VERSION_MAJOR == 10);
+static_assert(_PSTL_VERSION == 11000);
+static_assert(_PSTL_VERSION_MAJOR == 11);
 static_assert(_PSTL_VERSION_MINOR == 00);
 static_assert(_PSTL_VERSION_PATCH == 0);
 
