forked from OSchip/llvm-project
DebugInfo: More accurate line information for placement new.
This actually came up as a break in UBSan tests (look for a follow-up commit to this one to see the UBSan test fallout) when I tried a broader fix to location information. I have some other ideas about how to do that broader change & will keep looking into it. llvm-svn: 224221
This commit is contained in:
parent
17e2633cd6
commit
09f12fa1ca
|
@ -1269,6 +1269,9 @@ llvm::Value *CodeGenFunction::EmitCXXNewExpr(const CXXNewExpr *E) {
|
|||
E->placement_arg_end(), /* CalleeDecl */ nullptr,
|
||||
/*ParamsToSkip*/ 1);
|
||||
|
||||
if (auto *DI = getDebugInfo())
|
||||
DI->EmitLocation(Builder, E->getLocStart());
|
||||
|
||||
// Emit the allocation call. If the allocator is a global placement
|
||||
// operator, just "inline" it directly.
|
||||
RValue RV;
|
||||
|
|
|
@ -99,12 +99,13 @@ void f9(int i) {
|
|||
src1)[src2()];
|
||||
}
|
||||
|
||||
void *operator new(decltype(sizeof(1)), void *);
|
||||
inline void *operator new(decltype(sizeof(1)), void *p) noexcept { return p; }
|
||||
|
||||
// CHECK-LABEL: define
|
||||
void f10() {
|
||||
void *void_src();
|
||||
( // CHECK: store {{.*}} !dbg [[DBG_F10:!.*]]
|
||||
( // CHECK: icmp {{.*}} !dbg [[DBG_F10_ICMP:.*]]
|
||||
// CHECK: store {{.*}} !dbg [[DBG_F10_STORE:!.*]]
|
||||
#line 1100
|
||||
new (void_src()) int(src()));
|
||||
}
|
||||
|
@ -121,4 +122,5 @@ void f10() {
|
|||
// CHECK: [[DBG_F7]] = metadata !{i32 800,
|
||||
// CHECK: [[DBG_F8]] = metadata !{i32 900,
|
||||
// CHECK: [[DBG_F9]] = metadata !{i32 1000,
|
||||
// CHECK: [[DBG_F10]] = metadata !{i32 1100,
|
||||
// CHECK: [[DBG_F10_ICMP]] = metadata !{i32 1100,
|
||||
// CHECK: [[DBG_F10_STORE]] = metadata !{i32 1100,
|
||||
|
|
Loading…
Reference in New Issue