diff --git a/googletest/include/gtest/gtest-printers.h b/googletest/include/gtest/gtest-printers.h
index 46fe895..978420e 100644
--- a/googletest/include/gtest/gtest-printers.h
+++ b/googletest/include/gtest/gtest-printers.h
@@ -113,11 +113,6 @@
 #include "gtest/internal/gtest-internal.h"
 #include "gtest/internal/gtest-port.h"
 
-#if GTEST_HAS_RTTI
-#include <typeindex>
-#include <typeinfo>
-#endif  // GTEST_HAS_RTTI
-
 namespace testing {
 
 // Definitions in the internal* namespaces are subject to change without notice.
@@ -672,18 +667,6 @@
   *os << ')';
 }
 
-#if GTEST_HAS_RTTI
-inline void PrintTo(const ::std::type_info& value, ::std::ostream* os) {
-  internal::PrintTo<::std::type_info>(value, os);
-  *os << " (\"" << value.name() << "\")";
-}
-
-inline void PrintTo(const ::std::type_index& value, ::std::ostream* os) {
-  internal::PrintTo<::std::type_index>(value, os);
-  *os << " (\"" << value.name() << "\")";
-}
-#endif  // GTEST_HAS_RTTI
-
 // Implements printing a non-reference type T by letting the compiler
 // pick the right overload of PrintTo() for T.
 template <typename T>
diff --git a/googletest/test/googletest-printers-test.cc b/googletest/test/googletest-printers-test.cc
index 4e8d66e..e1e8e1c 100644
--- a/googletest/test/googletest-printers-test.cc
+++ b/googletest/test/googletest-printers-test.cc
@@ -1612,61 +1612,6 @@
                           "\n    As Text: \"From ä — ẑ\"");
 }
 
-#if GTEST_HAS_RTTI
-template <typename T>
-class PrintToStringTest : public testing::Test {
- public:
-  using TestType = T;
-};
-
-struct PrintBase {
-  virtual ~PrintBase() = default;
-};
-struct PrintDerived : PrintBase {};
-
-using PrintToStringTestTypes =
-    testing::Types<void, int, const volatile int*, PrintBase, PrintDerived>;
-TYPED_TEST_SUITE(PrintToStringTest, PrintToStringTestTypes);
-
-// Returns `true` if `haystack` contains `needle`.
-//
-// FIXME: Replace with `EXPECT_THAT(haystack, HasSubstr(needle))` once
-// GoogleTest starts depending on GoogleMock.
-bool ContainsSubstr(const std::string& haystack, const std::string& needle) {
-  return haystack.find(needle) != std::string::npos;
-}
-
-TYPED_TEST(PrintToStringTest, IncludesNameWithTypeInfoAndTypeIndex) {
-  const ::std::type_info& info = typeid(typename TestFixture::TestType);
-  SCOPED_TRACE(info.name());
-  EXPECT_TRUE(ContainsSubstr(PrintToString(info), info.name()));
-  EXPECT_TRUE(
-      ContainsSubstr(PrintToString(::std::type_index{info}), info.name()));
-}
-
-TEST(PrintToStringTest, IncludesNameWithTypeInfoAndTypeIndexViaBaseRef) {
-  PrintDerived derived;
-  PrintBase& base = derived;
-
-  {
-    const ::std::type_info& derived_info = typeid(derived);
-    SCOPED_TRACE(derived_info.name());
-    EXPECT_TRUE(
-        ContainsSubstr(PrintToString(derived_info), derived_info.name()));
-    EXPECT_TRUE(ContainsSubstr(PrintToString(::std::type_index{derived_info}),
-                               derived_info.name()));
-  }
-  {
-    const ::std::type_info& base_ref_info = typeid(base);
-    SCOPED_TRACE(base_ref_info.name());
-    EXPECT_TRUE(
-        ContainsSubstr(PrintToString(base_ref_info), base_ref_info.name()));
-    EXPECT_TRUE(ContainsSubstr(PrintToString(::std::type_index{base_ref_info}),
-                               base_ref_info.name()));
-  }
-}
-#endif  // GTEST_HAS_RTTI
-
 TEST(IsValidUTF8Test, IllFormedUTF8) {
   // The following test strings are ill-formed UTF-8 and are printed
   // as hex only (or ASCII, in case of ASCII bytes) because IsValidUTF8() is
