1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-vrp1" } */
3 
4 
5 extern const unsigned char mode_size[];
6 unsigned int
subreg_highpart_offset(outermode,innermode)7 subreg_highpart_offset (outermode, innermode)
8      int outermode, innermode;
9 {
10   unsigned int offset = 0;
11   int difference = (mode_size[innermode] - mode_size[outermode]);
12   if (difference > 0)
13     {
14         offset += difference % (0 ? 8 : 4);
15 	offset += difference / 4 * 4;
16     }
17   return offset;
18 }
19 
20 /* There should be one mask with the value 3.  */
21 /* { dg-final { scan-tree-dump-times " \& 3" 1 "vrp1"} } */
22 
23 /* There should be one right shift by 2 places.  */
24 /* { dg-final { scan-tree-dump-times " >> 2" 1 "vrp1"} } */
25 
26