blob: a8f9d817fa801b380dbe928f915ac3b33bb8bc18 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-O2 -fno-code-hoisting -fdump-tree-pre-stats" } */
int motion_test1(int data, int data_0, int data_3, int v)
{
int i;
int t, u;
if (data)
i = data_0 + data_3;
else {
v = 2;
i = 5;
}
t = data_0 + data_3;
u = i;
return v * t * u;
}
/* We should eliminate one computation of data_0 + data_3 along the
main path. We cannot re-associate v * t * u due to undefined
signed overflow so we do not eliminate one computation of v * i along
the main path. */
/* { dg-final { scan-tree-dump-times "Eliminated: 2" 1 "pre" { xfail *-*-* } } } */
/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */