public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "rguenther at suse dot de" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug c/97172] [11 Regression] ICE: tree code ‘ssa_name’ is not supported in LTO streams since r11-3303-g6450f07388f9fe57
Date: Wed, 02 Dec 2020 07:38:33 +0000	[thread overview]
Message-ID: <bug-97172-4-FjiW0KDqGk@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-97172-4@http.gcc.gnu.org/bugzilla/>

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

--- Comment #20 from rguenther at suse dot de <rguenther at suse dot de> ---
On Tue, 1 Dec 2020, hubicka at ucw dot cz wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97172
> 
> --- Comment #19 from Jan Hubicka <hubicka at ucw dot cz> ---
> > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97172
> > 
> > --- Comment #18 from Martin Sebor <msebor at gcc dot gnu.org> ---
> > Let me explain how this works.  The VLA bounds in function parameters are used
> > in two ways:
> > 1) in the front end, to check function redeclarations involving arrays and VLAs
> > for equivalence,
> > 2) in the middle end, to check function calls for out of bounds accesses.
> > 
> > As an example of (1) consider the following declarations of function f():
> > 
> >   void f (int X, int, int A[X], int B[foo()]);
> > and
> >   void f (int, int J, int A[J], int B[foo() + 1]);
> > 
> > The bounds in the parameters A and B are different and we'd like them
> > diagnosed.  The bound X is the first parameter in the first declaration of f
> > but J is the second parameter in the second f().  Because the bounds are also
> > parameters, we use their positions in the argument list to determine that they
> > don't match.
> > 
> > Likewise, the bound foo() in B is different from foo() + 1, but because neither
> > is a parameter the only way to determine whether they match is by comparing
> > them for equivalence.  The code uses operand_equal_p(..., OEP_LEXICOGRAPHIC).
> > 
> > (2) is done only for bounds that are parameters.  Other bounds are not used for
> > anything, but they're still stored in the attributes so they can be compared in
> > the redeclarations.
> > 
> > Since the "complex" bounds aren't used after the front end is done with them,
> > unless there's a way to remove them at some point after the front end is done
> > (or set them to NULL or something), the LTO streaming code could ignore them
> > instead of asserting on them.  Alternatively, instead of storing them in their
> 
> free_lang_data should a good place to free them. In general we should
> avoid storing things to IL that are not useful to middle end and keep
> them there till LTO streaming.  Even if it does not make LTO streaming
> to ICE it stll consumes memory, disk space and compile time. 

The frontend needs to make sure no frontend specific tree codes leak
into GENERIC so GENERICization is the place where the FE should clear
those.  FLD is too late and doing it there would be a hack.

  parent reply	other threads:[~2020-12-02  7:38 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-23  7:25 [Bug c/97172] New: " marxin at gcc dot gnu.org
2020-09-23  7:25 ` [Bug c/97172] " marxin at gcc dot gnu.org
2020-09-23  8:02 ` rguenth at gcc dot gnu.org
2020-09-23 23:00 ` msebor at gcc dot gnu.org
2020-10-01 13:46 ` hubicka at gcc dot gnu.org
2020-10-01 15:36 ` msebor at gcc dot gnu.org
2020-10-01 15:39 ` msebor at gcc dot gnu.org
2020-10-05 20:18 ` msebor at gcc dot gnu.org
2020-10-12 11:48 ` rguenth at gcc dot gnu.org
2020-10-15 15:10 ` marxin at gcc dot gnu.org
2020-10-18 16:42 ` hubicka at gcc dot gnu.org
2020-10-18 17:55 ` msebor at gcc dot gnu.org
2020-10-18 19:58 ` hubicka at ucw dot cz
2020-11-10  9:02 ` marxin at gcc dot gnu.org
2020-11-30 15:00 ` rguenth at gcc dot gnu.org
2020-11-30 15:29 ` msebor at gcc dot gnu.org
2020-11-30 17:32 ` msebor at gcc dot gnu.org
2020-11-30 21:02 ` hubicka at ucw dot cz
2020-12-01  1:11 ` msebor at gcc dot gnu.org
2020-12-01  7:42 ` rguenth at gcc dot gnu.org
2020-12-01 16:12 ` msebor at gcc dot gnu.org
2020-12-01 16:16   ` Jan Hubicka
2020-12-01 16:16 ` hubicka at ucw dot cz
2020-12-02  7:38 ` rguenther at suse dot de [this message]
2020-12-18 12:58 ` marxin at gcc dot gnu.org
2020-12-18 17:02 ` msebor at gcc dot gnu.org
2020-12-19  0:55 ` msebor at gcc dot gnu.org
2021-01-22  9:05 ` ktkachov at gcc dot gnu.org
2021-01-26 18:57 ` jakub at gcc dot gnu.org
2021-01-27 22:51 ` msebor at gcc dot gnu.org
2021-02-01 16:10 ` cvs-commit at gcc dot gnu.org
2021-02-01 16:12 ` msebor at gcc dot gnu.org
2021-02-19  2:28 ` msebor at gcc dot gnu.org
2021-02-19 18:07 ` cvs-commit at gcc dot gnu.org
2021-02-23 14:38 ` marxin at gcc dot gnu.org
2021-02-23 14:49 ` rguenth at gcc dot gnu.org
2021-02-23 17:16 ` msebor at gcc dot gnu.org
2021-02-23 19:20 ` msebor at gcc dot gnu.org
2021-02-24 15:59 ` cvs-commit at gcc dot gnu.org
2021-02-24 16:01 ` msebor at gcc dot gnu.org
2021-02-25 16:03 ` 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-97172-4-FjiW0KDqGk@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).