1 /* { dg-do compile } */ 2 /* { dg-options "-O2 -fdump-tree-cddce1" } */ 3 4 struct S { unsigned f; }; 5 6 int foo(struct S * p)7foo ( struct S *p) 8 { 9 int *q = (int *)&p->f; 10 int i = *q; 11 return i + p->f; 12 } 13 14 15 /* There should only be one load of p->f because FRE removes the redundancy 16 by realizing it can cast the result of either to the other. */ 17 /* { dg-final { scan-tree-dump-times "= \[^\n\]*p_.\\\(D\\\)" 1 "cddce1" } } */ 18 19