40 lines
741 B
Fortran
40 lines
741 B
Fortran
! PR 25577
|
|
! MVBITS didn't work correctly for integer types wider than a C int
|
|
! The testcase is based on the one Dale Ranta posted in the bug report
|
|
implicit none
|
|
integer(1) i1,j1
|
|
integer(2) i2,j2
|
|
integer(4) i4,j4
|
|
integer(8) i8,j8
|
|
integer ibits,n
|
|
|
|
ibits=bit_size(1_1)
|
|
do n=1,ibits
|
|
i1=-1
|
|
call mvbits(1_1, 0,n,i1,0)
|
|
j1=-1-2_1**n+2
|
|
if(i1.ne.j1)call abort
|
|
enddo
|
|
ibits=bit_size(1_2)
|
|
do n=1,ibits
|
|
i2=-1
|
|
call mvbits(1_2, 0,n,i2,0)
|
|
j2=-1-2_2**n+2
|
|
if(i2.ne.j2)call abort
|
|
enddo
|
|
ibits=bit_size(1_4)
|
|
do n=1,ibits
|
|
i4=-1
|
|
call mvbits(1_4, 0,n,i4,0)
|
|
j4=-1-2_4**n+2
|
|
if(i4.ne.j4)call abort
|
|
enddo
|
|
ibits=bit_size(1_8)
|
|
do n=1,ibits
|
|
i8=-1
|
|
call mvbits(1_8, 0,n,i8,0)
|
|
j8=-1-2_8**n+2
|
|
if(i8.ne.j8)call abort
|
|
enddo
|
|
end
|