aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2009-07-14 21:31:22 +0000
committerDevang Patel <dpatel@apple.com>2009-07-14 21:31:22 +0000
commit6dba432c7b862c2219e5d6e52b0cd188fbf84b01 (patch)
tree1342be3f46a2fca0186d1a4b65eb8dc4b0c5aa70
parent60fbe8f79838bff41fe9f5ed506ea9bc89d5d1df (diff)
Revert 75648 for now. It is causing test failures.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75684 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/CodeGen/CGDebugInfo.cpp27
-rw-r--r--lib/CodeGen/CGDebugInfo.h5
-rw-r--r--lib/CodeGen/CodeGenModule.cpp4
-rw-r--r--test/CodeGenObjC/debug-info-linkagename.m2
-rw-r--r--test/CodeGenObjC/debug-info.m4
5 files changed, 12 insertions, 30 deletions
diff --git a/lib/CodeGen/CGDebugInfo.cpp b/lib/CodeGen/CGDebugInfo.cpp
index 3d7548e293..a5e4b2f3ad 100644
--- a/lib/CodeGen/CGDebugInfo.cpp
+++ b/lib/CodeGen/CGDebugInfo.cpp
@@ -19,7 +19,6 @@
#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"
@@ -34,22 +33,12 @@
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!");
}
@@ -831,6 +820,8 @@ llvm::DIType CGDebugInfo::getOrCreateType(QualType Ty,
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?
@@ -843,9 +834,7 @@ void CGDebugInfo::EmitFunctionStart(const char *Name, QualType ReturnType,
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*/);
@@ -980,9 +969,7 @@ void CGDebugInfo::EmitGlobalVariable(llvm::GlobalVariable *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);
@@ -1012,9 +999,7 @@ void CGDebugInfo::EmitGlobalVariable(llvm::GlobalVariable *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);
diff --git a/lib/CodeGen/CGDebugInfo.h b/lib/CodeGen/CGDebugInfo.h
index 5cb5f09da8..ac28e5b879 100644
--- a/lib/CodeGen/CGDebugInfo.h
+++ b/lib/CodeGen/CGDebugInfo.h
@@ -16,7 +16,6 @@
#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>
@@ -26,7 +25,6 @@
namespace clang {
class VarDecl;
class ObjCInterfaceDecl;
- class TargetInfo;
namespace CodeGen {
class CodeGenModule;
@@ -36,7 +34,6 @@ namespace CodeGen {
/// the backend.
class CGDebugInfo {
CodeGenModule *M;
- llvm::Mangler *LLVMMangler;
bool isMainCompileUnitCreated;
llvm::DIFactory DebugFactory;
@@ -71,7 +68,7 @@ class CGDebugInfo {
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
diff --git a/lib/CodeGen/CodeGenModule.cpp b/lib/CodeGen/CodeGenModule.cpp
index 9ac68718a5..b516da9a72 100644
--- a/lib/CodeGen/CodeGenModule.cpp
+++ b/lib/CodeGen/CodeGenModule.cpp
@@ -52,9 +52,7 @@ CodeGenModule::CodeGenModule(ASTContext &C, const CompileOptions &compileOpts,
Runtime = CreateMacObjCRuntime(*this);
// If debug info generation is enabled, create the CGDebugInfo object.
- DebugInfo = 0;
- if (CompileOpts.DebugInfo)
- DebugInfo = new CGDebugInfo(this, &Context.Target);
+ DebugInfo = CompileOpts.DebugInfo ? new CGDebugInfo(this) : 0;
}
CodeGenModule::~CodeGenModule() {
diff --git a/test/CodeGenObjC/debug-info-linkagename.m b/test/CodeGenObjC/debug-info-linkagename.m
index bda98eec49..dfd1dfa98b 100644
--- a/test/CodeGenObjC/debug-info-linkagename.m
+++ b/test/CodeGenObjC/debug-info-linkagename.m
@@ -1,5 +1,7 @@
// RUN: clang-cc -g -S -o %t %s
// RUN: not grep 001 %t
+// XFAIL
+
@interface F
-(int) bar;
diff --git a/test/CodeGenObjC/debug-info.m b/test/CodeGenObjC/debug-info.m
index 9f44774495..519706be79 100644
--- a/test/CodeGenObjC/debug-info.m
+++ b/test/CodeGenObjC/debug-info.m
@@ -1,7 +1,7 @@
// RUN: clang-cc -triple i386-apple-darwin9 -g -emit-llvm -o %t %s &&
// RUN: grep '@.str3 = internal constant \[8 x i8\] c"-\[A m0\]\\00"' %t &&
-// RUN: grep '@.str4 = internal constant \[2 x i8\] c"A\\00"' %t &&
-// RUN: grep '@llvm.dbg.subprogram = .* @.str3, .* @.str3, .* @.str3,' %t &&
+// RUN: grep '@.str4 = internal constant \[9 x i8\] c"\\01-\[A m0\]\\00"' %t &&
+// RUN: grep '@llvm.dbg.subprogram = .* @.str3, .* @.str3, .* @.str4,' %t &&
// RUN: grep '@llvm.dbg.composite.* = .* i32 15, i64 0, i64 8, .* i32 16' %t &&
// RUN: true