public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/112316] New: [13 Regression] Fix for PR87477 rejects valid code with a bogus error about pointer assignment and causes an ICE
@ 2023-10-31 15:17 trnka at scm dot com
  2023-11-02  8:27 ` [Bug fortran/112316] [13 Regression] Fix for PR87477 rejects valid code with a bogus error about pointer assignment and causes an ICE since r13-7761-gd6997a5aab7aaa325946a6283bfee8ac2bd9f540 rguenth at gcc dot gnu.org
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: trnka at scm dot com @ 2023-10-31 15:17 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 112316
           Summary: [13 Regression] Fix for PR87477 rejects valid code
                    with a bogus error about pointer assignment and causes
                    an ICE
           Product: gcc
           Version: 13.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: trnka at scm dot com
  Target Milestone: ---

Current releases/gcc-13 rejects the following testcase (compiled simply using
gfortran -c test-bogus-pointer-arg-error.f90):

===== test-bogus-pointer-arg-error.f90 =====
module BogusPointerArgError
   implicit none

   type :: AType
   end type

contains

   subroutine A ()

      class(AType), allocatable :: x

      allocate(x)
      call B (x)
   end subroutine

   subroutine B (y)
      class(AType), intent(in)    :: y
   end subroutine

   subroutine C (z)
      class(AType), intent(in) :: z(:)

      associate (xxx => z(1))
      end associate

   end subroutine

end module
==========

   14 |       call B (x)
      |              1
Error: Actual argument for ‘y’ at (1) must be a pointer or a valid target for
the dummy pointer in a pointer assignment statement

Apparently, both the associate block in C (which is never called) and routines
A and B need to be present to trigger the issue. It also seems to only happen
when "x" is polymorphic (class(AType)).

A related testcase is also rejected, this time with an ICE:

===== test-ICE-get_descriptor_field.f90 =====
module AModule
   implicit none
   private

   public AType

   type, abstract :: AType
   contains
      generic, public :: assignment(=) => Assign

      procedure, private :: Assign
   end type AType

contains

   subroutine Assign(lhs, rhs)
      class(AType), intent(inout) :: lhs
      class(AType), intent(in)    :: rhs
   end subroutine

end module AModule



module ICEGetDescriptorField
   use AModule
   implicit none

contains

   subroutine Foo (x)
      class(AType), intent(in)    :: x(:)

      class(AType), allocatable :: y

      associate (xxx => x(1))
         y = xxx
      end associate
   end subroutine

end module ICEGetDescriptorField
==========

test-ICE-get_descriptor_field.f90:38:16:

   38 |          y = xxx
      |                1
internal compiler error: in gfc_get_descriptor_field, at
fortran/trans-array.cc:245

This time, AType needs to be in a separate module and have a defined assignment
to trigger the bug.

Both issues bisect to the following commit. Reverting this change on top of
current releases/gcc-13 makes both issues go away. (GCC 14 is likely also
affected, not tested.)

https://gcc.gnu.org/g:d6997a5aab7aaa325946a6283bfee8ac2bd9f540

commit r13-7761-gd6997a5aab7aaa325946a6283bfee8ac2bd9f540
Author: Paul Thomas <pault@gcc.gnu.org>
Date:   Sun Aug 27 09:51:32 2023 +0100

    Fortran: Fix some problems blocking associate meta-bug [PR87477]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug fortran/112316] [13 Regression] Fix for PR87477 rejects valid code with a bogus error about pointer assignment and causes an ICE since r13-7761-gd6997a5aab7aaa325946a6283bfee8ac2bd9f540
  2023-10-31 15:17 [Bug fortran/112316] New: [13 Regression] Fix for PR87477 rejects valid code with a bogus error about pointer assignment and causes an ICE trnka at scm dot com
@ 2023-11-02  8:27 ` rguenth at gcc dot gnu.org
  2023-11-02 17:56 ` pault at gcc dot gnu.org
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: rguenth at gcc dot gnu.org @ 2023-11-02  8:27 UTC (permalink / raw)
  To: gcc-bugs

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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |rejects-valid
           Priority|P3                          |P4
   Target Milestone|---                         |13.3

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug fortran/112316] [13 Regression] Fix for PR87477 rejects valid code with a bogus error about pointer assignment and causes an ICE since r13-7761-gd6997a5aab7aaa325946a6283bfee8ac2bd9f540
  2023-10-31 15:17 [Bug fortran/112316] New: [13 Regression] Fix for PR87477 rejects valid code with a bogus error about pointer assignment and causes an ICE trnka at scm dot com
  2023-11-02  8:27 ` [Bug fortran/112316] [13 Regression] Fix for PR87477 rejects valid code with a bogus error about pointer assignment and causes an ICE since r13-7761-gd6997a5aab7aaa325946a6283bfee8ac2bd9f540 rguenth at gcc dot gnu.org
@ 2023-11-02 17:56 ` pault at gcc dot gnu.org
  2023-11-02 22:23 ` cvs-commit at gcc dot gnu.org
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: pault at gcc dot gnu.org @ 2023-11-02 17:56 UTC (permalink / raw)
  To: gcc-bugs

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

Paul Thomas <pault at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2023-11-02
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW

--- Comment #1 from Paul Thomas <pault at gcc dot gnu.org> ---
I can confirm this bug, of course. Thanks for the report.

I temporary work around is to invert the order of the contained procedures.

The problem is caused by a stupid (on my part :-( ) oversight:
diff --git a/gcc/fortran/parse.cc b/gcc/fortran/parse.cc
index e103ebee557..f88f9be3be8 100644
--- a/gcc/fortran/parse.cc
+++ b/gcc/fortran/parse.cc
@@ -5196,7 +5196,7 @@ parse_associate (void)
            }
        }

