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

--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Roger Sayle <sa...@gcc.gnu.org>:

https://gcc.gnu.org/g:8f571e64713cc72561f84241863496e473eae4c6

commit r12-3824-g8f571e64713cc72561f84241863496e473eae4c6
Author: Roger Sayle <ro...@nextmovesoftware.com>
Date:   Wed Sep 22 19:17:49 2021 +0100

    More NEGATE_EXPR folding in match.pd

    As observed by Jakub in comment #2 of PR 98865, the expression -(a>>63)
    is optimized in GENERIC but not in GIMPLE.  Investigating further it
    turns out that this is one of a few transformations performed by
    fold_negate_expr in fold-const.c that aren't yet performed by match.pd.
    This patch moves/duplicates them there, and should be relatively safe
    as these transformations are already performed by the compiler, but
    just in different passes.

    This revised patch adds a Boolean simplify argument to tree-ssa-sccvn.c's
    vn_nary_build_or_lookup_1 to control whether simplification should be
    performed before value numbering, updating the callers, but then
    avoiding simplification when constructing/value-numbering NEGATE_EXPR.
    This avoids the regression of gcc.dg/tree-ssa/ssa-free-88.c, and enables
    the new test case(s) to pass.

    2021-09-22  Roger Sayle  <ro...@nextmovesoftware.com>
                Richard Biener  <rguent...@suse.de>

    gcc/ChangeLog
            * match.pd (negation simplifications): Implement some negation
            folding transformations from fold-const.c's fold_negate_expr.
            * tree-ssa-sccvn.c (vn_nary_build_or_lookup_1): Add a SIMPLIFY
            argument, to control whether the op should be simplified prior
            to looking up/assigning a value number.
            (vn_nary_build_or_lookup): Update call to
vn_nary_build_or_lookup_1.
            (vn_nary_simplify): Likewise.
            (visit_nary_op): Likewise, but when constructing a NEGATE_EXPR
            now call vn_nary_build_or_lookup_1 disabling simplification.

    gcc/testsuite/ChangeLog
            * gcc.dg/fold-negate-1.c: New test case.

Reply via email to