diff --git a/lib/CodeGen/LLVMTargetMachine.cpp b/lib/CodeGen/LLVMTargetMachine.cpp
index 9164f82..242cba5 100644
--- a/lib/CodeGen/LLVMTargetMachine.cpp
+++ b/lib/CodeGen/LLVMTargetMachine.cpp
@@ -348,8 +348,8 @@
 
   // Tail duplication.
   if (OptLevel != CodeGenOpt::None && !DisableTailDuplicate) {
-    PM.add(createTailDuplicationPass());
-    printAndVerify(PM, "After TailDuplication");
+    PM.add(createTailDuplicatePass());
+    printAndVerify(PM, "After TailDuplicate");
   }
 
   PM.add(createGCMachineCodeAnalysisPass());
diff --git a/lib/CodeGen/TailDuplication.cpp b/lib/CodeGen/TailDuplication.cpp
index 9fa0587..12610b0 100644
--- a/lib/CodeGen/TailDuplication.cpp
+++ b/lib/CodeGen/TailDuplication.cpp
@@ -37,14 +37,14 @@
                   cl::init(2), cl::Hidden);
 
 namespace {
-  /// TailDuplicationPass - Perform tail duplication.
-  class TailDuplicationPass : public MachineFunctionPass {
+  /// TailDuplicatePass - Perform tail duplication.
+  class TailDuplicatePass : public MachineFunctionPass {
     const TargetInstrInfo *TII;
     MachineModuleInfo *MMI;
 
   public:
     static char ID;
-    explicit TailDuplicationPass() : MachineFunctionPass(&ID) {}
+    explicit TailDuplicatePass() : MachineFunctionPass(&ID) {}
 
     virtual bool runOnMachineFunction(MachineFunction &MF);
     virtual const char *getPassName() const { return "Tail Duplication"; }
@@ -55,14 +55,14 @@
     void RemoveDeadBlock(MachineBasicBlock *MBB);
   };
 
-  char TailDuplicationPass::ID = 0;
+  char TailDuplicatePass::ID = 0;
 }
 
-FunctionPass *llvm::createTailDuplicationPass() {
-  return new TailDuplicationPass();
+FunctionPass *llvm::createTailDuplicatePass() {
+  return new TailDuplicatePass();
 }
 
-bool TailDuplicationPass::runOnMachineFunction(MachineFunction &MF) {
+bool TailDuplicatePass::runOnMachineFunction(MachineFunction &MF) {
   TII = MF.getTarget().getInstrInfo();
   MMI = getAnalysisIfAvailable<MachineModuleInfo>();
 
@@ -80,7 +80,7 @@
 /// TailDuplicateBlocks - Look for small blocks that are unconditionally
 /// branched to and do not fall through. Tail-duplicate their instructions
 /// into their predecessors to eliminate (dynamic) branches.
-bool TailDuplicationPass::TailDuplicateBlocks(MachineFunction &MF) {
+bool TailDuplicatePass::TailDuplicateBlocks(MachineFunction &MF) {
   bool MadeChange = false;
 
   for (MachineFunction::iterator I = ++MF.begin(), E = MF.end(); I != E; ) {
@@ -105,7 +105,7 @@
 
 /// TailDuplicate - If it is profitable, duplicate TailBB's contents in each
 /// of its predecessors.
-bool TailDuplicationPass::TailDuplicate(MachineBasicBlock *TailBB,
+bool TailDuplicatePass::TailDuplicate(MachineBasicBlock *TailBB,
                                         MachineFunction &MF) {
   // Don't try to tail-duplicate single-block loops.
   if (TailBB->isSuccessor(TailBB))
@@ -225,7 +225,7 @@
 
 /// RemoveDeadBlock - Remove the specified dead machine basic block from the
 /// function, updating the CFG.
-void TailDuplicationPass::RemoveDeadBlock(MachineBasicBlock *MBB) {
+void TailDuplicatePass::RemoveDeadBlock(MachineBasicBlock *MBB) {
   assert(MBB->pred_empty() && "MBB must be dead!");
   DEBUG(errs() << "\nRemoving MBB: " << *MBB);
 
