Fortran: Fix generate_error library function fnspec

Message ID 6544edb1.c80a0220.1973f.13e3SMTPIN_ADDED_BROKEN@mx.google.com
State Accepted
Headers
Series Fortran: Fix generate_error library function fnspec |

Checks

Context Check Description
snail/gcc-patch-check success Github commit url

Commit Message

Martin Jambor Nov. 3, 2023, 12:54 p.m. UTC
  Hi,

when developing an otherwise unrelated patch I've discovered that the
fnspec for the Fortran library function generate_error is wrong. It is
currently ". R . R " where the first R describes the first parameter
and means that it "is only read and does not escape."  The function
itself, however, with signature:

  bool
  generate_error_common (st_parameter_common *cmp, int family, const char *message)

contains the following:

  /* Report status back to the compiler.  */
  cmp->flags &= ~IOPARM_LIBRETURN_MASK;

which does not correspond to the fnspec and breaks testcase
gfortran.dg/large_unit_2.f90 when my patch is applied, since it tries
to re-use the flags from before the call.

This patch replaces the "R" with "W" which stands for "specifies that
the memory pointed to by the parameter does not escape."

Bootstrapped and tested on x86_64-linux.  OK for master?


2023-11-02  Martin Jambor  <mjambor@suse.cz>

        * trans-decl.cc (gfc_build_builtin_function_decls): Fix fnspec of
        generate_error.

---
 gcc/fortran/trans-decl.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Patch

diff --git a/gcc/fortran/trans-decl.cc b/gcc/fortran/trans-decl.cc
index a3f037bd07b..b86cfec7d49 100644
--- a/gcc/fortran/trans-decl.cc
+++ b/gcc/fortran/trans-decl.cc
@@ -3821,7 +3821,7 @@  gfc_build_builtin_function_decls (void)
 	void_type_node, -2, pchar_type_node, pchar_type_node);
 
   gfor_fndecl_generate_error = gfc_build_library_function_decl_with_spec (
-	get_identifier (PREFIX("generate_error")), ". R . R ",
+	get_identifier (PREFIX("generate_error")), ". W . R ",
 	void_type_node, 3, pvoid_type_node, integer_type_node,
 	pchar_type_node);