diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index dab9957..32f5673 100644
--- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -225,7 +225,7 @@
     AbbreviationsSet(InitAbbreviationsSetSize), Abbreviations(),
     ValuesSet(InitValuesSetSize), Values(), StringPool(), SectionMap(),
     SectionSourceLines(), didInitial(false), shouldEmit(false),
-    FunctionDbgScope(0), DebugTimer(0), LLVMMangler(0) {
+    FunctionDbgScope(0), DebugTimer(0) {
   if (TimePassesIsEnabled)
     DebugTimer = new Timer("Dwarf Debug Writer",
                            getDwarfTimerGroup());
@@ -787,7 +787,7 @@
   GV.getLinkageName(LinkageName);
   if (!LinkageName.empty())
     AddString(GVDie, dwarf::DW_AT_MIPS_linkage_name, dwarf::DW_FORM_string,
-              LLVMMangler->makeNameProper(LinkageName));
+              LinkageName);
   AddType(DW_Unit, GVDie, GV.getType());
   if (!GV.isLocalToUnit())
     AddUInt(GVDie, dwarf::DW_AT_external, dwarf::DW_FORM_flag, 1);
@@ -858,7 +858,7 @@
 
   if (!LinkageName.empty())
     AddString(SPDie, dwarf::DW_AT_MIPS_linkage_name, dwarf::DW_FORM_string,
-              LLVMMangler->makeNameProper(LinkageName));
+              LinkageName);
 
   AddSourceLine(SPDie, &SP);
 
@@ -1278,16 +1278,6 @@
   SmallVector<GlobalVariable *, 4> SPs;
   CollectDebugInfoAnchors(*M, CUs, GVs, SPs);
 
-  LLVMMangler = new Mangler(*M, TAI->getGlobalPrefix());
-  // add chars used in ObjC method names so method names aren't mangled
-  LLVMMangler->markCharAcceptable('[');
-  LLVMMangler->markCharAcceptable(']');
-  LLVMMangler->markCharAcceptable('(');
-  LLVMMangler->markCharAcceptable(')');
-  LLVMMangler->markCharAcceptable('-');
-  LLVMMangler->markCharAcceptable('+');
-  LLVMMangler->markCharAcceptable(' ');
-
   // Create all the compile unit DIEs.
   for (SmallVector<GlobalVariable *, 2>::iterator I = CUs.begin(),
          E = CUs.end(); I != E; ++I) 
@@ -1418,8 +1408,6 @@
 
   if (TimePassesIsEnabled)
     DebugTimer->stopTimer();
-
-  delete LLVMMangler;
 }
 
 /// BeginFunction - Gather pre-function debug information.  Assumes being
diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.h b/lib/CodeGen/AsmPrinter/DwarfDebug.h
index 78260e5..a4072f5 100644
--- a/lib/CodeGen/AsmPrinter/DwarfDebug.h
+++ b/lib/CodeGen/AsmPrinter/DwarfDebug.h
@@ -20,7 +20,6 @@
 #include "llvm/CodeGen/MachineLocation.h"
 #include "llvm/Analysis/DebugInfo.h"
 #include "llvm/Support/raw_ostream.h"
-#include "llvm/Support/Mangler.h"
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/FoldingSet.h"
 #include "llvm/ADT/SmallSet.h"
@@ -180,9 +179,7 @@
 
   /// DebugTimer - Timer for the Dwarf debug writer.
   Timer *DebugTimer;
- 
-  Mangler *LLVMMangler;
-
+  
   struct FunctionDebugFrameInfo {
     unsigned Number;
     std::vector<MachineMove> Moves;
