diff --git a/clang/lib/CodeGen/CGExprAgg.cpp b/clang/lib/CodeGen/CGExprAgg.cpp index 4cf94c033bb4..4cba4781afc3 100644 --- a/clang/lib/CodeGen/CGExprAgg.cpp +++ b/clang/lib/CodeGen/CGExprAgg.cpp @@ -98,6 +98,11 @@ public: // Visitor Methods //===--------------------------------------------------------------------===// + void Visit(Expr *E) { + ApplyDebugLocation DL(CGF, E->getLocStart()); + StmtVisitor::Visit(E); + } + void VisitStmt(Stmt *S) { CGF.ErrorUnsupported(S, "aggregate expression"); } diff --git a/clang/test/CodeGenCXX/debug-info-line.cpp b/clang/test/CodeGenCXX/debug-info-line.cpp index 8add4d259568..8278b1d53f75 100644 --- a/clang/test/CodeGenCXX/debug-info-line.cpp +++ b/clang/test/CodeGenCXX/debug-info-line.cpp @@ -166,23 +166,29 @@ void f13() { F13_IMPL; } -struct f14 { - f14(int); +struct f14_impl { + f14_impl(int); }; // CHECK-LABEL: define struct f14_use { -// CHECK: call {{.*}}, !dbg [[DBG_F14_CTOR_CALL:![0-9]*]] +// CHECK: call {{.*}}f14_impl{{.*}}, !dbg [[DBG_F14_CTOR_CALL:![0-9]*]] #line 1600 - f14 v - = - 1; + f14_impl v{// + 1}; f14_use(); }; f14_use::f14_use() = default; // CHECK-LABEL: define +void func(foo); +void f15(foo *f) { + func( +// CHECK: getelementptr {{.*}}, !dbg [[DBG_F15:![0-9]*]] +#line 1700 + f[3]); +} // CHECK: [[DBG_F1]] = !MDLocation(line: 100, // CHECK: [[DBG_FOO_VALUE]] = !MDLocation(line: 200, @@ -204,3 +210,4 @@ f14_use::f14_use() = default; // CHECK: [[DBG_F12]] = !MDLocation(line: 1400, // CHECK: [[DBG_F13]] = !MDLocation(line: 1500, // CHECK: [[DBG_F14_CTOR_CALL]] = !MDLocation(line: 1600, +// CHECK: [[DBG_F15]] = !MDLocation(line: 1700,