public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "cvs-commit at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug fortran/103662] [12 Regression] TBAA problem in Fortran FE triggering in gfortran.dg/unlimited_polymorphic_3.f03
Date: Sun, 24 Apr 2022 13:32:35 +0000	[thread overview]
Message-ID: <bug-103662-4-gm0wh7YpcH@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-103662-4@http.gcc.gnu.org/bugzilla/>

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

--- Comment #20 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Mikael Morin <mikael@gcc.gnu.org>:

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

commit r12-8235-gfa5cd7102da676dcb1757b1288421f5f3439ae0e
Author: Mikael Morin <mikael@gcc.gnu.org>
Date:   Sun Apr 24 15:05:41 2022 +0200

    fortran: Detect duplicate unlimited polymorphic types [PR103662]

    This fixes a type-based alias analysis issue with unlimited polymorphic
    class descriptors (types behind class(*)) causing data initialisation to
    be removed by optimization.

    The fortran front-end may create multiple declarations for types, for
    example if a type is redeclared in each program unit it is used in.
    To avoid optimization seeing them as non-aliasing, a list of derived
    types is created at resolution time, and used at translation to set
    the same TYPE_CANONICAL type for each duplicate type declaration.

    This mechanism didnât work for unlimited polymorphic descriptors types,
    as there is a short-circuit return skipping all the resolution handling
    for them, including the type registration.

    This change adds type registration at the short-circuit return, and
    updates type comparison to handle specifically unlimited polymorphic
    fake symbols, class descriptor types and virtual table types.

    The test, which exhibited mismatching dynamic types had to be fixed as
    well.

            PR fortran/103662

    gcc/fortran/ChangeLog:

            * interface.cc (gfc_compare_derived_types): Support comparing
            unlimited polymorphic fake symbols.  Recursively compare class
            descriptor types and virtual table types.
            * resolve.cc (resolve_fl_derived): Add type to the types list
            on unlimited polymorphic short-circuit return.

    gcc/testsuite/ChangeLog:

            * gfortran.dg/unlimited_polymorphic_3.f03 (foo): Separate
            bind(c) and sequence checks to...
            (foo_bc, foo_sq): ... two different procedures.
            (main, foo*): Change type declarations so that type name,
            component name, and either bind(c) or sequence attribute match
            between the main type declarations and the procedure type
            declarations.
            (toplevel): Add optimization dump checks.

    Co-Authored-By: Jakub Jelinek <jakub@redhat.com>

  parent reply	other threads:[~2022-04-24 13:32 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-11 19:25 [Bug fortran/103662] New: " hubicka at gcc dot gnu.org
2021-12-12  8:32 ` [Bug fortran/103662] " hubicka at gcc dot gnu.org
2021-12-14 15:51 ` cvs-commit at gcc dot gnu.org
2021-12-14 18:27 ` anlauf at gcc dot gnu.org
2021-12-14 18:34 ` hubicka at kam dot mff.cuni.cz
2021-12-14 21:53 ` seurer at gcc dot gnu.org
2021-12-15  9:08 ` clyon at gcc dot gnu.org
2022-01-04  9:32 ` rguenth at gcc dot gnu.org
2022-01-04  9:33 ` [Bug fortran/103662] [12 Regression] " rguenth at gcc dot gnu.org
2022-01-17 12:48 ` rguenth at gcc dot gnu.org
2022-01-17 17:36 ` hubicka at kam dot mff.cuni.cz
2022-01-18 14:09 ` rguenth at gcc dot gnu.org
2022-03-22 11:50 ` jakub at gcc dot gnu.org
2022-03-24 14:48 ` jakub at gcc dot gnu.org
2022-04-18 18:21 ` mikael at gcc dot gnu.org
2022-04-18 18:23 ` mikael at gcc dot gnu.org
2022-04-19 13:46 ` jakub at gcc dot gnu.org
2022-04-19 14:07 ` jakub at gcc dot gnu.org
2022-04-19 15:27 ` rguenth at gcc dot gnu.org
2022-04-19 16:12 ` mikael at gcc dot gnu.org
2022-04-19 16:51 ` jakub at gcc dot gnu.org
2022-04-20 10:16 ` hubicka at kam dot mff.cuni.cz
2022-04-24 13:32 ` cvs-commit at gcc dot gnu.org [this message]
2022-04-25  7:50 ` rguenth at gcc dot gnu.org
2022-04-25 11:32 ` cvs-commit at gcc dot gnu.org
2022-04-26  7:18 ` cvs-commit at gcc dot gnu.org
2022-04-26 14:57 ` hubicka at kam dot mff.cuni.cz
2022-04-27  9:36 ` cvs-commit at gcc dot gnu.org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-103662-4-gm0wh7YpcH@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).