diff --git a/llvm/unittests/Analysis/CallGraphTest.cpp b/llvm/unittests/Analysis/CallGraphTest.cpp
new file mode 100644
index 0000000..29e9aa6
--- /dev/null
+++ b/llvm/unittests/Analysis/CallGraphTest.cpp
@@ -0,0 +1,62 @@
+//=======- CallGraphTest.cpp - Unit tests for the CG analysis -------------===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/Analysis/CallGraph.h"
+#include "llvm/IR/LLVMContext.h"
+#include "llvm/IR/Module.h"
+#include "gtest/gtest.h"
+
+using namespace llvm;
+
+namespace {
+
+template <typename Ty> void canSpecializeGraphTraitsIterators(Ty *G) {
+  typedef typename GraphTraits<Ty *>::NodeType NodeTy;
+
+  auto I = GraphTraits<Ty *>::nodes_begin(G);
+  auto E = GraphTraits<Ty *>::nodes_end(G);
+  auto X = ++I;
+
+  // Should be able to iterate over all nodes of the graph.
+  static_assert(std::is_same<decltype(*I), NodeTy &>::value,
+                "Node type does not match");
+  static_assert(std::is_same<decltype(*X), NodeTy &>::value,
+                "Node type does not match");
+  static_assert(std::is_same<decltype(*E), NodeTy &>::value,
+                "Node type does not match");
+
+  NodeTy *N = GraphTraits<Ty *>::getEntryNode(G);
+
+  auto S = GraphTraits<NodeTy *>::child_begin(N);
+  auto F = GraphTraits<NodeTy *>::child_end(N);
+  auto Y = ++S;
+
+  // Should be able to iterate over immediate successors of a node.
+  static_assert(std::is_same<decltype(*S), NodeTy *>::value,
+                "Node type does not match");
+  static_assert(std::is_same<decltype(*F), NodeTy *>::value,
+                "Node type does not match");
+  static_assert(std::is_same<decltype(*Y), NodeTy *>::value,
+                "Node type does not match");
+}
+
+TEST(CallGraphTest, GraphTraitsSpecialization) {
+  Module M("", getGlobalContext());
+  CallGraph CG(M);
+
+  canSpecializeGraphTraitsIterators(&CG);
+}
+
+TEST(CallGraphTest, GraphTraitsConstSpecialization) {
+  Module M("", getGlobalContext());
+  CallGraph CG(M);
+
+  canSpecializeGraphTraitsIterators(const_cast<const CallGraph *>(&CG));
+}
+}
