public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "jason at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug tree-optimization/102586] [12 Regression] ICE in clear_padding_type, at gimple-fold.c:4798 since r12-3433-ga25e0b5e6ac8a77a
Date: Wed, 09 Feb 2022 17:21:03 +0000	[thread overview]
Message-ID: <bug-102586-4-8xPRHBcDSf@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-102586-4@http.gcc.gnu.org/bugzilla/>

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

--- Comment #7 from Jason Merrill <jason at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #3)
> Shall it treat the fields that partially fall into the range and partially
> don't as padding (ignore them)

In short yes, but...

What a wacky class hierarchy.

So, when laying out C5, we first choose C2 as its primary base class; C4 is not
eligible because its direct C1 base is at offset 8 (in C4) to avoid conflicting
with C2's C1.

So then C5's C1 direct base is also at offset 8 to avoid C2's C1.

Then we place the C4 virtual base, which can also go at offset 8, because its
C1 will end up at offset 16 in C5.

But the C5 base of C9 doesn't include the C4 vbase, so when we look at C4 vbase
we see that it overlaps the end and yes, we can safely ignore it.

It would be possible to make a hierarchy where a one-byte vbase shares the
padding byte with C1:

struct smol { char c; };
struct C5 : virtual smol, virtual C4, C1 {};

Now smol and C1 are both one byte at offset 8, so we only know to ignore smol
if we know whether we're supposed to look at vbases or not.  So we might
wrongly treat that byte as data in C9 when it's actually padding.

I'd think it should be possible to handle this without a langhook by looking at
the BINFOs at the same time, i.e. within a base field, ignore BINFO_VIRTUAL_P
with non-0 offset.

  parent reply	other threads:[~2022-02-09 17:21 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-04  7:30 [Bug tree-optimization/102586] New: " marxin at gcc dot gnu.org
2021-10-04  7:30 ` [Bug tree-optimization/102586] " marxin at gcc dot gnu.org
2021-10-04  8:21 ` jakub at gcc dot gnu.org
2021-10-04  8:22 ` marxin at gcc dot gnu.org
2021-10-04 11:43 ` jakub at gcc dot gnu.org
2021-10-04 12:04 ` jakub at gcc dot gnu.org
2021-11-15 13:03 ` jakub at gcc dot gnu.org
2021-11-15 13:05 ` jakub at gcc dot gnu.org
2022-01-17 13:14 ` rguenth at gcc dot gnu.org
2022-02-09 17:21 ` jason at gcc dot gnu.org [this message]
2022-02-10 14:08 ` jakub at gcc dot gnu.org
2022-02-10 14:18 ` jakub at gcc dot gnu.org
2022-02-10 15:29 ` jakub at gcc dot gnu.org
2022-02-10 15:35 ` jakub at gcc dot gnu.org
2022-02-10 15:56 ` jason at gcc dot gnu.org
2022-02-10 18:30 ` jakub at gcc dot gnu.org
2022-02-10 18:45 ` jason at gcc dot gnu.org
2022-02-10 19:27 ` jakub at gcc dot gnu.org
2022-02-10 22:07 ` jason at gcc dot gnu.org
2022-02-10 22:27 ` jakub at gcc dot gnu.org
2022-02-10 22:29 ` jakub at gcc dot gnu.org
2022-02-10 22:34 ` jakub at gcc dot gnu.org
2022-02-11  1:47 ` rodgertq at gcc dot gnu.org
2022-02-11 12:31 ` jakub at gcc dot gnu.org
2022-02-11 15:29 ` jason at gcc dot gnu.org
2022-02-11 16:23 ` qing.zhao at oracle dot com
2022-02-11 16:39 ` jakub at gcc dot gnu.org
2022-02-11 17:36 ` qinzhao at gcc dot gnu.org
2022-02-11 17:47 ` jakub at gcc dot gnu.org
2022-02-11 21:52 ` qing.zhao at oracle dot com
2022-03-12  4:40 ` jason at gcc dot gnu.org
2022-03-14  9:49 ` cvs-commit at gcc dot gnu.org
2022-04-07  7:15 ` cvs-commit at gcc dot gnu.org
2022-04-07  7:19 ` jakub 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-102586-4-8xPRHBcDSf@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).