forked from OSchip/llvm-project
DebugInfo: Location information for scalar new expressions
llvm-svn: 223937
This commit is contained in:
parent
0df50938be
commit
a2c1124f9c
|
@ -754,14 +754,15 @@ static llvm::Value *EmitCXXNewAllocSize(CodeGenFunction &CGF,
|
|||
}
|
||||
|
||||
static void StoreAnyExprIntoOneUnit(CodeGenFunction &CGF, const Expr *Init,
|
||||
QualType AllocType, llvm::Value *NewPtr) {
|
||||
QualType AllocType, llvm::Value *NewPtr,
|
||||
SourceLocation DbgLoc = SourceLocation()) {
|
||||
// FIXME: Refactor with EmitExprAsInit.
|
||||
CharUnits Alignment = CGF.getContext().getTypeAlignInChars(AllocType);
|
||||
switch (CGF.getEvaluationKind(AllocType)) {
|
||||
case TEK_Scalar:
|
||||
CGF.EmitScalarInit(Init, nullptr, CGF.MakeAddrLValue(NewPtr, AllocType,
|
||||
Alignment),
|
||||
false);
|
||||
CGF.EmitScalarInit(Init, nullptr,
|
||||
CGF.MakeAddrLValue(NewPtr, AllocType, Alignment), false,
|
||||
DbgLoc);
|
||||
return;
|
||||
case TEK_Complex:
|
||||
CGF.EmitComplexExprIntoLValue(Init, CGF.MakeAddrLValue(NewPtr, AllocType,
|
||||
|
@ -1023,7 +1024,8 @@ static void EmitNewInitializer(CodeGenFunction &CGF, const CXXNewExpr *E,
|
|||
CGF.EmitNewArrayInitializer(E, ElementType, NewPtr, NumElements,
|
||||
AllocSizeWithoutCookie);
|
||||
else if (const Expr *Init = E->getInitializer())
|
||||
StoreAnyExprIntoOneUnit(CGF, Init, E->getAllocatedType(), NewPtr);
|
||||
StoreAnyExprIntoOneUnit(CGF, Init, E->getAllocatedType(), NewPtr,
|
||||
E->getStartLoc());
|
||||
}
|
||||
|
||||
/// Emit a call to an operator new or operator delete function, as implicitly
|
||||
|
|
|
@ -99,6 +99,16 @@ void f9(int i) {
|
|||
src1)[src2()];
|
||||
}
|
||||
|
||||
void *operator new(unsigned long, void *);
|
||||
|
||||
// CHECK-LABEL: define
|
||||
void f10() {
|
||||
void *void_src();
|
||||
( // CHECK: store {{.*}} !dbg [[DBG_F10:!.*]]
|
||||
#line 1100
|
||||
new (void_src()) int(src()));
|
||||
}
|
||||
|
||||
// CHECK: [[DBG_F1]] = metadata !{i32 100,
|
||||
// CHECK: [[DBG_FOO_VALUE]] = metadata !{i32 200,
|
||||
// CHECK: [[DBG_FOO_REF]] = metadata !{i32 202,
|
||||
|
@ -111,3 +121,4 @@ void f9(int i) {
|
|||
// CHECK: [[DBG_F7]] = metadata !{i32 800,
|
||||
// CHECK: [[DBG_F8]] = metadata !{i32 900,
|
||||
// CHECK: [[DBG_F9]] = metadata !{i32 1000,
|
||||
// CHECK: [[DBG_F10]] = metadata !{i32 1100,
|
||||
|
|
Loading…
Reference in New Issue