diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4ca0d67f31b..de25d74ae9a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -226,7 +226,6 @@ set(LLVM_ALL_TARGETS
AMDGPU
ARM
BPF
- CppBackend
Hexagon
Mips
MSP430
diff --git a/docs/CodeGenerator.rst b/docs/CodeGenerator.rst
index a84645da7ce..5a55b0cabc9 100644
--- a/docs/CodeGenerator.rst
+++ b/docs/CodeGenerator.rst
@@ -1771,13 +1771,11 @@ table that summarizes what features are supported by each target.
Target Feature Matrix
---------------------
-Note that this table does not include the C backend or Cpp backends, since they
-do not use the target independent code generator infrastructure. It also
-doesn't list features that are not supported fully by any target yet. It
-considers a feature to be supported if at least one subtarget supports it. A
-feature being supported means that it is useful and works for most cases, it
-does not indicate that there are zero known bugs in the implementation. Here is
-the key:
+Note that this table does not list features that are not supported fully by any
+target yet. It considers a feature to be supported if at least one subtarget
+supports it. A feature being supported means that it is useful and works for
+most cases, it does not indicate that there are zero known bugs in the
+implementation. Here is the key:
:raw-html:`
`
:raw-html:``
diff --git a/docs/GettingStarted.rst b/docs/GettingStarted.rst
index 68333177fcb..1fef8663c90 100644
--- a/docs/GettingStarted.rst
+++ b/docs/GettingStarted.rst
@@ -730,9 +730,9 @@ used by people developing LLVM.
| | the configure script. The default list is defined |
| | as ``LLVM_ALL_TARGETS``, and can be set to include |
| | out-of-tree targets. The default value includes: |
-| | ``AArch64, AMDGPU, ARM, BPF, CppBackend, Hexagon, |
-| | Mips, MSP430, NVPTX, PowerPC, Sparc, SystemZ |
-| | X86, XCore``. |
+| | ``AArch64, AMDGPU, ARM, BPF, Hexagon, Mips, |
+| | MSP430, NVPTX, PowerPC, Sparc, SystemZ, X86, |
+| | XCore``. |
+-------------------------+----------------------------------------------------+
| LLVM_ENABLE_DOXYGEN | Build doxygen-based documentation from the source |
| | code This is disabled by default because it is |
diff --git a/lib/Target/CppBackend/CMakeLists.txt b/lib/Target/CppBackend/CMakeLists.txt
deleted file mode 100644
index 515e1dd7e39..00000000000
--- a/lib/Target/CppBackend/CMakeLists.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-add_llvm_target(CppBackendCodeGen
- CPPBackend.cpp
- )
-
-add_subdirectory(TargetInfo)
diff --git a/lib/Target/CppBackend/CPPBackend.cpp b/lib/Target/CppBackend/CPPBackend.cpp
deleted file mode 100644
index bc2bf155c51..00000000000
--- a/lib/Target/CppBackend/CPPBackend.cpp
+++ /dev/null
@@ -1,2145 +0,0 @@
-//===-- CPPBackend.cpp - Library for converting LLVM code to C++ code -----===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements the writing of the LLVM IR as a set of C++ calls to the
-// LLVM IR interface. The input module is assumed to be verified.
-//
-//===----------------------------------------------------------------------===//
-
-#include "CPPTargetMachine.h"
-#include "llvm/ADT/SmallPtrSet.h"
-#include "llvm/ADT/StringExtras.h"
-#include "llvm/ADT/STLExtras.h"
-#include "llvm/Config/config.h"
-#include "llvm/IR/CallingConv.h"
-#include "llvm/IR/Constants.h"
-#include "llvm/IR/DerivedTypes.h"
-#include "llvm/IR/InlineAsm.h"
-#include "llvm/IR/Instruction.h"
-#include "llvm/IR/Instructions.h"
-#include "llvm/IR/LegacyPassManager.h"
-#include "llvm/IR/Module.h"
-#include "llvm/MC/MCAsmInfo.h"
-#include "llvm/MC/MCInstrInfo.h"
-#include "llvm/MC/MCSubtargetInfo.h"
-#include "llvm/Pass.h"
-#include "llvm/Support/CommandLine.h"
-#include "llvm/Support/ErrorHandling.h"
-#include "llvm/Support/FormattedStream.h"
-#include "llvm/Support/TargetRegistry.h"
-#include
-#include
-#include
-#include