public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Richard Biener <richard.guenther@gmail.com>
To: "Kewen.Lin" <linkw@linux.ibm.com>
Cc: GCC Patches <gcc-patches@gcc.gnu.org>,
	 Segher Boessenkool <segher@kernel.crashing.org>,
	Peter Bergner <bergner@linux.ibm.com>
Subject: Re: [PATCH v2] Handle OPAQUE_TYPE specially in verify_type [PR106833]
Date: Fri, 9 Sep 2022 09:25:52 +0200	[thread overview]
Message-ID: <CAFiYyc2BGcYCecSE3FafFV0dj4JEYazDVeFZ79hjHcrPgszSEg@mail.gmail.com> (raw)
In-Reply-To: <302a193a-2751-a404-31c6-f5b4a3e6856a@linux.ibm.com>

On Fri, Sep 9, 2022 at 8:51 AM Kewen.Lin <linkw@linux.ibm.com> wrote:
>
> Hi Richi,
>
> Thanks for the review comments!
>
> on 2022/9/8 15:36, Richard Biener wrote:
> >
> >
> >> Am 08.09.2022 um 07:53 schrieb Kewen.Lin <linkw@linux.ibm.com>:
> >>
> >> Hi,
> >>
> >> As PR106833 shows, cv-qualified opaque type can cause ICE
> >> during LTO.  It exposes that we missd to handle OPAQUE_TYPE
> >> well in type verification.  As Richi pointed out, also
> >> assuming that target will always define TYPE_MAIN_VARIANT
> >> and TYPE_CANONICAL for opaque type, this patch is to check
> >> both are OPAQUE_TYPE_P.  Besides, it also checks the only
> >> available size and alignment information as well as type
> >> mode for TYPE_MAIN_VARIANT.
> >>
> ...
> >> +
> >> +  if (t != tv)
> >> +    {
> >> +      verify_match (TREE_CODE, t, tv);
> >> +      verify_match (TYPE_MODE, t, tv);
> >> +      verify_match (TYPE_SIZE, t, tv);
> >
> > TYPE_SIZE is a tree, you should probably
> > Compare this with operand_equal_p.  It’s
> > Not documented to be a constant size?
> > Thus some VLA vector mode might be allowed ( a poly_int size),
>
> Thanks for catching, I was referencing the code in function
> verify_type_variant, that corresponding part seems imperfect:
>
>       if (TREE_CODE (TYPE_SIZE (t)) != PLACEHOLDER_EXPR
>           && TREE_CODE (TYPE_SIZE (tv)) != PLACEHOLDER_EXPR)
>         verify_variant_match (TYPE_SIZE);
>
> I agree poly_int size is allowed, the patch was updated for it.
>
> BLKmode
> > Is ruled out(?),
>
> Yes, it requires a mode of MODE_OPAQUE class.
>
> the docs say we have
> > ‚An MODE_Opaque‘ here but I don’t see
> > This being verified?
> >
>
> There is a MODE equality check, I assumed the given t already
> has one MODE_OPAQUE mode, but the patch was updated to make
> it explicit as you concerned.
>
> > The macro makes this a bit unworldly
> > For the only benefit of elaborate diagnostic
> > Which I think isn’t really necessary
>
> OK, fixed!
>
> The previous version makes just one check on TYPE_CANONICAL to
> be cheap as gimple_canonical_types_compatible_p said, but
> since there are just several fields to be check, this updated
> version adjusted it to be the same as what's for TYPE_MAIN_VARIANT.
> Hope it's fine. :)

I think we'll call verify_type on the main variant as well so that would be
redundant (ensured by transitivity), can you check?

> Tested as before.
>
> Does this updated patch look good to you?

Yes, please remove the checks against the main variant if the above holds,
OK with or without that change depending on this outcome.

Thanks,
Richard.


>
> BR,
> Kewen
> ------

  reply	other threads:[~2022-09-09  7:26 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-08  5:53 [PATCH] " Kewen.Lin
2022-09-08  7:36 ` Richard Biener
2022-09-09  6:51   ` [PATCH v2] " Kewen.Lin
2022-09-09  7:25     ` Richard Biener [this message]
2022-09-09 13:27       ` Kewen.Lin
2022-09-10  0:56         ` Peter Bergner
2022-09-10  1:47           ` Segher Boessenkool
2022-09-10  3:16             ` Peter Bergner

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=CAFiYyc2BGcYCecSE3FafFV0dj4JEYazDVeFZ79hjHcrPgszSEg@mail.gmail.com \
    --to=richard.guenther@gmail.com \
    --cc=bergner@linux.ibm.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=linkw@linux.ibm.com \
    --cc=segher@kernel.crashing.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).