forked from OSchip/llvm-project
Emit a stop point before a call expression so that debugger has some chance of getting some footing when user wants to stop at 2nd bar() in following expression when all function calls are inlined.
= bar() + ... + bar() + ... clang keeps track of column numbers, so we could put location entries for all subexpressions but that will significantly bloat debug info in general, but a location for call expression is helpful here. llvm-svn: 127018
This commit is contained in:
parent
22b69db8dd
commit
d3a6b0f184
|
@ -15,6 +15,7 @@
|
|||
#include "CodeGenModule.h"
|
||||
#include "CGCall.h"
|
||||
#include "CGCXXABI.h"
|
||||
#include "CGDebugInfo.h"
|
||||
#include "CGRecordLayout.h"
|
||||
#include "CGObjCRuntime.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
|
@ -1936,6 +1937,12 @@ LValue CodeGenFunction::EmitOpaqueValueLValue(const OpaqueValueExpr *e) {
|
|||
|
||||
RValue CodeGenFunction::EmitCallExpr(const CallExpr *E,
|
||||
ReturnValueSlot ReturnValue) {
|
||||
if (CGDebugInfo *DI = getDebugInfo()) {
|
||||
DI->setLocation(E->getLocStart());
|
||||
DI->UpdateLineDirectiveRegion(Builder);
|
||||
DI->EmitStopPoint(Builder);
|
||||
}
|
||||
|
||||
// Builtins never have block type.
|
||||
if (E->getCallee()->getType()->isBlockPointerType())
|
||||
return EmitBlockCallExpr(E, ReturnValue);
|
||||
|
|
Loading…
Reference in New Issue