]> granicus.if.org Git - clang/commitdiff
DebugInfo: Correct location of aggregate assignment
authorDavid Blaikie <dblaikie@gmail.com>
Tue, 9 Dec 2014 23:33:26 +0000 (23:33 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Tue, 9 Dec 2014 23:33:26 +0000 (23:33 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@223854 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGExprCXX.cpp
test/CodeGenCXX/debug-info-line.cpp

index 4a8fe9a954c459815f380ab21d9c153996c68c90..4876b1a6edaedf74ad19f309321857624cac6abb 100644 (file)
@@ -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);
       }
index 9936d5f02f5edb0f412030cd6ba2773d01235fce..25db99fd46f25d9746b0c698b2970186cec51db5 100644 (file)
@@ -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,