1! { dg-do run }
2! PR 25577
3! MVBITS didn't work correctly for integer types wider than a C int
4! The testcase is based on the one Dale Ranta posted in the bug report
5implicit none
6integer(1) i1,j1
7integer(2) i2,j2
8integer(4) i4,j4
9integer(8) i8,j8
10integer ibits,n
11
12ibits=bit_size(1_1)
13do n=1,ibits
14   i1=-1
15   call mvbits(1_1, 0,n,i1,0)
16   j1=-1-2_1**n+2
17   if(i1.ne.j1)STOP 1
18enddo
19ibits=bit_size(1_2)
20do n=1,ibits
21   i2=-1
22   call mvbits(1_2, 0,n,i2,0)
23   j2=-1-2_2**n+2
24   if(i2.ne.j2)STOP 2
25enddo
26ibits=bit_size(1_4)
27do n=1,ibits
28   i4=-1
29   call mvbits(1_4, 0,n,i4,0)
30   j4=-1-2_4**n+2
31   if(i4.ne.j4)STOP 3
32enddo
33ibits=bit_size(1_8)
34do n=1,ibits
35   i8=-1
36   call mvbits(1_8, 0,n,i8,0)
37   j8=-1-2_8**n+2
38   if(i8.ne.j8)STOP 4
39enddo
40end
41