/* { dg-do compile } */
/* { dg-options "-O -fdump-tree-dce2" } */

/* Verify that we can eliminate the useless conversions to/from
   const qualified pointer types
     this_2 = o_1;
     D.20003_4 = this_2->data_m;
     this_5 = D.20003_4;
     D.20005_6 = this_5->value;
   copyprop should propagate o_1 and D.20003_4 to the loads of data_m
   and value.  dce removes all traces of this.  */

struct Data {
  int get() const { return value; }
  int value;
};

struct Object {
  int operator[](int i) const { return data_m->get(); }
  Data *data_m;
};

int foo(Object&o)
{
  return o[0];
}

/* { dg-final { scan-tree-dump-not ".* = \[^>;\]*;" "dce2" { xfail *-*-* } } } */
/* { dg-final { cleanup-tree-dump "dce2" } } */
