/* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ struct f { struct { int i; } ff[10]; }; struct f g; int ffff(int i) { int t1 = 0; int i1 = g.ff[t1].i; int i2 = g.ff[i].i; return i1 + i2; } /* We should not use extra temporaries apart from for i1 + i2. */ /* { dg-final { scan-tree-dump-times "int" 5 "gimple" } } */ /* { dg-final { scan-tree-dump-times "int D\\\." 1 "gimple" } } */ /* { dg-final { cleanup-tree-dump "gimple" } } */