r189277 - Simplify/clean up debug info suppression in CodeGenFunction
David Blaikie
dblaikie at gmail.com
Mon Aug 26 13:39:05 PDT 2013
On Mon, Aug 26, 2013 at 1:33 PM, David Blaikie <dblaikie at gmail.com> wrote:
> Author: dblaikie
> Date: Mon Aug 26 15:33:21 2013
> New Revision: 189277
>
> URL: http://llvm.org/viewvc/llvm-project?rev=189277&view=rev
> Log:
> Simplify/clean up debug info suppression in CodeGenFunction
>
> CodeGenFunction is run on only one function - a new object is made for
> each new function. I would add an assertion/flag to this effect, but
> there's an exception: ObjC properties involve emitting helper functions
> that are all emitted by the same CodeGenFunction object, so such a check
> is not possible/correct.
Accidentally committed parts of the test case in r189276.
>
> Modified:
> cfe/trunk/lib/CodeGen/CGBlocks.cpp
> cfe/trunk/lib/CodeGen/CGDeclCXX.cpp
> cfe/trunk/lib/CodeGen/CGObjC.cpp
> cfe/trunk/lib/CodeGen/CGStmt.cpp
> cfe/trunk/lib/CodeGen/CGVTables.cpp
> cfe/trunk/lib/CodeGen/CodeGenFunction.cpp
> cfe/trunk/lib/CodeGen/CodeGenFunction.h
> cfe/trunk/test/CodeGenCXX/debug-info-globalinit.cpp
>
> Modified: cfe/trunk/lib/CodeGen/CGBlocks.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBlocks.cpp?rev=189277&r1=189276&r2=189277&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGBlocks.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGBlocks.cpp Mon Aug 26 15:33:21 2013
> @@ -1089,8 +1089,6 @@ CodeGenFunction::GenerateBlockFunction(G
> bool IsLambdaConversionToBlock) {
> const BlockDecl *blockDecl = blockInfo.getBlockDecl();
>
> - // Check if we should generate debug info for this block function.
> - maybeInitializeDebugInfo();
> CurGD = GD;
>
> BlockInfo = &blockInfo;
> @@ -1303,9 +1301,6 @@ CodeGenFunction::GenerateCopyHelperFunct
> IdentifierInfo *II
> = &CGM.getContext().Idents.get("__copy_helper_block_");
>
> - // Check if we should generate debug info for this block helper function.
> - maybeInitializeDebugInfo();
> -
> FunctionDecl *FD = FunctionDecl::Create(C,
> C.getTranslationUnitDecl(),
> SourceLocation(),
> @@ -1478,9 +1473,6 @@ CodeGenFunction::GenerateDestroyHelperFu
> llvm::Function::Create(LTy, llvm::GlobalValue::InternalLinkage,
> "__destroy_helper_block_", &CGM.getModule());
>
> - // Check if we should generate debug info for this block destroy function.
> - maybeInitializeDebugInfo();
> -
> IdentifierInfo *II
> = &CGM.getContext().Idents.get("__destroy_helper_block_");
>
> @@ -1783,8 +1775,6 @@ generateByrefCopyHelper(CodeGenFunction
> SC_Static,
> false, false);
>
> - // Initialize debug info if necessary.
> - CGF.maybeInitializeDebugInfo();
> CGF.StartFunction(FD, R, Fn, FI, args, SourceLocation());
>
> if (byrefInfo.needsCopy()) {
> @@ -1856,8 +1846,6 @@ generateByrefDisposeHelper(CodeGenFuncti
> SourceLocation(), II, R, 0,
> SC_Static,
> false, false);
> - // Initialize debug info if necessary.
> - CGF.maybeInitializeDebugInfo();
> CGF.StartFunction(FD, R, Fn, FI, args, SourceLocation());
>
> if (byrefInfo.needsDispose()) {
>
> Modified: cfe/trunk/lib/CodeGen/CGDeclCXX.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDeclCXX.cpp?rev=189277&r1=189276&r2=189277&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGDeclCXX.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGDeclCXX.cpp Mon Aug 26 15:33:21 2013
> @@ -172,9 +172,6 @@ static llvm::Constant *createAtExitStub(
>
> CodeGenFunction CGF(CGM);
>
> - // Initialize debug info if needed.
> - CGF.maybeInitializeDebugInfo();
> -
> CGF.StartFunction(GlobalDecl(), CGM.getContext().VoidTy, fn,
> CGM.getTypes().arrangeNullaryFunction(),
> FunctionArgList(), SourceLocation());
> @@ -399,8 +396,8 @@ void CodeGenFunction::GenerateCXXGlobalV
> llvm::GlobalVariable *Addr,
> bool PerformInit) {
> // Check if we need to emit debug info for variable initializer.
> - if (!D->hasAttr<NoDebugAttr>())
> - maybeInitializeDebugInfo();
> + if (D->hasAttr<NoDebugAttr>())
> + DebugInfo = NULL; // disable debug info indefinitely for this function
>
> StartFunction(GlobalDecl(D), getContext().VoidTy, Fn,
> getTypes().arrangeNullaryFunction(),
> @@ -423,9 +420,6 @@ void
> CodeGenFunction::GenerateCXXGlobalInitFunc(llvm::Function *Fn,
> ArrayRef<llvm::Constant *> Decls,
> llvm::GlobalVariable *Guard) {
> - // Initialize debug info if needed.
> - maybeInitializeDebugInfo();
> -
> StartFunction(GlobalDecl(), getContext().VoidTy, Fn,
> getTypes().arrangeNullaryFunction(),
> FunctionArgList(), SourceLocation());
> @@ -472,9 +466,6 @@ CodeGenFunction::GenerateCXXGlobalInitFu
> void CodeGenFunction::GenerateCXXGlobalDtorsFunc(llvm::Function *Fn,
> const std::vector<std::pair<llvm::WeakVH, llvm::Constant*> >
> &DtorsAndObjects) {
> - // Initialize debug info if needed.
> - maybeInitializeDebugInfo();
> -
> StartFunction(GlobalDecl(), getContext().VoidTy, Fn,
> getTypes().arrangeNullaryFunction(),
> FunctionArgList(), SourceLocation());
> @@ -511,9 +502,6 @@ CodeGenFunction::generateDestroyHelper(l
> llvm::Function *fn =
> CreateGlobalInitOrDestructFunction(CGM, FTy, "__cxx_global_array_dtor");
>
> - // Initialize debug info if needed.
> - maybeInitializeDebugInfo();
> -
> StartFunction(GlobalDecl(), getContext().VoidTy, fn, FI, args,
> SourceLocation());
>
>
> Modified: cfe/trunk/lib/CodeGen/CGObjC.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjC.cpp?rev=189277&r1=189276&r2=189277&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGObjC.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGObjC.cpp Mon Aug 26 15:33:21 2013
> @@ -468,8 +468,8 @@ void CodeGenFunction::StartObjCMethod(co
> SourceLocation StartLoc) {
> FunctionArgList args;
> // Check if we should generate debug info for this method.
> - if (!OMD->hasAttr<NoDebugAttr>())
> - maybeInitializeDebugInfo();
> + if (OMD->hasAttr<NoDebugAttr>())
> + DebugInfo = NULL; // disable debug info indefinitely for this function
>
> llvm::Function *Fn = CGM.getObjCRuntime().GenerateMethod(OMD, CD);
>
> @@ -2905,9 +2905,6 @@ CodeGenFunction::GenerateObjCAtomicSette
> "__assign_helper_atomic_property_",
> &CGM.getModule());
>
> - // Initialize debug info if needed.
> - maybeInitializeDebugInfo();
> -
> StartFunction(FD, C.VoidTy, Fn, FI, args, SourceLocation());
>
> DeclRefExpr DstExpr(&dstDecl, false, DestTy,
> @@ -2988,9 +2985,6 @@ CodeGenFunction::GenerateObjCAtomicGette
> llvm::Function::Create(LTy, llvm::GlobalValue::InternalLinkage,
> "__copy_helper_atomic_property_", &CGM.getModule());
>
> - // Initialize debug info if needed.
> - maybeInitializeDebugInfo();
> -
> StartFunction(FD, C.VoidTy, Fn, FI, args, SourceLocation());
>
> DeclRefExpr SrcExpr(&srcDecl, false, SrcTy,
>
> Modified: cfe/trunk/lib/CodeGen/CGStmt.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGStmt.cpp?rev=189277&r1=189276&r2=189277&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGStmt.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGStmt.cpp Mon Aug 26 15:33:21 2013
> @@ -1817,9 +1817,6 @@ CodeGenFunction::GenerateCapturedStmtFun
> assert(CapturedStmtInfo &&
> "CapturedStmtInfo should be set when generating the captured function");
>
> - // Check if we should generate debug info for this function.
> - maybeInitializeDebugInfo();
> -
> // Build the argument list.
> ASTContext &Ctx = CGM.getContext();
> FunctionArgList Args;
>
> Modified: cfe/trunk/lib/CodeGen/CGVTables.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTables.cpp?rev=189277&r1=189276&r2=189277&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGVTables.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGVTables.cpp Mon Aug 26 15:33:21 2013
> @@ -315,9 +315,6 @@ void CodeGenFunction::GenerateThunk(llvm
> FunctionArgs.push_back(Param);
> }
>
> - // Initialize debug info if needed.
> - maybeInitializeDebugInfo();
> -
> StartFunction(GlobalDecl(), ResultType, Fn, FnInfo, FunctionArgs,
> SourceLocation());
>
>
> Modified: cfe/trunk/lib/CodeGen/CodeGenFunction.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenFunction.cpp?rev=189277&r1=189276&r2=189277&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CodeGenFunction.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CodeGenFunction.cpp Mon Aug 26 15:33:21 2013
> @@ -31,25 +31,23 @@ using namespace clang;
> using namespace CodeGen;
>
> CodeGenFunction::CodeGenFunction(CodeGenModule &cgm, bool suppressNewContext)
> - : CodeGenTypeCache(cgm), CGM(cgm), Target(cgm.getTarget()),
> - Builder(cgm.getModule().getContext()),
> - CapturedStmtInfo(0),
> - SanitizePerformTypeCheck(CGM.getSanOpts().Null |
> - CGM.getSanOpts().Alignment |
> - CGM.getSanOpts().ObjectSize |
> - CGM.getSanOpts().Vptr),
> - SanOpts(&CGM.getSanOpts()),
> - AutoreleaseResult(false), BlockInfo(0), BlockPointer(0),
> - LambdaThisCaptureField(0), NormalCleanupDest(0), NextCleanupDestIndex(1),
> - FirstBlockInfo(0), EHResumeBlock(0), ExceptionSlot(0), EHSelectorSlot(0),
> - DebugInfo(0), DisableDebugInfo(false), DidCallStackSave(false),
> - IndirectBranch(0), SwitchInsn(0), CaseRangeBlock(0), UnreachableBlock(0),
> - NumReturnExprs(0), NumSimpleReturnExprs(0),
> - CXXABIThisDecl(0), CXXABIThisValue(0), CXXThisValue(0),
> - CXXDefaultInitExprThis(0),
> - CXXStructorImplicitParamDecl(0), CXXStructorImplicitParamValue(0),
> - OutermostConditional(0), CurLexicalScope(0), TerminateLandingPad(0),
> - TerminateHandler(0), TrapBB(0) {
> + : CodeGenTypeCache(cgm), CGM(cgm), Target(cgm.getTarget()),
> + Builder(cgm.getModule().getContext()), CapturedStmtInfo(0),
> + SanitizePerformTypeCheck(CGM.getSanOpts().Null |
> + CGM.getSanOpts().Alignment |
> + CGM.getSanOpts().ObjectSize |
> + CGM.getSanOpts().Vptr),
> + SanOpts(&CGM.getSanOpts()), AutoreleaseResult(false), BlockInfo(0),
> + BlockPointer(0), LambdaThisCaptureField(0), NormalCleanupDest(0),
> + NextCleanupDestIndex(1), FirstBlockInfo(0), EHResumeBlock(0),
> + ExceptionSlot(0), EHSelectorSlot(0), DebugInfo(CGM.getModuleDebugInfo()),
> + DisableDebugInfo(false), DidCallStackSave(false), IndirectBranch(0),
> + SwitchInsn(0), CaseRangeBlock(0), UnreachableBlock(0), NumReturnExprs(0),
> + NumSimpleReturnExprs(0), CXXABIThisDecl(0), CXXABIThisValue(0),
> + CXXThisValue(0), CXXDefaultInitExprThis(0),
> + CXXStructorImplicitParamDecl(0), CXXStructorImplicitParamValue(0),
> + OutermostConditional(0), CurLexicalScope(0), TerminateLandingPad(0),
> + TerminateHandler(0), TrapBB(0) {
> if (!suppressNewContext)
> CGM.getCXXABI().getMangleContext().startNewFunction();
>
> @@ -660,8 +658,8 @@ void CodeGenFunction::GenerateCode(Globa
> const FunctionDecl *FD = cast<FunctionDecl>(GD.getDecl());
>
> // Check if we should generate debug info for this function.
> - if (!FD->hasAttr<NoDebugAttr>())
> - maybeInitializeDebugInfo();
> + if (FD->hasAttr<NoDebugAttr>())
> + DebugInfo = NULL; // disable debug info indefinitely for this function
>
> FunctionArgList Args;
> QualType ResTy = FD->getResultType();
>
> Modified: cfe/trunk/lib/CodeGen/CodeGenFunction.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenFunction.h?rev=189277&r1=189276&r2=189277&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CodeGenFunction.h (original)
> +++ cfe/trunk/lib/CodeGen/CodeGenFunction.h Mon Aug 26 15:33:21 2013
> @@ -953,14 +953,6 @@ public:
>
> CodeGenTypes &getTypes() const { return CGM.getTypes(); }
> ASTContext &getContext() const { return CGM.getContext(); }
> - /// Returns true if DebugInfo is actually initialized.
> - bool maybeInitializeDebugInfo() {
> - if (CGM.getModuleDebugInfo()) {
> - DebugInfo = CGM.getModuleDebugInfo();
> - return true;
> - }
> - return false;
> - }
> CGDebugInfo *getDebugInfo() {
> if (DisableDebugInfo)
> return NULL;
>
> Modified: cfe/trunk/test/CodeGenCXX/debug-info-globalinit.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/debug-info-globalinit.cpp?rev=189277&r1=189276&r2=189277&view=diff
> ==============================================================================
> --- cfe/trunk/test/CodeGenCXX/debug-info-globalinit.cpp (original)
> +++ cfe/trunk/test/CodeGenCXX/debug-info-globalinit.cpp Mon Aug 26 15:33:21 2013
> @@ -35,4 +35,4 @@ int main(void) {}
> // CHECK: store i32 %[[C2]], i32* @_ZL1k, align 4, !dbg
> //
> // CHECK: ![[LINE]] = metadata !{i32 13, i32
> -// CHECK: ![[LINE]] = metadata !{i32 15, i32
> +// CHECK: ![[LINE2]] = metadata !{i32 15, i32
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list