re PR middle-end/23294 (fold does not fold a*C+a to a*(C+1) or a*C-a to a*(C-1))
[gcc.git] / gcc / testsuite / gcc.dg / tree-ssa / pr23294.c
1 /* { dg-do compile } */
2 /* { dg-options "-O -fdump-tree-vars" } */
3
4 int f1(int a)
5 {
6 return a*6-a;
7 }
8
9 int f2(int a)
10 {
11 return a*4+a;
12 }
13
14 int f3(int a)
15 {
16 return 2*a + 3*a;
17 }
18
19 int f4(int a, int b)
20 {
21 return 2*a + 6*b;
22 }
23
24 int f5(int a, int b)
25 {
26 return 2*a - 6*b;
27 }
28
29 int f6(int a, int b)
30 {
31 return 6*a - 2*b;
32 }
33
34 /* { dg-final { scan-tree-dump-times "a \\\* 5" 3 "vars" } } */
35 /* { dg-final { scan-tree-dump "\\\(b \\\* 3 \\\+ a\\\) \\\* 2" "vars" } } */
36 /* { dg-final { scan-tree-dump "\\\(a - b \\\* 3\\\) \\\* 2" "vars" } } */
37 /* { dg-final { scan-tree-dump "\\\(a \\\* 3 - b\\\) \\\* 2" "vars" } } */
38 /* { dg-final { cleanup-tree-dump "vars" } } */