]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
fortran: fix testsuite regression for gfortran.dg/value_9.f90 [PR123201]
authorHarald Anlauf <anlauf@gmx.de>
Sun, 21 Dec 2025 22:03:28 +0000 (23:03 +0100)
committerHarald Anlauf <anlauf@gmx.de>
Sun, 21 Dec 2025 22:03:28 +0000 (23:03 +0100)
Commit r16-3499 introduced a regression on targets where truncation of a
string argument passed to a CHARACTER(len=1),VALUE dummy argument missed
the special treatment needed for passing single characters.

PR fortran/123201

gcc/fortran/ChangeLog:

* trans-expr.cc (conv_dummy_value): Convert string of length 1 to a
single character for passing as actual argument.

gcc/fortran/trans-expr.cc

index b549a62880e2be6912497ab50f5feb70703c8b24..20f7492715355340c01d52d9403a8f6f8a1cef8b 100644 (file)
@@ -6654,6 +6654,14 @@ conv_dummy_value (gfc_se * parmse, gfc_expr * e, gfc_symbol * fsym,
                                                  e->value.character.string);
       parmse->string_length = build_int_cst (gfc_charlen_type_node, flen);
 
+      if (flen == 1)
+       {
+         tree slen1 = build_int_cst (gfc_charlen_type_node, 1);
+         gfc_conv_string_parameter (parmse);
+         parmse->expr = gfc_string_to_single_character (slen1, parmse->expr,
+                                                        e->ts.kind);
+       }
+
       /* Indicate value,optional scalar dummy argument as present.  */
       if (fsym->attr.optional)
        vec_safe_push (optionalargs, boolean_true_node);