summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
diff options
context:
space:
mode:
authorVedant Kumar <vsk@apple.com>2019-07-11 19:28:07 +0000
committerVedant Kumar <vsk@apple.com>2019-07-11 19:28:07 +0000
commit8bd521472643f06c47377aa92c653ef4d79cb3fd (patch)
tree9442d50b60a46f214d99833354fc97d51565457e /clang/lib/CodeGen
parent2bc8ab685289b7681e6ed0fa54f55bc505b47450 (diff)
downloadbcm5719-llvm-8bd521472643f06c47377aa92c653ef4d79cb3fd.tar.gz
bcm5719-llvm-8bd521472643f06c47377aa92c653ef4d79cb3fd.zip
Revert "[CGDebugInfo] Simplify EmitFunctionDecl parameters, NFC"
This reverts commit 1af41074445229fea66b99710a850e5f42ecfa95. llvm-svn: 365814
Diffstat (limited to 'clang/lib/CodeGen')
-rw-r--r--clang/lib/CodeGen/CGDebugInfo.cpp23
-rw-r--r--clang/lib/CodeGen/CGDebugInfo.h9
2 files changed, 14 insertions, 18 deletions
diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp
index 50c344fd348..f6ee7ee26d4 100644
--- a/clang/lib/CodeGen/CGDebugInfo.cpp
+++ b/clang/lib/CodeGen/CGDebugInfo.cpp
@@ -3621,19 +3621,18 @@ void CGDebugInfo::EmitFunctionStart(GlobalDecl GD, SourceLocation Loc,
RegionMap[D].reset(SP);
}
-llvm::DISubprogram *CGDebugInfo::EmitFunctionDecl(GlobalDecl GD,
- SourceLocation Loc,
- QualType FnType,
- bool IsDeclForCallSite) {
+void CGDebugInfo::EmitFunctionDecl(GlobalDecl GD, SourceLocation Loc,
+ QualType FnType, llvm::Function *Fn) {
StringRef Name;
StringRef LinkageName;
const Decl *D = GD.getDecl();
if (!D)
- return nullptr;
+ return;
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;
@@ -3666,8 +3665,11 @@ llvm::DISubprogram *CGDebugInfo::EmitFunctionDecl(GlobalDecl GD,
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,
@@ -3689,13 +3691,8 @@ void CGDebugInfo::EmitFuncDeclForCallSite(llvm::CallBase *CallOrInvoke,
if (Func->getSubprogram())
return;
- 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);
- }
+ if (!CalleeDecl->isStatic() && !CalleeDecl->isInlined())
+ EmitFunctionDecl(CalleeDecl, CalleeDecl->getLocation(), CalleeType, Func);
}
void CGDebugInfo::EmitInlineFunctionStart(CGBuilderTy &Builder, GlobalDecl GD) {
diff --git a/clang/lib/CodeGen/CGDebugInfo.h b/clang/lib/CodeGen/CGDebugInfo.h
index ca713fc0169..7edbea86633 100644
--- a/clang/lib/CodeGen/CGDebugInfo.h
+++ b/clang/lib/CodeGen/CGDebugInfo.h
@@ -408,11 +408,10 @@ public:
/// End an inlined function scope.
void EmitInlineFunctionEnd(CGBuilderTy &Builder);
- /// 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 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 an extern function being called.
/// This is needed for call site debug info.
OpenPOWER on IntegriCloud