// { dg-lto-do link }
/* { dg-extra-ld-options {  -r -nostdlib } } */
class A {
public:
  float m_floats;
  A() {}
};
class B {
public:
  A operator[](int);
};
class C {
  B m_basis;

public:
  A operator()(A) {
    m_basis[1] = m_basis[2];
    A a;
    return a;
  }
};
class D {
public:
  C m_fn1();
};
class F {
  A m_pivotInB;
  F(D &, const A &);
};
F::F(D &p1, const A &p2) : m_pivotInB(p1.m_fn1()(p2)) {}

