blob: 6d8a87a1fa309e7bb6cfdea94d4a26e6ca2daa0c [file] [log] [blame]
! { dg-do run }
! PR 51858 - this used to generate wrong code.
! Original test case by Don Simons.
program main
implicit none
logical :: test1_ok
logical :: test2_ok
logical :: test3_ok
character(len=1):: charq
charq = 'c'
test1_ok = .true.
test2_ok = .false.
if (charq .eq. ' ') then
test1_ok = .false.
else if ((my_ichar(charq).ge.97 .and. my_ichar(charq).le.103)) then
test2_OK = .true.
end if
if ((.not. test1_ok) .or. (.not. test2_ok)) STOP 1
test1_ok = .true.
test2_ok = .true.
test3_ok = .false.
if (charq .eq. ' ') then
test1_ok = .false.
else if ((my_ichar(charq).lt.97 .or. my_ichar(charq).gt.103)) then
test2_ok = .false.
else if ((my_ichar(charq).ge.97 .and. my_ichar(charq).le.103)) then
test3_ok = .true.
end if
if ((.not. test1_ok) .or. (.not. test2_ok) .or. (.not. test3_ok)) STOP 2
test1_ok = .true.
test2_ok = .true.
test3_ok = .false.
if (charq .eq. ' ') then
test1_ok = .false.
else if ((my_ichar(charq).lt.97 .or. my_ichar(charq).gt.103)) then
test2_ok = .false.
else
test3_ok = .true.
end if
if ((.not. test1_ok) .or. (.not. test2_ok) .or. (.not. test3_ok)) STOP 3
contains
pure function my_ichar(c)
integer :: my_ichar
character(len=1), intent(in) :: c
my_ichar = ichar(c)
end function my_ichar
end program main