1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fno-code-hoisting -fdump-tree-pre-stats" } */
motion_test1(int data,int data_0,int data_3,int v)3 int motion_test1(int data, int data_0, int data_3, int v)
4 {
5 	int i;
6 	int t, u;
7 
8 	if (data)
9 		i = data_0 + data_3;
10 	else {
11 		v = 2;
12 		i = 5;
13 	}
14 	t = data_0 + data_3;
15 	u = i;
16 	return v * t * u;
17 }
18 /* We should eliminate one computation of data_0 + data_3 along the
19    main path.  We cannot re-associate v * t * u due to undefined
20    signed overflow so we do not eliminate one computation of v * i along
21    the main path. */
22 /* { dg-final { scan-tree-dump-times "Eliminated: 2" 1 "pre" { xfail *-*-* } } } */
23 /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */
24