forked from OSchip/llvm-project
[CGDebugInfo] Simplify EmitFunctionDecl parameters, NFC
Replace a `llvm::Function *` parameter with a bool, which seems harder to set to the wrong value by accident. Differential Revision: https://reviews.llvm.org/D64540 llvm-svn: 365809
This commit is contained in:
parent
08cb342afa
commit
bdf8198d4c
|
@ -3621,18 +3621,19 @@ void CGDebugInfo::EmitFunctionStart(GlobalDecl GD, SourceLocation Loc,
|
|||
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;
|
||||
|
@ -3665,11 +3666,8 @@ void CGDebugInfo::EmitFunctionDecl(GlobalDecl GD, SourceLocation Loc,
|
|||
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,
|
||||
|
@ -3691,8 +3689,13 @@ void CGDebugInfo::EmitFuncDeclForCallSite(llvm::CallBase *CallOrInvoke,
|
|||
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) {
|
||||
|
|
|
@ -408,10 +408,11 @@ public:
|
|||
/// 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.
|
||||
|
|
Loading…
Reference in New Issue