diff options
| author | David Blaikie <dblaikie@gmail.com> | 2014-12-09 23:33:26 +0000 |
|---|---|---|
| committer | David Blaikie <dblaikie@gmail.com> | 2014-12-09 23:33:26 +0000 |
| commit | d73f3c6b73becfc016165df3ba746e1866786140 (patch) | |
| tree | c7b827dba7e16a483908077c42d141810bb971e2 | |
| parent | 22324f378ad38a1ad4fca9b4f210400e0f6aa634 (diff) | |
| download | bcm5719-llvm-d73f3c6b73becfc016165df3ba746e1866786140.tar.gz bcm5719-llvm-d73f3c6b73becfc016165df3ba746e1866786140.zip | |
DebugInfo: Correct location of aggregate assignment
llvm-svn: 223854
| -rw-r--r-- | clang/lib/CodeGen/CGExprCXX.cpp | 2 | ||||
| -rw-r--r-- | clang/test/CodeGenCXX/debug-info-line.cpp | 12 |
2 files changed, 14 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGExprCXX.cpp b/clang/lib/CodeGen/CGExprCXX.cpp index 4a8fe9a954c..4876b1a6eda 100644 --- a/clang/lib/CodeGen/CGExprCXX.cpp +++ b/clang/lib/CodeGen/CGExprCXX.cpp @@ -187,6 +187,8 @@ RValue CodeGenFunction::EmitCXXMemberOrOperatorMemberCallExpr( unsigned ArgsToSkip = isa<CXXOperatorCallExpr>(CE) ? 1 : 0; llvm::Value *RHS = EmitLValue(*(CE->arg_begin() + ArgsToSkip)).getAddress(); + if (auto *DI = getDebugInfo()) + DI->EmitLocation(Builder, CE->getLocStart()); EmitAggregateAssign(This, RHS, CE->getType()); return RValue::get(This); } diff --git a/clang/test/CodeGenCXX/debug-info-line.cpp b/clang/test/CodeGenCXX/debug-info-line.cpp index 9936d5f02f5..25db99fd46f 100644 --- a/clang/test/CodeGenCXX/debug-info-line.cpp +++ b/clang/test/CodeGenCXX/debug-info-line.cpp @@ -64,6 +64,17 @@ void f5() { = complex_src(); } +struct agg { int i; }; +agg agg_src(); + +// CHECK-LABEL: define +void f6() { + agg x; +#line 700 + x // CHECK: call void @llvm.memcpy{{.*}} !dbg [[DBG_F6:!.*]] + = agg_src(); +} + // CHECK: [[DBG_F1]] = metadata !{i32 100, // CHECK: [[DBG_FOO_VALUE]] = metadata !{i32 200, // CHECK: [[DBG_FOO_REF]] = metadata !{i32 202, @@ -72,3 +83,4 @@ void f5() { // CHECK: [[DBG_F3]] = metadata !{i32 400, // CHECK: [[DBG_F4]] = metadata !{i32 500, // CHECK: [[DBG_F5]] = metadata !{i32 600, +// CHECK: [[DBG_F6]] = metadata !{i32 700, |

