[PATCH] D64540: [CGDebugInfo] Simplfiy EmitFunctionDecl parameters, NFC
Vedant Kumar via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 10 15:44:55 PDT 2019
vsk created this revision.
vsk added reviewers: djtodoro, aprantl.
Replace a `llvm::Function *` parameter with a bool, which seems harder
to set to the wrong value by accident.
https://reviews.llvm.org/D64540
Files:
clang/lib/CodeGen/CGDebugInfo.cpp
clang/lib/CodeGen/CGDebugInfo.h
Index: clang/lib/CodeGen/CGDebugInfo.h
===================================================================
--- clang/lib/CodeGen/CGDebugInfo.h
+++ clang/lib/CodeGen/CGDebugInfo.h
@@ -408,10 +408,11 @@
/// End an inlined function scope.
void EmitInlineFunctionEnd(CGBuilderTy &Builder);
- /// Emit debug info for a function declaration.
- /// \p Fn is set only when a declaration for a debug call site gets created.
- void EmitFunctionDecl(GlobalDecl GD, SourceLocation Loc,
- QualType FnType, llvm::Function *Fn = nullptr);
+ /// Emit debug info for a function declaration. Set \p IsDeclForCallSite if
+ /// a call site entry must reference the declaration.
+ llvm::DISubprogram *EmitFunctionDecl(GlobalDecl GD, SourceLocation Loc,
+ QualType FnType,
+ bool IsDeclForCallSite = false);
/// Emit debug info for an extern function being called.
/// This is needed for call site debug info.
Index: clang/lib/CodeGen/CGDebugInfo.cpp
===================================================================
--- clang/lib/CodeGen/CGDebugInfo.cpp
+++ clang/lib/CodeGen/CGDebugInfo.cpp
@@ -3618,18 +3618,19 @@
RegionMap[D].reset(SP);
}
-void CGDebugInfo::EmitFunctionDecl(GlobalDecl GD, SourceLocation Loc,
- QualType FnType, llvm::Function *Fn) {
+llvm::DISubprogram *CGDebugInfo::EmitFunctionDecl(GlobalDecl GD,
+ SourceLocation Loc,
+ QualType FnType,
+ bool IsDeclForCallSite) {
StringRef Name;
StringRef LinkageName;
const Decl *D = GD.getDecl();
if (!D)
- return;
+ return nullptr;
llvm::DINode::DIFlags Flags = llvm::DINode::FlagZero;
llvm::DIFile *Unit = getOrCreateFile(Loc);
- bool IsDeclForCallSite = Fn ? true : false;
llvm::DIScope *FDContext =
IsDeclForCallSite ? Unit : getDeclContextDescriptor(D);
llvm::DINodeArray TParamsArray;
@@ -3662,11 +3663,8 @@
FDContext, Name, LinkageName, Unit, LineNo,
getOrCreateFunctionType(D, FnType, Unit), ScopeLine, Flags, SPFlags,
TParamsArray.get(), getFunctionDeclaration(D));
-
- if (IsDeclForCallSite)
- Fn->setSubprogram(SP);
-
DBuilder.retainType(SP);
+ return SP;
}
void CGDebugInfo::EmitFuncDeclForCallSite(llvm::CallBase *CallOrInvoke,
@@ -3688,8 +3686,13 @@
if (Func->getSubprogram())
return;
- if (!CalleeDecl->isStatic() && !CalleeDecl->isInlined())
- EmitFunctionDecl(CalleeDecl, CalleeDecl->getLocation(), CalleeType, Func);
+ if (!CalleeDecl->isStatic() && !CalleeDecl->isInlined()) {
+ llvm::DISubprogram *SP =
+ EmitFunctionDecl(CalleeDecl, CalleeDecl->getLocation(), CalleeType,
+ /*IsDeclForCallSite=*/true);
+ assert(SP && "Could not find decl for callee?");
+ Func->setSubprogram(SP);
+ }
}
void CGDebugInfo::EmitInlineFunctionStart(CGBuilderTy &Builder, GlobalDecl GD) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D64540.209082.patch
Type: text/x-patch
Size: 3076 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190710/915046cb/attachment.bin>
More information about the cfe-commits
mailing list