1/* { dg-do compile } */ 2/* { dg-options "-O2 -fipa-sra -fdump-tree-eipa_sra-details" } */ 3 4struct bovid 5{ 6 float red; 7 int green; 8 void *blue; 9}; 10 11extern void foo (float, void *, void *, long); 12 13static int 14__attribute__((noinline)) 15ox (struct bovid cow, int z, struct bovid calf, long l) 16{ 17 foo (cow.red, cow.blue, cow.blue, l); 18 return 0; 19} 20 21void caller (void) 22{ 23 struct bovid cow, calf; 24 25 cow.red = 7.4; 26 cow.green = 6; 27 cow.blue = &cow; 28 29 calf.red = 8.4; 30 calf.green = 5; 31 calf.blue = &cow; 32 33 ox (cow,4,calf,2); 34 return; 35} 36 37/* { dg-final { scan-tree-dump "base: z, remove_param" "eipa_sra" } } */ 38/* { dg-final { scan-tree-dump "base: calf, remove_param" "eipa_sra" } } */ 39/* { dg-final { cleanup-tree-dump "eipa_sra" } } */ 40