#include "clang/AST/Expr.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Basic/FileManager.h"
-#include "clang/Basic/TargetInfo.h"
#include "clang/Frontend/CompileOptions.h"
#include "llvm/Constants.h"
#include "llvm/DerivedTypes.h"
using namespace clang;
using namespace clang::CodeGen;
-CGDebugInfo::CGDebugInfo(CodeGenModule *m, TargetInfo *t)
+CGDebugInfo::CGDebugInfo(CodeGenModule *m)
: M(m), isMainCompileUnitCreated(false), DebugFactory(M->getModule()),
BlockLiteralGenericSet(false) {
- LLVMMangler = new llvm::Mangler(m->getModule(), t->getUserLabelPrefix(), ".");
- // 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(' ');
}
CGDebugInfo::~CGDebugInfo() {
- delete LLVMMangler;
assert(RegionStack.empty() && "Region stack mismatch, stack not empty!");
}
void CGDebugInfo::EmitFunctionStart(const char *Name, QualType ReturnType,
llvm::Function *Fn,
CGBuilderTy &Builder) {
+ const char *LinkageName = Name;
+
// Skip the asm prefix if it exists.
//
// FIXME: This should probably be the unmangled name?
unsigned LineNo = SM.getPresumedLoc(CurLoc).getLine();
llvm::DISubprogram SP =
- DebugFactory.CreateSubprogram(Unit, Name, Name,
- LLVMMangler->getMangledName(Fn),
- Unit, LineNo,
+ DebugFactory.CreateSubprogram(Unit, Name, Name, LinkageName, Unit, LineNo,
getOrCreateType(ReturnType, Unit),
Fn->hasInternalLinkage(), true/*definition*/);
ArrayType::Normal, 0);
}
- DebugFactory.CreateGlobalVariable(Unit, Name, Name,
- LLVMMangler->getMangledName(Var),
- Unit, LineNo,
+ DebugFactory.CreateGlobalVariable(Unit, Name, Name, "", Unit, LineNo,
getOrCreateType(T, Unit),
Var->hasInternalLinkage(),
true/*definition*/, Var);
ArrayType::Normal, 0);
}
- DebugFactory.CreateGlobalVariable(Unit, Name, Name,
- LLVMMangler->getMangledName(Var),
- Unit, LineNo,
+ DebugFactory.CreateGlobalVariable(Unit, Name, Name, "", Unit, LineNo,
getOrCreateType(T, Unit),
Var->hasInternalLinkage(),
true/*definition*/, Var);
#include "clang/AST/Type.h"
#include "clang/Basic/SourceLocation.h"
-#include "llvm/Support/Mangler.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/Analysis/DebugInfo.h"
#include <map>
namespace clang {
class VarDecl;
class ObjCInterfaceDecl;
- class TargetInfo;
namespace CodeGen {
class CodeGenModule;
/// the backend.
class CGDebugInfo {
CodeGenModule *M;
- llvm::Mangler *LLVMMangler;
bool isMainCompileUnitCreated;
llvm::DIFactory DebugFactory;
llvm::DIType CreateType(const ArrayType *Ty, llvm::DICompileUnit U);
public:
- CGDebugInfo(CodeGenModule *m, TargetInfo *t);
+ CGDebugInfo(CodeGenModule *m);
~CGDebugInfo();
/// setLocation - Update the current source location. If \arg loc is