diff options
author | Eric Christopher <echristo@apple.com> | 2012-09-12 18:42:10 +0000 |
---|---|---|
committer | Eric Christopher <echristo@apple.com> | 2012-09-12 18:42:10 +0000 |
commit | 48f782bbd2216fdad02accaae897687563b405e5 (patch) | |
tree | 7262d3a6ea547875741586282f614e21e7330dda /clang/lib/CodeGen/CGDebugInfo.cpp | |
parent | fb901cac602c3962a01ace0618382b919bf97d6a (diff) | |
download | bcm5719-llvm-48f782bbd2216fdad02accaae897687563b405e5.tar.gz bcm5719-llvm-48f782bbd2216fdad02accaae897687563b405e5.zip |
Revert "Make clang emit a flag for DW_AT_object_pointer for the artificial"
this should be done on the subprogram, not the variable.
llvm-svn: 163733
Diffstat (limited to 'clang/lib/CodeGen/CGDebugInfo.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGDebugInfo.cpp | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp index 35c012fa3f3..2bb98076cf3 100644 --- a/clang/lib/CodeGen/CGDebugInfo.cpp +++ b/clang/lib/CodeGen/CGDebugInfo.cpp @@ -891,12 +891,12 @@ CGDebugInfo::getOrCreateMethodType(const CXXMethodDecl *Method, // TODO: This and the artificial type below are misleading, the // types aren't artificial the argument is, but the current // metadata doesn't represent that. - ThisPtrType = DBuilder.createObjectPointerType(ThisPtrType); + ThisPtrType = DBuilder.createArtificialType(ThisPtrType); Elts.push_back(ThisPtrType); } else { llvm::DIType ThisPtrType = getOrCreateType(ThisPtr, Unit); TypeCache[ThisPtr.getAsOpaquePtr()] = ThisPtrType; - ThisPtrType = DBuilder.createObjectPointerType(ThisPtrType); + ThisPtrType = DBuilder.createArtificialType(ThisPtrType); Elts.push_back(ThisPtrType); } } @@ -1999,7 +1999,7 @@ llvm::DIType CGDebugInfo::getOrCreateFunctionType(const Decl *D, Elts.push_back(getOrCreateType(OMethod->getResultType(), F)); // "self" pointer is always first argument. llvm::DIType SelfTy = getOrCreateType(OMethod->getSelfDecl()->getType(), F); - Elts.push_back(DBuilder.createObjectPointerType(SelfTy)); + Elts.push_back(DBuilder.createArtificialType(SelfTy)); // "_cmd" pointer is always second argument. llvm::DIType CmdTy = getOrCreateType(OMethod->getCmdDecl()->getType(), F); Elts.push_back(DBuilder.createArtificialType(CmdTy)); @@ -2297,16 +2297,8 @@ void CGDebugInfo::EmitDeclare(const VarDecl *VD, unsigned Tag, unsigned Flags = 0; if (VD->isImplicit()) Flags |= llvm::DIDescriptor::FlagArtificial; - // If this is the first argument and it is implicit then - // give it an object pointer flag. - // FIXME: There has to be a better way to do this, but for static - // functions there won't be an implicit param at arg1 and - // otherwise it is 'self' or 'this'. - if (isa<ImplicitParamDecl>(VD) && ArgNo == 1) - Flags |= llvm::DIDescriptor::FlagObjectPointer; - llvm::MDNode *Scope = LexicalBlockStack.back(); - + StringRef Name = VD->getName(); if (!Name.empty()) { if (VD->hasAttr<BlocksAttr>()) { |