https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89077
--- Comment #3 from Rodrigo Rodrigues <rrodrigues at poli dot ufrj.br> --- I'm not sure it is related, but in this test case, I don't get internal errors, but wrong results: program reverse implicit none character(20), parameter :: input = 'Forward' integer i character(len(input)), parameter :: output = & transfer([(input(i:i),i=len_trim(input),1,-1)],trim(input)) print *, input, '#', len(input) print *, output, '#', len(output) end program reverse My expected output was: Forward # 20 drawroF # 20 But I got this: Forward # 20 drawroF# 20