! { dg-do run } ! { dg-options "-fcheck=bits -fdump-tree-original" } ! { dg-shouldfail "Fortran runtime error: FROMPOS(64)+LEN(1)>BIT_SIZE(64) in intrinsic MVBITS" } ! { dg-output "At line 33 .*" } ! ! Verify that the runtime checks for the MVBITS intrinsic functions ! do not generate false-positives program check implicit none integer, parameter :: bs4 = bit_size (1_4) integer, parameter :: bs8 = bit_size (1_8) integer(4), dimension(0:bs4) :: from4, frompos4, len4, to4, topos4 integer(8), dimension(0:bs8) :: from8, frompos8, len8, to8, topos8 integer :: i from4 = -1 to4 = -1 len4 = [ (i, i=0,bs4) ] frompos4 = bs4 - len4 topos4 = frompos4 call mvbits (from4, frompos4, len4, to4, topos4) if (any (to4 /= -1)) stop 1 from8 = -1 to8 = -1 len8 = [ (i, i=0,bs8) ] frompos8 = bs8 - len8 topos8 = frompos8 call mvbits (from8, frompos8, len8, to8, topos8) if (any (to8 /= -1)) stop 2 from8 = -1 to8 = -1 len8(0) = 1 ! The following line should fail with a runtime error: call mvbits (from8, frompos8, len8, to8, topos8) ! Should never get here with -fcheck=bits stop 3 end ! { dg-final { scan-tree-dump-times "_gfortran_runtime_error_at" 15 "original" } }