1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fno-tree-forwprop -fdump-tree-vrp1-details" } */
3 
4 void aa (void);
5 void aos (void);
6 void aob (void);
7 
8 void
blah(int code1,int code2)9 blah (int code1, int code2)
10 {
11   int i;
12   int n_sets;
13 
14   n_sets = (int) (code1 == 32);
15   if (code2 == 64) goto L2; else goto L3;
16 
17 L2:
18   aa ();
19 
20 L3:
21   if (n_sets > 1) goto L4; else goto L10;
22 
23 L4:
24   aos ();
25   i = 0;
26   goto L24;
27 
28 L10:
29   if (n_sets > 0) goto L25; else goto L8;
30 
31 L25:
32   i = 0;
33 
34 L24:
35   aob ();
36   i = i + 1;
37   if (i < n_sets) goto L24; else goto L8;
38 
39 L8:
40   return;
41 }
42 
43 
44 
45 /* The n_sets > 0 test can be simplified into n_sets == 1 since the
46    only way to reach the test is when n_sets <= 1, and the only value
47    which satisfies both conditions is n_sets == 1.  */
48 /* { dg-final { scan-tree-dump-times "Simplified relational" 1 "vrp1" } } */
49 
50