https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68815

--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> ---
(In reply to Tobias Burnus from comment #0)
> In several cases - as in this one - the code enters as fmt string of a
> diagnostic function (visible as %%L is used). In those cases, '%s' can be
> replaced by %%<%s%%>.

That only seems to be the case for resolve.c.

For expr.c's gfc_check_conformance - used by intrinsic.c and check.c, it enters
as
   "%s", buffer
And the same seems to be true for all '%s' in interface.c.

Except of those files, scanner.c also should be handled at some point; however,
it currently uses fprintf directly instead using the common diagnostics
machinery.


Patch for resolve.c:

--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -3563 +3563 @@ resolve_operator (gfc_expr *e)
-      sprintf (msg, _("Operand of unary numeric operator '%s' at %%L is %s"),
+      sprintf (msg, _("Operand of unary numeric operator %%<%s%%> at %%L is
%s"),
@@ -3579 +3579 @@ resolve_operator (gfc_expr *e)
-              _("Operands of binary numeric operator '%s' at %%L are %s/%s"),
+              _("Operands of binary numeric operator %%<%s%%> at %%L are
%s/%s"),
@@ -3613 +3613 @@ resolve_operator (gfc_expr *e)
-      sprintf (msg, _("Operands of logical operator '%s' at %%L are %s/%s"),
+      sprintf (msg, _("Operands of logical operator %%<%s%%> at %%L are
%s/%s"),
@@ -3698 +3698 @@ resolve_operator (gfc_expr *e)
-                _("Operands of comparison operator '%s' at %%L are %s/%s"),
+                _("Operands of comparison operator %%<%s%%> at %%L are
%s/%s"),
@@ -3706 +3706,2 @@ resolve_operator (gfc_expr *e)
-       sprintf (msg, _("Unknown operator '%s' at %%L"),
e->value.op.uop->name);
+       sprintf (msg, _("Unknown operator %%<%s%%> at %%L"),
+                e->value.op.uop->name);
@@ -3708 +3709 @@ resolve_operator (gfc_expr *e)
-       sprintf (msg, _("Operand of user operator '%s' at %%L is %s"),
+       sprintf (msg, _("Operand of user operator %%<%s%%> at %%L is %s"),
@@ -3712 +3713 @@ resolve_operator (gfc_expr *e)
-         sprintf (msg, _("Operands of user operator '%s' at %%L are %s/%s"),
+         sprintf (msg, _("Operands of user operator %%<%s%%> at %%L are
%s/%s"),

Reply via email to