1 // RUN: %clang_cc1 -g -std=c++11 -S -emit-llvm %s -o - | FileCheck %s
2 
3 int &src(); int* sink();
4 
5 void f1() {
6 #line 100
7   * // The store for the assignment should be attributed to the start of the
8     // assignment expression here, regardless of the location of subexpressions.
9   sink() = src();
10   // CHECK: store {{.*}}, !dbg [[DBG_F1:!.*]]
11 }
12 
13 struct foo {
14   int i;
15   int &j;
16   foo();
17 };
18 
19 foo::foo()
20   :
21 #line 200
22     i
23     (src()),
24     j
25     (src())
26     // CHECK: store i32 {{.*}} !dbg [[DBG_FOO_VALUE:!.*]]
27     // CHECK: store i32* {{.*}} !dbg [[DBG_FOO_REF:!.*]]
28 {
29 }
30 
31 // CHECK: [[DBG_F1]] = metadata !{i32 100,
32 // CHECK: [[DBG_FOO_VALUE]] = metadata !{i32 200,
33 // CHECK: [[DBG_FOO_REF]] = metadata !{i32 202,
34