diff --git a/llvm/unittests/ADT/StatisticTest.cpp b/llvm/unittests/ADT/StatisticTest.cpp
new file mode 100644
index 0000000..3ddfe56
--- /dev/null
+++ b/llvm/unittests/ADT/StatisticTest.cpp
@@ -0,0 +1,106 @@
+//===- llvm/unittest/ADT/StatisticTest.cpp - Statistic unit tests ---------===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/ADT/Statistic.h"
+#include "llvm/Support/raw_ostream.h"
+#include "gtest/gtest.h"
+using namespace llvm;
+
+namespace {
+#define DEBUG_TYPE "unittest"
+STATISTIC(Counter, "Counts things");
+STATISTIC(Counter2, "Counts other things");
+
+TEST(StatisticTest, Count) {
+  EnableStatistics();
+
+  Counter = 0;
+  EXPECT_EQ(Counter, 0u);
+  Counter++;
+  Counter++;
+#if LLVM_ENABLE_STATS
+  EXPECT_EQ(Counter, 2u);
+#else
+  EXPECT_EQ(Counter, 0u);
+#endif
+}
+
+TEST(StatisticTest, Assign) {
+  EnableStatistics();
+
+  Counter = 2;
+#if LLVM_ENABLE_STATS
+  EXPECT_EQ(Counter, 2u);
+#else
+  EXPECT_EQ(Counter, 0u);
+#endif
+}
+
+TEST(StatisticTest, API) {
+  EnableStatistics();
+
+  Counter = 0;
+  EXPECT_EQ(Counter, 0u);
+  Counter++;
+  Counter++;
+#if LLVM_ENABLE_STATS
+  EXPECT_EQ(Counter, 2u);
+#else
+  EXPECT_EQ(Counter, 0u);
+#endif
+
+#if LLVM_ENABLE_STATS
+  const auto Range1 = GetStatistics();
+  EXPECT_NE(Range1.begin(), Range1.end());
+  EXPECT_EQ(Range1.begin() + 1, Range1.end());
+
+  Optional<std::pair<StringRef, unsigned>> S1;
+  Optional<std::pair<StringRef, unsigned>> S2;
+  for (const auto &S : Range1) {
+    if (std::string(S.first) == "Counter")
+      S1 = S;
+    if (std::string(S.first) == "Counter2")
+      S2 = S;
+  }
+
+  EXPECT_NE(S1.hasValue(), false);
+  EXPECT_EQ(S2.hasValue(), false);
+
+  // Counter2 will be registered when it's first touched.
+  Counter2++;
+
+  const auto Range2 = GetStatistics();
+  EXPECT_NE(Range2.begin(), Range2.end());
+  EXPECT_EQ(Range2.begin() + 2, Range2.end());
+
+  S1 = None;
+  S2 = None;
+  for (const auto &S : Range2) {
+    if (std::string(S.first) == "Counter")
+      S1 = S;
+    if (std::string(S.first) == "Counter2")
+      S2 = S;
+  }
+
+  EXPECT_NE(S1.hasValue(), false);
+  EXPECT_NE(S2.hasValue(), false);
+
+  EXPECT_EQ(S1->first, "Counter");
+  EXPECT_EQ(S1->second, 2u);
+
+  EXPECT_EQ(S2->first, "Counter2");
+  EXPECT_EQ(S2->second, 1u);
+#else
+  Counter2++;
+  auto &Range = GetStatistics();
+  EXPECT_EQ(Range.begin(), Range.end());
+#endif
+}
+
+} // end anonymous namespace
