r181964 - Replace a pile of calls with an instance variable that's set

David Blaikie dblaikie at gmail.com
Wed May 15 17:53:14 PDT 2013


On Wed, May 15, 2013 at 5:45 PM, Eric Christopher <echristo at gmail.com>wrote:

> Author: echristo
> Date: Wed May 15 19:45:23 2013
> New Revision: 181964
>
> URL: http://llvm.org/viewvc/llvm-project?rev=181964&view=rev
> Log:
> Replace a pile of calls with an instance variable that's set
> once. Should be no functional change.
>
> Modified:
>     cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
>     cfe/trunk/lib/CodeGen/CGDebugInfo.h
>
> Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=181964&r1=181963&r2=181964&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Wed May 15 19:45:23 2013
> @@ -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()),
>

Duplicating information always makes me concerned that it might end up
getting out of sync - is this a hypothetical perf improvement, or just a
syntactic reduction - if it's the latter, perhaps a private member utility
function might suffice? Short of that I might suggest making the member
'const' but I realize that's a bit uncommon (so I'd err towards the former,
generally).


> +    DBuilder(CGM.getModule()),
>      BlockLiteralGenericSet(false) {
>    CreateCompileUnit();
>  }
> @@ -602,7 +603,7 @@ llvm::DIDescriptor CGDebugInfo::createCo
>  /// 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 *R
>  /// 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::getOrCreateRec
>  /// 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::CreateLimitedT
>    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(Glob
>      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(Glob
>    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::EmitTypeForVar
>  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 VarD
>  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::EmitDeclareOfBlockDecl
>                                                      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::EmitDeclareOfBlockDecl
>  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::EmitDeclareOfBlockLite
>                                                         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::getStat
>  /// 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(llv
>  /// 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(llv
>  /// 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();
>
> Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.h
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.h?rev=181964&r1=181963&r2=181964&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGDebugInfo.h (original)
> +++ cfe/trunk/lib/CodeGen/CGDebugInfo.h Wed May 15 19:45:23 2013
> @@ -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.
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130515/639bd9e4/attachment.html>


More information about the cfe-commits mailing list