Here is a character SELECT CASE construct that requires a temp to hold the
result of the TRIM intrinsic call:
module m character(len=6) :: s contains subroutine sc n = 0 if (lge(s,'00')) then select case(trim(s)) case('11') n = 1 case default continue case('22') n = 2 case('33') n = 3 case('44':'55','66':'77','88':) n = 4 end select end if print*, n end subroutine end module m
This SELECT CASE construct is implemented as an IF/ELSE-IF/ELSE comparison
sequence. The temp must be retained until some comparison is successful.
At that point the temp may be freed. Generalize statement context processing
to allow multiple finalize calls to do this, such that the program always
executes exactly one freemem call.
This patch is part of the upstreaming effort from fir-dev branch.
Co-authored-by: V Donaldson <vdonaldson@nvidia.com>
Compiler was flagging a warning here.