-      if (target->rank)
+      if (1)
        {
          int rank = 0;
          rank = target->rank;

fixes the problem and regtests OK.

The simplification that I effected with the offending patch has been completely
spoiled by forgetting that one of the cases that was supposed to be fixed in
the block following the condition above is that of target->rank = 0 and the
associate variable having an array_spec.

I will commit a cleaned up version as obvious first thing tomorrow morning.

Sorry for the inconvenience.

Paul

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug fortran/112316] [13 Regression] Fix for PR87477 rejects valid code with a bogus error about pointer assignment and causes an ICE since r13-7761-gd6997a5aab7aaa325946a6283bfee8ac2bd9f540
  2023-10-31 15:17 [Bug fortran/112316] New: [13 Regression] Fix for PR87477 rejects valid code with a bogus error about pointer assignment and causes an ICE trnka at scm dot com
  2023-11-02  8:27 ` [Bug fortran/112316] [13 Regression] Fix for PR87477 rejects valid code with a bogus error about pointer assignment and causes an ICE since r13-7761-gd6997a5aab7aaa325946a6283bfee8ac2bd9f540 rguenth at gcc dot gnu.org
  2023-11-02 17:56 ` pault at gcc dot gnu.org
@ 2023-11-02 22:23 ` cvs-commit at gcc dot gnu.org
  2023-11-03  6:24 ` cvs-commit at gcc dot gnu.org
  2023-11-03  6:29 ` pault at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2023-11-02 22:23 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Paul Thomas <pault@gcc.gnu.org>:

https://gcc.gnu.org/g:7c1d011bc1f8b26dba4ebcbd4a429628dfb2698d

commit r14-5088-g7c1d011bc1f8b26dba4ebcbd4a429628dfb2698d
Author: Paul Thomas <pault@gcc.gnu.org>
Date:   Thu Nov 2 22:23:05 2023 +0000

    Fortran: Fix for regression in ASSOCIATE [PR112316]

    2023-11-02  Paul Thomas  <pault@gcc.gnu.org>

    gcc/fortran
            PR fortran/112316
            * parse.cc (parse_associate): Remove condition that caused this
            regression.

    gcc/testsuite/
            PR fortran/112316
            * gfortran.dg/pr112316.f90: New test.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug fortran/112316] [13 Regression] Fix for PR87477 rejects valid code with a bogus error about pointer assignment and causes an ICE since r13-7761-gd6997a5aab7aaa325946a6283bfee8ac2bd9f540
  2023-10-31 15:17 [Bug fortran/112316] New: [13 Regression] Fix for PR87477 rejects valid code with a bogus error about pointer assignment and causes an ICE trnka at scm dot com
                   ` (2 preceding siblings ...)
  2023-11-02 22:23 ` cvs-commit at gcc dot gnu.org
@ 2023-11-03  6:24 ` cvs-commit at gcc dot gnu.org
  2023-11-03  6:29 ` pault at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2023-11-03  6:24 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-13 branch has been updated by Paul Thomas <pault@gcc.gnu.org>:

https://gcc.gnu.org/g:79fc5916f04d9cd6f46b140bc8bbeb2b2eacd2ff

commit r13-8000-g79fc5916f04d9cd6f46b140bc8bbeb2b2eacd2ff
Author: Paul Thomas <pault@gcc.gnu.org>
Date:   Thu Nov 2 22:23:05 2023 +0000

    Fortran: Fix for regression in ASSOCIATE [PR112316]

    2023-11-02  Paul Thomas  <pault@gcc.gnu.org>

    gcc/fortran
            PR fortran/112316
            * parse.cc (parse_associate): Remove condition that caused this
            regression.

    gcc/testsuite/
            PR fortran/112316
            * gfortran.dg/pr112316.f90: New test.

    (cherry picked from commit 7c1d011bc1f8b26dba4ebcbd4a429628dfb2698d)

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug fortran/112316] [13 Regression] Fix for PR87477 rejects valid code with a bogus error about pointer assignment and causes an ICE since r13-7761-gd6997a5aab7aaa325946a6283bfee8ac2bd9f540
  2023-10-31 15:17 [Bug fortran/112316] New: [13 Regression] Fix for PR87477 rejects valid code with a bogus error about pointer assignment and causes an ICE trnka at scm dot com
                   ` (3 preceding siblings ...)
  2023-11-03  6:24 ` cvs-commit at gcc dot gnu.org
@ 2023-11-03  6:29 ` pault at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: pault at gcc dot gnu.org @ 2023-11-03  6:29 UTC (permalink / raw)
  To: gcc-bugs

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

Paul Thomas <pault at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
             Status|NEW                         |RESOLVED

--- Comment #4 from Paul Thomas <pault at gcc dot gnu.org> ---
Fixed on 13-branch and on mainline.

Once again, thanks for the report and apologies for the inconvenience.

Paul

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-11-03  6:29 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-31 15:17 [Bug fortran/112316] New: [13 Regression] Fix for PR87477 rejects valid code with a bogus error about pointer assignment and causes an ICE trnka at scm dot com
2023-11-02  8:27 ` [Bug fortran/112316] [13 Regression] Fix for PR87477 rejects valid code with a bogus error about pointer assignment and causes an ICE since r13-7761-gd6997a5aab7aaa325946a6283bfee8ac2bd9f540 rguenth at gcc dot gnu.org
2023-11-02 17:56 ` pault at gcc dot gnu.org
2023-11-02 22:23 ` cvs-commit at gcc dot gnu.org
2023-11-03  6:24 ` cvs-commit at gcc dot gnu.org
2023-11-03  6:29 ` pault at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).