/* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-optimized" } */

void link_error();


struct State {
    int p0, p1, p2;
    inline State(){p0=0;p1=0;p2=0;}
    inline State(const State &s) {
	p0 = s.p0;
	p1 = s.p1;
	p2 = s.p2;
    }
    
    inline void operator =(const State &s) {
	p0 = s.p0;
	p1 = s.p1;
	p2 = s.p2;
    }
    
    inline void step(void) {
	p0 = p1+p2;
	p1 = p0*p1+p2;
	p2 = p0-p2;
    }
};


inline void iterate_ok(State &inS1, State &inS2, unsigned int n)
{
    State s1 = inS1;
    for (unsigned int i = 0; i < n; i++) {
	s1.step();
    }
    inS1 = s1;
}

void temp()
{
  State s1;
  s1.p0 = 0;
  s1.p1 = 0;
  s1.p2 = 0;
  State s2;
  s2.p0 = 0;
  s2.p1 = 0;
  s2.p2 = 0;
  iterate_ok (s1, s2, 1);
  if (s1.p0)
   link_error();
  if (s1.p0)
   link_error();
  if (s1.p0)
   link_error();
}

/* We should have removed the casts from pointers to references and caused SRA to happen.  */

/* { dg-final { scan-tree-dump-times "link_error" 0 "optimized"} } */
