Message ID | ri6o7gb0zg6.fsf@ |
---|---|
State | New |
Headers | show |
Series | Fortran: Fix generate_error library function fnspec | expand |
On 03.11.23 13:54, Martin Jambor wrote: > 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? LGTM - thanks for the fix! Tobias > 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(-) > > 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); > ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955
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);