! { dg-do run } | |
! 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)STOP 1 | |
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)STOP 2 | |
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)STOP 3 | |
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)STOP 4 | |
enddo | |
end |