view gcc/testsuite/g++.dg/tree-ssa/copyprop-1.C @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents 04ced10e8804
children
line wrap: on
line source

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

/* 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];
}

/* Remaining should be two loads.  */

/* { dg-final { scan-tree-dump-times " = \[^\n\]*;" 2 "dce3" } } */