forked from OSchip/llvm-project
Replace a pile of calls with an instance variable that's set
once. Should be no functional change. llvm-svn: 181964
This commit is contained in:
parent
2ec1211c87
commit
75e1768b46
|
|
@ -41,7 +41,8 @@ using namespace clang;
|
|||
using namespace clang::CodeGen;
|
||||
|
||||
CGDebugInfo::CGDebugInfo(CodeGenModule &CGM)
|
||||
: CGM(CGM), DBuilder(CGM.getModule()),
|
||||
: CGM(CGM), DebugKind(CGM.getCodeGenOpts().getDebugInfo()),
|
||||
DBuilder(CGM.getModule()),
|
||||
BlockLiteralGenericSet(false) {
|
||||
CreateCompileUnit();
|
||||
}
|
||||
|
|
@ -602,7 +603,7 @@ llvm::DIDescriptor CGDebugInfo::createContextChain(const Decl *Context) {
|
|||
/// then emit record's fwd if debug info size reduction is enabled.
|
||||
llvm::DIType CGDebugInfo::CreatePointeeType(QualType PointeeTy,
|
||||
llvm::DIFile Unit) {
|
||||
if (CGM.getCodeGenOpts().getDebugInfo() != CodeGenOptions::LimitedDebugInfo)
|
||||
if (DebugKind != CodeGenOptions::LimitedDebugInfo)
|
||||
return getOrCreateType(PointeeTy, Unit);
|
||||
|
||||
// Limit debug info for the pointee type.
|
||||
|
|
@ -1367,7 +1368,7 @@ CollectVTableInfo(const CXXRecordDecl *RD, llvm::DIFile Unit,
|
|||
/// getOrCreateRecordType - Emit record type's standalone debug info.
|
||||
llvm::DIType CGDebugInfo::getOrCreateRecordType(QualType RTy,
|
||||
SourceLocation Loc) {
|
||||
assert(CGM.getCodeGenOpts().getDebugInfo() >= CodeGenOptions::LimitedDebugInfo);
|
||||
assert(DebugKind >= CodeGenOptions::LimitedDebugInfo);
|
||||
llvm::DIType T = getOrCreateType(RTy, getOrCreateFile(Loc));
|
||||
return T;
|
||||
}
|
||||
|
|
@ -1376,7 +1377,7 @@ llvm::DIType CGDebugInfo::getOrCreateRecordType(QualType RTy,
|
|||
/// debug info.
|
||||
llvm::DIType CGDebugInfo::getOrCreateInterfaceType(QualType D,
|
||||
SourceLocation Loc) {
|
||||
assert(CGM.getCodeGenOpts().getDebugInfo() >= CodeGenOptions::LimitedDebugInfo);
|
||||
assert(DebugKind >= CodeGenOptions::LimitedDebugInfo);
|
||||
llvm::DIType T = getOrCreateType(D, getOrCreateFile(Loc));
|
||||
RetainedTypes.push_back(D.getAsOpaquePtr());
|
||||
return T;
|
||||
|
|
@ -2083,7 +2084,7 @@ llvm::DIType CGDebugInfo::CreateLimitedType(const RecordType *Ty) {
|
|||
StringRef RDName = getClassName(RD);
|
||||
|
||||
llvm::DIDescriptor RDContext;
|
||||
if (CGM.getCodeGenOpts().getDebugInfo() == CodeGenOptions::LimitedDebugInfo)
|
||||
if (DebugKind == CodeGenOptions::LimitedDebugInfo)
|
||||
RDContext = createContextChain(cast<Decl>(RD->getDeclContext()));
|
||||
else
|
||||
RDContext = getContextDescriptor(cast<Decl>(RD->getDeclContext()));
|
||||
|
|
@ -2293,10 +2294,10 @@ void CGDebugInfo::EmitFunctionStart(GlobalDecl GD, QualType FnType,
|
|||
if (LinkageName == Name ||
|
||||
(!CGM.getCodeGenOpts().EmitGcovArcs &&
|
||||
!CGM.getCodeGenOpts().EmitGcovNotes &&
|
||||
CGM.getCodeGenOpts().getDebugInfo() <= CodeGenOptions::DebugLineTablesOnly))
|
||||
DebugKind <= CodeGenOptions::DebugLineTablesOnly))
|
||||
LinkageName = StringRef();
|
||||
|
||||
if (CGM.getCodeGenOpts().getDebugInfo() >= CodeGenOptions::LimitedDebugInfo) {
|
||||
if (DebugKind >= CodeGenOptions::LimitedDebugInfo) {
|
||||
if (const NamespaceDecl *NSDecl =
|
||||
dyn_cast_or_null<NamespaceDecl>(FD->getDeclContext()))
|
||||
FDContext = getOrCreateNameSpace(NSDecl);
|
||||
|
|
@ -2325,7 +2326,7 @@ void CGDebugInfo::EmitFunctionStart(GlobalDecl GD, QualType FnType,
|
|||
llvm::DIType DIFnType;
|
||||
llvm::DISubprogram SPDecl;
|
||||
if (HasDecl &&
|
||||
CGM.getCodeGenOpts().getDebugInfo() >= CodeGenOptions::LimitedDebugInfo) {
|
||||
DebugKind >= CodeGenOptions::LimitedDebugInfo) {
|
||||
DIFnType = getOrCreateFunctionType(D, FnType, Unit);
|
||||
SPDecl = getFunctionDeclaration(D);
|
||||
} else {
|
||||
|
|
@ -2514,7 +2515,7 @@ llvm::DIType CGDebugInfo::EmitTypeForVarWithBlocksAttr(const VarDecl *VD,
|
|||
void CGDebugInfo::EmitDeclare(const VarDecl *VD, unsigned Tag,
|
||||
llvm::Value *Storage,
|
||||
unsigned ArgNo, CGBuilderTy &Builder) {
|
||||
assert(CGM.getCodeGenOpts().getDebugInfo() >= CodeGenOptions::LimitedDebugInfo);
|
||||
assert(DebugKind >= CodeGenOptions::LimitedDebugInfo);
|
||||
assert(!LexicalBlockStack.empty() && "Region stack mismatch, stack empty!");
|
||||
|
||||
llvm::DIFile Unit = getOrCreateFile(VD->getLocation());
|
||||
|
|
@ -2654,7 +2655,7 @@ void CGDebugInfo::EmitDeclare(const VarDecl *VD, unsigned Tag,
|
|||
void CGDebugInfo::EmitDeclareOfAutoVariable(const VarDecl *VD,
|
||||
llvm::Value *Storage,
|
||||
CGBuilderTy &Builder) {
|
||||
assert(CGM.getCodeGenOpts().getDebugInfo() >= CodeGenOptions::LimitedDebugInfo);
|
||||
assert(DebugKind >= CodeGenOptions::LimitedDebugInfo);
|
||||
EmitDeclare(VD, llvm::dwarf::DW_TAG_auto_variable, Storage, 0, Builder);
|
||||
}
|
||||
|
||||
|
|
@ -2675,7 +2676,7 @@ void CGDebugInfo::EmitDeclareOfBlockDeclRefVariable(const VarDecl *VD,
|
|||
llvm::Value *Storage,
|
||||
CGBuilderTy &Builder,
|
||||
const CGBlockInfo &blockInfo) {
|
||||
assert(CGM.getCodeGenOpts().getDebugInfo() >= CodeGenOptions::LimitedDebugInfo);
|
||||
assert(DebugKind >= CodeGenOptions::LimitedDebugInfo);
|
||||
assert(!LexicalBlockStack.empty() && "Region stack mismatch, stack empty!");
|
||||
|
||||
if (Builder.GetInsertBlock() == 0)
|
||||
|
|
@ -2744,7 +2745,7 @@ void CGDebugInfo::EmitDeclareOfBlockDeclRefVariable(const VarDecl *VD,
|
|||
void CGDebugInfo::EmitDeclareOfArgVariable(const VarDecl *VD, llvm::Value *AI,
|
||||
unsigned ArgNo,
|
||||
CGBuilderTy &Builder) {
|
||||
assert(CGM.getCodeGenOpts().getDebugInfo() >= CodeGenOptions::LimitedDebugInfo);
|
||||
assert(DebugKind >= CodeGenOptions::LimitedDebugInfo);
|
||||
EmitDeclare(VD, llvm::dwarf::DW_TAG_arg_variable, AI, ArgNo, Builder);
|
||||
}
|
||||
|
||||
|
|
@ -2762,7 +2763,7 @@ void CGDebugInfo::EmitDeclareOfBlockLiteralArgVariable(const CGBlockInfo &block,
|
|||
llvm::Value *Arg,
|
||||
llvm::Value *LocalAddr,
|
||||
CGBuilderTy &Builder) {
|
||||
assert(CGM.getCodeGenOpts().getDebugInfo() >= CodeGenOptions::LimitedDebugInfo);
|
||||
assert(DebugKind >= CodeGenOptions::LimitedDebugInfo);
|
||||
ASTContext &C = CGM.getContext();
|
||||
const BlockDecl *blockDecl = block.getBlockDecl();
|
||||
|
||||
|
|
@ -2928,7 +2929,7 @@ llvm::DIDerivedType CGDebugInfo::getStaticDataMemberDeclaration(const Decl *D) {
|
|||
/// EmitGlobalVariable - Emit information about a global variable.
|
||||
void CGDebugInfo::EmitGlobalVariable(llvm::GlobalVariable *Var,
|
||||
const VarDecl *D) {
|
||||
assert(CGM.getCodeGenOpts().getDebugInfo() >= CodeGenOptions::LimitedDebugInfo);
|
||||
assert(DebugKind >= CodeGenOptions::LimitedDebugInfo);
|
||||
// Create global variable debug descriptor.
|
||||
llvm::DIFile Unit = getOrCreateFile(D->getLocation());
|
||||
unsigned LineNo = getLineNumber(D->getLocation());
|
||||
|
|
@ -2963,7 +2964,7 @@ void CGDebugInfo::EmitGlobalVariable(llvm::GlobalVariable *Var,
|
|||
/// EmitGlobalVariable - Emit information about an objective-c interface.
|
||||
void CGDebugInfo::EmitGlobalVariable(llvm::GlobalVariable *Var,
|
||||
ObjCInterfaceDecl *ID) {
|
||||
assert(CGM.getCodeGenOpts().getDebugInfo() >= CodeGenOptions::LimitedDebugInfo);
|
||||
assert(DebugKind >= CodeGenOptions::LimitedDebugInfo);
|
||||
// Create global variable debug descriptor.
|
||||
llvm::DIFile Unit = getOrCreateFile(ID->getLocation());
|
||||
unsigned LineNo = getLineNumber(ID->getLocation());
|
||||
|
|
@ -2989,7 +2990,7 @@ void CGDebugInfo::EmitGlobalVariable(llvm::GlobalVariable *Var,
|
|||
/// EmitGlobalVariable - Emit global variable's debug info.
|
||||
void CGDebugInfo::EmitGlobalVariable(const ValueDecl *VD,
|
||||
llvm::Constant *Init) {
|
||||
assert(CGM.getCodeGenOpts().getDebugInfo() >= CodeGenOptions::LimitedDebugInfo);
|
||||
assert(DebugKind >= CodeGenOptions::LimitedDebugInfo);
|
||||
// Create the descriptor for the variable.
|
||||
llvm::DIFile Unit = getOrCreateFile(VD->getLocation());
|
||||
StringRef Name = VD->getName();
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
#include "clang/AST/Expr.h"
|
||||
#include "clang/AST/Type.h"
|
||||
#include "clang/Basic/SourceLocation.h"
|
||||
#include "clang/Frontend/CodeGenOptions.h"
|
||||
#include "llvm/ADT/DenseMap.h"
|
||||
#include "llvm/DIBuilder.h"
|
||||
#include "llvm/DebugInfo.h"
|
||||
|
|
@ -46,6 +47,7 @@ namespace CodeGen {
|
|||
/// the backend.
|
||||
class CGDebugInfo {
|
||||
CodeGenModule &CGM;
|
||||
CodeGenOptions::DebugInfoKind DebugKind;
|
||||
llvm::DIBuilder DBuilder;
|
||||
llvm::DICompileUnit TheCU;
|
||||
SourceLocation CurLoc, PrevLoc;
|
||||
|
|
@ -274,7 +276,7 @@ public:
|
|||
/// getOrCreateInterfaceType - Emit an objective c interface type standalone
|
||||
/// debug info.
|
||||
llvm::DIType getOrCreateInterfaceType(QualType Ty,
|
||||
SourceLocation Loc);
|
||||
SourceLocation Loc);
|
||||
|
||||
private:
|
||||
/// EmitDeclare - Emit call to llvm.dbg.declare for a variable declaration.
|
||||
|
|
|
|||
Loading…
Reference in New Issue