[Bug fortran/105381] [12 Regression] Memory-hog since r12-8230

2022-04-27 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105381

Richard Biener  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #3 from Richard Biener  ---
Thanks.

[Bug fortran/105381] [12 Regression] Memory-hog since r12-8230

2022-04-27 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105381

--- Comment #2 from CVS Commits  ---
The master branch has been updated by Mikael Morin :

https://gcc.gnu.org/g:3e0c9fdfd00b5b5cbff1a0bd6ac012a10fe81348

commit r12-8280-g3e0c9fdfd00b5b5cbff1a0bd6ac012a10fe81348
Author: Mikael Morin 
Date:   Wed Apr 27 11:36:00 2022 +0200

fortran: Avoid infinite self-recursion [PR105381]

Dummy array decls are local decls different from the argument decl
accessible through GFC_DECL_SAVED_DESCRIPTOR.  If the argument decl has
a DECL_LANG_SPECIFIC set, it is copied over to the local decl at the
time the latter is created, so that the DECL_LANG_SPECIFIC object is
shared between local dummy decl and argument decl, and thus the
GFC_DECL_SAVED_DESCRIPTOR of the argument decl is the argument decl
itself.

The r12-8230-g7964ab6c364c410c34efe7ca2eba797d36525349 change introduced
the non_negative_strides_array_p predicate which recurses through
GFC_DECL_SAVED_DESCRIPTOR to avoid seeing dummy decls as purely local
decls.  As the GFC_DECL_SAVED_DESCRIPTOR of the argument decl is itself,
this can cause infinite recursion.

This change adds a check to avoid infinite recursion.

PR fortran/102043
PR fortran/105381

gcc/fortran/ChangeLog:

* trans-array.cc (non_negative_strides_array_p): Inline variable
orig_decl and merge nested if conditions.  Add condition to not
recurse if the next argument is the same as the current.

gcc/testsuite/ChangeLog:

* gfortran.dg/character_array_dummy_1.f90: New test.

[Bug fortran/105381] [12 Regression] Memory-hog since r12-8230

2022-04-26 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105381

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P1

[Bug fortran/105381] [12 Regression] Memory-hog since r12-8230

2022-04-25 Thread mikael at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105381

Mikael Morin  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |mikael at gcc dot 
gnu.org

[Bug fortran/105381] [12 Regression] Memory-hog since r12-8230

2022-04-25 Thread mikael at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105381

--- Comment #1 from Mikael Morin  ---
Draft patch.

diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc
index e4b6270ccf8..e0070aa080d 100644
--- a/gcc/fortran/trans-array.cc
+++ b/gcc/fortran/trans-array.cc
@@ -3698,7 +3698,8 @@ non_negative_strides_array_p (tree expr)
   if (DECL_P (expr)
   && DECL_LANG_SPECIFIC (expr))
 if (tree orig_decl = GFC_DECL_SAVED_DESCRIPTOR (expr))
-  return non_negative_strides_array_p (orig_decl);
+  if (orig_decl != expr)
+   return non_negative_strides_array_p (orig_decl);

   return true;
 }

[Bug fortran/105381] [12 Regression] Memory-hog since r12-8230

2022-04-25 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105381

Martin Liška  changed:

   What|Removed |Added

   Last reconfirmed||2022-04-25
 CC||marxin at gcc dot gnu.org
 Ever confirmed|0   |1
 Status|UNCONFIRMED |NEW

[Bug fortran/105381] [12 Regression] Memory-hog since r12-8230

2022-04-25 Thread anlauf at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105381

anlauf at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||compile-time-hog
   Target Milestone|--- |12.0
 CC||mikael at gcc dot gnu.org