Message ID | 4DED2982.2060802@netcologne.de |
---|---|
State | New |
Headers | show |
I wrote: > >> Hello world, >> >> the attached patch extends removing trailing TRIMs in assignments for >> cases like a // trim(b). Regression-tested. OK for trunk? >> >> Thomas > > This time with the test case corrected (cleanup of the *.original file) > and a more meaningful Subject line. > > OK? Ping ** 0.5714 Full patch can be found at http://gcc.gnu.org/ml/fortran/2011-06/msg00053.html Thomas
On 06/10/2011 10:08 AM, Thomas Koenig wrote: > I wrote: > >> >>> Hello world, >>> >>> the attached patch extends removing trailing TRIMs in assignments for >>> cases like a // trim(b). Regression-tested. OK for trunk? >>> >>> Thomas >> >> This time with the test case corrected (cleanup of the *.original file) >> and a more meaningful Subject line. >> >> OK? > > Ping ** 0.5714 > > Full patch can be found at > > http://gcc.gnu.org/ml/fortran/2011-06/msg00053.html OK and thanks for patch. Jerry
Hi Jerry, > >> Ping ** 0.5714 >> >> Full patch can be found at >> >> http://gcc.gnu.org/ml/fortran/2011-06/msg00053.html > > OK and thanks for patch. Sending fortran/ChangeLog Sending fortran/frontend-passes.c Sending testsuite/ChangeLog Adding testsuite/gfortran.dg/trim_optimize_7.f90 Transmitting file data .... Committed revision 174944. Thanks for the review! Thomas
Index: frontend-passes.c =================================================================== --- frontend-passes.c (Revision 174391) +++ frontend-passes.c (Arbeitskopie) @@ -500,6 +500,14 @@ optimize_assignment (gfc_code * c) if (lhs->ts.type == BT_CHARACTER) { + /* Check for a // b // trim(c). Looping is probably not + necessary because the parser usually generates + (// (// a b ) trim(c) ) , but better safe than sorry. */ + + while (rhs->expr_type == EXPR_OP + && rhs->value.op.op == INTRINSIC_CONCAT) + rhs = rhs->value.op.op2; + if (rhs->expr_type == EXPR_FUNCTION && rhs->value.function.isym && rhs->value.function.isym->id == GFC_ISYM_TRIM)