diff --git a/llvm/unittests/IR/PassManagerTest.cpp b/llvm/unittests/IR/PassManagerTest.cpp
index cbfc3d2..b3a9b74 100644
--- a/llvm/unittests/IR/PassManagerTest.cpp
+++ b/llvm/unittests/IR/PassManagerTest.cpp
@@ -19,7 +19,7 @@
 
 namespace {
 
-class TestAnalysisPass {
+class TestFunctionAnalysis {
 public:
   struct Result {
     Result(int Count) : InstructionCount(Count) {}
@@ -29,7 +29,7 @@
   /// \brief Returns an opaque, unique ID for this pass type.
   static void *ID() { return (void *)&PassID; }
 
-  TestAnalysisPass(int &Runs) : Runs(Runs) {}
+  TestFunctionAnalysis(int &Runs) : Runs(Runs) {}
 
   /// \brief Run the analysis pass over the function and return a result.
   Result run(Function *F, FunctionAnalysisManager *AM) {
@@ -49,7 +49,7 @@
   int &Runs;
 };
 
-char TestAnalysisPass::PassID;
+char TestFunctionAnalysis::PassID;
 
 struct TestModulePass {
   TestModulePass(int &RunCount) : RunCount(RunCount) {}
@@ -94,12 +94,12 @@
 
     if (OnlyUseCachedResults) {
       // Hack to force the use of the cached interface.
-      if (const TestAnalysisPass::Result *AR =
-              AM->getCachedResult<TestAnalysisPass>(F))
+      if (const TestFunctionAnalysis::Result *AR =
+              AM->getCachedResult<TestFunctionAnalysis>(F))
         AnalyzedInstrCount += AR->InstructionCount;
     } else {
       // Typical path just runs the analysis as needed.
-      const TestAnalysisPass::Result &AR = AM->getResult<TestAnalysisPass>(F);
+      const TestFunctionAnalysis::Result &AR = AM->getResult<TestFunctionAnalysis>(F);
       AnalyzedInstrCount += AR.InstructionCount;
     }
 
@@ -153,7 +153,7 @@
 TEST_F(PassManagerTest, Basic) {
   FunctionAnalysisManager FAM;
   int AnalysisRuns = 0;
-  FAM.registerPass(TestAnalysisPass(AnalysisRuns));
+  FAM.registerPass(TestFunctionAnalysis(AnalysisRuns));
 
   ModuleAnalysisManager MAM;
   MAM.registerPass(FunctionAnalysisManagerModuleProxy(FAM));
