public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "cvs-commit at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug tree-optimization/109691] Takes until forwprop2 to remove !a sometimes
Date: Mon, 08 May 2023 06:18:31 +0000	[thread overview]
Message-ID: <bug-109691-4-kxYe84cWFe@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-109691-4@http.gcc.gnu.org/bugzilla/>

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

--- Comment #7 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Andrew Pinski <pinskia@gcc.gnu.org>:

https://gcc.gnu.org/g:21e2ef2dc25de318de29ec32d5390350c6717c6a

commit r14-569-g21e2ef2dc25de318de29ec32d5390350c6717c6a
Author: Andrew Pinski <apinski@marvell.com>
Date:   Tue May 2 00:10:46 2023 -0700

    Move substitute_and_fold over to use simple_dce_from_worklist

    While looking into a different issue, I noticed that it
    would take until the second forwprop pass to do some
    forward proping and it was because the ssa name was
    used more than once but the second statement was
    "dead" and we don't remove that until much later.

    So this uses simple_dce_from_worklist instead of manually
    removing of the known unused statements instead.
    Propagate engine does not do a cleanupcfg afterwards either but manually
    cleans up possible EH edges so simple_dce_from_worklist
    needs to communicate that back to the propagate engine.

    Some testcases needed to be updated/changed even because of better
optimization.
    gcc.dg/pr81192.c even had to be changed to be using the gimple FE so it
would
    be less fragile in the future too.
    gcc.dg/tree-ssa/pr98737-1.c was failing because __atomic_fetch_ was being
matched
    but in those cases, the result was not being used so both __atomic_fetch_
and
    __atomic_x_and_fetch_ are valid choices and would not make a code
generation difference.
    evrp7.c, evrp8.c, vrp35.c, vrp36.c: just needed a slightly change as the
removal message
    is different slightly.
    kernels-alias-8.c: ccp1 is able to remove an unused load which causes
ealias to have
    one less load to analysis so update the expected scan #.

    OK? Bootstrapped and tested on x86_64-linux-gnu with no regressions.

    gcc/ChangeLog:

            PR tree-optimization/109691
            * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
            argument.
            If the removed statement can throw, have need_eh_cleanup
            include the bb of that statement.
            * tree-ssa-dce.h (simple_dce_from_worklist): Update declaration.
            * tree-ssa-propagate.cc (struct prop_stats_d): Remove
            num_dce.
            (substitute_and_fold_dom_walker::substitute_and_fold_dom_walker):
            Initialize dceworklist instead of stmts_to_remove.
            (substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker):
            Destore dceworklist instead of stmts_to_remove.
            (substitute_and_fold_dom_walker::before_dom_children):
            Set dceworklist instead of adding to stmts_to_remove.
            (substitute_and_fold_engine::substitute_and_fold):
            Call simple_dce_from_worklist instead of poping
            from the list.
            Don't update the stat on removal statements.

    gcc/testsuite/ChangeLog:

            * gcc.dg/tree-ssa/evrp7.c: Update for output change.
            * gcc.dg/tree-ssa/evrp8.c: Likewise.
            * gcc.dg/tree-ssa/vrp35.c: Likewise.
            * gcc.dg/tree-ssa/vrp36.c: Likewise.
            * gcc.dg/tree-ssa/pr98737-1.c: Update scan-tree-dump-not
            to check for assignment too instead of just a call.
            * c-c++-common/goacc/kernels-alias-8.c: Update test
            for removal of load.
            * gcc.dg/pr81192.c: Rewrite testcase in gimple based test.

  parent reply	other threads:[~2023-05-08  6:18 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-02  5:06 [Bug tree-optimization/109691] New: " pinskia at gcc dot gnu.org
2023-05-02  6:31 ` [Bug tree-optimization/109691] " pinskia at gcc dot gnu.org
2023-05-02 23:58 ` pinskia at gcc dot gnu.org
2023-05-03  3:25 ` pinskia at gcc dot gnu.org
2023-05-05  5:16 ` pinskia at gcc dot gnu.org
2023-05-05  6:09 ` pinskia at gcc dot gnu.org
2023-05-05 15:18 ` pinskia at gcc dot gnu.org
2023-05-08  6:18 ` cvs-commit at gcc dot gnu.org [this message]
2023-05-08  6:18 ` pinskia 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-109691-4-kxYe84cWFe@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).