summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2014-12-09 23:33:26 +0000
committerDavid Blaikie <dblaikie@gmail.com>2014-12-09 23:33:26 +0000
commitd73f3c6b73becfc016165df3ba746e1866786140 (patch)
treec7b827dba7e16a483908077c42d141810bb971e2
parent22324f378ad38a1ad4fca9b4f210400e0f6aa634 (diff)
downloadbcm5719-llvm-d73f3c6b73becfc016165df3ba746e1866786140.tar.gz
bcm5719-llvm-d73f3c6b73becfc016165df3ba746e1866786140.zip
DebugInfo: Correct location of aggregate assignment
llvm-svn: 223854
-rw-r--r--clang/lib/CodeGen/CGExprCXX.cpp2
-rw-r--r--clang/test/CodeGenCXX/debug-info-line.cpp12
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,
OpenPOWER on IntegriCloud