From: David Blaikie Date: Tue, 9 Dec 2014 21:32:00 +0000 (+0000) Subject: DebugInfo: Correct location for compound complex assignment X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9f9544933b17da695b9d07c773dcec17fb710cb0;p=clang DebugInfo: Correct location for compound complex assignment git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@223835 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGExprComplex.cpp b/lib/CodeGen/CGExprComplex.cpp index 7b7da17a3f..2732d40093 100644 --- a/lib/CodeGen/CGExprComplex.cpp +++ b/lib/CodeGen/CGExprComplex.cpp @@ -869,8 +869,7 @@ EmitCompoundAssignLValue(const CompoundAssignOperator *E, // Truncate the result and store it into the LHS lvalue. if (LHSTy->isAnyComplexType()) { ComplexPairTy ResVal = EmitComplexToComplexCast(Result, OpInfo.Ty, LHSTy); - // FIXME - EmitStoreOfComplex(ResVal, LHS, /*isInit*/ false, SourceLocation()); + EmitStoreOfComplex(ResVal, LHS, /*isInit*/ false, E->getLocStart()); Val = RValue::getComplex(ResVal); } else { llvm::Value *ResVal = diff --git a/test/CodeGenCXX/debug-info-line.cpp b/test/CodeGenCXX/debug-info-line.cpp index c8e98cbc67..f87a24c5b3 100644 --- a/test/CodeGenCXX/debug-info-line.cpp +++ b/test/CodeGenCXX/debug-info-line.cpp @@ -33,15 +33,26 @@ foo::foo() (complex_src()) { } +// skip C1 +// CHECK-LABEL: define + // CHECK-LABEL: define void f2() { #line 300 - * // CHECK: store float {{.*}} !dbg [[DBG_F2_COMPLEX:!.*]] + * // CHECK: store float {{.*}} !dbg [[DBG_F2:!.*]] complex_sink() = complex_src(); } +// CHECK-LABEL: define +void f3() { +#line 400 + * // CHECK: store float {{.*}} !dbg [[DBG_F3:!.*]] + complex_sink() += complex_src(); +} + // CHECK: [[DBG_F1]] = metadata !{i32 100, // CHECK: [[DBG_FOO_VALUE]] = metadata !{i32 200, // CHECK: [[DBG_FOO_REF]] = metadata !{i32 202, // CHECK: [[DBG_FOO_COMPLEX]] = metadata !{i32 204, -// CHECK: [[DBG_F2_COMPLEX]] = metadata !{i32 300, +// CHECK: [[DBG_F2]] = metadata !{i32 300, +// CHECK: [[DBG_F3]] = metadata !{i32 400,