Work on PR 21730 uncovered that character array initializers do not reduce.
character*2 a (1) character*4 b character*6 c parameter (a="12") parameter (b = a(1)) write (c,'("#",A,"#")') b if (c .ne. '#12 #') call abort end Or: character*2 a (1) character*4 b (1) character*6 c parameter (a="12") parameter (b = a) write (c,'("#",A,"#")') b if (c .ne. '#12 #') call abort end expr.c:simplify_parameter_variable() and gfc_simplify_expr() do not eliminate all subobject references, preventing the simplification from being used. -- Summary: character array parameters do not reduce Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: enhancement Priority: P2 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: dje at gcc dot gnu dot org CC: fengwang at gcc dot gnu dot org,gcc-bugs at gcc dot gnu dot org GCC build triplet: *-*-* GCC host triplet: *-*-* GCC target triplet: *-*-* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22491