public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "matz at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug fortran/45586] [4.6 Regression] ICE non-trivial conversion at assignment
Date: Tue, 18 Jan 2011 14:20:00 -0000	[thread overview]
Message-ID: <bug-45586-4-GK7G3ZeVPf@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-45586-4@http.gcc.gnu.org/bugzilla/>

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45586

--- Comment #32 from Michael Matz <matz at gcc dot gnu.org> 2011-01-18 13:56:01 UTC ---
Yes, but it's possible I was going up the wrong tree.  My idea was to
build the no-restrict variants of types on demand, as necessary, basically
from gfc_sym_type(), whenever sym->attr.pointer.

This nearly worked, as in, it gives the top-level objects ('x' in question
of the testcase from comment #2) a correct type (a record of only non-restrict
members, recursively).

Unfortunately the fortran frontend uses a peculiar way to expand the actual
'x%r' construct.  The necessary FIELD_DECL is not pulled out from the
type of 'x' (I mean the TREE_TYPE), but rather from the frontend-specific
representation of types, in this case from the r-named-component's
backend_decl.  And that very backend_decl itself doesn't depend on the
context, as in, there's always only one for a given type.

So, yes, adding another backend_decl for one component which would hold
the no-restrict variant would work.  But that feels like a gross hack.

Everything would work iff 'x' had the proper type from the start, in
the frontend representation already.  Then its components also would have
the proper attributes set (target namely), leading to correctly typed
backend_decls automatically.

I quickly tried to implement something like that last paragraph,
but were unsuccessful so far.  My basic idea was to remember if a frontend
decl had attr.pointer set, and then set attr.target for all subcomponents
(via current_attr or otherwise).  I thought this was possible as it seemed
to me that the frontend possibly builds types for declarations anew each
time if necessary.  But I might be wrong.


  parent reply	other threads:[~2011-01-18 13:56 UTC|newest]

