DebugInfo: Attribute aggregate expressions to the source location of the expression

Just as r225956 did for scalar expressions (CGExprScalar::Visit), do the
same for aggregate expressions.

llvm-svn: 226388
This commit is contained in:
David Blaikie 2015-01-18 01:48:19 +00:00
parent 6adcf56b0f
commit 01fb5fb128
2 changed files with 18 additions and 6 deletions

View File

@ -98,6 +98,11 @@ public:
// Visitor Methods
//===--------------------------------------------------------------------===//
void Visit(Expr *E) {
ApplyDebugLocation DL(CGF, E->getLocStart());
StmtVisitor<AggExprEmitter>::Visit(E);
}
void VisitStmt(Stmt *S) {
CGF.ErrorUnsupported(S, "aggregate expression");
}

View File

@ -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,