brintos

brintos / llvm-project-archived public Read only

0
0
Text · 31.6 KiB · a2f453a Raw
364 lines · plain
1! RUN: %python %S/test_folding.py %s %flang_fc1 -pedantic -triple x86_64-unknown-linux-gnu2! UNSUPPORTED: system-windows3! REQUIRES: target=x86_64{{.*}}4! REQUIRES: flang-supports-f128-math5! Tests folding of OUT_OF_RANGE().6module m7  integer(1),  parameter :: i1v(*)  = [ -huge(1_1)  - 1_1,  huge(1_1) ]8  integer(2),  parameter :: i2v(*)  = [ -huge(1_2)  - 1_2,  huge(1_2) ]9  integer(4),  parameter :: i4v(*)  = [ -huge(1_4)  - 1_4,  huge(1_4) ]10  integer(8),  parameter :: i8v(*)  = [ -huge(1_8)  - 1_8,  huge(1_8) ]11  integer(16), parameter :: i16v(*) = [ -huge(1_16) - 1_16, huge(1_16) ]12  !WARN: warning: division by zero [-Wfolding-exception]13  !WARN: warning: invalid argument on division [-Wfolding-exception]14  real(2),  parameter :: r2v(*)  = [ -huge(1._2),  huge(1._2),  1._2/0._2,   0._2/0._2 ]15  !WARN: warning: division by zero [-Wfolding-exception]16  !WARN: warning: invalid argument on division [-Wfolding-exception]17  real(3),  parameter :: r3v(*)  = [ -huge(1._3),  huge(1._3),  1._3/0._3,   0._3/0._3 ]18  !WARN: warning: division by zero [-Wfolding-exception]19  !WARN: warning: invalid argument on division [-Wfolding-exception]20  real(4),  parameter :: r4v(*)  = [ -huge(1._4),  huge(1._4),  1._4/0._4,   0._4/0._4 ]21  !WARN: warning: division by zero [-Wfolding-exception]22  !WARN: warning: invalid argument on division [-Wfolding-exception]23  real(8),  parameter :: r8v(*)  = [ -huge(1._8),  huge(1._8),  1._8/0._8,   0._8/0._8 ]24  !WARN: warning: division by zero [-Wfolding-exception]25  !WARN: warning: invalid argument on division [-Wfolding-exception]26  real(10), parameter :: r10v(*) = [ -huge(1._10), huge(1._10), 1._10/0._10, 0._10/0._10 ]27  !WARN: warning: division by zero [-Wfolding-exception]28  !WARN: warning: invalid argument on division [-Wfolding-exception]29  real(16), parameter :: r16v(*) = [ -huge(1._16), huge(1._16), 1._16/0._16, 0._16/0._16 ]30  logical, parameter :: finites(*) = [ .true., .true., .false., .false. ]31 32  logical, parameter :: test_i1i1   = .not. any(out_of_range(i1v,  1_1))33  logical, parameter :: test_i1i2   = .not. any(out_of_range(i1v,  1_2))34  logical, parameter :: test_i1i4   = .not. any(out_of_range(i1v,  1_4))35  logical, parameter :: test_i1i8   = .not. any(out_of_range(i1v,  1_8))36  logical, parameter :: test_i1i16  = .not. any(out_of_range(i1v,  1_16))37  logical, parameter :: test_i2i1   =       all(out_of_range(i2v,  1_1))38  logical, parameter :: test_i2i2   = .not. any(out_of_range(i2v,  1_2))39  logical, parameter :: test_i2i4   = .not. any(out_of_range(i2v,  1_4))40  logical, parameter :: test_i2i8   = .not. any(out_of_range(i2v,  1_8))41  logical, parameter :: test_i2i16  = .not. any(out_of_range(i2v,  1_16))42  logical, parameter :: test_i4i1   =       all(out_of_range(i4v,  1_1))43  logical, parameter :: test_i4i2   =       all(out_of_range(i4v,  1_2))44  logical, parameter :: test_i4i4   = .not. any(out_of_range(i4v,  1_4))45  logical, parameter :: test_i4i8   = .not. any(out_of_range(i4v,  1_8))46  logical, parameter :: test_i4i16  = .not. any(out_of_range(i4v,  1_16))47  logical, parameter :: test_i8i1   =       all(out_of_range(i8v,  1_1))48  logical, parameter :: test_i8i2   =       all(out_of_range(i8v,  1_2))49  logical, parameter :: test_i8i4   =       all(out_of_range(i8v,  1_4))50  logical, parameter :: test_i8i8   = .not. any(out_of_range(i8v,  1_8))51  logical, parameter :: test_i8i16  = .not. any(out_of_range(i8v,  1_16))52  logical, parameter :: test_i16i1  =       all(out_of_range(i16v, 1_1))53  logical, parameter :: test_i16i2  =       all(out_of_range(i16v, 1_2))54  logical, parameter :: test_i16i4  =       all(out_of_range(i16v, 1_4))55  logical, parameter :: test_i16i8  =       all(out_of_range(i16v, 1_8))56  logical, parameter :: test_i16i16 = .not. any(out_of_range(i16v, 1_16))57 58  logical, parameter :: test_i1r2   = .not. any(out_of_range(i1v,  1._2))59  logical, parameter :: test_i1r3   = .not. any(out_of_range(i1v,  1._3))60  logical, parameter :: test_i1r4   = .not. any(out_of_range(i1v,  1._4))61  logical, parameter :: test_i1r8   = .not. any(out_of_range(i1v,  1._8))62  logical, parameter :: test_i1r10  = .not. any(out_of_range(i1v,  1._10))63  logical, parameter :: test_i1r16  = .not. any(out_of_range(i1v,  1._16))64  logical, parameter :: test_i2r2   = .not. any(out_of_range(i2v,  1._2))65  logical, parameter :: test_i2r3   = .not. any(out_of_range(i2v,  1._3))66  logical, parameter :: test_i2r4   = .not. any(out_of_range(i2v,  1._4))67  logical, parameter :: test_i2r8   = .not. any(out_of_range(i2v,  1._8))68  logical, parameter :: test_i2r10  = .not. any(out_of_range(i2v,  1._10))69  logical, parameter :: test_i2r16  = .not. any(out_of_range(i2v,  1._16))70  logical, parameter :: test_i4r2   =       all(out_of_range(i4v,  1._2))71  logical, parameter :: test_i4r3   = .not. any(out_of_range(i4v,  1._3))72  logical, parameter :: test_i4r4   = .not. any(out_of_range(i4v,  1._4))73  logical, parameter :: test_i4r8   = .not. any(out_of_range(i4v,  1._8))74  logical, parameter :: test_i4r10  = .not. any(out_of_range(i4v,  1._10))75  logical, parameter :: test_i4r16  = .not. any(out_of_range(i4v,  1._16))76  logical, parameter :: test_i8r2   =       all(out_of_range(i8v,  1._2))77  logical, parameter :: test_i8r3   = .not. any(out_of_range(i8v,  1._3))78  logical, parameter :: test_i8r4   = .not. any(out_of_range(i8v,  1._4))79  logical, parameter :: test_i8r8   = .not. any(out_of_range(i8v,  1._8))80  logical, parameter :: test_i8r10  = .not. any(out_of_range(i8v,  1._10))81  logical, parameter :: test_i8r16  = .not. any(out_of_range(i8v,  1._16))82  logical, parameter :: test_i16r2  =       all(out_of_range(i16v, 1._2))83  logical, parameter :: test_i16r3  = .not. any(out_of_range(i16v, 1._3))84  logical, parameter :: test_i16r4  = .not. any(out_of_range(i16v, 1._4))85  logical, parameter :: test_i16r8  = .not. any(out_of_range(i16v, 1._8))86  logical, parameter :: test_i16r10 = .not. any(out_of_range(i16v, 1._10))87  logical, parameter :: test_i16r16 = .not. any(out_of_range(i16v, 1._16))88 89  logical, parameter :: test_r2r2   = .not. any(out_of_range(r2v,  1._2))90  logical, parameter :: test_r2r3   = .not. any(out_of_range(r2v,  1._3))91  logical, parameter :: test_r2r4   = .not. any(out_of_range(r2v,  1._4))92  logical, parameter :: test_r2r8   = .not. any(out_of_range(r2v,  1._8))93  logical, parameter :: test_r2r10  = .not. any(out_of_range(r2v,  1._10))94  logical, parameter :: test_r2r16  = .not. any(out_of_range(r2v,  1._16))95  logical, parameter :: test_r3r2   =       all(out_of_range(r3v,  1._2) .eqv. finites)96  !WARN: warning: invalid argument on REAL(2) to REAL(3) conversion [-Wfolding-exception]97  logical, parameter :: test_r3r2b  = .not. any(out_of_range(real(r2v, 3),  1._2))98  logical, parameter :: test_r3r3   = .not. any(out_of_range(r3v,  1._3))99  logical, parameter :: test_r3r4   = .not. any(out_of_range(r3v,  1._4))100  logical, parameter :: test_r3r8   = .not. any(out_of_range(r3v,  1._8))101  logical, parameter :: test_r3r10  = .not. any(out_of_range(r3v,  1._10))102  logical, parameter :: test_r3r16  = .not. any(out_of_range(r3v,  1._16))103  logical, parameter :: test_r4r2   =       all(out_of_range(r4v,  1._2) .eqv. finites)104  !WARN: warning: invalid argument on REAL(2) to REAL(4) conversion [-Wfolding-exception]105  logical, parameter :: test_r4r2b  = .not. any(out_of_range(real(r2v, 4),  1._2))106  logical, parameter :: test_r4r3   =       all(out_of_range(r4v,  1._3) .eqv. finites)107  !WARN: warning: invalid argument on REAL(3) to REAL(4) conversion [-Wfolding-exception]108  logical, parameter :: test_r4r3b  = .not. any(out_of_range(real(r3v, 4),  1._3))109  logical, parameter :: test_r4r4   = .not. any(out_of_range(r4v,  1._4))110  logical, parameter :: test_r4r8   = .not. any(out_of_range(r4v,  1._8))111  logical, parameter :: test_r4r10  = .not. any(out_of_range(r4v,  1._10))112  logical, parameter :: test_r4r16  = .not. any(out_of_range(r4v,  1._16))113  logical, parameter :: test_r8r2   =       all(out_of_range(r8v,  1._2) .eqv. finites)114  !WARN: warning: invalid argument on REAL(2) to REAL(8) conversion [-Wfolding-exception]115  logical, parameter :: test_r8r2b  = .not. any(out_of_range(real(r2v, 8),  1._2))116  logical, parameter :: test_r8r3   =       all(out_of_range(r8v,  1._3) .eqv. finites)117  !WARN: warning: invalid argument on REAL(3) to REAL(8) conversion [-Wfolding-exception]118  logical, parameter :: test_r8r3b  = .not. any(out_of_range(real(r3v, 8),  1._3))119  logical, parameter :: test_r8r4   =       all(out_of_range(r8v,  1._4) .eqv. finites)120  !WARN: warning: invalid argument on REAL(4) to REAL(8) conversion [-Wfolding-exception]121  logical, parameter :: test_r8r4b  = .not. any(out_of_range(real(r4v, 8),  1._4))122  logical, parameter :: test_r8r8   = .not. any(out_of_range(r8v,  1._8))123  logical, parameter :: test_r8r10  = .not. any(out_of_range(r8v,  1._10))124  logical, parameter :: test_r8r16  = .not. any(out_of_range(r8v,  1._16))125  logical, parameter :: test_r10r2  =       all(out_of_range(r10v, 1._2) .eqv. finites)126  !WARN: warning: invalid argument on REAL(2) to REAL(10) conversion [-Wfolding-exception]127  logical, parameter :: test_r10r2b = .not. any(out_of_range(real(r2v, 10),  1._2))128  logical, parameter :: test_r10r3  =       all(out_of_range(r10v, 1._3) .eqv. finites)129  !WARN: warning: invalid argument on REAL(3) to REAL(10) conversion [-Wfolding-exception]130  logical, parameter :: test_r10r3b = .not. any(out_of_range(real(r3v, 10),  1._3))131  logical, parameter :: test_r10r4  =       all(out_of_range(r10v, 1._4) .eqv. finites)132  !WARN: warning: invalid argument on REAL(4) to REAL(10) conversion [-Wfolding-exception]133  logical, parameter :: test_r10r4b = .not. any(out_of_range(real(r4v, 10),  1._4))134  logical, parameter :: test_r10r8  =       all(out_of_range(r10v, 1._8) .eqv. finites)135  !WARN: warning: invalid argument on REAL(8) to REAL(10) conversion [-Wfolding-exception]136  logical, parameter :: test_r10r8b = .not. any(out_of_range(real(r8v, 10),  1._8))137  logical, parameter :: test_r10r10 = .not. any(out_of_range(r10v, 1._10))138  logical, parameter :: test_r10r16 = .not. any(out_of_range(r10v, 1._16))139  logical, parameter :: test_r16r2  =       all(out_of_range(r16v, 1._2) .eqv. finites)140  !WARN: warning: invalid argument on REAL(2) to REAL(16) conversion [-Wfolding-exception]141  logical, parameter :: test_r16r2b = .not. any(out_of_range(real(r2v, 16), 1._2))142  logical, parameter :: test_r16r3  =       all(out_of_range(r16v, 1._3) .eqv. finites)143  !WARN: warning: invalid argument on REAL(3) to REAL(16) conversion [-Wfolding-exception]144  logical, parameter :: test_r16r3b = .not. any(out_of_range(real(r3v, 16), 1._3))145  logical, parameter :: test_r16r4  =       all(out_of_range(r16v, 1._4) .eqv. finites)146  !WARN: warning: invalid argument on REAL(4) to REAL(16) conversion [-Wfolding-exception]147  logical, parameter :: test_r16r4b = .not. any(out_of_range(real(r4v, 16), 1._4))148  logical, parameter :: test_r16r8  =       all(out_of_range(r16v, 1._8) .eqv. finites)149  !WARN: warning: invalid argument on REAL(8) to REAL(16) conversion [-Wfolding-exception]150  logical, parameter :: test_r16r8b = .not. any(out_of_range(real(r8v, 16), 1._8))151  logical, parameter :: test_r16r10 =       all(out_of_range(r16v, 1._10) .eqv. finites)152  !WARN: warning: invalid argument on REAL(10) to REAL(16) conversion [-Wfolding-exception]153  logical, parameter :: test_r16r10b= .not. any(out_of_range(real(r10v, 16), 1._10))154  logical, parameter :: test_r16r16 = .not. any(out_of_range(r16v, 1._16))155 156  logical, parameter :: test_r2i1   =       all(out_of_range(r2v,  1_1))157  logical, parameter :: test_r2i2   =       all(out_of_range(r2v,  1_2))158  logical, parameter :: test_r2i4   =       all(out_of_range(r2v,  1_4)  .neqv. finites)159  logical, parameter :: test_r2i8   =       all(out_of_range(r2v,  1_8)  .neqv. finites)160  logical, parameter :: test_r2i16  =       all(out_of_range(r2v,  1_16) .neqv. finites)161  logical, parameter :: test_r3i1   =       all(out_of_range(r3v,  1_1))162  logical, parameter :: test_r3i2   =       all(out_of_range(r3v,  1_2))163  logical, parameter :: test_r3i4   =       all(out_of_range(r3v,  1_4))164  logical, parameter :: test_r3i8   =       all(out_of_range(r3v,  1_8))165  logical, parameter :: test_r3i16  =       all(out_of_range(r3v,  1_16))166  logical, parameter :: test_r4i1   =       all(out_of_range(r4v,  1_1))167  logical, parameter :: test_r4i2   =       all(out_of_range(r4v,  1_2))168  logical, parameter :: test_r4i4   =       all(out_of_range(r4v,  1_4))169  logical, parameter :: test_r4i8   =       all(out_of_range(r4v,  1_8))170  logical, parameter :: test_r4i16  =       all(out_of_range(r4v,  1_16))171  logical, parameter :: test_r8i1   =       all(out_of_range(r8v,  1_1))172  logical, parameter :: test_r8i2   =       all(out_of_range(r8v,  1_2))173  logical, parameter :: test_r8i4   =       all(out_of_range(r8v,  1_4))174  logical, parameter :: test_r8i8   =       all(out_of_range(r8v,  1_8))175  logical, parameter :: test_r8i16  =       all(out_of_range(r8v,  1_16))176  logical, parameter :: test_r10i1  =       all(out_of_range(r10v, 1_1))177  logical, parameter :: test_r10i2  =       all(out_of_range(r10v, 1_2))178  logical, parameter :: test_r10i4  =       all(out_of_range(r10v, 1_4))179  logical, parameter :: test_r10i8  =       all(out_of_range(r10v, 1_8))180  logical, parameter :: test_r10i16 =       all(out_of_range(r10v, 1_16))181  logical, parameter :: test_r16i1  =       all(out_of_range(r16v, 1_1))182  logical, parameter :: test_r16i2  =       all(out_of_range(r16v, 1_2))183  logical, parameter :: test_r16i4  =       all(out_of_range(r16v, 1_4))184  logical, parameter :: test_r16i8  =       all(out_of_range(r16v, 1_8))185  logical, parameter :: test_r16i16 =       all(out_of_range(r16v, 1_16))186 187  logical, parameter :: test_r2i1r   =       all(out_of_range(r2v,  1_1,  .true.))188  logical, parameter :: test_r2i2r   =       all(out_of_range(r2v,  1_2,  .true.))189  logical, parameter :: test_r2i4r   =       all(out_of_range(r2v,  1_4,  .true.) .neqv. finites)190  logical, parameter :: test_r2i8r   =       all(out_of_range(r2v,  1_8,  .true.) .neqv. finites)191  logical, parameter :: test_r2i16r  =       all(out_of_range(r2v,  1_16, .true.) .neqv. finites)192  logical, parameter :: test_r3i1r   =       all(out_of_range(r3v,  1_1,  .true.))193  logical, parameter :: test_r3i2r   =       all(out_of_range(r3v,  1_2,  .true.))194  logical, parameter :: test_r3i4r   =       all(out_of_range(r3v,  1_4,  .true.))195  logical, parameter :: test_r3i8r   =       all(out_of_range(r3v,  1_8,  .true.))196  logical, parameter :: test_r3i16r  =       all(out_of_range(r3v,  1_16, .true.))197  logical, parameter :: test_r4i1r   =       all(out_of_range(r4v,  1_1,  .true.))198  logical, parameter :: test_r4i2r   =       all(out_of_range(r4v,  1_2,  .true.))199  logical, parameter :: test_r4i4r   =       all(out_of_range(r4v,  1_4,  .true.))200  logical, parameter :: test_r4i8r   =       all(out_of_range(r4v,  1_8,  .true.))201  logical, parameter :: test_r4i16r  =       all(out_of_range(r4v,  1_16, .true.))202  logical, parameter :: test_r8i1r   =       all(out_of_range(r8v,  1_1,  .true.))203  logical, parameter :: test_r8i2r   =       all(out_of_range(r8v,  1_2,  .true.))204  logical, parameter :: test_r8i4r   =       all(out_of_range(r8v,  1_4,  .true.))205  logical, parameter :: test_r8i8r   =       all(out_of_range(r8v,  1_8,  .true.))206  logical, parameter :: test_r8i16r  =       all(out_of_range(r8v,  1_16, .true.))207  logical, parameter :: test_r10i1r  =       all(out_of_range(r10v, 1_1,  .true.))208  logical, parameter :: test_r10i2r  =       all(out_of_range(r10v, 1_2,  .true.))209  logical, parameter :: test_r10i4r  =       all(out_of_range(r10v, 1_4,  .true.))210  logical, parameter :: test_r10i8r  =       all(out_of_range(r10v, 1_8,  .true.))211  logical, parameter :: test_r10i16r =       all(out_of_range(r10v, 1_16, .true.))212  logical, parameter :: test_r16i1r  =       all(out_of_range(r16v, 1_1,  .true.))213  logical, parameter :: test_r16i2r  =       all(out_of_range(r16v, 1_2,  .true.))214  logical, parameter :: test_r16i4r  =       all(out_of_range(r16v, 1_4,  .true.))215  logical, parameter :: test_r16i8r  =       all(out_of_range(r16v, 1_8,  .true.))216  logical, parameter :: test_r16i16r =       all(out_of_range(r16v, 1_16, .true.))217 218  logical, parameter :: test_r2i1u    = all(out_of_range(real(i1v,  kind=2)+.5_2, 1_1,  .false.) .eqv. [.false., .false.])219  logical, parameter :: test_r2i1ur   = all(out_of_range(real(i1v,  kind=2)+.5_2, 1_1,  .true.)  .eqv. [.false., .true.])220  logical, parameter :: test_r2i1d    = all(out_of_range(real(i1v,  kind=2)-.5_2, 1_1,  .false.) .eqv. [.false., .false.])221  logical, parameter :: test_r2i1dr   = all(out_of_range(real(i1v,  kind=2)-.5_2, 1_1,  .true.)  .eqv. [.true.,  .false.])222  logical, parameter :: test_r2i2u    = all(out_of_range(real(i2v,  kind=2)+.5_2, 1_2,  .false.) .eqv. [.false., .true.])223  logical, parameter :: test_r2i2ur   = all(out_of_range(real(i2v,  kind=2)+.5_2, 1_2,  .true.)  .eqv. [.false., .true.])224  logical, parameter :: test_r2i2d    = all(out_of_range(real(i2v,  kind=2)-.5_2, 1_2,  .false.) .eqv. [.false., .true.])225  logical, parameter :: test_r2i2dr   = all(out_of_range(real(i2v,  kind=2)-.5_2, 1_2,  .true.)  .eqv. [.false., .true.])226  !WARN: warning: overflow on INTEGER(4) to REAL(2) conversion [-Wfolding-exception]227  logical, parameter :: test_r2i4u    = all(out_of_range(real(i4v,  kind=2)+.5_2, 1_4,  .false.) .eqv. [.true.,  .true.])228  !WARN: warning: overflow on INTEGER(4) to REAL(2) conversion [-Wfolding-exception]229  logical, parameter :: test_r2i4ur   = all(out_of_range(real(i4v,  kind=2)+.5_2, 1_4,  .true.)  .eqv. [.true.,  .true.])230  !WARN: warning: overflow on INTEGER(4) to REAL(2) conversion [-Wfolding-exception]231  logical, parameter :: test_r2i4d    = all(out_of_range(real(i4v,  kind=2)-.5_2, 1_4,  .false.) .eqv. [.true.,  .true.])232  !WARN: warning: overflow on INTEGER(4) to REAL(2) conversion [-Wfolding-exception]233  logical, parameter :: test_r2i4dr   = all(out_of_range(real(i4v,  kind=2)-.5_2, 1_4,  .true.)  .eqv. [.true.,  .true.])234  !WARN: warning: overflow on INTEGER(8) to REAL(2) conversion [-Wfolding-exception]235  logical, parameter :: test_r2i8u    = all(out_of_range(real(i8v,  kind=2)+.5_2, 1_8,  .false.) .eqv. [.true.,  .true.])236  !WARN: warning: overflow on INTEGER(8) to REAL(2) conversion [-Wfolding-exception]237  logical, parameter :: test_r2i8ur   = all(out_of_range(real(i8v,  kind=2)+.5_2, 1_8,  .true.)  .eqv. [.true.,  .true.])238  !WARN: warning: overflow on INTEGER(8) to REAL(2) conversion [-Wfolding-exception]239  logical, parameter :: test_r2i8d    = all(out_of_range(real(i8v,  kind=2)-.5_2, 1_8,  .false.) .eqv. [.true.,  .true.])240  !WARN: warning: overflow on INTEGER(8) to REAL(2) conversion [-Wfolding-exception]241  logical, parameter :: test_r2i8dr   = all(out_of_range(real(i8v,  kind=2)-.5_2, 1_8,  .true.)  .eqv. [.true.,  .true.])242  !WARN: warning: overflow on INTEGER(16) to REAL(2) conversion [-Wfolding-exception]243  logical, parameter :: test_r2i16u   = all(out_of_range(real(i16v, kind=2)+.5_2, 1_16, .false.) .eqv. [.true.,  .true.])244  !WARN: warning: overflow on INTEGER(16) to REAL(2) conversion [-Wfolding-exception]245  logical, parameter :: test_r2i16ur  = all(out_of_range(real(i16v, kind=2)+.5_2, 1_16, .true.)  .eqv. [.true.,  .true.])246  !WARN: warning: overflow on INTEGER(16) to REAL(2) conversion [-Wfolding-exception]247  logical, parameter :: test_r2i16d   = all(out_of_range(real(i16v, kind=2)-.5_2, 1_16, .false.) .eqv. [.true.,  .true.])248  !WARN: warning: overflow on INTEGER(16) to REAL(2) conversion [-Wfolding-exception]249  logical, parameter :: test_r2i16dr  = all(out_of_range(real(i16v, kind=2)-.5_2, 1_16, .true.)  .eqv. [.true.,  .true.])250 251  logical, parameter :: test_r3i1u    = all(out_of_range(real(i1v,  kind=3)+.5_3, 1_1,  .false.) .eqv. [.false., .false.])252  logical, parameter :: test_r3i1ur   = all(out_of_range(real(i1v,  kind=3)+.5_3, 1_1,  .true.)  .eqv. [.false., .true.])253  logical, parameter :: test_r3i1d    = all(out_of_range(real(i1v,  kind=3)-.5_3, 1_1,  .false.) .eqv. [.false., .false.])254  logical, parameter :: test_r3i1dr   = all(out_of_range(real(i1v,  kind=3)-.5_3, 1_1,  .true.)  .eqv. [.false., .false.])255  logical, parameter :: test_r3i2u    = all(out_of_range(real(i2v,  kind=3)+.5_3, 1_2,  .false.) .eqv. [.false., .true.])256  logical, parameter :: test_r3i2ur   = all(out_of_range(real(i2v,  kind=3)+.5_3, 1_2,  .true.)  .eqv. [.false., .true.])257  logical, parameter :: test_r3i2d    = all(out_of_range(real(i2v,  kind=3)-.5_3, 1_2,  .false.) .eqv. [.false., .true.])258  logical, parameter :: test_r3i2dr   = all(out_of_range(real(i2v,  kind=3)-.5_3, 1_2,  .true.)  .eqv. [.false., .true.])259  logical, parameter :: test_r3i4u    = all(out_of_range(real(i4v,  kind=3)+.5_3, 1_4,  .false.) .eqv. [.false., .true.])260  logical, parameter :: test_r3i4ur   = all(out_of_range(real(i4v,  kind=3)+.5_3, 1_4,  .true.)  .eqv. [.false., .true.])261  logical, parameter :: test_r3i4d    = all(out_of_range(real(i4v,  kind=3)-.5_3, 1_4,  .false.) .eqv. [.false., .true.])262  logical, parameter :: test_r3i4dr   = all(out_of_range(real(i4v,  kind=3)-.5_3, 1_4,  .true.)  .eqv. [.false., .true.])263  logical, parameter :: test_r3i8u    = all(out_of_range(real(i8v,  kind=3)+.5_3, 1_8,  .false.) .eqv. [.false., .true.])264  logical, parameter :: test_r3i8ur   = all(out_of_range(real(i8v,  kind=3)+.5_3, 1_8,  .true.)  .eqv. [.false., .true.])265  logical, parameter :: test_r3i8d    = all(out_of_range(real(i8v,  kind=3)-.5_3, 1_8,  .false.) .eqv. [.false., .true.])266  logical, parameter :: test_r3i8dr   = all(out_of_range(real(i8v,  kind=3)-.5_3, 1_8,  .true.)  .eqv. [.false., .true.])267  logical, parameter :: test_r3i16u   = all(out_of_range(real(i16v, kind=3)+.5_3, 1_16, .false.) .eqv. [.false., .true.])268  logical, parameter :: test_r3i16ur  = all(out_of_range(real(i16v, kind=3)+.5_3, 1_16, .true.)  .eqv. [.false., .true.])269  logical, parameter :: test_r3i16d   = all(out_of_range(real(i16v, kind=3)-.5_3, 1_16, .false.) .eqv. [.false., .true.])270  logical, parameter :: test_r3i16dr  = all(out_of_range(real(i16v, kind=3)-.5_3, 1_16, .true.)  .eqv. [.false., .true.])271 272  logical, parameter :: test_r4i1u    = all(out_of_range(real(i1v,  kind=4)+.5_4, 1_1,  .false.) .eqv. [.false., .false.])273  logical, parameter :: test_r4i1ur   = all(out_of_range(real(i1v,  kind=4)+.5_4, 1_1,  .true.)  .eqv. [.false., .true.])274  logical, parameter :: test_r4i1d    = all(out_of_range(real(i1v,  kind=4)-.5_4, 1_1,  .false.) .eqv. [.false., .false.])275  logical, parameter :: test_r4i1dr   = all(out_of_range(real(i1v,  kind=4)-.5_4, 1_1,  .true.)  .eqv. [.true.,  .false.])276  logical, parameter :: test_r4i2u    = all(out_of_range(real(i2v,  kind=4)+.5_4, 1_2,  .false.) .eqv. [.false., .false.])277  logical, parameter :: test_r4i2ur   = all(out_of_range(real(i2v,  kind=4)+.5_4, 1_2,  .true.)  .eqv. [.false., .true.])278  logical, parameter :: test_r4i2d    = all(out_of_range(real(i2v,  kind=4)-.5_4, 1_2,  .false.) .eqv. [.false., .false.])279  logical, parameter :: test_r4i2dr   = all(out_of_range(real(i2v,  kind=4)-.5_4, 1_2,  .true.)  .eqv. [.true.,  .false.])280  logical, parameter :: test_r4i4u    = all(out_of_range(real(i4v,  kind=4)+.5_4, 1_4,  .false.) .eqv. [.false., .true.])281  logical, parameter :: test_r4i4ur   = all(out_of_range(real(i4v,  kind=4)+.5_4, 1_4,  .true.)  .eqv. [.false., .true.])282  logical, parameter :: test_r4i4d    = all(out_of_range(real(i4v,  kind=4)-.5_4, 1_4,  .false.) .eqv. [.false., .true.])283  logical, parameter :: test_r4i4dr   = all(out_of_range(real(i4v,  kind=4)-.5_4, 1_4,  .true.)  .eqv. [.false., .true.])284  logical, parameter :: test_r4i8u    = all(out_of_range(real(i8v,  kind=4)+.5_4, 1_8,  .false.) .eqv. [.false., .true.])285  logical, parameter :: test_r4i8ur   = all(out_of_range(real(i8v,  kind=4)+.5_4, 1_8,  .true.)  .eqv. [.false., .true.])286  logical, parameter :: test_r4i8d    = all(out_of_range(real(i8v,  kind=4)-.5_4, 1_8,  .false.) .eqv. [.false., .true.])287  logical, parameter :: test_r4i8dr   = all(out_of_range(real(i8v,  kind=4)-.5_4, 1_8,  .true.)  .eqv. [.false., .true.])288  logical, parameter :: test_r4i16u   = all(out_of_range(real(i16v, kind=4)+.5_4, 1_16, .false.) .eqv. [.false., .true.])289  logical, parameter :: test_r4i16ur  = all(out_of_range(real(i16v, kind=4)+.5_4, 1_16, .true.)  .eqv. [.false., .true.])290  logical, parameter :: test_r4i16d   = all(out_of_range(real(i16v, kind=4)-.5_4, 1_16, .false.) .eqv. [.false., .true.])291  logical, parameter :: test_r4i16dr  = all(out_of_range(real(i16v, kind=4)-.5_4, 1_16, .true.)  .eqv. [.false., .true.])292 293  logical, parameter :: test_r8i1u    = all(out_of_range(real(i1v,  kind=8)+.5_8, 1_1,  .false.) .eqv. [.false., .false.])294  logical, parameter :: test_r8i1ur   = all(out_of_range(real(i1v,  kind=8)+.5_8, 1_1,  .true.)  .eqv. [.false., .true.])295  logical, parameter :: test_r8i1d    = all(out_of_range(real(i1v,  kind=8)-.5_8, 1_1,  .false.) .eqv. [.false., .false.])296  logical, parameter :: test_r8i1dr   = all(out_of_range(real(i1v,  kind=8)-.5_8, 1_1,  .true.)  .eqv. [.true.,  .false.])297  logical, parameter :: test_r8i2u    = all(out_of_range(real(i2v,  kind=8)+.5_8, 1_2,  .false.) .eqv. [.false., .false.])298  logical, parameter :: test_r8i2ur   = all(out_of_range(real(i2v,  kind=8)+.5_8, 1_2,  .true.)  .eqv. [.false., .true.])299  logical, parameter :: test_r8i2d    = all(out_of_range(real(i2v,  kind=8)-.5_8, 1_2,  .false.) .eqv. [.false., .false.])300  logical, parameter :: test_r8i2dr   = all(out_of_range(real(i2v,  kind=8)-.5_8, 1_2,  .true.)  .eqv. [.true.,  .false.])301  logical, parameter :: test_r8i4u    = all(out_of_range(real(i4v,  kind=8)+.5_8, 1_4,  .false.) .eqv. [.false., .false.])302  logical, parameter :: test_r8i4ur   = all(out_of_range(real(i4v,  kind=8)+.5_8, 1_4,  .true.)  .eqv. [.false., .true.])303  logical, parameter :: test_r8i4d    = all(out_of_range(real(i4v,  kind=8)-.5_8, 1_4,  .false.) .eqv. [.false., .false.])304  logical, parameter :: test_r8i4dr   = all(out_of_range(real(i4v,  kind=8)-.5_8, 1_4,  .true.)  .eqv. [.true.,  .false.])305  logical, parameter :: test_r8i8u    = all(out_of_range(real(i8v,  kind=8)+.5_8, 1_8,  .false.) .eqv. [.false., .true.])306  logical, parameter :: test_r8i8ur   = all(out_of_range(real(i8v,  kind=8)+.5_8, 1_8,  .true.)  .eqv. [.false., .true.])307  logical, parameter :: test_r8i8d    = all(out_of_range(real(i8v,  kind=8)-.5_8, 1_8,  .false.) .eqv. [.false., .true.])308  logical, parameter :: test_r8i8dr   = all(out_of_range(real(i8v,  kind=8)-.5_8, 1_8,  .true.)  .eqv. [.false., .true.])309  logical, parameter :: test_r8i16u   = all(out_of_range(real(i16v, kind=8)+.5_8, 1_16, .false.) .eqv. [.false., .true.])310  logical, parameter :: test_r8i16ur  = all(out_of_range(real(i16v, kind=8)+.5_8, 1_16, .true.)  .eqv. [.false., .true.])311  logical, parameter :: test_r8i16d   = all(out_of_range(real(i16v, kind=8)-.5_8, 1_16, .false.) .eqv. [.false., .true.])312  logical, parameter :: test_r8i16dr  = all(out_of_range(real(i16v, kind=8)-.5_8, 1_16, .true.)  .eqv. [.false., .true.])313 314  logical, parameter :: test_r10i1u   = all(out_of_range(real(i1v,  kind=10)+.5_10, 1_1,  .false.) .eqv. [.false., .false.])315  logical, parameter :: test_r10i1ur  = all(out_of_range(real(i1v,  kind=10)+.5_10, 1_1,  .true.)  .eqv. [.false., .true.])316  logical, parameter :: test_r10i1d   = all(out_of_range(real(i1v,  kind=10)-.5_10, 1_1,  .false.) .eqv. [.false., .false.])317  logical, parameter :: test_r10i1dr  = all(out_of_range(real(i1v,  kind=10)-.5_10, 1_1,  .true.)  .eqv. [.true.,  .false.])318  logical, parameter :: test_r10i2u   = all(out_of_range(real(i2v,  kind=10)+.5_10, 1_2,  .false.) .eqv. [.false., .false.])319  logical, parameter :: test_r10i2ur  = all(out_of_range(real(i2v,  kind=10)+.5_10, 1_2,  .true.)  .eqv. [.false., .true.])320  logical, parameter :: test_r10i2d   = all(out_of_range(real(i2v,  kind=10)-.5_10, 1_2,  .false.) .eqv. [.false., .false.])321  logical, parameter :: test_r10i2dr  = all(out_of_range(real(i2v,  kind=10)-.5_10, 1_2,  .true.)  .eqv. [.true.,  .false.])322  logical, parameter :: test_r10i4u   = all(out_of_range(real(i4v,  kind=10)+.5_10, 1_4,  .false.) .eqv. [.false., .false.])323  logical, parameter :: test_r10i4ur  = all(out_of_range(real(i4v,  kind=10)+.5_10, 1_4,  .true.)  .eqv. [.false., .true.])324  logical, parameter :: test_r10i4d   = all(out_of_range(real(i4v,  kind=10)-.5_10, 1_4,  .false.) .eqv. [.false., .false.])325  logical, parameter :: test_r10i4dr  = all(out_of_range(real(i4v,  kind=10)-.5_10, 1_4,  .true.)  .eqv. [.true.,  .false.])326  logical, parameter :: test_r10i8u   = all(out_of_range(real(i8v,  kind=10)+.5_10, 1_8,  .false.) .eqv. [.false., .false.])327  logical, parameter :: test_r10i8ur  = all(out_of_range(real(i8v,  kind=10)+.5_10, 1_8,  .true.)  .eqv. [.false., .true.])328  logical, parameter :: test_r10i8d   = all(out_of_range(real(i8v,  kind=10)-.5_10, 1_8,  .false.) .eqv. [.false., .false.])329  logical, parameter :: test_r10i8dr  = all(out_of_range(real(i8v,  kind=10)-.5_10, 1_8,  .true.)  .eqv. [.false., .false.])330  logical, parameter :: test_r10i16u  = all(out_of_range(real(i16v, kind=10)+.5_10, 1_16, .false.) .eqv. [.false., .true.])331  logical, parameter :: test_r10i16ur = all(out_of_range(real(i16v, kind=10)+.5_10, 1_16, .true.)  .eqv. [.false., .true.])332  logical, parameter :: test_r10i16d  = all(out_of_range(real(i16v, kind=10)-.5_10, 1_16, .false.) .eqv. [.false., .true.])333  logical, parameter :: test_r10i16dr = all(out_of_range(real(i16v, kind=10)-.5_10, 1_16, .true.)  .eqv. [.false., .true.])334 335  logical, parameter :: test_r16i1u   = all(out_of_range(real(i1v,  kind=16)+.5_16, 1_1,  .false.) .eqv. [.false., .false.])336  logical, parameter :: test_r16i1ur  = all(out_of_range(real(i1v,  kind=16)+.5_16, 1_1,  .true.)  .eqv. [.false., .true.])337  logical, parameter :: test_r16i1d   = all(out_of_range(real(i1v,  kind=16)-.5_16, 1_1,  .false.) .eqv. [.false., .false.])338  logical, parameter :: test_r16i1dr  = all(out_of_range(real(i1v,  kind=16)-.5_16, 1_1,  .true.)  .eqv. [.true.,  .false.])339  logical, parameter :: test_r16i2u   = all(out_of_range(real(i2v,  kind=16)+.5_16, 1_2,  .false.) .eqv. [.false., .false.])340  logical, parameter :: test_r16i2ur  = all(out_of_range(real(i2v,  kind=16)+.5_16, 1_2,  .true.)  .eqv. [.false., .true.])341  logical, parameter :: test_r16i2d   = all(out_of_range(real(i2v,  kind=16)-.5_16, 1_2,  .false.) .eqv. [.false., .false.])342  logical, parameter :: test_r16i2dr  = all(out_of_range(real(i2v,  kind=16)-.5_16, 1_2,  .true.)  .eqv. [.true.,  .false.])343  logical, parameter :: test_r16i4u   = all(out_of_range(real(i4v,  kind=16)+.5_16, 1_4,  .false.) .eqv. [.false., .false.])344  logical, parameter :: test_r16i4ur  = all(out_of_range(real(i4v,  kind=16)+.5_16, 1_4,  .true.)  .eqv. [.false., .true.])345  logical, parameter :: test_r16i4d   = all(out_of_range(real(i4v,  kind=16)-.5_16, 1_4,  .false.) .eqv. [.false., .false.])346  logical, parameter :: test_r16i4dr  = all(out_of_range(real(i4v,  kind=16)-.5_16, 1_4,  .true.)  .eqv. [.true.,  .false.])347  logical, parameter :: test_r16i8u   = all(out_of_range(real(i8v,  kind=16)+.5_16, 1_8,  .false.) .eqv. [.false., .false.])348  logical, parameter :: test_r16i8ur  = all(out_of_range(real(i8v,  kind=16)+.5_16, 1_8,  .true.)  .eqv. [.false., .true.])349  logical, parameter :: test_r16i8d   = all(out_of_range(real(i8v,  kind=16)-.5_16, 1_8,  .false.) .eqv. [.false., .false.])350  logical, parameter :: test_r16i8dr  = all(out_of_range(real(i8v,  kind=16)-.5_16, 1_8,  .true.)  .eqv. [.true.,  .false.])351  logical, parameter :: test_r16i16u  = all(out_of_range(real(i16v, kind=16)+.5_16, 1_16, .false.) .eqv. [.false., .true.])352  logical, parameter :: test_r16i16ur = all(out_of_range(real(i16v, kind=16)+.5_16, 1_16, .true.)  .eqv. [.false., .true.])353  logical, parameter :: test_r16i16d  = all(out_of_range(real(i16v, kind=16)-.5_16, 1_16, .false.) .eqv. [.false., .true.])354  logical, parameter :: test_r16i16dr = all(out_of_range(real(i16v, kind=16)-.5_16, 1_16, .true.)  .eqv. [.false., .true.])355 356 contains357  subroutine s(x, r)358    real(8), intent(in) :: x359    logical, intent(in), optional :: r360    !WARN: warning: ROUND= argument to OUT_OF_RANGE() is an optional dummy argument that must be present at execution [-Woptional-must-be-present]361    print *, out_of_range(x, 1, round=r)362  end363end364