Thread overview: 101+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <bug-45586-4@http.gcc.gnu.org/bugzilla/>
2010-09-24 10:43 ` [Bug lto/45586] " Joost.VandeVondele at pci dot uzh.ch
2010-09-24 11:17 ` Joost.VandeVondele at pci dot uzh.ch
2010-09-30 15:50 ` rguenth at gcc dot gnu.org
2010-10-21 15:28 ` rguenth at gcc dot gnu.org
2010-11-25 16:59 ` [Bug fortran/45586] " rguenth at gcc dot gnu.org
2010-11-25 17:00 ` rguenth at gcc dot gnu.org
2010-11-25 17:07 ` Joost.VandeVondele at pci dot uzh.ch
2010-11-25 17:44 ` matz at gcc dot gnu.org
2010-11-25 18:04 ` matz at gcc dot gnu.org
2010-11-26 10:27 ` Joost.VandeVondele at pci dot uzh.ch
2010-11-26 12:23 ` rguenth at gcc dot gnu.org
2010-11-26 12:49 ` Joost.VandeVondele at pci dot uzh.ch
2010-11-26 13:45 ` rguenth at gcc dot gnu.org
2010-11-26 13:55 ` burnus at gcc dot gnu.org
2010-11-26 14:02 ` Joost.VandeVondele at pci dot uzh.ch
2010-11-26 14:40 ` rguenther at suse dot de
2010-11-26 14:43 ` rguenth at gcc dot gnu.org
2011-01-13 15:49 ` burnus at gcc dot gnu.org
2011-01-16 13:04 ` tkoenig at gcc dot gnu.org
2011-01-16 15:18 ` mikael at gcc dot gnu.org
2011-01-16 16:37 ` tkoenig at netcologne dot de
2011-01-17 11:30 ` rguenth at gcc dot gnu.org
2011-01-17 13:42 ` mikael at gcc dot gnu.org
2011-01-17 13:50 ` burnus at gcc dot gnu.org
2011-01-17 14:15 ` matz at gcc dot gnu.org
2011-01-18 12:57 ` mikael at gcc dot gnu.org
2011-01-18 13:47 ` rguenther at suse dot de
2011-01-18 14:20 ` matz at gcc dot gnu.org [this message]
2011-01-18 17:38 ` mikael at gcc dot gnu.org
2011-01-19 16:48 ` matz at gcc dot gnu.org
2011-01-20 16:56 ` matz at gcc dot gnu.org
2011-01-21 23:20 ` mikael at gcc dot gnu.org
2011-01-24  9:55 ` rguenther at suse dot de
2011-01-25 14:59 ` mikael at gcc dot gnu.org
2011-01-25 15:03 ` mikael at gcc dot gnu.org
2011-01-25 15:13 ` matz at gcc dot gnu.org
2011-01-25 15:13 ` Joost.VandeVondele at pci dot uzh.ch
2011-01-25 22:28 ` mikael at gcc dot gnu.org
2011-01-26 13:13 ` matz at gcc dot gnu.org
2011-02-07 22:20 ` janus at gcc dot gnu.org
2011-02-12 13:12 ` burnus at gcc dot gnu.org
2011-02-12 13:24 ` burnus at gcc dot gnu.org
2011-02-12 15:05 ` mikael at gcc dot gnu.org
2011-02-13 17:51 ` jsm28 at gcc dot gnu.org
2011-02-18 19:54 ` matz at gcc dot gnu.org
2011-02-18 20:21 ` matz at gcc dot gnu.org
2011-04-05 15:10 ` Joost.VandeVondele at pci dot uzh.ch
2011-04-05 15:16 ` [Bug fortran/45586] [4.6/4.7 " rguenth at gcc dot gnu.org
2011-04-11  9:10 ` burnus at gcc dot gnu.org
2011-04-12  5:50 ` Joost.VandeVondele at pci dot uzh.ch
2011-04-13 18:47 ` Joost.VandeVondele at pci dot uzh.ch
2011-04-26 14:09 ` burnus at gcc dot gnu.org
2011-04-26 18:18 ` Joost.VandeVondele at pci dot uzh.ch
2011-04-26 18:24 ` Joost.VandeVondele at pci dot uzh.ch
2011-04-26 19:37 ` tkoenig at gcc dot gnu.org
2011-06-27 15:50 ` jakub at gcc dot gnu.org
2011-07-26 14:28 ` burnus at gcc dot gnu.org
2011-07-27 22:35 ` burnus at gcc dot gnu.org
2011-07-28  5:41 ` burnus at gcc dot gnu.org
2011-07-28  5:44 ` burnus at gcc dot gnu.org
2012-02-14 13:03 ` rguenth at gcc dot gnu.org
2012-02-14 13:23 ` rguenth at gcc dot gnu.org
2012-03-07  9:48 ` rguenth at gcc dot gnu.org
2012-03-07  9:51 ` [Bug fortran/45586] [4.8 " rguenth at gcc dot gnu.org
2012-03-12 10:16 ` dominiq at lps dot ens.fr
2012-05-11  8:33 ` rguenth at gcc dot gnu.org
2012-07-28  9:47 ` mikael at gcc dot gnu.org
2012-07-30  8:44 ` rguenther at suse dot de
2012-07-30 10:37 ` mikael at gcc dot gnu.org
2012-07-30 11:06 ` rguenther at suse dot de
2012-07-30 12:31 ` mikael at gcc dot gnu.org
2012-07-30 12:34 ` rguenther at suse dot de
2012-08-01 12:23 ` mikael at gcc dot gnu.org
2012-08-01 12:29 ` rguenther at suse dot de
2012-08-01 12:39 ` mikael at gcc dot gnu.org
2012-08-01 15:03 ` mikael at gcc dot gnu.org
2012-08-01 15:06 ` rguenther at suse dot de
2012-08-01 16:24 ` burnus at gcc dot gnu.org
2012-08-01 18:39 ` mikael at gcc dot gnu.org
2012-09-04 12:23 ` Joost.VandeVondele at mat dot ethz.ch
2012-09-26  6:43 ` Joost.VandeVondele at mat dot ethz.ch
2012-09-26  9:38 ` burnus at gcc dot gnu.org
2012-09-26 16:07 ` mikael at gcc dot gnu.org
2012-09-30 12:31 ` Joost.VandeVondele at mat dot ethz.ch
2012-11-15 22:46 ` bergner at gcc dot gnu.org
2012-12-13  8:42 ` Joost.VandeVondele at mat dot ethz.ch
2012-12-13 12:07 ` rguenth at gcc dot gnu.org
2012-12-13 15:14 ` Joost.VandeVondele at mat dot ethz.ch
2013-01-15 19:54 ` rsandifo at gcc dot gnu.org
2013-03-22 14:45 ` [Bug fortran/45586] [4.8/4.9 " jakub at gcc dot gnu.org
2013-03-24  8:04 ` Joost.VandeVondele at mat dot ethz.ch
2013-05-31 10:59 ` jakub at gcc dot gnu.org
2013-08-29 13:35 ` Joost.VandeVondele at mat dot ethz.ch
2013-10-16  9:49 ` jakub at gcc dot gnu.org
2013-11-21 18:31 ` Joost.VandeVondele at mat dot ethz.ch
2013-12-30  8:42 ` nheghathivhistha at gmail dot com
2014-01-09 11:52 ` rguenth at gcc dot gnu.org
2014-01-09 14:44 ` [Bug fortran/45586] [4.8 " rguenth at gcc dot gnu.org
2014-02-08 12:47 ` pault at gcc dot gnu.org
2014-02-09 12:57 ` rguenther at suse dot de
2014-02-16  7:00 ` Joost.VandeVondele at mat dot ethz.ch

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-45586-4-GK7G3ZeVPf@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).