public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Sam Feifer <sfeifer@redhat.com>
To: Andrew Pinski <pinskia@gmail.com>
Cc: GCC Patches <gcc-patches@gcc.gnu.org>
Subject: Re: [PATCH] match.pd: Add new division pattern [PR104992]
Date: Mon, 25 Jul 2022 16:59:19 -0400	[thread overview]
Message-ID: <CAJKdq8S1uWX50s5YR0jfu40VUwHm7xoyeVFqZ88TrouFdQRsng@mail.gmail.com> (raw)
In-Reply-To: <CA+=Sn1n6T-eyB1XekNPWcVgyA04z3SW3_r6P7w6auo8ZVPZ2pw@mail.gmail.com>

> I suspect for eq and mult you might want to add :c to them even though
> in your testcase you don't need them, you might be able to get it via
> using different statements and looking at the forwprop gimple dump.
> Also, did you send the wrong patch as it looks like the function call
> to build_zero_cst has been eaten ... (or is it just because TREE_TYPE
> has parentheses inside the macro and it just accidently works :)).
>

I got lucky and it works without parentheses :). I just added them in for
readability.

You might also want to make sure it does the right thing for vector
> types and complex types (yes both are valid for trunc_div still).
>
>
I made a vector test case, but it's giving me errors when using " == "
between two vectors. I'm running it with the C++ front end and it's saying
the return value cannot be converted. Any tips for this?

I'm not sure exactly what you mean by "complex types" in terms of testing
this patch. Could I get an example?

Thanks
-Sam

Thanks,
> Andrew Pinski
>
> > diff --git a/gcc/testsuite/gcc.dg/pr104992-1.c
> b/gcc/testsuite/gcc.dg/pr104992-1.c
> > new file mode 100644
> > index 00000000000..a80e5e180ce
> > --- /dev/null
> > +++ b/gcc/testsuite/gcc.dg/pr104992-1.c
> > @@ -0,0 +1,30 @@
> > +/* PR tree-optimization/104992 */
> > +/* { dg-do run } */
> > +/* { dg-options "-O2"} */
> > +
> > +#include "pr104992.c"
> > +
> > +int main () {
> > +
> > +    /* Should be true.  */
> > +    if (!foo(6, 3)
> > +        || !bar(12, 2)
> > +        || !baz(34, 17)
> > +        || !qux(50, 10)
> > +        || !fred(16, 8)
> > +        || !baz(-9, 3)
> > +        || !baz(9, -3)
> > +        || !baz(-9, -3)
> > +        ) {
> > +            __builtin_abort();
> > +         }
> > +
> > +    /* Should be false.  */
> > +    if (foo(5, 30)
> > +        || bar(72, 27)
> > +        || baz(42, 15)) {
> > +            __builtin_abort();
> > +        }
> > +
> > +    return 0;
> > +}
> > diff --git a/gcc/testsuite/gcc.dg/pr104992.c
> b/gcc/testsuite/gcc.dg/pr104992.c
> > new file mode 100644
> > index 00000000000..b4b0ca53118
> > --- /dev/null
> > +++ b/gcc/testsuite/gcc.dg/pr104992.c
> > @@ -0,0 +1,35 @@
> > +/* PR tree-optimization/104992 */
> > +/* { dg-do compile } */
> > +/* { dg-options "-O2 -fdump-tree-optimized" } */
> > +
> > +/* Form from PR.  */
> > +__attribute__((noipa)) unsigned foo(unsigned x, unsigned y)
> > +{
> > +    return x / y * y == x;
> > +}
> > +
> > +__attribute__((noipa)) unsigned bar(unsigned x, unsigned y) {
> > +    return x == x / y * y;
> > +}
> > +
> > +/* Signed test case.  */
> > +__attribute__((noipa)) unsigned baz (int x, int y) {
> > +    return x / y * y == x;
> > +}
> > +
> > +/* Changed order.  */
> > +__attribute__((noipa)) unsigned qux (unsigned x, unsigned y) {
> > +    return y * (x / y) == x;
> > +}
> > +
> > +/* Wrong order.  */
> > +__attribute__((noipa)) unsigned fred (unsigned x, unsigned y) {
> > +    return y * x / y == x;
> > +}
> > +
> > +/* Wrong pattern.  */
> > +__attribute__((noipa)) unsigned waldo (unsigned x, unsigned y, unsigned
> z) {
> > +    return x / y * z == x;
> > +}
> > +
> > +/* { dg-final {scan-tree-dump-times " % " 4 "optimized" } } */
> >
> > base-commit: 633e9920589ddfaf2d6da1c24ce99b18a2638db4
> > --
> > 2.31.1
> >
>
>

  reply	other threads:[~2022-07-25 20:59 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-25 19:34 Sam Feifer
2022-07-25 19:49 ` Andrew Pinski
2022-07-25 20:59   ` Sam Feifer [this message]
2022-07-25 21:14     ` Andrew Pinski
2022-07-26 14:31       ` Sam Feifer
2022-07-27  8:42         ` Richard Biener
2022-07-27 19:57           ` Sam Feifer
2022-07-28  7:03             ` Richard Biener
2022-08-01 13:27               ` Sam Feifer

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=CAJKdq8S1uWX50s5YR0jfu40VUwHm7xoyeVFqZ88TrouFdQRsng@mail.gmail.com \
    --to=sfeifer@redhat.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=pinskia@gmail.com \
    /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).