In assignments, such as string = trim(string) string(n1:n2) = trim(string) the trim has no effect and can be optimized away. (Note: With Fortran 2003 and allocatable strings with "len=:", the first version cannot be optimized as on length mismatch the LHS is reallocated.) Such code can easily be present in real-world code and causes unnecessarily a large overhead, cf. e.g. http://www.tddft.org/trac/octopus/changeset/5672
Mine.
In the link, one also finds trim(str1) == trim(str2)
Subject: Bug 40628 Author: tkoenig Date: Sun Jul 25 19:31:37 2010 New Revision: 162519 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162519 Log: 2010-07-25 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/40628 * Make-lang.in: Add fortran/frontend-passes.o. * gfortran.h: Add prototype for gfc_run_passes. * resolve.c (gfc_resolve): Call gfc_run_passes. * frontend-passes.c: New file. 2010-07-25 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/40628 * trim_optimize_1.f90: New test. * character_comparision_1.f90: New test. Added: trunk/gcc/fortran/frontend-passes.c trunk/gcc/testsuite/gfortran.dg/character_comparison_1.f90 trunk/gcc/testsuite/gfortran.dg/trim_optimize_1.f90 Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/Make-lang.in trunk/gcc/fortran/gfortran.h trunk/gcc/fortran/resolve.c trunk/gcc/testsuite/ChangeLog
Fixed on trunk. Closing.