1/* { dg-do compile } */
2/* { dg-options "-O2" } */
3
4struct string
5{
6  long long _M_p;
7  long long i;
8  string();
9  int begin();
10  int end();
11  string(int, int);
12};
13struct symbol
14{
15  int type;
16  string name;
17  long long raw_name;
18  long long demangled_name;
19  long long version_name;
20  int version_status;
21  int status;
22  void init();
23};
24void symbol::init() { name = string(); }
25struct pair
26{
27  symbol first;
28  symbol second;
29  pair(const symbol& __a, const symbol& __b) : first(__a), second(__b) { }
30};
31struct vector
32{
33  void push_back(const pair& __x);
34};
35/* This ends up with two RHS deref copies, and we need to get the offsets right on them.  */
36void f(vector incompatible)
37{
38  symbol base;
39  incompatible.push_back(pair(base, base));
40}
41
42
43
44