diff --git a/lib/CodeGen/AsmPrinter/DwarfException.cpp b/lib/CodeGen/AsmPrinter/DwarfException.cpp
index b0acac2..cbd438b 100644
--- a/lib/CodeGen/AsmPrinter/DwarfException.cpp
+++ b/lib/CodeGen/AsmPrinter/DwarfException.cpp
@@ -49,11 +49,10 @@
   delete ExceptionTimer;
 }
 
-/// EmitCommonInformationEntry - Emit a Common Information Entry (CIE). This
-/// holds information that is shared among many Frame Description Entries.
-/// There is at least one CIE in every non-empty .debug_frame section.
-void DwarfException::EmitCommonInformationEntry(const Function *Personality,
-                                                unsigned Index) {
+/// EmitCIE - Emit a Common Information Entry (CIE). This holds information that
+/// is shared among many Frame Description Entries.  There is at least one CIE
+/// in every non-empty .debug_frame section.
+void DwarfException::EmitCIE(const Function *Personality, unsigned Index) {
   // Size and sign of stack growth.
   int stackGrowth =
     Asm->TM.getFrameInfo()->getStackGrowthDirection() ==
@@ -147,10 +146,8 @@
   Asm->EOL();
 }
 
-/// EmitFrameDescriptionEntry - Emit the Frame Description Entry (FDE) for the
-/// function.
-void DwarfException::
-EmitFrameDescriptionEntry(const FunctionEHFrameInfo &EHFrameInfo) {
+/// EmitFDE - Emit the Frame Description Entry (FDE) for the function.
+void DwarfException::EmitFDE(const FunctionEHFrameInfo &EHFrameInfo) {
   assert(!EHFrameInfo.function->hasAvailableExternallyLinkage() && 
          "Should not emit 'available externally' functions at all");
 
@@ -850,11 +847,11 @@
   if (shouldEmitMovesModule || shouldEmitTableModule) {
     const std::vector<Function *> Personalities = MMI->getPersonalities();
     for (unsigned i = 0; i < Personalities.size(); ++i)
-      EmitCommonInformationEntry(Personalities[i], i);
+      EmitCIE(Personalities[i], i);
 
     for (std::vector<FunctionEHFrameInfo>::iterator I = EHFrames.begin(),
            E = EHFrames.end(); I != E; ++I)
-      EmitFrameDescriptionEntry(*I);
+      EmitFDE(*I);
   }
 
   if (TimePassesIsEnabled)
diff --git a/lib/CodeGen/AsmPrinter/DwarfException.h b/lib/CodeGen/AsmPrinter/DwarfException.h
index 8a9d568..b1820b7 100644
--- a/lib/CodeGen/AsmPrinter/DwarfException.h
+++ b/lib/CodeGen/AsmPrinter/DwarfException.h
@@ -70,14 +70,13 @@
   /// ExceptionTimer - Timer for the Dwarf exception writer.
   Timer *ExceptionTimer;
 
-  /// EmitCommonInformationEntry - Emit a Common Information Entry (CIE). This
-  /// holds information that is shared among many Frame Description Entries.
-  /// There is at least one CIE in every non-empty .debug_frame section.
-  void EmitCommonInformationEntry(const Function *Personality, unsigned Index);
+  /// EmitCIE - Emit a Common Information Entry (CIE). This holds information
+  /// that is shared among many Frame Description Entries.  There is at least
+  /// one CIE in every non-empty .debug_frame section.
+  void EmitCIE(const Function *Personality, unsigned Index);
 
-  /// EmitFrameDescriptionEntry - Emit the Frame Description Entry (FDE) for the
-  /// function.
-  void EmitFrameDescriptionEntry(const FunctionEHFrameInfo &EHFrameInfo);
+  /// EmitFDE - Emit the Frame Description Entry (FDE) for the function.
+  void EmitFDE(const FunctionEHFrameInfo &EHFrameInfo);
 
   /// EmitExceptionTable - Emit landing pads and actions.
   ///
