AbbreviationsSet(InitAbbreviationsSetSize), Abbreviations(),
ValuesSet(InitValuesSetSize), Values(), StringPool(), SectionMap(),
SectionSourceLines(), didInitial(false), shouldEmit(false),
- FunctionDbgScope(0), DebugTimer(0) {
+ FunctionDbgScope(0), DebugTimer(0), LLVMMangler(0) {
if (TimePassesIsEnabled)
DebugTimer = new Timer("Dwarf Debug Writer",
getDwarfTimerGroup());
GV.getLinkageName(LinkageName);
if (!LinkageName.empty())
AddString(GVDie, dwarf::DW_AT_MIPS_linkage_name, dwarf::DW_FORM_string,
- LinkageName);
+ LLVMMangler->makeNameProper(LinkageName));
AddType(DW_Unit, GVDie, GV.getType());
if (!GV.isLocalToUnit())
AddUInt(GVDie, dwarf::DW_AT_external, dwarf::DW_FORM_flag, 1);
if (!LinkageName.empty())
AddString(SPDie, dwarf::DW_AT_MIPS_linkage_name, dwarf::DW_FORM_string,
- LinkageName);
+ LLVMMangler->makeNameProper(LinkageName));
AddSourceLine(SPDie, &SP);
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)
if (TimePassesIsEnabled)
DebugTimer->stopTimer();
+
+ delete LLVMMangler;
}
/// BeginFunction - Gather pre-function debug information. Assumes being
#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"
/// DebugTimer - Timer for the Dwarf debug writer.
Timer *DebugTimer;
-
+
+ Mangler *LLVMMangler;
+
struct FunctionDebugFrameInfo {
unsigned Number;
std::vector<MachineMove> Moves;